Вход

Просмотр полной версии : EmuStudio-ZX



Страницы : [1] 2 3

Titus
28.09.2013, 15:18
Решил выложить для тестов звуковой подсистемы свой эмулятор Спектрума 48Кб.

Если в кратце, то на базе EmuStudio был написан эмулятор УКНЦ, ТИА-МЦ, МС-0515. Сейчас добавил режим простого спектрума-48 с таймингами Пентагона)
Цель - протестировать звуковую и видеосистему эмулятора.
Коцепция EmuStudio - эмуляция железа реального времени (каждый кадр эмулируемой системы совпадает с кадром развертки PC). Таким образом (в одном из режимов) если у вас монитор с разверткой 60Hz, то эмулируемый компьютер будет тоже иметь развертку 60Hz, но работать абсолютно плавно.

Для владельцев Win 7 - новости неутешительные. Разрешение аудиобуфера сделали очень грубое, из-за чего невозможна точная синхронизация со звуком, и звука скорее всего не будет.

Краткая информация о теории эмуляторостроения:

Как делают эмуляторы:
Все эмуляторы, которые я встречал, придерживаются сходной схемы эмуляции (авторы поправьте меня, если это не так): основная временнАя привязка идет к аудиобуферу (в более простом случае - к системному таймеру). Все остальное (видеовывод) подгоняется под эти тайминги. При таком построении эмулятора можно рассчитывать только на 'гладкость' звучания звука, но никак не на полную идентичность эмуляции видео, даже если кадровая развертка видеокарточки сопвадает с кадровой разверткой эмулируемой машины.

Откуда такая проблема?
В нашем не всегда горячо любимом PC каждая аппаратная, необходимая для эмуляции часть (видео, звук, клавиатура и т.д.), живут обычно сами по себе, на своих тактовых частотах, со своими форматами данных и т.д. Казалось бы, чего сложного в их обьединении? Выставим частоту монитора 50Гц, частоту аудио 48000Гц, и в каждом кадре будет ровно 960 отчетов звукового буфера, все целенько и ровненько. Все будет выводиться синхронно. Привяжемся к аудиобуферу, и каждые 960 отсчетов звука будем выводит новый видеокадр и все будет шоколадно. Но не тут-то было.
Во-первых, каждая аппаратная часть (видео, аудио и т.д.) вполне может тактироваться собственным источником, и даже если формально частоты кратные (в нашем примере 50/48000Гц), на деле они кратными не будут никогда (скажем, 50.0001 и 47.9997Гц), ибо разные источники тактирования. Единственный случай, когда этого можно избежать - это интегрированное видео и аудио, тактируемое одним источником. Но на это рассчитывать никак не приходится.
Во-вторых, когда мы запрашиваем у системы характеристики видеоадаптера (частоту кадров), она отвечает весьма примерненько. 50Гц может подразумевать и 50.1Гц запросто.

Отсюда единственный логичный вывод. Если ты хочешь, чтобы в эмуляторе все было так же плавно и гладко, как на эмулируемой машине, главная привязка должна быть именно к кадровой развертке, с адаптивной привязкой к ней менее критичных к передискретизации железок.

Как это делаю я:
В моем эмуляторе сделано так. При запуске замеряется кадровая частота, и вычисляется примерно (а точно нельзя) сколько отсчетов аудиобуфера у нас укладывается в кадр. Допустим этих отсчетов 100. Начинается эмуляция и каждый видео кадр идет очень точный замер (если позволяет виндовс) сколько же на деле мы проиграли за кадр отсчетов. Основываясь на этих измерениях вычисляется адаптивное, но высокоточное число выводимых аудиоотсчетов за кадр (допустим, 100.001234), и на этом эмулятор синхронизируется.
Таким образом, каждый кадр эмулируемой системы (в данном случае Спектрума) равняется кадру видеокарточки, а звук с точностью до отсчета подгоняется по реальное число семплов в кадре.
В случае же, когда аудиосистема не может сообщить о точном положении аудиомаркера в буфере (у Win7 эта точность равна 480 отсчетам, т.е. никакая), синрхонизация звука с видео по этому алгоритму невозможна.

p.s.: Да, пока что в этом режиме Спектрум работает на 20% (при 60Гц мониторе) и на 50%(при 75Гц мониторе) быстрее, чем обычный Спектрум. Это на текущем этапе так и должно быть.


Краткое управление:


LWin + F - Включение/выключени полноэкранного режима*
LWin + S - Запись остояния в файл "snapshot.sna"
LWin + L - Загрузка состояния из файла "snapshot.sna"
LCtrl + RCtrl - Сброс
~ - Циклическая смена палитры: Цветная, Ч/Б, Инверсная Ч/Б.

* - Максимизация окна - это тоже полноэкранный режим,
но с рамкой окна и панелью задач Windows.

Описание индикатора быстродействия:

http://s40.radikal.ru/i087/1310/a6/2080aa4fe8c9.png


Поддерживаются только файлы ".sna".
Для запуска снапшота достаточно просто кинуть его в окно с эмулятором.

На этом пока все.

p.s.: Просьба к владельцем разных версий виндовс - позапускать и сделать скриншот консольного окна с отладочной информацией (самая верхняя страница), а так же скриншот окна эмулятора.

p.p.s.: Да, бордюр есть, и даже мультиколор на нем. Достаточно максимизировать окно, сделать фулскрин, или просто растянуть размеры окна.

palsw
28.09.2013, 15:32
http://i.piccy_.info/i8/2f76b2430202f5c163f5542e029e32be/1380367939/46977/619634/Bezymiannyi_500.jpg (http://piccy_.info/view3/5200549/063202c43e9a18a9bee14c18a051eab0/)http://i.piccy_.info/a3/2013-09-28-11-32/i8-5200549/489x341-r/i.gif (http://i.piccy_.info/a3c/2013-09-28-11-32/i8-5200549/489x341-r)

Win XP 32 SP3
звук есть вроде но чуток не такой

goodboy
28.09.2013, 16:02
Просьба к владельцем разных версий виндовс - позапускать и сделать скриншот консольного окна с отладочной информацией.
winXPpro sp3

SoftLight
28.09.2013, 17:45
Для владельцев Win 7 - новости неутешительные.
...
LWin + L - загрузка snapshot.sna


Не то что неутешительные, а просто ужасные: у меня на буке только одна кнопка Win и вообще-то Win-L это выход в экран блокировки с выбором пользователя.

[bETA]mEN
28.09.2013, 19:34
Просьба к владельцем разных версий виндовс - позапускать и сделать скриншот консольного окна с отладочной информацией.

Windows 7 Pro x64

http://i.imgur.com/zegnbLG.png

cherkasy
28.09.2013, 19:38
у меня тоже.. эмуль запустился но сочетание явно не для win 7.

[bETA]mEN
28.09.2013, 19:45
у меня тоже.. эмуль запустился но сочетание явно не для win 7.

Оно не только в win7 так:

https://en.wikipedia.org/wiki/Windows_key

Titus
28.09.2013, 20:01
Спасибо за скриншоты, но нужен первый экран лога, пока он уже не уехал.

LWin выбрал потому, что она не встречается в эмулируемых системах типа УКНЦ и Спектрума. Поэтому повесил на нее спецфункции, отключив при этом ее виндосовский функционал.

palsw
28.09.2013, 20:09
http://i.piccy_.info/i8/b44ba6242b73015bb15dbdb5edcd6706/1380384565/25797/616276/Bezymiannyi_500.jpg (http://piccy_.info/view3/5201872/f45f7ed65a7e096180e0ba4298bfd594/)http://i.piccy_.info/a3/2013-09-28-16-09/i8-5201872/500x274-r/i.gif (http://i.piccy_.info/a3c/2013-09-28-16-09/i8-5201872/500x274-r)


win xp 32 sp3
Звуковуха встроенная C-media AC97

[bETA]mEN
28.09.2013, 20:12
нужен первый экран лога, пока он уже не уехал.

http://i.imgur.com/JE74ebf.png

Titus
28.09.2013, 20:15
mEN;630677']http://i.imgur.com/JE74ebf.png
А какая винда?
Еще желательно указывать модель звуковухи, интегрированная она или нет. У меня есть подозрения, что интегрированные звуковухи могут глючить с моим алгоритмом.

[bETA]mEN
28.09.2013, 20:24
А какая винда?
Win7 Pro x64

Еще желательно указывать модель звуковухи, интегрированная она или нет. У меня есть подозрения, что интегрированные звуковухи могут глючить с моим алгоритмом.
Да интегрированная. На сайте производителя материнской платы нашел в описании: Звук 8-канальный HDA кодек Realtek ALC892.

Hacker VBI
28.09.2013, 20:25
http://i.imgur.com/sMvUlZC.jpg

Titus
28.09.2013, 20:27
А винда? Какая винда? Какая звуковуха?
Не забываем указывать, иначе скриншот не несет в себе информацию.

Hacker VBI
28.09.2013, 20:28
win7 maximum sp1
sb audigy

goodboy
28.09.2013, 22:25
winXP,CreativeAudioPCI

Titus
29.09.2013, 02:05
Возникает ощущение, что ни у кого, кроме меня звук правильно не работает)
Даже не беря в расчет владельцев Win7 с минимальным разрешением позиционирования буфера 480 отсчетов.

---------- Post added at 02:05 ---------- Previous post was at 01:59 ----------

Даже если звук звучит, проверить, правильно он работает или нет, можно очень просто. Запустите игру Chronos, и начните выбирать в меню пункты разные. Выбор сопровождается звуком. Если звук хотя бы на долю секунды отстает, то со звуком проблемы.
Да что там Chronos, в бейсике можно понажимать клавиши)

BYTEMAN
29.09.2013, 02:41
http://sash-a.nm.ru/emuzx.png

Win7 x64 Pro. Asus K50ID. Звук отстаёт секунды на две.

Titus
29.09.2013, 03:22
Win7 x64 Pro. Asus K50ID. Звук отстаёт секунды на две.

Он не отстает, он в принципе не может синхронизироваться из-за слишком большой дискретности позицирования маркера аудиобуфера на Win7, который равен 480 отсчетам.

Пока что у меня нет идей, как с этим бороться.

---------- Post added at 03:22 ---------- Previous post was at 03:20 ----------

О, я смотрю у тебя 100 герцовый LCD монитор?
Первый раз такое вижу.

И как, эмуль работает ровно в 2 раза быстрее?)

BYTEMAN
29.09.2013, 03:32
О, я смотрю у тебя 100 герцовый LCD монитор?
Первый раз такое вижу.
я как-то давно писал, что у меня даже в спектакуляторе все эффекты идут без разрыва луча :) Просто создал пользовательское разрешение в настройках видеокарты, не думал что матрица заведётся на такой частоте, но поехало нормально :) Единственное отличие от стандартного 60Гц - стало немного тусклее. Но как-то картинка приятнее намного и глаза почти не устают.


И как, эмуль работает ровно в 2 раза быстрее?)
быстрее :) Во сколько раз сказать не могу, но быстрее) Звук есть, это 100%, но отстаёт секунды на две стабильно.

---------- Post added at 02:32 ---------- Previous post was at 02:31 ----------

а, и ещё работает фреймово :)

Titus
29.09.2013, 03:39
Звук есть, это 100%, но отстаёт секунды на две стабильно.

---------- Post added at 02:32 ---------- Previous post was at 02:31 ----------

а, и ещё работает фреймово :)

Если звук отстает, то он не просто отстает а плавающе отстает. Т.е. сейчас 1 секунда, через некоторое время 2 секунды, потом 3, потом опять одна. И постоянные разрывы в музыке. Если ты послушаешь мелодию любую, то будут склейки. Это нельзя считать нормальной работой.

Фреймовая работа - это главная особенность эмулятора, он под нее заточен. И звук пытается подтянуть под это, но пока что работает только на XP, да и то не у всех. Кстати, сделай скриншот самого окна эмулятора.

BYTEMAN
29.09.2013, 03:49
Если звук отстает, то он не просто отстает а плавающе отстает. Т.е. сейчас 1 секунда, через некоторое время 2 секунды, потом 3, потом опять одна. И постоянные разрывы в музыке. Если ты послушаешь мелодию любую, то будут склейки. Это нельзя считать нормальной работой.
нет склеек. в эксолоне просто ускоренный трек. И ошибок типа "cannot sync" ни разу не выскакивало... Хрипов тоже нет...

---------- Post added at 02:49 ---------- Previous post was at 02:47 ----------

loosed 1, loosed 2 frames выскакивает... других ошибок нет.
http://sash-a.nm.ru/emuzx2.PNG

Titus
29.09.2013, 03:51
нет склеек. в эксолоне просто ускоренный трек. И ошибок типа "cannot sync" ни разу не выскакивало... Хрипов тоже нет...

loosed 1, loosed 2 frames выскакивает... других ошибок нет.

Ускоренный трек - это нормально, т.к. у тебя 100Гц вместо 50Гц.
Как часто вылезают loosed frames?

Склеек не может быть. Это очень странно)

BYTEMAN
29.09.2013, 03:53
Как часто вылезают loosed frames?
зависит от активности остального ПО. Когда подвигал окно жмулятора - вылезло Loosed 26 frames, быстро двигаю мышь - по 1-2 кадра раз в секунду где-то... Ничего не делаю (только в эмуле нажимаю клавиши) - вообще не вылазит. И, да, склеек нет :) Звук ровненький :)

Titus
29.09.2013, 03:57
зависит от активности остального ПО. Когда подвигал окно жмулятора - вылезло Loosed 26 frames, быстро двигаю мышь - по 1-2 кадра раз в секунду где-то... Ничего не делаю (только в эмуле нажимаю клавиши) - вообще не вылазит. И, да, склеек нет :) Звук ровненький :)

Когда двигаешь окно эмулятора - это нормально, в этот момент он преостанавливает работу.
Когда двигаешь мышь, если пропадают кадры - это плохо, значит быстродействие у эмулятора впритык. Впрочем, что видно по трехцветному быстродействиеметру наверху окна. Желтый цвет - это скорость эмуляции плюс рендер экрана, оранжевый - это системный вывод в окно, а остальное - это свободное время. Если свободного меньше половины - это уже плохо. Видимо, у тебя тачка не очень мощная.

BYTEMAN
29.09.2013, 04:12
Видимо, у тебя тачка не очень мощная.
это да, ноут уже староват, но для моих целей вполне хватает :) Надёжная рабочая лошадка. Процессор Intel Core2Duo T6570 @ 2.10ГГц.

---------- Post added at 03:12 ---------- Previous post was at 03:11 ----------

ладненько, пойду уже спать :)

palsw
29.09.2013, 12:33
Titus, микшер в win7 это кошмар.Нужно курить в направлении ASIO ,даже ASIO4ALL .Другими способами не избежать диких задержок.
http://ru.wikipedia.org/wiki/Audio_Stream_Input/Output
http://www.asio4all.com/
http://www.wikisound.org/ASIO4ALL

WASAPI

http://habrahabr.ru/post/115092/

Titus
29.09.2013, 12:48
Владельцы WinXP (GoodBoy, palsw), у вас звук отстает? Прерывается? Понажимайте в бейсике клавиши, точен ли щелчок, или нет?

---------- Post added at 12:48 ---------- Previous post was at 12:45 ----------


Titus, микшер в win7 это кошмар.Нужно курить в направлении ASIO ,даже ASIO4ALL .Другими способами не избежать диких задержок.

Спасибище! Почитаю.

Изначально я проектировал систему на использование только самых простых и совместимых методов - обычного (причем и самого старого) DirectX и все.

palsw
29.09.2013, 12:51
WIN 7 64 SP1
звук карта PCI - AUDIOTRAK Prodigy HD2 ADVANCE DE

http://www.ebay.com/itm/AUDIOTRAK-Prodigy-HD2-ADVANCE-DE-Sound-Card-2-Channel-/110775775269
http://www.ixbt.com/multimedia/prodigy-hd2-gold.shtml


http://i.piccy_.info/i8/f47e78107dbbd6d1f6c1a764e380b329/1380444545/35820/614835/Bezymiannyi_500.jpg (http://piccy_.info/view3/5204334/90f7ddc0132c150fadc2c185c50e4fd2/)http://i.piccy_.info/a3/2013-09-29-08-49/i8-5204334/467x357-r/i.gif (http://i.piccy_.info/a3c/2013-09-29-08-49/i8-5204334/467x357-r)

задержка звука win7 64 есть большая.Да и DIZZY ручками машет в турбо режиме :)

Titus
29.09.2013, 12:57
задержка звука есть большая.Да и DIZZY ручками машет в турбо режиме :)

Еще раз поясняю - под Win7 звук будет глючить по умолчанию. Даже в консольном окне про это пишется)

А турборежим, потому что вместо 50Гц у тебя 75Гц, и эмулятор работает 1.5 раз быстрее.

palsw
29.09.2013, 12:59
Владельцы WinXP (GoodBoy, palsw), у вас звук отстает? Прерывается? Понажимайте в бейсике клавиши, точен ли щелчок, или нет?

при запуске эмулятора уже есть непонятные щелчки даже не нажимая .
В бейсике после нажатия сек 1-2 есть щелчёк,потом бывает еще 1 или 2 щелчка проскакивает.

еще добавлю - комп на WIN XP старенький 1 ядро Semptron 1500мгц.Так эмулятор его высаживает на 75-80% загрузки CPU

Titus
29.09.2013, 13:01
при запуске эмулятора уже есть непонятные щелчки даже не нажимая .
В бейсике после нажатия сек 1-2 есть щелчёк,потом бывает еще 1 или 2 щелчка проскакивает.
На WinXP? Значит не работает правильно.

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

BYTEMAN
29.09.2013, 13:04
Очень не хотелось для звука забирать у системы эксклюзивный вывод звука (когда никто больше выводить его не может). Но, видимо, придется пойти таким путем.
дык а как другие эмули (тот же спекулятор) работают корректно? Звук точный, синхронизация с лучом тоже точная (в Satisfaction часть, где куча скроллов, работает идеально)...

Titus
29.09.2013, 13:15
Palsw, а что в аттаче?

А на XP ASIO есть?

---------- Post added at 13:15 ---------- Previous post was at 13:12 ----------


дык а как другие эмули (тот же спекулятор) работают корректно? Звук точный, синхронизация с лучом тоже точная (в Satisfaction часть, где куча скроллов, работает идеально)...

Нет, не корректно. Все эмуляторы синхронизируются с каким-либо источником, не связанным с изображением, например, с буфером аудиокарты или же таймером. А вывод изображения уже подгоняется под это. Таким образом, даже если у тебя развертка кратная развертке эмулируемой системы (50 или 100Гц), точная синхронизация не гарантирована, и нет, нет, да и потеряется кадр.

palsw
29.09.2013, 13:17
Titus, в атаче программка показывает задержку( латентность) шины .чем меньше тем лучше.

на XP ASIO вроде как не нежен.Это начиная с WIN Vista и 7 намутили со звуком.

Titus
29.09.2013, 13:20
Titus, микшер в win7 это кошмар.Нужно курить в направлении ASIO ,даже ASIO4ALL .Другими способами не избежать диких задержок.
В статье на хабре пишут, что ASIO4ALL использовать нежелательно, т.к. работает в Win7 нестабильно.

---------- Post added at 13:20 ---------- Previous post was at 13:19 ----------


Titus, в атаче программка показывает задержку( латентность) шины .чем меньше тем лучше.

КАКОЙ ШИНЫ? )

У меня показывает 32мкс.

palsw
29.09.2013, 13:35
Titus,
Используем ASIO если звуковая поддерживает его .
Используем ASIO4ALL для все встроенного шлака .
используем WASAPI как и раньше и забиваем на звук.

Я привел ссылки для ознакомления проблемы звука в WIN7 и как с ними бороться .

---------- Post added at 12:35 ---------- Previous post was at 12:33 ----------

Решение проблем со звуком с помощью DPC Latency Checker

Для начала нам нужно скачать утилиту DPC Latency Checker (скачать / скачать). Эта утилита с определенным интервалом времени измеряет задержку выполнения отложенных процедур. Иными словами насколько быстро будет обработаны данные. Если задержка большая, то при воспроизведении музыки или видео нужные данные просто не обрабатываются вовремя. Из-за этого и возникают заедания и хрипы.

http://notebookclub.org/article/general/32-sound.html

Titus
29.09.2013, 13:57
[Решение проблем со звуком с помощью DPC Latency Checker
Думаю, что отстающий звук у тех, кто протестировал, связан исключительно с невозможностью синхронизации с существующим у них аудиооборудованием, а не с задержками в системе.

---------- Post added at 13:49 ---------- Previous post was at 13:46 ----------

А на счет DPC Latency Checker, я вообще не понимаю, как он измеряет, ибо у Винды нет таймера с разрешением меньше 1мс. Счетчик тактов в ядре процессора не считается, т.к. он может замедляться при переходе процессора в более экономичные режимы.

---------- Post added at 13:57 ---------- Previous post was at 13:49 ----------


Нет, не корректно. Все эмуляторы синхронизируются с каким-либо источником, не связанным с изображением, например, с буфером аудиокарты или же таймером. А вывод изображения уже подгоняется под это. Таким образом, даже если у тебя развертка кратная развертке эмулируемой системы (50 или 100Гц), точная синхронизация не гарантирована, и нет, нет, да и потеряется кадр.
Продолжение для Byteman'а: Хотя, если у тебя видюха интегрированная, и звук тоже, т.е. тактируются от одного источника, может быть такое, что в эмуляторе, постренном по стандартной схеме, все работает плавно. Но это скорее исключение, на это ориентироваться нельзя.

ZEman
29.09.2013, 14:00
Titus, почему вы решили что если запускать ВАШ эмулятор на Win 7 то пользователям обеспечены глюки со звуком (видео).
есть другие новейшие и точные эмуляторы спека, например тот-же ZX Mak2 который прекрасно работает и на семёрке и на восьмёрке и никаких глюков со звуком нет.

запустил я это на своём компьютере.
бр-ррр... тихий ужас...
летает со скоростью (очень быстро кароче) и звук трещит и хрипит.
звуковая встроенная realtek, используется windows 7 х64 максимальная.

BYTEMAN
29.09.2013, 14:02
Хотя, если у тебя видюха интегрированная, и звук тоже, т.е. тактируются от одного источника, может быть такое, что в эмуляторе, постренном по стандартной схеме, все работает плавно. Но это скорее исключение, на это ориентироваться нельзя.
видеокарта дискретная GeForce 320M. звук - чёрт его знает какой там кодек стоит...

Titus
29.09.2013, 14:04
Titus, почему вы решили что если запускать ВАШ эмулятор на Win 7 то пользователям обеспечены глюки со звуком (видео).
есть другие новейшие и точные эмуляторы спека, например тот-же ZX Mak2 который прекрасно работает и на семёрке и на восьмёрке и никаких глюков со звуком нет.

запустил я это на своём компьютере.
бр-ррр... тихий ужас...
летает со скоростью (очень быстро кароче) и звук трещит и хрипит.
звуковая встроенная realtek, используется windows 7 х64 максимальная.

Ой, устал я по сто раз обьяснять) Напишу потом подробнее в первом посту темы)

Не надо путать приемлимую синхронизацию, и стопроцерную, которой удалось добиться пока только на XP. На Win7 стандартная звуковая подсистема пока для этого не годится.

---------- Post added at 14:04 ---------- Previous post was at 14:03 ----------


видеокарта дискретная GeForce 320M. звук - чёрт его знает какой там кодек стоит...

Тогда предлагаю такой эксперимент. Запустить в спектакуляторе длинный и плавный скролл из какой-нибудь демки или интрушки, и смотреть на него во все глаза несколько минут. Если дернется, или посечется с лучом, значит синхронизация неточная.

BYTEMAN
29.09.2013, 14:23
Titus, сейчас попробую :) тот же сатисфактион.

---------- Post added at 13:23 ---------- Previous post was at 13:20 ----------

раз в 10-15 секунд теряет фрейм.

Titus
29.09.2013, 14:25
Titus, сейчас попробую :) тот же сатисфактион.

---------- Post added at 13:23 ---------- Previous post was at 13:20 ----------

раз в 10-15 секунд теряет фрейм.
Что и требовалось доказать)
Теперз запусти какой-нить скролл в моем эмуле. Например скролл из Murray Mouse.

SoftLight
29.09.2013, 14:40
Что и требовалось доказать)
Теперз запусти какой-нить скролл в моем эмуле. Например скролл из Murray Mouse.

Вот ведь, Windows 7 не тянет ZX Spectrum. Эх, индокодерам из MS еще есть к чему стремиться.

Titus
29.09.2013, 14:42
Вот ведь, Windows 7 не тянет ZX Spectrum. Эх, индокодерам из MS еще есть к чему стремиться.

Да все она тянет. Только надо к ней пристроиться правильно)

Titus
29.09.2013, 17:27
Добавил под споилер в первом посту немного инфы.

Alexandr Medvedev
30.09.2013, 11:28
Win8 x64 звук встроенный
Комп неплохой, а вот звук как ни странно дурит, хотя другие эмули нормально работают.
Исходники Unreal открыты, лучше оттуда эмуляцию звука подсмотреть.

Vitamin
30.09.2013, 11:37
Блин, а что так хреново с диагностикой?
Вывод в файл перенаправить нельзя, консоль хрен поймаешь чтоб принтскрин сделать (держишь мышкой скроллбар чтоб не уехал и дотягиваешься до alt+printscreen).

Кстати о птичках. если синхронизироваться чаще, чем 50 раз в секунду, не должен ли на экран попадать не полностью отрисованный кадр?

Windows7 Pro x64, звуковуха и видюха встроенные, проц 2.5ГГц Core2 Quad

Titus
30.09.2013, 11:43
Win8 x64 звук встроенный
Комп неплохой, а вот звук как ни странно дурит, хотя другие эмули нормально работают.
Исходники Unreal открыты, лучше оттуда эмуляцию звука подсмотреть.
Спасибо)
Немножечко хотя бы обращайте внимание на то, что я пишу, особенно в первом посту)

---------- Post added at 11:43 ---------- Previous post was at 11:41 ----------


Кстати о птичках. если синхронизироваться чаще, чем 50 раз в секунду, не должен ли на экран попадать не полностью отрисованный кадр?
В данном режиме синхронизация и видеовывод идет с частотой кадровой развертки ПЦ. Пока что тестируется только такой режим.

p.s.: Ты мне решил отомстить, приаттачив нечитаеймый скриншот? )

Vitamin
30.09.2013, 11:46
p.s.: Ты мне решил отомстить, приаттачив нечитаеймый скриншот? )
Это не я, это оно само!
Но получилось очень красиво:v2_devil:
https://dl.dropboxusercontent.com/u/2393036/zxemu.png

Alexandr Medvedev
30.09.2013, 13:20
Немножечко хотя бы обращайте внимание на то, что я пишу, особенно в первом посту)Перед запуском читал, сейчас снова перечитал: пару слов про концепцию, примечание для Win7, немного теории, клавиши управления, просьба о тестировании, о настройке звука нет ни слова!!!. Так и на что обращать внимание то?

Doronetty
30.09.2013, 13:33
Проц Core2Quad 2,4~2,8 GHz, плата Asus P5E, звук SupremeFX II Audio Card (кИтовая звуковуха), FullHD телек в качестве монитора, 50 Гц, Windows Vista 64-bit
http://i59.fastpic.ru/big/2013/0930/81/04e9e0ede4a62af1d8cef5beeabb8081.png
Звук, конечно, просто ужасен - в том же Exolon вообще кошмар творится: уже пошла игра, а ещё играет музыка из заставки. Единственно, где звук похож на себя, это Knight Lore.
P.S: А почему всё-таки Spectrum? Ведь и так существует куча замечательных эмулей Спека, а вот тот же родимый БК-0011М эмулируется весьма посредственно. Первый пост читал, для чего это делается, понятно, и всё же...

Titus
30.09.2013, 14:22
Звук, конечно, просто ужасен - в том же Exolon вообще кошмар творится: уже пошла игра, а ещё играет музыка из заставки. Единственно, где звук похож на себя, это Knight Lore.
P.S: А почему всё-таки Spectrum? Ведь и так существует куча замечательных эмулей Спека, а вот тот же родимый БК-0011М эмулируется весьма посредственно. Первый пост читал, для чего это делается, понятно, и всё же...

В который раз обьясняю, что пока что на Win7 звук НЕ работает) Он не ужасен, он просто неправильно функционирует по причинам, описанным в первом посту. Пока не найден способ точной синхронизации с аудиобуфером на Вин7, звука не будет.

На счет почему. Лично меня (это чисто мое восприятие) не устраивает ни один эмулятор по одной причине - никто из них не дает покадровой эмуляции спектрума синхронной с частотой развертки монитора. На своем мониторе я включаю 50Гц развертку, заспускаю свой эмуль (а на XP звук у меня работает идеально), и получаю НАСЛАЖДЕНИЕ от того, что это абсолютная копия моего любимого спектрума) Т.е. полный эффект 'присутствия'.

---------- Post added at 14:22 ---------- Previous post was at 14:19 ----------


Проц Core2Quad 2,4~2,8 GHz, плата Asus P5E, звук SupremeFX II Audio Card (кИтовая звуковуха), FullHD телек в качестве монитора, 50 Гц, Windows Vista 64-bit
Кстати, на счет телека - запускали скроллы, плавно работают?

Alexandr Medvedev
30.09.2013, 19:15
В который раз обьясняю, что пока что на Win7 звук НЕ работаетА как насчёт Win8?

Titus
30.09.2013, 19:27
А как насчёт Win8?
Абсолютно одинаково с Win7. И даже в висте вроде тоже самое.
Если разрешение буфера 480 отсчетов (как в логах всех вин7шников), то звуку можно сказать бай-бай.

psb
30.09.2013, 19:51
Если разрешение буфера 480 отсчетов (как в логах всех вин7шников), то звуку можно сказать бай-бай.
а нельзя подстраивать "длину звукового фрейма" на основе многих кадров? т.е. если часто underrun, то добавлять длину по чуть-чуть. overrun тоже детектить... или в чем тут проблема-то?

Titus
01.10.2013, 00:11
а нельзя подстраивать "длину звукового фрейма" на основе многих кадров? т.е. если часто underrun, то добавлять длину по чуть-чуть. overrun тоже детектить... или в чем тут проблема-то?

Разумеется так и делается. Статистика собирается на основе нескольких десятков кадров. Только в этом случае получается добиться высокой точности вывода звука. Но все упирается в точность информации получаемой от аудиобуфера. Если позиция маркера доступна с дискретностью несколько отсчетов, то это подходяще. Если же как на Вин7 - 480 отсчетов - то это вообще ничто.

---------- Post added 01.10.2013 at 00:11 ---------- Previous post was 30.09.2013 at 23:11 ----------

Похоже, надо смотреть в сторону эксклюзивных режимов владения звуковухой, как на XP, так и на Win7.

psb
01.10.2013, 00:20
Если позиция маркера доступна с дискретностью несколько отсчетов, то это подходяще.
а нельзя узнать, буфер кончился к концу кадра или нет? только этот бинарный признак можно использовать для регулятора длины буфера. и пофиг, какая там точность.

Titus
01.10.2013, 00:26
а нельзя узнать, буфер кончился к концу кадра или нет? только этот бинарный признак можно использовать для регулятора длины буфера. и пофиг, какая там точность.

Каким образом? Буфер имеет две возможности контроля - это считывание текущей позиции маркера воспроизведения, и вторая - это колбек при достижении определенной позиции. Уверен, что в системах, где отслеживание маркера очень грубое, там и колбек будет приходить так же грубо, хотя на практике не проверял.

---------- Post added at 00:26 ---------- Previous post was at 00:24 ----------

Возможно мы не совсем об одом и том же говорим.

Как устроено у меня:
В начале каждого кадра смотрится, какая текущая позиция воспроизведения в буфере. Относительно нее вычисляется число отсчетов, проигранное в течение предыдущего кадра, и отсюда идут все вычисления. Все другие способы точности не дадут.

psb
01.10.2013, 00:35
В начале каждого кадра смотрится, какая текущая позиция воспроизведения в буфере.
да этот смысл ясен. я просто хз что еще можно делать. достаточно было бы просто узнавать, успел он доиграть положенные данные или нет. а не сколько именно успел проиграть.

Titus
01.10.2013, 01:09
да этот смысл ясен. я просто хз что еще можно делать. достаточно было бы просто узнавать, успел он доиграть положенные данные или нет. а не сколько именно успел проиграть.
Нет, он может недоиграть, или переиграть, все надо знать.

Допустим, прогнозируемое число семплов в кадре 100. Он может сыграть, как 101, так и 99. Это в лучшем случае. В типичном случае это число колеблется еще сильнее из-за случайных задержек, вызванных фоновой работой любых других процессов.
Делать буфер маленьким (те же 100 отсчетов) никак нельзя, ибо как минимум, есть пребуферинг, хотя я его выбрал совсем небольшим пол-кадра, иначе звук будет отставать на неприемлимое для меня время.

Словом, важно знать не просто, успели ли мы дойти до какой-то точки или нет, а где мы относительно нее находимся на такой-то момент времени.

psb
01.10.2013, 02:53
Titus, а это эмулятор для игр или для дем? :)

Titus
01.10.2013, 03:30
Titus, а это эмулятор для игр или для дем? :)
Для чего угодно.

Titus
01.10.2013, 04:21
Вот небольшой тестик для проверки возможности точной нотификации системой о достижении определенной позиции во вторичном звуковом буфере.

Пример лога на моей звуковухе и XP:
http://s47.radikal.ru/i115/1310/9c/e7c7bdb3f903.png

Как это работает:
Сперва я расставляю в аудиобуфере 16 меток с шагом 20 отсчетов.

Затем запускаю буфер на воспроизведение и жду события достижения заданной метки. Далее печатаю номер события, текущую позицию в буфере, разницу между текущей и предыдущей позицией, и номер текущей сканлинии развертки (для контроля времени прихода события).

Как видно, хотя шаг и 20 отсчетов, в реальности события происходят (почему?) через ~28 отсчетов. Хотя это все равно приемлимые величины.

p.s.: Нда уж, похоже система собирает информацию о достижении меток, а потом скопом выплевывает с интервалом 28 отсчетов. Пробовал ставить шаг 100 отсчетов, все равно сообщает примерно так: 28, 28, 28, 300, 28, 28 и т.д.

Владельцы XP, запустите тестик, т.к. с Вин7 и так все понятно, у всех одинакоео 480.

BYTEMAN
01.10.2013, 04:23
на win7 у меня delta либо 0 либо 480.

Titus
01.10.2013, 04:25
на win7 у меня delta либо 0 либо 480.

Лог в студию.

BYTEMAN
01.10.2013, 04:42
http://sash-a.nm.ru/emuzxsound1.PNG

Titus
01.10.2013, 05:48
на win7 у меня delta либо 0 либо 480.
Ну вот, на вин7 точность никакая для таких тонких подстроек.
Во всяком случае со вторичным буфером.

Судя по всему, у Вин7 в системе встроенный фиксированный буфер длиной 480 отсчетов, в котором программно миксуются все вторичные буфера. И никакую более тонкую информацию о позиции во вторичном буфере она не выдает.

Hacker VBI
01.10.2013, 09:42
похоже, Titus, не на ту лошадку ты поставил.
как показывает мой сонар, в составе винды есть wdm/ks и mme, интересно что пользуешь ты. скорее всего wdm.
посмотри в сторону альтернативных аудиобиблиотек в составе эмуля, может быть alsa...

Vitamin
01.10.2013, 10:04
Titus, а все-таки объясни мне глупому, пожалуйста- нафига нужная такая точность определения "текущей позиции эмуляции", если при этом вывести кадр "вне очереди" все равно нельзя? И откуда информация, что тактирование звуковухи более точное, чем тактирование кадровой развертки?

Titus
01.10.2013, 12:06
похоже, Titus, не на ту лошадку ты поставил.
как показывает мой сонар, в составе винды есть wdm/ks и mme, интересно что пользуешь ты. скорее всего wdm.
посмотри в сторону альтернативных аудиобиблиотек в составе эмуля, может быть alsa...
То, что не на ту - однозначно.
Просто оба моих компа (в одном Audigy в другом SB Live) прекрасно давали информацию о позиции во вторичном буфере, и я на этом успокоился.

---------- Post added at 12:06 ---------- Previous post was at 12:02 ----------


Titus, а все-таки объясни мне глупому, пожалуйста- нафига нужная такая точность определения "текущей позиции эмуляции", если при этом вывести кадр "вне очереди" все равно нельзя? И откуда информация, что тактирование звуковухи более точное, чем тактирование кадровой развертки?

Любое тактирование, что звуковухи, что видеокарты точное. Только соотношение этих тактовых источников не известно, и не может быть известно. Только примерно можно узнать.
Следовательно, привязаться можно к одному из этих источников (звук или видео), а информацию для второго подгонять в зависимости от текущих измерений соотношений их тактовых частот. Тактирование от аудио мне не подходит, так сделано во всех эмулях, ибо тогда нет никакой гарантии плавности видео (когда кадр эмуируемой системы всегда равен кадру ПЦ). Я выбрал тактирование от видео. В этом случае видео будет абсолютно плавное, а скорость аудио надо измерять и подгонять под измеренное.

Vitamin
01.10.2013, 12:17
Тактирование от аудио мне не подходит, так сделано во всех эмулях
Не во всех. Где-то встречал от RTC.


В этом случае видео будет абсолютно плавное, а скорость аудио надо измерять и подгонять под измеренное.
Все равно нужны какие-то абсолютные точки во времени.

Titus
01.10.2013, 12:21
Все равно нужны какие-то абсолютные точки во времени.
Абсолютные точки берутся от кадровой развертки)

---------- Post added at 12:21 ---------- Previous post was at 12:20 ----------


Не во всех. Где-то встречал от RTC.
Это еще более плохой случай. В нем ни видео, ни музыка не будут 'плавными'.

Vitamin
01.10.2013, 12:23
Абсолютные точки берутся от кадровой развертки)
Т.е. частота кадровой развертки стабильна и точно известна?


Это еще более плохой случай. В нем ни видео, ни музыка не будут 'плавными'.
Ну смотря что за клоки. Если счетчик команд, то да, будет фигня. А если фиксированный высокочастотный счетчик шедулера, то вполне.

Titus
01.10.2013, 12:25
Т.е. частота кадровой развертки стабильна и точно известна?

Ну смотря что за клоки. Если счетчик команд, то да, будет фигня. А если фиксированный высокочастотный счетчик шедулера, то вполне.

Стабильна - да. Точно известна в пределах долей процента, чего абсолютно достаточно для нужд эмуляции.

Где у нас в винде ты видел стандартный счетчик с разрешением меньше 1мс?

Vitamin
01.10.2013, 12:38
Стабильна - да. Точно известна в пределах долей процента, чего абсолютно достаточно для нужд эмуляции.
Ну а раз звук плавает, то чем щелчки выпадающих семплов лучше выпадающих кадров?


Где у нас в винде ты видел стандартный счетчик с разрешением меньше 1мс?
Да я и насчет нестандартного не уверен:)

Titus
01.10.2013, 12:44
Ну а раз звук плавает, то чем щелчки выпадающих семплов лучше выпадающих кадров?

Ничего не выпадает. Звук плавает по частоте не более, чем на сотые доли процента. на слух это абсолютно не заметно. Никаких щелчков и прочего при этом нет. На практике долго гонял на своем компе, на котором звуковуха позволяет точно контролировать вторичный аудиобуфер - все идеально.

psb
01.10.2013, 14:51
Тактирование от аудио мне не подходит, так сделано во всех эмулях
ну не во всех. старый zx-mak умел синхриться от кадровой, 60 гц тоже показывал плавно. унреал, емнип, синхрится НЕ по звуку.

и все же, еще раз для отстающих, Titus, вот поясни такой момент. допустим, разрешение по позиции в буфере - 480 сэмплов. при 44100 гц - это 10 мс, т.е. полфрейма.
ты считаешь, сколько надо сэмплов за фрейм, примерно 882. кладешь в буфер 882+480 (это запас, например от нового фрейма). через фрейм у тебя указатель будет +480 или +2*480. если ты соберешь разницу за кучу фреймов, отфильтруешь, ты узнаешь реальную частоту потребления сэмплов звуковухой (дробное число).

задача: класть в буфер для проигрывания столько сэмплов, сколько соответствует реальной частоте (с учетом дробей). здесь работает регулятор. в итоге у тебя запас данных в буфере чуть-чуть шевелится относительно какой-то цифры, которую ты тоже можешь держать в рамках (видимо, еще один регулятор-корректор) с точностью разрешения позиции буфера.

прежде чем говорить нет - напиши симулятор.

Titus
01.10.2013, 15:05
ну не во всех. старый zx-mak умел синхриться от кадровой, 60 гц тоже показывал плавно. унреал, емнип, синхрится НЕ по звуку.

и все же, еще раз для отстающих, Titus, вот поясни такой момент. допустим, разрешение по позиции в буфере - 480 сэмплов. при 44100 гц - это 10 мс, т.е. полфрейма.
ты считаешь, сколько надо сэмплов за фрейм, примерно 882. кладешь в буфер 882+480 (это запас, например от нового фрейма). через фрейм у тебя указатель будет +480 или +2*480. если ты соберешь разницу за кучу фреймов, отфильтруешь, ты узнаешь реальную частоту потребления сэмплов звуковухой (дробное число).

задача: класть в буфер для проигрывания столько сэмплов, сколько соответствует реальной частоте (с учетом дробей). здесь работает регулятор. в итоге у тебя запас данных в буфере чуть-чуть шевелится относительно какой-то цифры, которую ты тоже можешь держать в рамках (видимо, еще один регулятор-корректор) с точностью разрешения позиции буфера.

прежде чем говорить нет - напиши симулятор.

Надо уточнить, синхронизация с началом кадра и синхронизация относительно кадровой развертки - вовсе не одно и то же.

Вот все, как ты рассказываешь, дробное число отсчетов в кадре, но для его получения такой грубой дискретности, как 480 отсчетов - более, чем недостаточно. Я над этим экспериментировал достаточно долго, и вычислений делал море.

Сейчас вычисление дробного количества отсчетов в кадре идет по статистике аж 128 последних кадров. Тогда этого достаточно для высокоточной скорости аудио.

psb
01.10.2013, 16:18
Надо уточнить, синхронизация с началом кадра и синхронизация относительно кадровой развертки - вовсе не одно и то же.
10 мс - это то, с чем ты бороться не можешь, судя по всему. да и 10, и 20 мс - это вполне нормальное время задержки. я уверен, в слепом тесте на реале ты его (20 мс) не заметишь.


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


881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
881.292
881.292
881.28
881.292
881.292
881.292
это для шумящего кол-ва отсчетов на кадр, которые равны 882+рандом(-5,3). КУДА ЕЩЕ ТОЧНЕЕ???

при этом, ПИ-регулятор держит заполнение буфера (эмулируемое) сносно. колбасит, но не сильно.

---------- Post added at 18:18 ---------- Previous post was at 18:16 ----------


Надо уточнить, синхронизация с началом кадра и синхронизация относительно кадровой развертки - вовсе не одно и то же.
если это относилось к zx-mak, так там именно что он синхрился под vsync.

breeze
01.10.2013, 16:20
на win7 у меня delta либо 0 либо 480.

Лог в студию.

У меня ещё красивее значения: 6720, 0… 480, -7456, 52864, -55456, -1472

Windows 8 x64, встроенная Realtek HD Audio (ALC889)

http://paste.org.ru/?nklc06

Titus
01.10.2013, 17:34
10 мс - это то, с чем ты бороться не можешь, судя по всему. да и 10, и 20 мс - это вполне нормальное время задержки. я уверен, в слепом тесте на реале ты его (20 мс) не заметишь.


там не нужно море вычислений. я просимулировал получение позиции в буфере с дискретностью 480 сэмплов, взял 200 кадров. в итоге у меня получилось вот так.

Твоя теория далека от практики) Предлагаю тебе сделать рабочий макет)

---------- Post added at 17:34 ---------- Previous post was at 17:32 ----------


если это относилось к zx-mak, так там именно что он синхрился под vsync.
Т.е. каждый новый кадр спектрума совпадал с кадром развертки ПЦ?

Или же просто перед выводом нового кадра ожидался VBlank?

psb
01.10.2013, 18:25
Т.е. каждый новый кадр спектрума совпадал с кадром развертки ПЦ?
да вроде так. в этом режиме не надо было дополнительно указывать частоту прерываний спека. но это не 100%.


Твоя теория далека от практики) Предлагаю тебе сделать рабочий макет)
рабочий макет чего? эмулятора? больше заняться нечем.

ты утверждал, что при +-480 сэмплов нельзя точно определить частоту. я не поленился и проверил - считается ДОСТАТОЧНО точно. хочешь сказать, что я не прав - скажи почему.

Titus
01.10.2013, 18:37
ты утверждал, что при +-480 сэмплов нельзя точно определить частоту. я не поленился и проверил - считается ДОСТАТОЧНО точно. хочешь сказать, что я не прав - скажи почему.

Хорошо, опиши свой алгоритм определения частоты. По пунктам.

psb
01.10.2013, 18:44
1. скользящее среднее от буфера с разницами указателей на проигрывание между фреймами (тех самых, которые n*480).
2. скользящее среднее от 1.

быстро, дешево, точно.

Titus
01.10.2013, 18:54
1. скользящее среднее от буфера с разницами указателей на проигрывание между фреймами (тех самых, которые n*480).
2. скользящее среднее от 1.

быстро, дешево, точно.
Подробнее, этого мне не достаточно.

psb
01.10.2013, 19:24
каждый фрейм:

1. ищешь разницу указателей на проигрываемый кусок (у текущего и предыдущего фрейма), она будет 480 или 2*480 каждый раз.
2. кладешь в кольцевой буфер.
3. считаешь среднее от всего буфера, получаешь число.
4. кладешь это число во второй кольцевой буфер.
5. считаешь среднее от этого буфера, получаешь число.

вот это число и есть точное дробное значение кол-ва сэмплов за фрейм. фильтр можно подогнать под реальные условия, но главное, что из этих 480 и 2*480 он вполне выделяет точное число.

breeze
01.10.2013, 20:17
Кстати, Titus, обратил внимание на строчку:


Sound: 48000Hz, 16bit, 2 channels

А откуда берутся данные, что выбран режим 48000Hz. Тут много где рекомендуют, что бы не было глюков на встроенных звуковухах выставлять принудительно только 44000Hz, или это просто максимальные возможности указаны?

psb
01.10.2013, 20:45
А откуда берутся данные, что выбран режим 48000Hz.
скорее всего это дефолтные значения звуковухи (у меня есть такие в настройках). что правильнее ставить - зависит от своей звуковухи, ибо если она 48000, а ты поставишь 44100, то тоже будет "плохо".

Titus
01.10.2013, 21:15
Кстати, Titus, обратил внимание на строчку:



А откуда берутся данные, что выбран режим 48000Hz. Тут много где рекомендуют, что бы не было глюков на встроенных звуковухах выставлять принудительно только 44000Hz, или это просто максимальные возможности указаны?

Хм, вообще-то это я принудительно выставляю, в надежде, что это самый распространенный режим, и хорошее качество.

---------- Post added at 21:15 ---------- Previous post was at 20:59 ----------


каждый фрейм:

1. ищешь разницу указателей на проигрываемый кусок (у текущего и предыдущего фрейма), она будет 480 или 2*480 каждый раз.
2. кладешь в кольцевой буфер.
3. считаешь среднее от всего буфера, получаешь число.
4. кладешь это число во второй кольцевой буфер.
5. считаешь среднее от этого буфера, получаешь число.

У меня практически так и есть.

Вот смотри. При 48000Гц аудио и 75Гц видео в кадре умещается ровно 640 отсчетов. В начале каждого кадра я фиксирую позицию в аудиобуфере и вычисляю, сколько проигралось отсчетов. Обычно это 640 +- 2..5. Если разброс укладывается в необходимый коридор, то я добавляю длину проигранного буфера в кольцевой буфер статистики, если же нет, то отбраковываю и в статистике не учитываю. При длине кольцевого буфера 128 позиций, колебания +-2..5 уезжают в облась сотых долей отсчета, что позволяет ими пренебречь. В течение каждого кадра так же проверяется, отстаем мы от прогнозируемой текущей длины буфера (допустим, равной 640.01356) или же опережаем. Если отстаем то корректируем число отсчетов в кадре на +0.01, если опережаем, то наоборот, соответственно. И каждый кадр натягиваем звук на это дробное текущее число отсчетов в кадре. Если в случае экстренных тормозов Винды потеряли кадр, или же по каким-то причинам прогнозируемое число отсчетов отстало или уехало более, чем на пол-кадра (320 отсчетов), то все параметры обнуляются и указатели выставляются на 0 (тут будет склейка звука).

Теперь, что получается при биении +480? Да ничего не получается. Во-первых надо делать огромный пребуферинг, не в пол-кадра, а гораздо больше. Это означает, что звук уже будет заметно отставать от видео.
Во-вторых, колебания длины буфера будут в 100 раз больше, что для меня ну совсем неприемлимо.

psb
01.10.2013, 21:50
Если отстаем то корректируем число отсчетов в кадре на +0.01
возможно, это не самый лучший вид регулятора.


Теперь, что получается при биении +480? Да ничего не получается.
у меня получается, у тебя не получается, ага.


Во-первых надо делать огромный пребуферинг, не в пол-кадра, а гораздо больше.
вот это с чего взято? что выдумывать-то? я брал пребуферинг в 480 сэмплов (не говоря о том, что я уже рассказывал, что можно его сильно ограничить 2м регулятором).
вот тебе джва столбца, один ты уже видел, второй - число реальных (не округленных до 480) непроигранных сэмплов в буфере:


881.292 444
881.292 447
881.292 451
881.292 453
881.292 457
881.28 456
881.292 454
881.292 456
881.292 457
881.292 460
881.292 462
881.28 458
881.292 454
881.292 453
881.292 453
881.292 457
881.292 458
881.28 459
881.292 463
881.292 461
881.292 463
881.292 460
881.292 463
881.28 459
881.292 460
881.292 460
881.292 459
881.292 464
881.292 465
881.28 466
881.292 470
881.292 471
881.292 474
881.292 471
881.292 472
881.28 471
881.292 474
881.292 477
881.292 480
как видишь, никаких колебаний длин в 100 раз больше не видится.

не поленись, напиши симулятор и проверь. сначала на синтетических "ровных" данных, потом на неровных.


что для меня ну совсем неприемлимо.
вообще, так можно про что угодно сказать. например, неприемлим никакой регулятор кроме релейного:) а уж если подходить профессионально, так винда вообще для этой затеи не приемлима. но если уж что-то выжимать, то пытаться это делать всеми способами.

Titus
01.10.2013, 22:30
как видишь, никаких колебаний длин в 100 раз больше не видится.
Я вижу только числа, но не знаю, как ты их получил.

Кинь алгоритм на Си, как ты их симулируешь.

psb
01.10.2013, 23:58
Кинь алгоритм на Си, как ты их симулируешь.
а на си нету...

Titus
02.10.2013, 00:23
а на си нету...

Ну на пальцах, или еще чем, чтобы я понял по шагам откуда чего берется.

psb
02.10.2013, 01:00
исходник не с собой щас, завтра.

Titus
02.10.2013, 09:47
Сделал маленький тест возможности точного позиционирования при эксклюзивном владении первичным буфером.
Тестируем.

Hacker VBI
02.10.2013, 10:28
buffer: 32768, step 480, monitor freq = 60
visible/total scanlines: 1080/1080
timer period min -1ms

и больше ничего. ЧОООрный экрааан
по вводу hello! - закрывается :)

Titus
02.10.2013, 10:40
buffer: 32768, step 480, monitor freq = 60
visible/total scanlines: 1080/1080
timer period min -1ms

и больше ничего. ЧОООрный экрааан
по вводу hello! - закрывается :)

Win7, как я понимаю?

480 - это жоперность. Значит даже эксклюзивное владение первичным буфером на Win7 фальшивое.

Hacker VBI
02.10.2013, 10:43
7ёрка, да
а вообще - что ожидалось в выводе теста?

Titus
02.10.2013, 10:48
7ёрка, да
а вообще - что ожидалось в выводе теста?

Узнать, позволяют ли системы типа Win7 использовать средствами DirectSound первичный звуковой буфер на уровне самой звуковухи. Получается, что нет, и он эмулируется, т.к. шаг опять же 480, а не 1.

Hacker VBI
02.10.2013, 10:58
хреново.
Вот тебе повод поставить 7

Titus
02.10.2013, 10:59
хреново.
Вот тебе повод поставить 7

В ж@пу эту семерку)

Похоже, надо теперь копать в сторону WaveRT, или даже WaveRT Exclusive Mode. Т.к. на ASIO надо ставить дрова, как я понял. Другое дело, как мне на XP проверить WaveRT...
WASAPI и WaveRT - это одно и то же?

Hacker VBI
02.10.2013, 11:04
Азио - выдумка Стейнберга, свои быстрые дрова на звук под хорошие звуковухи.
поэтому народ и юзает азио4олл как переходник, кто в теме с музыкой но без крутого аудио-железа.

Titus
02.10.2013, 11:05
Азио - выдумка Стейнберга, свои быстрые дрова на звук под хорошие звуковухи.
поэтому народ и юзает азио4олл как переходник, кто в теме с музыкой но без крутого аудио-железа.

С Хаббра:

Меломанам: точный вывод звука

1. Как я писал выше, большинство приложений для вывода звука в Windows 7 (хотят они того, или нет) используют режим WASAPI Shared. Но есть и другой режим — WASAPI Exclusive. Если руководствоваться блок-схемой, то в этом режиме отбрасывается всё, что лежит между Application Programming Interface и Kernel Streaming Transport — грубо говоря, звук идет непосредственно от приложения через интерфейс WASAPI на звуковую карту.
Но надо сделать замечание: так как в этом режиме отключен микшер WASAPI, а к микшеру звуковой карты доступа всё равно нет (ибо нет DirectSound), при использовании приложением эксклюзивного режима, воспроизведение любого другого источника через WASAPI становится невозможным.
Но, так или иначе, мы получаем по-битовый вывод аудио на звуковую карту.

2. Есть и другой способ. Если ваша звуковая карта имеет родной драйвер ASIO — вам крупно повезло. ASIO функционирует совершенно отдельно от WASAPI, так что, при прослушивании музыки системные звуки не будут отключаться — потоки ASIO и WASAPI будут микшироваться самой звуковой картой.
Вывод: если ваш драйвер ASIO не вызывает сомнений, используйте его.
Да, чуть не забыл — ASIO4ALL использовать нежелательно — как и Kernel Streaming, в этой ОС он работает очень нестабильно (судя по всему, из-за того, что другие звуки, идущие через WASAPI, периодически блокируют Kernel Transport).

ZEK
02.10.2013, 11:08
первичный звуковой буфер на уровне самой звуковухи.
а если у меня HDMI на монитор и цифровой звук на колонки, с кодека подключены только гарнитура, там есть вообще звуковуха? и тем более буфер звуковухи?

Titus
02.10.2013, 11:33
а если у меня HDMI на монитор и цифровой звук на колонки, с кодека подключены только гарнитура, там есть вообще звуковуха? и тем более буфер звуковухи?

Звуковуха есть всегда, даже если она интегрированная.

---------- Post added at 11:33 ---------- Previous post was at 11:16 ----------

Скачал и поставил себе на XP ASIO4ALL. Только пока не нашел доки, как под него программировать.

Lion17
02.10.2013, 11:33
Тактирование от аудио мне не подходит, так сделано во всех эмулях

Неправда! :) Мой ZX-Emul под DOS выставлял свой режим 50Hz,
тактировался от него, и буфер звука динамически подстраивал под него. Под ЭЛТ-монитром (который тянул 50Hz) было загляденье!

ZEK
02.10.2013, 11:49
Я думаю ключевое слово здесь 'DOS'
или hdmi, у меня монитор через hdmi может 60,59,50,48,30,25,24 а если подключить через VGA то только 59,60,75

---------- Post added at 10:49 ---------- Previous post was at 10:42 ----------


Звуковуха есть всегда, даже если она интегрированная.
AC97 там никакого буфера нет, процом через последовательный интерфейс пишутся слова и она как DAC работает

Titus
02.10.2013, 12:15
AC97 там никакого буфера нет, процом через последовательный интерфейс пишутся слова и она как DAC работает
Значит буфер софтварный.

---------- Post added at 12:15 ---------- Previous post was at 12:10 ----------


или hdmi, у меня монитор через hdmi может 60,59,50,48,30,25,24 а если подключить через VGA то только 59,60,75
При помощи PowerStrip я себе на VGA-монике сделал режим 50Гц.

ZEK
02.10.2013, 12:17
Значит буфер софтварный.
вот и какие претензии могут к нему быть, буфер создается на сколько то там байт, dma натравливают что бы он с какой то частотой в кодек выкидывал, лишнее прерывание это переключение контекста проца, новая инициализация dma и переключение обратно, думаю из за этих соображений сделан буфер фиксированной длинны, если клоцать как на аппаратной звуковухе то у проца времени не останется на работу

И при запуске quartus на одном и том же ноуте, под XP музыка заикалась неподецки, на Win7/8 пофик, все гладенько

Titus
02.10.2013, 12:20
вот и какие претензии могут к нему быть

Ничего не понял) Какие претензии могут быть к нему?
У меня к буферам претензий нет)
Претензии к топорной дискретности WASAPI Вин7)

ZEK
02.10.2013, 12:29
Я о том что 480 выборок в буфере и дискретность целая (хотя когда смотрел тесты когда hmdi основное звуковое устройство, у меня было 75% delta=0, остальное 480 и 224, иногда что то левое с большими значениями проскакивало)

Titus
02.10.2013, 12:32
Я о том что 480 выборок в буфере и дискретность целая
Да дело не в целости, а в том, что я таким обраозм не могу отслеживать точную скорость аудиопотока относительно частоты кадров. На XP могу, т.к. там дискретность малая, а на Win7 под любые девайсы она 480 отсчетов.

ZEK
02.10.2013, 12:38
На Win2003 вообще не работает тест, говорит "Can't create Back-Buffer Surface!"

Titus
02.10.2013, 12:41
На Win2003 вообще не работает тест, говорит "Can't create Back-Buffer Surface!"
Думаю, это связано с тем, что там DirectX не 8, а старее.

psb
02.10.2013, 13:53
вот код прототипа-симулятора. 2я колонка показывает реальное число сэмплов в буфере, оно должно стабилизироваться.


# -*- coding: utf-8 -*-
import random

QUANT=882 # рассчетное число сэмплов в прерывание
RES=480 # разрешение указателей звукового буфера

bufpos=0 # позиция буфера записи
playpos=0 # позиция буфера чтения

# put data to buffer
def render_frame(n):
global bufpos
bufpos+=int(n+0.5)

# play data from buffer
def play_frame(n):
global bufpos,playpos
n+=random.randint(-5,3) # add some noise to samples number
playpos+=n
if bufpos<playpos:
print "Underrun!"

# get rounded position
def get_pos():
return playpos/RES*RES

# limit value from l to h
def lim(v,l,h):
return min(h,max(l,v))

render_frame(RES) # пребуфферинг
fff=[];fff2=[] # окна фильтров
delta=0.0 # добавка к рассчетному числу сэмплов
I=0.0 # сост. интегратора
avg=0 # среднее зн. числа сэмплов
while 1:
# "заполняем" буфер, проигрыванием, вычисляем изменение указателя
t1=get_pos()
render_frame(QUANT+delta)
play_frame(QUANT)
t2=get_pos()
print avg,bufpos-playpos,delta,I

# filter 1
fff.append(t2-t1)
fff=fff[-200:]
avg=float(sum(fff))/len(fff)
# filter 2
fff2.append(avg)
fff2=fff2[-200:]
avg=sum(fff2)/len(fff2) # вычисленное реальное число сэмплов за фрейм

# ПИ-регулятор
if len(fff)>=200: # работает, если есть статистика по 200 фреймам
smps=int(QUANT+delta+0.5) # кол-во положенных сэмплов (то, что ушло в render_frame() в этот раз)
err=lim(avg-smps,-5,5) # разница между вычисленным средним и отправленным
I+=err*0.01; I=lim(I,-5,5) # ограниченный интегратор
P=0.5*err # проп. звено
delta=P+I # сумма

Titus
02.10.2013, 17:35
вот код прототипа-симулятора. 2я колонка показывает реальное число сэмплов в буфере, оно должно стабилизироваться.

А что за язык-то? Я его не знаю)

ZEK
02.10.2013, 17:56
Питон это, без знания синтаксиса может жестью показаться

Titus
02.10.2013, 18:56
Питон это, без знания синтаксиса может жестью показаться
Так оно и показалось)

NovaStorm
02.10.2013, 19:11
Да
разве
ж
это
жесть?

Hacker VBI
02.10.2013, 19:42
язык нравится!

psb
02.10.2013, 19:49
имхо, синтаксис отличный, очевидный. даже табы.

ZEK
02.10.2013, 20:35
Ну понять работу с массивами не прочитав хотя бы азов питона маловероятно (сильно от c-like языков отличается)
хотя согласен для расширения сознания с питоном полезно хотя бы ознакомиться

NovaStorm
02.10.2013, 20:48
psb, а Маяковский тебе в детстве нравился? =)

psb
02.10.2013, 21:06
а Маяковский тебе в детстве нравился? =)
как-то не интересовался... но к чему такая аналогия? я когда с питоном тока начинал (а я до сих пор начинаю), мне все очевидным казалось. по крайней мере читать его было очень легко, писать сложнее. для прототипов супер штука.

NovaStorm
02.10.2013, 21:24
>для прототипов супер штука.
Я склонен согласиться с этим, но сам как-то хреново питон воспринимаю, и логика зависящая от пробелов меня коробит.
>но к чему такая аналогия?
Да к внешнему виду исходника, очень похоже.

psb
02.10.2013, 21:29
>но к чему такая аналогия?
Да к внешнему виду исходника, очень похоже.
так я не для красоты писал...

Titus
02.10.2013, 22:10
Доделал версию, котрая использует эксклюзивный режим DirectSound.
В архиве лежат три версии:
EmuStudio-ZX Primary - воспроизведение в эксклюзивном режиме
EmuStudio-ZX Primary 3.5 - воспроизведение в эксклюзивном режиме с задержкой 3.5 кадра.
EmuStudio-ZX Secondary - обычная версия.

В эксклюзивном режиме всем другим приложениям запрещается вывод звука, а первичный аудиобуфер отдается одной единственной программе, т.е. эмулятору.

Некоторые особенности работы в подобном режиме:
1. При потере фокуса приложения, аудиобуфер отбирается, и восстанавливается при возвращении фокуса. Т.е. если окно эмулятора не активно, то звук не играет.
2. Закрывать эмулятор нужно крестиком на окне эмулятора, а не консольного окна, иначе в системе не восстановится глобальный регулятор громкости, и придется его восстанавливать самим в настройках.
3. Судя по всему, в эксклюзивном режиме информация о курсоре проигрывания не совсем верная и звук отстает. Поэтому я сделал еще версию с коррекцией (3.5 которая), в которой, во всяком случае у меня, звук воспроизводится без задержки.

Тестируем на WinXP и Win7 (хотя надежд в отношении нее я не чаю).
Так же, если у кого звук работает, нажимаем клавиши и слушаем, не задерживается ли звук от нажатых клавиш. Меня, как и раньше, интересует скриншот с первой страницей лога.

p.s.: В отладочном окне появилась дополнительная информация в реальном времени на сколько прогнозируемый размер аудиофрейма отстает или опережает реальный.

palsw
02.10.2013, 22:19
Звук везде ужасен - булькает и скрипит.

P
http://i.piccy_.info/i8/9983a9d4b4d2ee82c86052fce8e190ab/1380737953/30287/616276/p_500.jpg (http://piccy_.info/view3/5222542/87b29aa2a3d38afaa6a6d657a0cdfd04/)http://i.piccy_.info/a3/2013-10-02-18-19/i8-5222542/500x246-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-18-19/i8-5222542/500x246-r)
S
http://i.piccy_.info/i8/f7670cd77b0d2de34b6d1baa9ac84794/1380737969/30075/616276/s_500.jpg (http://piccy_.info/view3/5222547/bed989487ccf6f89968aff0135dc4925/)http://i.piccy_.info/a3/2013-10-02-18-19/i8-5222547/500x247-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-18-19/i8-5222547/500x247-r)
3,5
http://i.piccy_.info/i8/9fc4024b5b30a379879901ed5dbec692/1380737986/28601/616276/3_5_500.jpg (http://piccy_.info/view3/5222552/042c465f5a07b632b6801c4afe6de87d/)http://i.piccy_.info/a3/2013-10-02-18-19/i8-5222552/500x246-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-18-19/i8-5222552/500x246-r)

еще раз напоминаю - эмуль вешает CPU 80-90% как так?

забыл - win xp 32 звук встроенный

Titus
02.10.2013, 22:24
Звук везде ужасен - булькает и скрипит.
Так, значит никаких отличий ни в одном из этих режимов нет?

Hacker VBI
02.10.2013, 22:25
во всех случаях:
хрипит и теряет 2,3 (самый частый случай, вообще - от 1 до 4) фрейма, потом не может синхриться.
"Секондари" смог играть вместе с другой музой из анрила :), другие музыку останавливали.

Titus
02.10.2013, 22:27
еще раз напоминаю - эмуль вешает CPU 80-90% как так?
На самом деле, он вешает проц примерно 30% + сколько нужно для собственно эмуляции.

30%, потому что ближе к концу кадра, чтобы не прозевать начало луча, он перехватывает управление на себя.
А эмуляция не очень быстрая, т.к. львиную ее долю занимает программный рендеринг видеоизображения в формате точки 3x3 со сканлайнами. Если это переложить на плечи блиттера, то будет заметно быстрее.

---------- Post added at 22:27 ---------- Previous post was at 22:26 ----------


во всех случаях:
хрипит и теряет 2,3 (самый частый случай, вообще - от 1 до 4) фрейма, потом не может синхриться.
"Секондари" смог играть вместе с другой музой из анрила :), другие музыку останавливали.

Лог и версия винды.

palsw
02.10.2013, 23:03
другой комп,точнее уже бук.
WIN XP 32 .звук soundMax ,видео ATI 9600 все встроенное.тут вообще жесть - звук набор звуков и еще изображение разьехалось.
Версия P
http://i.piccy_.info/i8/55a57df6d586f106fc4f2de81dd8a20e/1380740594/34121/625579/p_500.jpg (http://piccy_.info/view3/5222847/23ad702257ad4fa3dc336e81fdfca28d/)http://i.piccy_.info/a3/2013-10-02-19-03/i8-5222847/486x343-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-19-03/i8-5222847/486x343-r)

CPU уже под 80% загрузка.intel pentium m 1600.другие эмули просто летают на нем

http://i.piccy_.info/i8/25249258b3a9032c3eaee0ee8c218f67/1380740820/39024/625579/u_500.jpg (http://piccy_.info/view3/5222875/d6913b1f2f96e486ad7b5aa23b020c0f/)http://i.piccy_.info/a3/2013-10-02-19-07/i8-5222875/500x285-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-19-07/i8-5222875/500x285-r)

http://i.piccy_.info/i8/d5bbe6881a85641a6b34ebd13933c97f/1380741046/22061/625579/123_500.jpg (http://piccy_.info/view3/5222898/5aec68f8fb158bce25b0b3e04441a671/)http://i.piccy_.info/a3/2013-10-02-19-10/i8-5222898/500x218-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-19-10/i8-5222898/500x218-r)

Titus
02.10.2013, 23:16
другой комп,точнее уже бук.
WIN XP 32 .звук soundMax ,видео ATI 9600 все встроенное.тут вообще жесть - звук набор звуков и еще изображение разьехалось.
Версия P

А другие версии? На этом буке, судя по данным, все же должно работать. Попробуй удержать окно эмулятора пару секунд, не сбросятся ли величины расхождения звука в 0 в консольном окне?

На счет изображения - у тебя там случайно не стоит ли видеорежим отличный от 32 бит?

---------- Post added at 23:16 ---------- Previous post was at 23:09 ----------


CPU уже под 80% загрузка.intel pentium m 1600.другие эмули просто летают на нем

Описание индикатора быстродействия:
http://s40.radikal.ru/i087/1310/a6/2080aa4fe8c9.png

palsw
02.10.2013, 23:26
EmuStudio-ZX Primary 3.5.exe тут звук классный

http://i.piccy_.info/i8/d5ad88706da7676248580697c1d4746d/1380741500/54797/625579/55555_500.jpg (http://piccy_.info/view3/5222951/144fb0718008b17bd04fbe6099561cd8/)http://i.piccy_.info/a3/2013-10-02-19-18/i8-5222951/472x354-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-19-18/i8-5222951/472x354-r)

да ,стояло 16 бит почему то .щас изображение нормальное - загрузка cpu 80%

на скриншоте видно этот индикатор -когда музыка не играет примерно на 65% заполнен.звук без задержек вроде .

---------- Post added at 22:26 ---------- Previous post was at 22:19 ----------

сейчас звук более менее в версии P .Ускорен из за 60 герц.
Если держать окно эмулятора то звук зацикливается.на скриншоте результат удержания окна
http://i.piccy_.info/i8/1c236a47fe9a05d8ab0455bc5e33ef01/1380741862/63560/625579/6666_500.jpg (http://piccy_.info/view3/5222983/a9caa1d9fda475e5afabcdd720f55175/)http://i.piccy_.info/a3/2013-10-02-19-24/i8-5222983/472x354-r/i.gif (http://i.piccy_.info/a3c/2013-10-02-19-24/i8-5222983/472x354-r)

Titus
02.10.2013, 23:30
EmuStudio-ZX Primary 3.5.exe тут звук классный
А в Secondary какой звук?

Когда держишь окно эмулятора, звук зацикливается, потому что эмулятор останавливается.

palsw
02.10.2013, 23:45
Titus, после того как сделал экран с 16 на 32 то звук в DIZZY очень узнаваем и в обоих версиях реакция звука без задержек.поиграл маленько мин 10 - вроде норм

Titus
02.10.2013, 23:46
Titus, после того как сделал экран с 16 на 32 то звук в DIZZY очень узнаваем и в обоих версиях реакция звука без задержек.поиграл маленько мин 10 - вроде норм

В общем, нашли один компьютер, на котором работает хорошо)

ZEK
03.10.2013, 00:46
На восьмерке все плохо, все версии

---------- Post added at 23:46 ---------- Previous post was at 23:35 ----------

Зато если переключить на 50гц развертки, все почти идеально, 99,9% выводит 0> иногда пропускает фреймы тот что Primary

Titus
03.10.2013, 01:01
На восьмерке все плохо, все версии

---------- Post added at 23:46 ---------- Previous post was at 23:35 ----------

Зато если переключить на 50гц развертки, все почти идеально, 99,9% выводит 0> иногда пропускает фреймы тот что Primary

Без скриншотов это почти не информативно.

ZEK
03.10.2013, 02:00
скрин

Titus
03.10.2013, 03:24
скрин

В данном случае работает потому, что 'случайно' параметры кратны друг другу.
при 50Гц 48000/50 = 960 (а это 480*2),
ну и при 100Гц 48000/100 = 480.

Т.е. все кратно дискретности буфера на Win7.

---------- Post added at 03:24 ---------- Previous post was at 02:25 ----------


вот код прототипа-симулятора. 2я колонка показывает реальное число сэмплов в буфере, оно должно стабилизироваться.
Попробовал понять, все-таки ничего не понял)
Попробуй изобразить на си, если не сложно.

psb
03.10.2013, 13:01
Попробуй изобразить на си, если не сложно.
блин, ну я же уже и словами описывал... что именно там не понятно? функции (def) должны быть понятны.

# filter 1
fff.append(t2-t1)
fff=fff[-200:]
avg=float(sum(fff))/len(fff)

fff - массив из чисел. append добавляет в него новое число, fff=fff[-200:] оставляет последние 200 чисел, avg - сумма всех чисел делится на кол-во чисел. второй фильтр - то же самое.

в регуляторе чистая математика. где не понятно?

Titus
03.10.2013, 13:54
блин, ну я же уже и словами описывал... что именно там не понятно?
Вот такой вот синтаксис, что мне не понятно)

Ладно, попробую в меру своего понимания перевести на Си, если тебе сложно)

Titus
03.10.2013, 23:43
в регуляторе чистая математика. где не понятно?
Набросал на си твою програму, как я ее понял:


// PSB-Test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "math.h"

#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))

#define DIMLEN 200

float QUANT = 882; // рассчетное число сэмплов в прерывание
float RES = 480; // разрешение указателей звукового буфера

float bufpos = 0; // позиция буфера записи
float playpos = 0; // позиция буфера чтения

float FFF[DIMLEN]; // фильтр 1
float FFF2[DIMLEN]; // фильтр 2
float delta = 0; // добавка к рассчетному числу сэмплов
float I = 0; // сост. интегратора
float avg = 0; // среднее зн. числа сэмплов
long len = 1; // начальная длина массива


void render_frame(float n) // put data to buffer
{
bufpos = bufpos + long(n + 0.5);
}

void play_frame(float n)
{
n = n - 5 + rand() * 10.0 / RAND_MAX; // add some noise to samples number
playpos = playpos + n;
if (bufpos < playpos)
printf("Underrun!\n");
}

float get_pos(void) // get rounded position
{
return((long)((long)playpos / RES) * RES);
}

float lim(float v, float l, float h) // limit value from l to h
{
return(min(h, max(l, v)));
}


int _tmain(int argc, _TCHAR* argv[])
{
long j, k;

float t1, t2, sum, err, P, smps;


printf("Test!\n");

render_frame(RES); // пребуфферинг

for (j=0; j<1050; j++) // заполняем" буфер, проигрыванием, вычисляем изменение указателя
{
t1 = get_pos(); //
render_frame(QUANT + delta); //
play_frame(QUANT); //
t2 = get_pos(); //

printf("avg = %f, b-p = %f, delta = %f, I = %f\n",
avg, bufpos-playpos, delta, I);

// filter 1
for (k=0; k<(DIMLEN-1); k++) //
FFF[k] = FFF[k+1]; //
FFF[k] = t2 - t1; //
sum = 0; //
for (k=DIMLEN-len; k<DIMLEN; k++) //
sum = sum + FFF[k]; //
avg = sum / len; //

// filter 2
for (k=0; k<(DIMLEN-1); k++) //
FFF2[k] = FFF2[k+1]; //
FFF2[k] = avg; //
sum = 0; //
for (k=DIMLEN-len; k<DIMLEN; k++) //
sum = sum + FFF2[k]; //
avg = sum / len; // вычисленное реальное число сэмплов за фрейм

// ПИ-регулятор
if (len == 200) // работает, если есть статистика по 200 фреймам
{
smps = long(QUANT + delta + 0.5); // кол-во положенных сэмплов (то, что ушло в render_frame() в этот раз)
err = lim(avg - smps, -5, 5); // разница между вычисленным средним и отправленным
I = I + err * 0.01; // ограниченный интегратор
I = lim(I, -5, 5); //
P = 0.5 * err; // проп. звено
delta = P + I; // сумма
}
else
len++;

}



return 0;
}



На 882 выходит только через несколько сот итераций.
А колебания длины кадра даже на 1000-й итерации доходят до 0.1, что очень грубо.
Пока что не вникал в подробности, только перенес на Си.

psb
04.10.2013, 02:08
На 882 выходит только через несколько сот итераций.
все это зависит от настроек фильтра (его наверняка можно сделать короче) и регулятора.


А колебания длины кадра даже на 1000-й итерации доходят до 0.1, что очень грубо.
0.1 чего? сэмпла? :)
и еще, у тебя в реальных условиях на идеальном железе сколько бывает разница +- сэмплов на фрейм?

Titus
04.10.2013, 02:21
все это зависит от настроек фильтра (его наверняка можно сделать короче) и регулятора.

0.1 чего? сэмпла? :)
и еще, у тебя в реальных условиях на идеальном железе сколько бывает разница +- сэмплов на фрейм?

да, 0.1 семпла.

В реальных условиях, если я не ошибаюсь, около 0.01. Причем никаких заметных на слух колебаний даже в самом начале регулировки. Таким образом сразу после запуска эмулятора слышится ровный, никуда не плавающий звук.

И еще, ты не знаешь о таком моменте, что нет никакой гарантии точного временнОго детектирования начала кадра. Т.е. в среднем, колебания может быть в несколько сканлайнов, но, особенно в зависимости от загрузки винды, скачки могут быть непредсказуемые и достаточно большие. У меня на это тоже идет корректировка, без чего не было бы такой точности.

psb
04.10.2013, 02:35
+- даже несколько целых сэмплов за фрейм ты не услышишь.

Titus
04.10.2013, 02:43
+- даже несколько целых сэмплов за фрейм ты не услышишь.
Хо))) +- несколько целых фреймов - это порядка 1%. Вполне можно услышать. А уж шумовую помеху оно точно добавит.

У меня разрешены колебания не более 1/256 семпла, т.е. при 60Гц развертке это менее тысячной доли процента. Мне нравится, чтобы было так)

psb
04.10.2013, 14:31
Мне нравится, чтобы было так)
ок. открывай сразу магазин по продаже спец. железа под супер-точный эмулятор:) идеология ТЛЗ в действии, чо...

Titus
04.10.2013, 14:42
ок. открывай сразу магазин по продаже спец. железа под супер-точный эмулятор:) идеология ТЛЗ в действии, чо...
Вот только не надо придираться) Все работает на обычном железе. Другое дело, что под Вин7 пока не нашел способ заточиться.

[bETA]mEN
04.10.2013, 20:54
Другое дело, что под Вин7 пока не нашел способ заточиться.
Если судить по Steam Hardware & Software Survey: September 2013, то Windows Vista/7/8 на 87,26% компьютеров.

Titus
04.10.2013, 21:52
mEN;632260']Если судить по Steam Hardware & Software Survey: September 2013, то Windows Vista/7/8 на 87,26% компьютеров.
Да и у нас на форуме она у 80%.

---------- Post added at 21:52 ---------- Previous post was at 21:14 ----------

Начитался, что Kernel Streaming не использует системный миксер и имеет малую задержку (во всяком случае для систем до Win7). Но ссылки на доки от него на майкрософте давно протухли. Не смог ничего найти. Ни у кого нет доки и примеров? Называется вроде DirectKS.

savelij
05.10.2013, 15:37
Да и у нас на форуме она у 80%.

---------- Post added at 21:52 ---------- Previous post was at 21:14 ----------

Начитался, что Kernel Streaming не использует системный миксер и имеет малую задержку (во всяком случае для систем до Win7). Но ссылки на доки от него на майкрософте давно протухли. Не смог ничего найти. Ни у кого нет доки и примеров? Называется вроде DirectKS.

deathsoft и unreal передают тебе привет (сорцы примера directks)
http://www.microsoft.com/en-us/download/details.aspx?id=18989

Titus
05.10.2013, 15:47
deathsoft и unreal передают тебе привет (сорцы примера directks)
http://www.microsoft.com/en-us/download/details.aspx?id=18989
Спасибище.

Хотя у Микрософта так все запутано, что иной раз черт рога сломает.

Чтобы понять, что это и с чем его едят - надо ВСЕ изучить.
Жаль нет спеца, который сразу скажет, что этот DirectKS может, а что нет.

Titus
05.10.2013, 19:25
Спасибо за тестовый пример Direct Streaming.

Поразбиравшись, сделал на основе него тест, позволяющий проверить точность позицирования этим методом.

Запускаем тест, и несколько раз в меню нажимаем RUN и STOP, должен получиться такой лог. А так же звучать гладкий без щелчков и прерываний синус. Потом лог пишем сюда. Особенно владельцы Win7, т.к. не факт, что там это заработает. А если заработает, да еще и с малым разрешением - будет вообще супер.


0.027: Заполнение буфера 16-битным синусом
0.036: Pin state is KSSTATE_STOP
2.460: Setting Pin to KSSTATE_RUN ...
2.461: Packet 0 is available... Submitting packet 0
2.462: Position = 5, Position2 = 6, Delta = 1
4.700: Setting Pin to KSSTATE_STOP ...
5.804: Setting Pin to KSSTATE_RUN ...
5.805: Packet 0 is available... Submitting packet 0
5.806: Position = 4, Position2 = 5, Delta = 1
7.380: Setting Pin to KSSTATE_STOP ...
8.300: Setting Pin to KSSTATE_RUN ...
8.301: Packet 0 is available... Submitting packet 0
8.302: Position = 14, Position2 = 15, Delta = 1
9.436: Setting Pin to KSSTATE_STOP ...

Titus
05.10.2013, 19:42
Так, один семерочник написал, что под вин7 у него не работает.

Дождемся других.

breeze
05.10.2013, 19:51
Так, один семерочник написал, что под вин7 у него не работает.

Win8 x64 тоже никакой реакции на Run/Stop. Реагирует только на фокус.


1.186: Losing focus!! We must relenquish our resources ...
1.285: Gaining focus!! Must build graph ...
1.286: Entering RenderThreadProc
1.290: Leaving RenderThreadProc

Titus
05.10.2013, 19:57
Win8 x64 тоже никакой реакции на Run/Stop. Реагирует только на фокус.

Все понятно, на семерках и восьмерках KernelStreaming убрали (((

Теперь подождем XP-шников.

---------- Post added at 19:57 ---------- Previous post was at 19:54 ----------

Особенно интересует винда palsw, там, где в DirectSound'e был шаг 139.

palsw
05.10.2013, 19:59
Titus, ок :)

походу 139 было на стационарном компе.Сейчас гляну на буке с xp и на стационаре с Win7

запуск на буке win XP 32


0.055: Заполнение буфера 16-битным синусом
0.139: Pin state is KSSTATE_STOP
6.040: Losing focus!! We must relenquish our resources ...
6.040: Aborting streaming loop ...
6.046: Leaving RenderThreadProc
6.146: Gaining focus!! Must build graph ...
6.150: Entering RenderThreadProc
6.161: Заполнение буфера 16-битным синусом
6.183: Pin state is KSSTATE_STOP
11.277: Setting Pin to KSSTATE_STOP ...
13.988: Setting Pin to KSSTATE_RUN ...
13.990: Packet 0 is available... Submitting packet 0
13.992: Position = 11, Position2 = 13, Delta = 2
18.220: Setting Pin to KSSTATE_STOP ...
19.899: Setting Pin to KSSTATE_RUN ...
19.901: Packet 0 is available... Submitting packet 0
19.902: Position = 11, Position2 = 13, Delta = 2
25.803: Setting Pin to KSSTATE_STOP ...
27.579: Setting Pin to KSSTATE_RUN ...
27.581: Packet 0 is available... Submitting packet 0
27.582: Position = 11, Position2 = 13, Delta = 2
32.697: Setting Pin to KSSTATE_STOP ...
34.553: Losing focus!! We must relenquish our resources ...
34.555: Aborting streaming loop ...
34.556: Leaving RenderThreadProc
55.838: Gaining focus!! Must build graph ...
55.841: Entering RenderThreadProc
55.852: Заполнение буфера 16-битным синусом
55.875: Pin state is KSSTATE_STOP

win 7 x64 sp1


0.031: Заполнение буфера 16-битным синусом
0.047: Pin state is KSSTATE_STOP
2.325: Losing focus!! We must relenquish our resources ...
2.325: Aborting streaming loop ...
2.325: Leaving RenderThreadProc
2.387: Gaining focus!! Must build graph ...
2.387: Entering RenderThreadProc
2.403: Заполнение буфера 16-битным синусом
2.403: Pin state is KSSTATE_STOP
6.646: Setting Pin to KSSTATE_RUN ...
6.646: Packet 0 is available... Submitting packet 0
6.661: Position = 216, Position2 = 220, Delta = 4
11.232: Setting Pin to KSSTATE_STOP ...
14.586: Setting Pin to KSSTATE_RUN ...
14.602: Packet 0 is available... Submitting packet 0
14.602: Position = 168, Position2 = 172, Delta = 4
24.118: Setting Pin to KSSTATE_STOP ...
27.035: Setting Pin to KSSTATE_RUN ...
27.035: Packet 0 is available... Submitting packet 0
27.035: Position = 192, Position2 = 196, Delta = 4
34.601: Setting Pin to KSSTATE_STOP ...
39.281: Losing focus!! We must relenquish our resources ...
39.281: Aborting streaming loop ...
39.281: Leaving RenderThreadProc
76.674: Gaining focus!! Must build graph ...
76.674: Entering RenderThreadProc
76.690: Заполнение буфера 16-битным синусом
76.690: Pin state is KSSTATE_STOP

Titus
05.10.2013, 20:12
http://i.piccy_.info/i8/b44ba6242b73015bb15dbdb5edcd6706/1380384565/25797/616276/Bezymiannyi_500.jpg (http://piccy_.info/view3/5201872/f45f7ed65a7e096180e0ba4298bfd594/)http://i.piccy_.info/a3/2013-09-28-16-09/i8-5201872/500x274-r/i.gif (http://i.piccy_.info/a3c/2013-09-28-16-09/i8-5201872/500x274-r)


win xp 32 sp3
Звуковуха встроенная C-media AC97

Вот это было на чем?

---------- Post added at 20:07 ---------- Previous post was at 20:03 ----------


Titus, ок :)

походу 139 было на стационарном компе.Сейчас гляну на буке с xp и на стационаре с Win7

запуск на буке win XP 32

На буке все в ажуре. Но у тебя и раньше на нем хорошо работало с DirectSound было разрешение 1.

Запусти на том XP, где 139 было.

---------- Post added at 20:12 ---------- Previous post was at 20:07 ----------


win 7 x64 sp1

Вау! Не может быть! Запустилось на семерке с малым шагом!

Странно, что у троих моих приятелей не запускалось. Значит надо тестить и на семерке.

А звук был? Чистый синус без глюков?

palsw
05.10.2013, 20:21
Titus, звук на win7 был чистый,но не забывай что там стоит звуковая за 100$ не встроенная .
Звук на буке тоже не самый плохой -SoudMax.тоже слышно синус без проблем.

вот он комп-легенда 139
winxp x32

0.424: Pin state is KSSTATE_STOP
14.192: Setting Pin to KSSTATE_RUN ...
14.207: Packet 0 is available... Submitting packet 0
14.207: Position = 0, Position2 = 140, Delta = 140
21.395: Setting Pin to KSSTATE_STOP ...
24.192: Setting Pin to KSSTATE_RUN ...
24.192: Packet 0 is available... Submitting packet 0
24.192: Position = 0, Position2 = 139, Delta = 139
28.176: Setting Pin to KSSTATE_STOP ...
29.473: Setting Pin to KSSTATE_RUN ...
29.473: Packet 0 is available... Submitting packet 0
29.473: Position = 0, Position2 = 139, Delta = 139
31.317: Setting Pin to KSSTATE_STOP ...
32.426: Setting Pin to KSSTATE_RUN ...
32.426: Packet 0 is available... Submitting packet 0
32.426: Position = 0, Position2 = 139, Delta = 139
34.442: Setting Pin to KSSTATE_RUN ...
35.785: Setting Pin to KSSTATE_STOP ...

Titus
05.10.2013, 20:24
Titus, звук на win7 был чистый,но не забывай что там стоит звуковая за 100$ не встроенная .
Звук на буке тоже не самый плохой -SoudMax.тоже слышно синус без проблем.

вот он комп-легенда 139
winxp x32

Опять 139. Легенда явно непобедимая. Это уже на уровне драйверов звуковухи, тут ничего не поделаешь.
А что за звуковуха?

---------- Post added at 20:24 ---------- Previous post was at 20:23 ----------

Раз у одного человека на Win7 все-таки пошло, просьба и другим проверить.

palsw
05.10.2013, 20:30
Titus, звуковая полное г. C-media AC97 и походу драйвера какие то универсальные.Мамка тоже полное г. Elite Group.попробую найти родные драйвера - помню были такие и иконка с 3D звуком еще была.И кстати 6 канальный звук.

Alex Rider
05.10.2013, 20:55
Win7 x64 - то же поведение, что и у breeze

Titus
05.10.2013, 21:01
Win7 x64 - то же поведение, что и у breeze

Странно, почему же у palsw работает?

ZEK
05.10.2013, 21:18
Win7 x32, Win8 x64 никакой реакции, звуковуха встроенная

Titus
05.10.2013, 21:41
Win7 x32, Win8 x64 никакой реакции, звуковуха встроенная
Возможно, там нужно выбрать правильный интерфейс для семерки, и у palsw он случайно оказался. Надо больше сделать тестовой информации, на чем прекращает работать. Но для этого нужно изучить как следует этот DirectStreaming. Одно радует - что у кого он пошел на семерке, он идет с хорошим разрешением, а не 480, как DirectSound.

palsw
05.10.2013, 21:48
Titus,
но не забывай что там стоит звуковая за 100$ не встроенная

сейчас комп притащили семерку переустановить -обычный 2х ядерник со встроенной звуковой.Как сделаю сразу проверю :)

goodboy
05.10.2013, 21:49
попробовал под xp , CreativeAudioPCI

0.031: Заполнение буфера 16-битным синусом
0.047: Pin state is KSSTATE_STOP
6.453: Setting Pin to KSSTATE_RUN ...
6.453: Packet 0 is available... Submitting packet 0
6.453: Position = 0, Position2 = 8, Delta = 8
11.719: Setting Pin to KSSTATE_STOP ...
14.203: Losing focus!! We must relenquish our resources ...
14.203: Aborting streaming loop ...
14.203: Leaving RenderThreadProc
14.375: Gaining focus!! Must build graph ...
14.375: Entering RenderThreadProc
14.391: Заполнение буфера 16-битным синусом
14.406: Pin state is KSSTATE_STOP
24.000: Setting Pin to KSSTATE_RUN ...
24.000: Packet 0 is available... Submitting packet 0
24.016: Position = 8, Position2 = 16, Delta = 8
30.125: Setting Pin to KSSTATE_STOP ...
34.625: Setting Pin to KSSTATE_RUN ...
34.625: Packet 0 is available... Submitting packet 0
34.625: Position = 0, Position2 = 8, Delta = 8
42.047: Setting Pin to KSSTATE_STOP ...
46.125: Losing focus!! We must relenquish our resources ...
46.141: Aborting streaming loop ...
46.156: Leaving RenderThreadProc
66.860: Gaining focus!! Must build graph ...
66.860: Entering RenderThreadProc
66.875: Заполнение буфера 16-битным синусом
66.875: Pin state is KSSTATE_STOP

Titus
05.10.2013, 21:57
попробовал под xp , CreativeAudioPCI

А в эмуляторе-то звук гладенько работает или как?

p.s.: Судя по всему, шаг буфера (под XP) одинаковый для всех режимов, что DirectStreaming, что DirectSound (обычный/эксклюзивный). Предполагаемый плюс DirectStreaming в том, что у него отсуствует задержка (~30ms) вносимая ядром при смешивании каналов. Ну, и, плюс еще способность работать в точном режиме на Win7 (что пока заработало правильно лишь на тачке palsw).

ZEK
05.10.2013, 22:07
он идет с хорошим разрешением, а не 480
идет там где не софтовый а аппаратный буфер, думаю в этом причина

goodboy
05.10.2013, 22:18
А в эмуляторе-то звук гладенько работает или как?
мне показалось что музыка звучит более быстро

Titus
05.10.2013, 22:24
мне показалось что музыка звучит более быстро

Она и должна звучать быстро. Я имею ввиду - гладко ли?

savelij
05.10.2013, 22:51
Она и должна звучать быстро. Я имею ввиду - гладко ли?

desthsoft сообщает, что есть звуковухи у которых есть несколько независимых звуковых выходов, и нужно перечислять все выходные каналы и давать возможность выбрать через какой канал выдавать звук. Текущая тестовая программа на w2003 вообще звуков не издает, при этом как раз используется второй канал для подклчения наушников.

И от него же предложение о переносе общения в этой теме сюда (http://dlcorp.nedopc.com)

palsw
05.10.2013, 23:10
Titus, на голой win 7 x64 с встроенной звуковой VIA совсем не работает.проверю еще раз когда драйвера все установлю родные.сейчас семерка сама подхватила звук .

ZEK
06.10.2013, 00:51
что есть звуковухи у которых есть несколько независимых звуковых выходов
Отож у меня 6 выходов из низ 3 юзаю постоянно и одновременно, еще один иногда

Titus
06.10.2013, 01:01
desthsoft сообщает, что есть звуковухи у которых есть несколько независимых звуковых выходов, и нужно перечислять все выходные каналы и давать возможность выбрать через какой канал выдавать звук. Текущая тестовая программа на w2003 вообще звуков не издает, при этом как раз используется второй канал для подклчения наушников.

Может быть действительно, по умолчанию выбирается не тот выход.
Что такое w2003?

Titus
06.10.2013, 01:35
Добавил больше информации в тест.


0.501: Entering RenderThreadProc
0.519: Filters enumerated
0.519: Filter for rendering is avaliable
0.520: Total 1 filters
0.520: Pin for rendering is avaliable
0.521: Заполнение буфера 16-битным синусом
0.529: Pin state is KSSTATE_STOP


Запустите на Вин7, будет видно, на каком пункте застрянет.

ZEK
06.10.2013, 01:56
Win8 x64


0.501: Entering RenderThreadProc
0.505: EnumFilters failed
0.506: Leaving RenderThreadProc

[bETA]mEN
06.10.2013, 02:00
Win7 x64


0.500: Entering RenderThreadProc
0.528: EnumFilters failed
0.529: Leaving RenderThreadProc

Titus
06.10.2013, 02:11
Вот интересно. Значит ошибка еще на этапе перечисления фильтров. А вовсе не потому, что выбирается из нескольких не тот, который нужен.

Фильтр выбирается следующим образом:
тип: Audio rendering filter (только один подходящий вариант)
категории две: KSCATEGORY_AUDIO и KSCATEGORY_RENDER

да вот, в общем-то и все.

У palsw на Win7 выбирается, а у других почему-то нет.

Titus
06.10.2013, 02:27
Расширил дебагинфо для перечисления фильтров. Теперь это выглядит примерно так:

0.501: Entering RenderThreadProc
0.508: Device found
0.509: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\dmsynth
0.511: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\syntha
0.513: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\synthb
0.514: Failed to get requested DeviceInterfaceAlias
0.515: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\uart1
0.517: Succeeded to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\wavepci
0.519: Failed to get requested DeviceInterfaceAlias
0.519: Failed to get requested DeviceInterfaceAlias
0.520: Failed to get requested DeviceInterfaceAlias
0.521: Failed to get requested DeviceInterfaceAlias
0.521: Failed to get requested DeviceInterfaceAlias
0.522: Failed to get requested DeviceInterfaceAlias
0.522: All devices enumerated
0.524: Filters enumerated
0.524: Filter for rendering is avaliable
0.524: Total 1 filters
0.525: Pin for rendering is avaliable
0.525: Заполнение буфера 16-битным синусом
0.532: Pin state is KSSTATE_STOP

[bETA]mEN
06.10.2013, 02:46
0.500: Entering RenderThreadProc
0.508: Device found
0.509: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.510: Failed to get requested DeviceInterfaceAlias
0.510: Failed to get requested DeviceInterfaceAlias
0.510: Failed to get requested DeviceInterfaceAlias
0.510: Failed to get requested DeviceInterfaceAlias
0.511: Failed to get requested DeviceInterfaceAlias
0.511: Failed to get requested DeviceInterfaceAlias
0.511: Failed to get requested DeviceInterfaceAlias
0.512: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.512: Failed to get requested DeviceInterfaceAlias
0.513: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.513: Failed to get requested DeviceInterfaceAlias
0.513: Failed to get requested DeviceInterfaceAlias
0.514: Failed to get requested DeviceInterfaceAlias
0.514: Failed to get requested DeviceInterfaceAlias
0.514: All devices enumerated
0.516: EnumFilters failed
0.516: Leaving RenderThreadProc

:v2_dizzy_tired2:

ZEK
06.10.2013, 02:54
Win8 x64


0.502: Entering RenderThreadProc
0.504: Device found
0.504: Failed to get requested DeviceInterfaceAlias
0.505: Failed 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.508: Failed to get requested DeviceInterfaceAlias
0.508: Failed to get requested DeviceInterfaceAlias
0.509: Failed to get requested DeviceInterfaceAlias
0.509: Failed to get requested DeviceInterfaceAlias
0.509: Failed to get requested DeviceInterfaceAlias
0.510: Failed 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.511: Failed 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.511: Failed to get requested DeviceInterfaceAlias
0.511: Failed to get requested DeviceInterfaceAlias
0.512: Failed to get requested DeviceInterfaceAlias
0.512: Failed to get requested DeviceInterfaceAlias
0.512: Failed to get requested DeviceInterfaceAlias
0.513: Failed to get requested DeviceInterfaceAlias
0.513: Failed to get requested DeviceInterfaceAlias
0.513: Failed 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.514: Failed to get requested DeviceInterfaceAlias
0.514: Failed 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.515: Failed to get requested DeviceInterfaceAlias
0.515: DeviceInterfaceAlias disabled
0.515: All devices enumerated
0.517: EnumFilters failed
0.517: Leaving RenderThreadProc

Titus
06.10.2013, 03:00
Хм, судя по названиям, устройства предназначены для вывода звука.

---------- Post added at 03:00 ---------- Previous post was at 02:57 ----------

Опять подождем palsw, чтобы узнать на каком устройстве у него срабатывает.

palsw
06.10.2013, 03:02
Titus, а я еще не сплю :)

Blade
06.10.2013, 03:06
Win7 x64, звука нет.

0.500: Entering RenderThreadProc
0.511: Device found
0.512: Failed to get requested DeviceInterfaceAlias
0.513: Failed to get requested DeviceInterfaceAlias
0.514: Failed to get requested DeviceInterfaceAlias
0.514: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.516: Failed to get requested DeviceInterfaceAlias
0.517: Failed to get requested DeviceInterfaceAlias
0.517: Failed to get requested DeviceInterfaceAlias
0.518: Failed to get requested DeviceInterfaceAlias
0.520: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0888&subsys_1458a002&rev_1000#4&26f0be82&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\espdifoutwave
0.525: Failed to create filter for \\?\pci#ven_1102&dev_0005&subsys_00311102&rev_00#4&1cde33b3&0&28f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\dmsynth
0.526: Failed to get requested DeviceInterfaceAlias
0.527: Succeeded to create filter for \\?\pci#ven_1102&dev_0005&subsys_00311102&rev_00#4&1cde33b3&0&28f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\spdifoutwave
0.529: Failed to create filter for \\?\pci#ven_1102&dev_0005&subsys_00311102&rev_00#4&1cde33b3&0&28f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\syntha
0.530: Failed to create filter for \\?\pci#ven_1102&dev_0005&subsys_00311102&rev_00#4&1cde33b3&0&28f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\synthb
0.531: Failed to get requested DeviceInterfaceAlias
0.532: Succeeded to create filter for \\?\pci#ven_1102&dev_0005&subsys_00311102&rev_00#4&1cde33b3&0&28f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\wavepci
0.533: All devices enumerated
0.534: Filters enumerated
0.535: Filter for rendering is avaliable
0.535: Total 2 filters
0.536: Pin for rendering is avaliable
0.537: Заполнение буфера 16-битным синусом
0.545: Pin state is KSSTATE_STOP
7.124: Setting Pin to KSSTATE_RUN ...
7.125: Packet 0 is available... Submitting packet 0
7.125: Position = 4, Position2 = 5, Delta = 1
10.882: Setting Pin to KSSTATE_STOP ...
13.002: Setting Pin to KSSTATE_RUN ...
13.003: Packet 0 is available... Submitting packet 0
13.004: Position = 4, Position2 = 5, Delta = 1
15.803: Setting Pin to KSSTATE_STOP ...
17.443: Setting Pin to KSSTATE_RUN ...
17.444: Packet 0 is available... Submitting packet 0
17.445: Position = 3, Position2 = 5, Delta = 2

Titus
06.10.2013, 03:08
Win7 x64, звука нет.
Потому что нашел у тебя spdifoutwave на первом месте и выводит в него, а ты не слышишь.

palsw
06.10.2013, 03:10
стандартный win7 x64 звук via

0.515: Entering RenderThreadProc
0.718: Device found
0.733: Failed to get requested DeviceInterfaceAlias
0.733: Failed to get requested DeviceInterfaceAlias
0.733: Failed to get requested DeviceInterfaceAlias
0.733: Failed to get requested DeviceInterfaceAlias
0.733: Failed to get requested DeviceInterfaceAlias
0.733: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\ehdmioutwave
0.749: Failed to get requested DeviceInterfaceAlias
0.749: Failed to get requested DeviceInterfaceAlias
0.749: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\eslavedhplineoutwave
0.749: All devices enumerated
0.749: EnumFilters failed
0.749: Leaving RenderThreadProc

win 7 x64 звук поет :)


0.515: Entering RenderThreadProc
0.515: Device found
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Succeeded to create filter for \\?\audiotrak#pdhd2_01#5&2f73e3fa&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\esi_wave
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: All devices enumerated
0.515: Filters enumerated
0.515: Filter for rendering is avaliable
0.515: Total 1 filters
0.515: Pin for rendering is avaliable
0.515: Заполнение буфера 16-битным синусом
0.531: Pin state is KSSTATE_STOP
11.778: Setting Pin to KSSTATE_RUN ...
11.778: Packet 0 is available... Submitting packet 0
11.778: Position = 148, Position2 = 152, Delta = 4
16.255: Setting Pin to KSSTATE_STOP ...
19.469: Setting Pin to KSSTATE_RUN ...
19.469: Packet 0 is available... Submitting packet 0
19.469: Position = 72, Position2 = 76, Delta = 4
23.790: Setting Pin to KSSTATE_STOP ...
25.054: Setting Pin to KSSTATE_RUN ...
25.054: Packet 0 is available... Submitting packet 0
25.054: Position = 32, Position2 = 36, Delta = 4
28.735: Setting Pin to KSSTATE_STOP ...
30.639: Setting Pin to KSSTATE_RUN ...
30.639: Packet 0 is available... Submitting packet 0
30.639: Position = 176, Position2 = 180, Delta = 4
42.276: Setting Pin to KSSTATE_STOP ...
44.413: Setting Pin to KSSTATE_RUN ...
44.413: Packet 0 is available... Submitting packet 0
44.413: Position = 232, Position2 = 236, Delta = 4
50.419: Setting Pin to KSSTATE_STOP ...
51.886: Setting Pin to KSSTATE_STOP ...
53.524: Setting Pin to KSSTATE_RUN ...
53.524: Packet 0 is available... Submitting packet 0
53.524: Position = 16, Position2 = 20, Delta = 4
55.770: Setting Pin to KSSTATE_RUN ...
57.517: Setting Pin to KSSTATE_RUN ...
59.031: Setting Pin to KSSTATE_STOP ...
60.341: Setting Pin to KSSTATE_RUN ...
60.341: Packet 0 is available... Submitting packet 0
60.341: Position = 172, Position2 = 176, Delta = 4
63.180: Setting Pin to KSSTATE_STOP ...
70.122: Losing focus!! We must relenquish our resources ...
70.138: Aborting streaming loop ...
70.138: Leaving RenderThreadProc
103.069: Gaining focus!! Must build graph ...
103.584: Entering RenderThreadProc
103.584: Device found
103.584: Failed to get requested DeviceInterfaceAlias
103.584: Succeeded to create filter for \\?\audiotrak#pdhd2_01#5&2f73e3fa&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\esi_wave
103.584: Failed to get requested DeviceInterfaceAlias
103.600: Failed to get requested DeviceInterfaceAlias
103.600: Failed to get requested DeviceInterfaceAlias
103.600: Failed to get requested DeviceInterfaceAlias
103.600: Failed to get requested DeviceInterfaceAlias
103.600: Failed to get requested DeviceInterfaceAlias
103.600: All devices enumerated
103.600: Filters enumerated
103.600: Filter for rendering is avaliable
103.600: Total 1 filters
103.600: Pin for rendering is avaliable
103.615: Заполнение буфера 16-битным синусом
103.615: Pin state is KSSTATE_STOP

Titus
06.10.2013, 03:19
стандартный win7 x64 звук via

А на той, где играет, где тоже Вин7?

---------- Post added at 03:19 ---------- Previous post was at 03:14 ----------

В общем, звук играет через esiwave, wavepci и spdifoutwave.

palsw
06.10.2013, 03:22
а на встроенном HDA-audio нет - а это все новые встроенные звуковые

Titus
06.10.2013, 03:37
Судя по всему все дело в отсуствие pin'ов у устройств для вывода звука (сам не знаю, почему их пинами называют).
Сделал еще больше отладочной инфы в районе пинов:

0.501: Entering RenderThreadProc
0.508: Device found
0.509: Instance succeeded
0.510: Total 2 pins found
0.510: Pin 0:
0.510: Communication = 1
0.511: Pin 1:
0.511: Communication = 0
0.511: Pin communication value doesn't make sense
0.511: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.512: No valid pins found on the filter
0.513: Pins not Enumerated
0.513: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\dmsynth
0.514: Instance succeeded
0.515: Total 2 pins found
0.515: Pin 0:
0.515: Communication = 1
0.516: Pin 1:
0.516: Communication = 0
0.516: Pin communication value doesn't make sense
0.516: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.517: No valid pins found on the filter
0.517: Pins not Enumerated
0.517: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\syntha
0.518: Instance succeeded
0.518: Total 2 pins found
0.518: Pin 0:
0.520: Communication = 1
0.521: Pin 1:
0.521: Communication = 0
0.521: Pin communication value doesn't make sense
0.521: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.521: No valid pins found on the filter
0.522: Pins not Enumerated
0.522: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\synthb
0.522: Failed to get requested DeviceInterfaceAlias
0.523: Instance succeeded
0.523: Total 4 pins found
0.523: Pin 0:
0.523: Communication = 1
0.524: Pin 1:
0.524: Communication = 0
0.524: Pin communication value doesn't make sense
0.524: Pin 2:
0.524: Communication = 1
0.525: Pin 3:
0.525: Communication = 0
0.525: Pin communication value doesn't make sense
0.525: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.525: No valid pins found on the filter
0.526: Pins not Enumerated
0.526: Failed to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\uart1
0.527: Instance succeeded
0.527: Total 5 pins found
0.527: Pin 0:
0.527: Communication = 1
0.528: Pin 1:
0.528: Communication = 0
0.528: Pin communication value doesn't make sense
0.528: Pin 2:
0.528: Communication = 1
0.529: Pin 3:
0.529: Communication = 0
0.529: Pin communication value doesn't make sense
0.530: Pin 4:
0.530: Communication = 1
0.530: RenderSink = 1, RenderSource = 0, CaptureSink = 1, CaptureSource = 0
0.530: Valid pins found on the filter
0.531: Pins Enumerated
0.531: Succeeded to create filter for \\?\pci#ven_1102&dev_0004&subsys_00511102&rev_03#4&3029db9d&0&50f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\wavepci
0.531: Failed to get requested DeviceInterfaceAlias
0.532: Failed to get requested DeviceInterfaceAlias
0.533: Failed to get requested DeviceInterfaceAlias
0.533: Failed to get requested DeviceInterfaceAlias
0.534: Failed to get requested DeviceInterfaceAlias
0.534: Failed to get requested DeviceInterfaceAlias
0.535: All devices enumerated
0.536: Filters enumerated
0.536: Filter for rendering is avaliable
0.536: Total 1 filters
0.537: Pin for rendering is avaliable
0.538: Заполнение буфера 16-битным синусом
0.546: Pin state is KSSTATE_STOP

[bETA]mEN
06.10.2013, 04:19
Win7 x64


0.500: Entering RenderThreadProc
0.512: Device found
0.513: Instance succeeded
0.513: Total 2 pins found
0.514: Pin 0:
0.514: Communication = 1
0.514: Pin 1:
0.515: Communication = 0
0.515: Pin communication value doesn't make sense
0.515: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.517: No valid pins found on the filter
0.517: Pins not Enumerated
0.518: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.518: Failed to get requested DeviceInterfaceAlias
0.519: Failed to get requested DeviceInterfaceAlias
0.519: Failed to get requested DeviceInterfaceAlias
0.520: Failed to get requested DeviceInterfaceAlias
0.520: Failed to get requested DeviceInterfaceAlias
0.520: Failed to get requested DeviceInterfaceAlias
0.521: Failed to get requested DeviceInterfaceAlias
0.521: Instance succeeded
0.522: Total 2 pins found
0.522: Pin 0:
0.522: Communication = 1
0.523: Pin 1:
0.523: Communication = 0
0.525: Pin communication value doesn't make sense
0.526: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.526: No valid pins found on the filter
0.526: Pins not Enumerated
0.526: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.527: Failed to get requested DeviceInterfaceAlias
0.527: Instance succeeded
0.528: Total 2 pins found
0.528: Pin 0:
0.528: Communication = 1
0.528: Pin 1:
0.529: Communication = 0
0.529: Pin communication value doesn't make sense
0.529: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.529: No valid pins found on the filter
0.530: Pins not Enumerated
0.530: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.530: Failed to get requested DeviceInterfaceAlias
0.530: Failed to get requested DeviceInterfaceAlias
0.531: Failed to get requested DeviceInterfaceAlias
0.531: Failed to get requested DeviceInterfaceAlias
0.531: All devices enumerated
0.534: EnumFilters failed
0.534: Leaving RenderThreadProc

Hacker VBI
06.10.2013, 09:36
win7 max, sb live
пищит, пробовал первую и последнюю версию теста.

0.502: Entering RenderThreadProc
0.509: Device found
0.511: Failed to get requested DeviceInterfaceAlias
0.513: Instance succeeded
0.514: Total 2 pins found
0.515: Pin 0:
0.515: Communication = 1
0.516: Pin 1:
0.517: Communication = 0
0.518: Pin communication value doesn't make sense
0.519: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.524: Valid pins found on the filter
0.525: Pins Enumerated
0.526: Succeeded to create filter for \\?\pci#ven_1102&dev_0007&subsys_100a1102&rev_00#4&e6d76c4&0&10f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\spdifwave
0.527: Failed to get requested DeviceInterfaceAlias
0.530: Instance succeeded
0.530: Total 4 pins found
0.531: Pin 0:
0.532: Communication = 1
0.533: Pin 1:
0.534: Communication = 0
0.535: Pin communication value doesn't make sense
0.536: Pin 2:
0.537: Communication = 1
0.538: Pin 3:
0.538: Communication = 0
0.542: Pin communication value doesn't make sense
0.556: RenderSink = 1, RenderSource = 0, CaptureSink = 1, CaptureSource = 0
0.557: Valid pins found on the filter
0.557: Pins Enumerated
0.558: Succeeded to create filter for \\?\pci#ven_1102&dev_0007&subsys_100a1102&rev_00#4&e6d76c4&0&10f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\wave
0.559: All devices enumerated
0.561: Filters enumerated
0.562: Filter for rendering is avaliable
0.562: Total 2 filters
0.565: Pin for rendering is avaliable
0.566: Заполнение буфера 16-битным синусом
0.573: Pin state is KSSTATE_STOP
6.846: Setting Pin to KSSTATE_RUN ...
6.848: Packet 0 is available... Submitting packet 0
6.851: Position = 0, Position2 = 280, Delta = 280

Titus
06.10.2013, 11:37
mEN;632646']Win7 x64

Я так понимаю, что эти устройства:
rearlineoutwave3 - задний линейный выход
rtspdifoptwave - spdif opt(?)
rtspdifwave - spdif

Но ни в одном из них нет RenderSink-пинов, позволяющих выводить звук.

---------- Post added at 11:37 ---------- Previous post was at 11:31 ----------


win7 max, sb live
пищит, пробовал первую и последнюю версию теста.

У тебя два устройства, позволяющие выводить звук - это spdifwave и wave. Он выбирает по умолчанию первое. Но вот дельта у spdif плохая - 280.

Alex Rider
06.10.2013, 12:47
Еще один лог для Win 7 x64 ниже. После RUN при возврате фокуса после потери падает, дамп тут (http://sderni.ru/199844).

UPD: У меня интегрированная AC'97 (дефолтное аудиоустройство) и USB-гарнитура.



0.503: Entering RenderThreadProc
0.519: Device found
0.520: Failed to get requested DeviceInterfaceAlias
0.521: Failed to get requested DeviceInterfaceAlias
0.522: Failed to get requested DeviceInterfaceAlias
0.523: Instance succeeded
0.523: Total 2 pins found
0.524: Pin 0:
0.525: Communication = 1
0.525: Pin 1:
0.526: Communication = 0
0.526: Pin communication value doesn't make sense
0.527: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.530: No valid pins found on the filter
0.531: Pins not Enumerated
0.532: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.533: Failed to get requested DeviceInterfaceAlias
0.533: Failed to get requested DeviceInterfaceAlias
0.534: Failed to get requested DeviceInterfaceAlias
0.535: Failed to get requested DeviceInterfaceAlias
0.536: Failed to get requested DeviceInterfaceAlias
0.537: Instance succeeded
0.537: Total 2 pins found
0.538: Pin 0:
0.538: Communication = 1
0.539: Pin 1:
0.543: Communication = 0
0.544: Pin communication value doesn't make sense
0.544: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.545: No valid pins found on the filter
0.545: Pins not Enumerated
0.546: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.547: Failed to get requested DeviceInterfaceAlias
0.548: Instance succeeded
0.548: Total 2 pins found
0.549: Pin 0:
0.549: Communication = 1
0.550: Pin 1:
0.550: Communication = 0
0.551: Pin communication value doesn't make sense
0.551: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.552: No valid pins found on the filter
0.552: Pins not Enumerated
0.553: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.553: Failed to get requested DeviceInterfaceAlias
0.554: Failed to get requested DeviceInterfaceAlias
0.554: Failed to get requested DeviceInterfaceAlias
0.556: DeviceInterfaceAlias disabled
0.557: Instance succeeded
0.557: Total 5 pins found
0.557: Pin 0:
0.558: Communication = 1
0.558: Pin 1:
0.558: Communication = 3
0.559: Pin 2:
0.559: Communication = 4
0.559: Pin communication value doesn't make sense
0.559: Pin 3:
0.560: Communication = 4
0.560: Pin communication value doesn't make sense
0.560: Pin 4:
0.560: Communication = 4
0.561: Pin communication value doesn't make sense
0.561: RenderSink = 1, RenderSource = 1, CaptureSink = 1, CaptureSource = 0
0.561: Valid pins found on the filter
0.561: Pins Enumerated
0.562: Succeeded to create filter for \\?\usb#vid_047f&pid_aa15&mi_00#8&30b5d44&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global
0.562: All devices enumerated
0.563: Filters enumerated
0.563: Filter for rendering is avaliable
0.563: Total 1 filters
0.564: Pin for rendering is avaliable
0.564: Заполнение буфера 16-битным синусом
0.569: Pin state is KSSTATE_STOP
3.795: Setting Pin to KSSTATE_RUN ...
3.800: Packet 0 is available... Submitting packet 0

[bETA]mEN
06.10.2013, 13:13
Я так понимаю, что эти устройства:
rearlineoutwave3 - задний линейный выход
rtspdifoptwave - spdif opt(?)
rtspdifwave - spdif


Могу, только, ответить цитатой из datsheet на ALC892:


Hardware Features

- DACs with 95dB SNR (A-weighting), ADCs with 90dB SNR (A-weighting)
- Ten DAC channels support 16/20/24-bit PCM format for 7.1 channel sound playback, plus 2 channels of concurrent independent stereo sound output (multiple streaming) through the front panel output
- Two stereo ADCs support 16/20/24-bit PCM format, multiple stereo recording
- All DACs supports 44.1k/48k/96k/192kHz sample rate
- All ADCs supports 44.1k/48k/96k/192kHz sample rate
- Primary 16/20/24-bit SPDIF-OUT supports 32k/44.1k/48k/88.2k/96k/192kHz sample rate
- Secondary 16/20/24-bit SPDIF-OUT supports 32k/44.1k/48k/88.2k/96k/192kHz sample rate
- 16/20/24-bit SPDIF-IN supports 44.1k/48k/96k/192kHz sample rate
- All analog jacks (port-A to port-G) are stereo input and output re-tasking
- Port-D/E/F built-in headphone amplifiers
- Port-B/C/E/F with software selectable boost gain (+10/+20/+30dB) for analog microphone input
- High-quality analog differential CD input
- Supports external PCBEEP input and built-in digital BEEP generator
- Software selectable 2.5V/3.2V/4.0V VREFOUT
- Up to four channels of microphone array input are supported for AEC/BF applications
- Three jack detection pins; each designed to detect up to 4 jacks
- Supports legacy analog mixer architecture
- Up to two GPIOs (General Purpose Input and Output) for customized applications. GPIO0 and GPIO1 share pin with DMIC-CLK and DMIC-DATA
- Supports mono and stereo digital microphone interface (pins shared with GPIO0 and GPIO1)
- Supports anti-pop mode when analog power LDO-IN is on and digital power is off
- Content Protection for Full Rate lossless DVD Audio, Blu-ray DVD, and HD-DVD audio content playback (with selected versions of WinDVD/PowerDVD/TMT)
- 1dB per step output volume and input volume control
- Supports 3.3V digital core power, 1.5V or 3.3V digital I/O power for HD Audio link, and 5.0V analog power
- Intel low power ECR compliant and power status control for each analog/digital converter and pin widget
- 48-pin LQFP ‘Green’ package

Software Features

- Meets Microsoft WLP 3.x and future WLP audio requirements
- WaveRT-based audio function driver for Windows Vista and Windows 7
- Direct Sound 3D™ compatible
- I3DL2 compatible
- 7.1+2 channel multi-streaming enables concurrent gaming/VoIP
- Emulation of 26 sound environments to enhance gaming experience
- Multiband software equalizer and tools provided
- Voice Cancellation and Key Shifting effect
- Dynamic range control (expander, compressor, and limiter) with adjustable parameters
- Intuitive Configuration Panel (Realtek Audio Manager) to enhance user experience
- Microphone Acoustic Echo Cancellation (AEC), Noise Suppression (NS), and Beam Forming (BF) technology for voice applications
- Smart multiple streaming operation
- HDMI audio driver for AMD platform
- Optional Dolby PCEE program, SRS TruSurround HD, SRS Premium Sound, Fortemedia SAM, Creative Host Audio, Synopsys Sonic Focus, DTS Surround Sensation | UltraPC, and DTS Connect licenses

palsw
06.10.2013, 13:31
win7 x64 звук via


0.515: Entering RenderThreadProc
0.515: Device found
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Failed to get requested DeviceInterfaceAlias
0.515: Instance succeeded
0.515: Total 2 pins found
0.515: Pin 0:
0.515: Communication = 1
0.515: Pin 1:
0.515: Communication = 0
0.515: Pin communication value doesn't make sense
0.515: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.515: No valid pins found on the filter
0.531: Pins not Enumerated
0.531: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\ehdmioutwave
0.531: Failed to get requested DeviceInterfaceAlias
0.531: Failed to get requested DeviceInterfaceAlias
0.531: Instance succeeded
0.531: Total 2 pins found
0.531: Pin 0:
0.531: Communication = 1
0.531: Pin 1:
0.531: Communication = 0
0.546: Pin communication value doesn't make sense
0.546: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.546: No valid pins found on the filter
0.546: Pins not Enumerated
0.546: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\eslavedhplineoutwave
0.546: All devices enumerated
0.546: EnumFilters failed
0.546: Leaving RenderThreadProc

Titus
06.10.2013, 13:37
Это Windows 2003 server, обычно w2k3 пишут.

прочел все 20 страниц эпопеи, занятненько.
Под этой самой w2k3 в эмуле звука нет, в тестах все прекрасно)))
По большомуу счету та же самая ХР, вид сбоку, DX9, звук встроенный.
Эмули работают все, даже Mak2 :)) Есичо...

Логи теста?

С другими эмулями сравнивать не надо, у них иной принцип, есичо)

---------- Post added at 13:37 ---------- Previous post was at 13:32 ----------


Еще один лог для Win 7 x64 ниже. После RUN при возврате фокуса после потери падает, дамп тут (http://sderni.ru/199844).

UPD: У меня интегрированная AC'97 (дефолтное аудиоустройство) и USB-гарнитура.

Похоже, ему не нравится USB-гарнитура. Он его опознает, как USB global (почему такое название?), считает, что через это можно выводить и где-то спотыкается.

Titus
06.10.2013, 16:45
Несколько приблизился к месту ошибки. Скорее всего это из-за проблем с инициализацией аудио-пина. В новом тесте больше отладочной инфы именно на эту тему.

palsw
06.10.2013, 18:07
Titus, win7 x64 звук via

0.515: Entering RenderThreadProc
0.531: Device found
0.546: Pin 0: Communication type = 1
0.546: No standard streaming interfaces on the pin
0.546: Found SINK IN Pin, id = 0, hr = 80004005
0.546: Pin 1: Communication type = 0
0.562: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.562: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\ehdmioutwave
0.562: Pin 0: Communication type = 1
0.562: No standard streaming interfaces on the pin
0.562: Found SINK IN Pin, id = 0, hr = 80004005
0.562: Pin 1: Communication type = 0
0.562: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.562: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\eslavedhplineoutwave
0.562: All devices enumerated
0.562: EnumFilters failed
0.562: Leaving RenderThreadProc
13.432: Losing focus!! We must relenquish our resources ...
36.473: Gaining focus!! Must build graph ...
36.988: Entering RenderThreadProc
37.003: Device found
37.003: Pin 0: Communication type = 1
37.003: No standard streaming interfaces on the pin
37.003: Found SINK IN Pin, id = 0, hr = 80004005
37.003: Pin 1: Communication type = 0
37.003: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
37.003: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\ehdmioutwave
37.003: Pin 0: Communication type = 1
37.003: No standard streaming interfaces on the pin
37.003: Found SINK IN Pin, id = 0, hr = 80004005
37.003: Pin 1: Communication type = 0
37.019: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
37.019: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\eslavedhplineoutwave
37.019: All devices enumerated
37.019: EnumFilters failed
37.019: Leaving RenderThreadProc

win7 x64 звук via установлены родные драйвера:


0.530: Entering RenderThreadProc
0.624: Device found
0.624: Pin 0: Communication type = 1
0.624: No standard streaming interfaces on the pin
0.624: Found SINK IN Pin, id = 0, hr = 80004005
0.624: Pin 1: Communication type = 0
0.624: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.639: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\hdmioutputwave
0.639: Pin 0: Communication type = 1
0.639: No standard streaming interfaces on the pin
0.639: Found SINK IN Pin, id = 0, hr = 80004005
0.639: Pin 1: Communication type = 0
0.639: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.639: Failed to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave
0.639: All devices enumerated
0.639: EnumFilters failed
0.639: Leaving RenderThreadProc

palsw
06.10.2013, 19:11
zebest, пищит :)

Alex Rider
06.10.2013, 19:55
Win7 x64 (с USB-гарнитурой) - не пишыт.


0.501: Entering RenderThreadProc
0.514: Device found
0.516: Pin 0: Communication type = 1
0.517: No standard streaming interfaces on the pin
0.518: Found SINK IN Pin, id = 0, hr = 80004005
0.518: Pin 1: Communication type = 0
0.519: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.522: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.524: Pin 0: Communication type = 1
0.525: No standard streaming interfaces on the pin
0.526: Found SINK IN Pin, id = 0, hr = 80004005
0.527: Pin 1: Communication type = 0
0.527: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.528: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.529: Pin 0: Communication type = 1
0.530: No standard streaming interfaces on the pin
0.531: Found SINK IN Pin, id = 0, hr = 80004005
0.531: Pin 1: Communication type = 0
0.532: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.532: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.534: DeviceInterfaceAlias disabled
0.535: Pin 0: Communication type = 1
0.536: Failed to retrieve pin property KSPROPERTY_PIN_GLOBALCINSTANCES on PinID: 0
0.537: Total 1 DataRanges
0.537: Found SINK IN Pin, id = 0, hr = 0
0.538: Pin 1: Communication type = 3
0.542: Failed to retrieve pin property KSPROPERTY_PIN_GLOBALCINSTANCES on PinID: 1
0.543: Total 1 DataRanges
0.544: Pin 2: Communication type = 4
0.544: Pin 3: Communication type = 4
0.545: Pin 4: Communication type = 4
0.545: RenderSink = 1, RenderSource = 1, CaptureSink = 1, CaptureSource = 0
0.545: Succeeded to create filter for \\?\usb#vid_047f&pid_aa15&mi_00#8&30b5d44&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global
0.546: All devices enumerated
0.548: Filters enumerated
0.548: Filter for rendering is avaliable
0.549: Total 1 filters
0.550: Pin for rendering is avaliable
0.551: Заполнение буфера 16-битным синусом
0.557: Pin state is KSSTATE_STOP
3.502: Setting Pin to KSSTATE_RUN ...
3.508: Packet 0 is available... Submitting packet 0


При возвращении фокуса говорит теперь так:


---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: C:\Users\Rider\AppData\Local\Temp\Rar$EXa0.163\kss ample.exe
File: dbgheap.c
Line: 1200

Expression: _pFirstBlock == pHead

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Abort Retry Ignore
---------------------------


Дамп нужен?

[bETA]mEN
06.10.2013, 20:14
Win7 x64 с Realtek ALC892


0.500: Entering RenderThreadProc
0.510: Device found
0.511: Pin 0: Communication type = 1
0.512: No standard streaming interfaces on the pin
0.512: Found SINK IN Pin, id = 0, hr = 80004005
0.513: Pin 1: Communication type = 0
0.513: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.515: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.516: Pin 0: Communication type = 1
0.517: No standard streaming interfaces on the pin
0.517: Found SINK IN Pin, id = 0, hr = 80004005
0.517: Pin 1: Communication type = 0
0.518: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.518: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.519: Pin 0: Communication type = 1
0.519: No standard streaming interfaces on the pin
0.520: Found SINK IN Pin, id = 0, hr = 80004005
0.520: Pin 1: Communication type = 0
0.520: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.521: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.521: All devices enumerated
0.524: EnumFilters failed
0.524: Leaving RenderThreadProc

Titus
06.10.2013, 20:38
Отож, тут то пищит, а вот в эмууле - нет..
http://savepic.su/3421172m.jpg (http://savepic.su/3421172.htm)http://savepic.su/3408884m.jpg (http://savepic.su/3408884.htm)

а,да, просьба, индикатор подвИнуть, ибо под моими кнопотчками его половину не видно))

А что это за две дополнительные кнопочки на окне?

В шок-мегадеме звука у меня нет, может поэтому не пищит?

И вообще, тест - это DirectStreaming, а в эмуляторе - DirectSound.

---------- Post added at 20:37 ---------- Previous post was at 20:31 ----------


Дамп нужен?

Нет, нет, дампов не нужно.

---------- Post added at 20:38 ---------- Previous post was at 20:37 ----------

В общем, понятно, у тех, у кого звук в принципе долже быть, но нету, затыкается при инициализации аудио-пина с ошибкой:
'No standard streaming interfaces on the pin'

Titus
06.10.2013, 21:05
В спекуляторе звук есть , на твоем же файле Shock Megademo 6.sna
Кстати почему это снапшот размером со 128 снапшот? ведь 48к?

ААА! Потому что у меня нет AY, только бипер) Это же просто модель спектрума-48 для теста некоторых возможностей системы по выводу синхронного видео и аудио. Относись к этому, как тесту а не как к эмулятору.

Titus
06.10.2013, 21:08
В общем, так. У устройства должен быть стандартный интерфейс KSINTERFACESETID_Standard с GUID = {1a8766a0-62ce-11cf-a5d6-28db04c10000}. На WinXP у меня все устройства имеют такой GUID, а вот на Вин7, похоже, GUID другой. Новый тест выведет начальную часть этого неопознанного GUID.

Alex Rider
06.10.2013, 21:20
0.501: Entering RenderThreadProc
0.516: Device found
0.518: Pin 0: Communication type = 1
0.519: Total 7 DataRanges
0.520: Interface GUID {1A8766A0-62CE-11CF-A5}
0.520: Interfice ID 1
0.521: No standard streaming interfaces on the pin
0.522: Found SINK IN Pin, id = 0, hr = 80004005
0.522: Pin 1: Communication type = 0
0.523: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.525: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.526: Pin 0: Communication type = 1
0.527: Total 6 DataRanges
0.527: Interface GUID {1A8766A0-62CE-11CF-A5}
0.527: Interfice ID 1
0.528: No standard streaming interfaces on the pin
0.528: Found SINK IN Pin, id = 0, hr = 80004005
0.528: Pin 1: Communication type = 0
0.528: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.529: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.529: Pin 0: Communication type = 1
0.530: Total 6 DataRanges
0.530: Interface GUID {1A8766A0-62CE-11CF-A5}
0.530: Interfice ID 1
0.530: No standard streaming interfaces on the pin
0.530: Found SINK IN Pin, id = 0, hr = 80004005
0.532: Pin 1: Communication type = 0
0.533: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.533: Failed to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_104384fb&rev_1003#4&382096a2&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.534: DeviceInterfaceAlias disabled
0.534: Pin 0: Communication type = 1
0.534: Failed to retrieve pin property KSPROPERTY_PIN_GLOBALCINSTANCES on PinID: 0
0.535: Total 1 DataRanges
0.535: Interface GUID {1A8766A0-62CE-11CF-A5}
0.535: Interfice ID 0
0.535: Found SINK IN Pin, id = 0, hr = 0
0.535: Pin 1: Communication type = 3
0.536: Failed to retrieve pin property KSPROPERTY_PIN_GLOBALCINSTANCES on PinID: 1
0.536: Total 1 DataRanges
0.536: Interface GUID {1A8766A0-62CE-11CF-A5}
0.536: Interfice ID 0
0.536: Pin 2: Communication type = 4
0.537: Pin 3: Communication type = 4
0.537: Pin 4: Communication type = 4
0.537: RenderSink = 1, RenderSource = 1, CaptureSink = 1, CaptureSource = 0
0.537: Succeeded to create filter for \\?\usb#vid_047f&pid_aa15&mi_00#8&30b5d44&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global
0.537: All devices enumerated
0.538: Filters enumerated
0.538: Filter for rendering is avaliable
0.539: Total 1 filters
0.539: Pin for rendering is avaliable
0.540: Заполнение буфера 16-битным синусом
0.543: Pin state is KSSTATE_STOP
9.105: Setting Pin to KSSTATE_RUN ...
9.112: Packet 0 is available... Submitting packet 0

Titus
06.10.2013, 21:28
0.520: Interface GUID {1A8766A0-62CE-11CF-A5}
0.520: Interfice ID 1

Так, все понятно, интерфейс тоже стандартный, НО!

Если ID = 0, то это KSINTERFACE_STANDARD_STREAMING (что считается корректным),
а если ID = 1, то это KSINTERFACE_STANDARD_LOOPED_STREAMING (что отвергается в примере).

---------- Post added at 21:28 ---------- Previous post was at 21:27 ----------

Вот, что про них написано в микрософте:


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.

Titus
06.10.2013, 21:35
Сделал пример, в котором правильным наоборот считается LOOPING интерфейс, и будет искаться именно он. Возможно, теперь заработают другие драйвера.

[bETA]mEN
06.10.2013, 22:05
Сделал пример, в котором правильным наоборот считается LOOPING интерфейс, и будет искаться именно он. Возможно, теперь заработают другие драйвера.
Как то оно так...

0.500: Entering RenderThreadProc
0.513: Device found
0.514: Pin 0: Communication type = 1
0.515: Total 7 DataRanges
0.515: Interface GUID {1A8766A0-62CE-11CF-A5}
0.516: Interfice ID 1
0.516: Found SINK IN Pin, id = 0, hr = 0
0.516: Pin 1: Communication type = 0
0.517: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.518: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.520: Pin 0: Communication type = 1
0.521: Total 6 DataRanges
0.521: Interface GUID {1A8766A0-62CE-11CF-A5}
0.521: Interfice ID 1
0.522: Found SINK IN Pin, id = 0, hr = 0
0.522: Pin 1: Communication type = 0
0.522: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.522: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.523: Pin 0: Communication type = 1
0.524: Total 6 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_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.528: All devices enumerated
0.531: Filters enumerated
0.532: Filter for rendering is avaliable
0.532: Total 3 filters
0.532: No pins available for rendering
0.533: Leaving RenderThreadProc

Titus
06.10.2013, 23:26
Это переключать окна между двумя мониторами и растягивать окно на оба монитора. Как то так...

Как мне узнать, есть ли дополнительные кнопки? Вроде никак.
Я беру, узнаю ширины основных 3-х кнопок, и рисую к ним вплотную индикатор.

---------- Post added at 23:25 ---------- Previous post was at 23:23 ----------


mEN;632804']Как то оно так...

Отлично, теперь эти три устройства опознались, как выводящие, но почему-то остановка на 0.532: No pins available for rendering.

---------- Post added at 23:26 ---------- Previous post was at 23:25 ----------


Так то оно так, кабы не было вот так:
Теперь опознался линейный выход, и судя по логу идет в него вывод. Звук слышен?

Titus
06.10.2013, 23:36
Та я оказывается медленный газ. Бипер нормально , почти:), работает, я чет думал должнО AY быть)) Вот еще скрин
Это не совсем нормально, не должна теряться синхра. Но пока это не актуально.

Titus
06.10.2013, 23:49
Добавил больше инфо для тех, у кого затыкается на 'No pins available for rendering'.

[bETA]mEN
07.10.2013, 00:04
Добавил больше инфо для тех, у кого затыкается на 'No pins available for rendering'.
:v2_dizzy_keyboard:

0.500: Entering RenderThreadProc
0.506: Device found
0.507: Pin 0: Communication type = 1
0.507: Total 7 DataRanges
0.508: Interface GUID {1A8766A0-62CE-11CF-A5}
0.508: Interfice ID 1
0.508: Found SINK IN Pin, id = 0, hr = 0
0.508: Pin 1: Communication type = 0
0.509: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.510: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.511: Pin 0: Communication type = 1
0.511: Total 6 DataRanges
0.511: Interface GUID {1A8766A0-62CE-11CF-A5}
0.511: Interfice ID 1
0.512: Found SINK IN Pin, id = 0, hr = 0
0.512: Pin 1: Communication type = 0
0.512: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.512: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.513: Pin 0: Communication type = 1
0.513: Total 6 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.515: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.517: All devices enumerated
0.519: Filters enumerated
0.519: Filter for rendering is avaliable
0.519: Total 3 filters
0.519: Try WAVEFORMATEXTENSIBLE format
0.520: Failed to instantiate Render Pin
0.520: Try WAVEFORMATEX format
0.520: Failed to instantiate Render Pin
0.520: No pins available for rendering
0.521: Leaving RenderThreadProc

Titus
07.10.2013, 01:43
Все понятно.
Не смотря на то, что теперь выбираются устройства, поддерживающие только циклическое воспроизведение, но при инициализации пина по старинке выбирался нециклический метод. Сейчас принудительно поставил циклический, и должно заработать у тех, у кого писало ошибку.
Другое дело, что в таком режиме, судя по всему, позиция внутри буфера считается несколько иначе, поэтому я сделал тройной рассчет друг за другом, дабы примерно понять шаг.

breeze
07.10.2013, 02:49
Все понятно.

Ну что-то есть…



0.502: Entering RenderThreadProc
0.503: Device found
0.504: Pin 0: Communication type = 1
0.505: Total 3 DataRanges
0.505: Interface GUID {1A8766A0-62CE-11CF-A5}
0.506: Interfice ID 1
0.506: Found SINK IN Pin, id = 0, hr = 0
0.506: Pin 1: Communication type = 0
0.506: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.509: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0889&subsys_1458a002&rev_1000#4&2f790c35&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.509: All devices enumerated
0.511: Filters enumerated
0.511: Filter for rendering is avaliable
0.512: Total 1 filters
0.512: Try WAVEFORMATEXTENSIBLE format
0.513: Pin Looped 1
0.514: Successfully instantiated Render Pin. Handle = 0x00000120
0.514: Pin for rendering is avaliable
0.515: Заполнение буфера 16-битным синусом
0.520: Pin state is KSSTATE_STOP

[bETA]mEN
07.10.2013, 03:46
Все понятно.
:v2_dizzy_keyboard:

0.500: Entering RenderThreadProc
0.512: Device found
0.513: Pin 0: Communication type = 1
0.514: Total 7 DataRanges
0.514: Interface GUID {1A8766A0-62CE-11CF-A5}
0.515: Interfice ID 1
0.515: Found SINK IN Pin, id = 0, hr = 0
0.515: Pin 1: Communication type = 0
0.516: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.518: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.520: Pin 0: Communication type = 1
0.521: Total 6 DataRanges
0.522: Interface GUID {1A8766A0-62CE-11CF-A5}
0.522: Interfice ID 1
0.522: Found SINK IN Pin, id = 0, hr = 0
0.523: Pin 1: Communication type = 0
0.523: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.523: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.524: Pin 0: Communication type = 1
0.524: Total 6 DataRanges
0.525: Interface GUID {1A8766A0-62CE-11CF-A5}
0.525: Interfice ID 1
0.525: Found SINK IN Pin, id = 0, hr = 0
0.526: Pin 1: Communication type = 0
0.526: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.526: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.529: All devices enumerated
0.532: Filters enumerated
0.533: Filter for rendering is avaliable
0.533: Total 3 filters
0.533: Try WAVEFORMATEXTENSIBLE format
0.534: Pin Looped 1
0.534: Error_Success = 22
0.535: Failed to instantiate pin. hr=0x80070016
0.535: Failed to instantiate Render Pin
0.535: Pin Looped 1
0.536: Error_Success = 22
0.536: Failed to instantiate pin. hr=0x80070016
0.536: Try WAVEFORMATEX format
0.536: Pin Looped 0
0.537: Error_Success = 1169
0.537: Failed to instantiate pin. hr=0x80070491
0.537: Failed to instantiate Render Pin
0.537: Pin Looped 0
0.538: Error_Success = 1169
0.538: Failed to instantiate pin. hr=0x80070491
0.538: No pins available for rendering
0.538: Leaving RenderThreadProc


---------- Post added at 03:46 ---------- Previous post was at 03:19 ----------

Поставил другие драйвера:


0.500: Entering RenderThreadProc
0.514: Device found
0.515: Pin 0: Communication type = 1
0.516: Total 1 DataRanges
0.516: Interface GUID {1A8766A0-62CE-11CF-A5}
0.517: Interfice ID 1
0.517: Found SINK IN Pin, id = 0, hr = 0
0.517: Pin 1: Communication type = 0
0.518: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.520: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\elineoutwave
0.521: Pin 0: Communication type = 1
0.522: Total 5 DataRanges
0.522: Interface GUID {1A8766A0-62CE-11CF-A5}
0.523: Interfice ID 1
0.523: Found SINK IN Pin, id = 0, hr = 0
0.523: Pin 1: Communication type = 0
0.524: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.524: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\espdifout2wave
0.525: Pin 0: Communication type = 1
0.526: Total 5 DataRanges
0.526: Interface GUID {1A8766A0-62CE-11CF-A5}
0.527: Interfice ID 1
0.527: Found SINK IN Pin, id = 0, hr = 0
0.527: Pin 1: Communication type = 0
0.527: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.527: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\espdifoutwave
0.529: All devices enumerated
0.530: Filters enumerated
0.531: Filter for rendering is avaliable
0.531: Total 3 filters
0.531: Try WAVEFORMATEXTENSIBLE format
0.531: Pin Looped 1
0.533: Successfully instantiated Render Pin. Handle = 0x00000104
0.533: Pin for rendering is avaliable
0.534: Заполнение буфера 16-битным синусом
0.537: Pin state is KSSTATE_STOP

Alex Rider
07.10.2013, 07:51
Еще немного, и Titus докажет нам, что Windows - ОСь реального времени :)

Titus
07.10.2013, 08:05
Ну что-то есть…
A RUN нажать?

---------- Post added at 08:03 ---------- Previous post was at 08:01 ----------


mEN;632849']Поставил другие драйвера:

А RUN нажать???

---------- Post added at 08:05 ---------- Previous post was at 08:03 ----------


Еще немного, и Titus докажет нам, что Windows - ОСь реального времени :)

Еще немного, и я охренею от этого запутанного лабиринта под названием 'программирование под винду'. Особенно использование общения с драйверами. Если инциализация звука через DirectX - это, скажем, страница текста. То инициализация DirectStreaming - это, наверное, сотни страниц, если не больше.

Titus
07.10.2013, 08:21
mEN;632849']:v2_dizzy_keyboard:


0.535: Pin Looped 1
0.536: Error_Success = 22

Поставил другие драйвера:

Эта ошибка говорит о том, что пин не понимает команду. Возможно, потому что команда WRITE и READ. Поставил только WRITE в новой версии.

Ты поставил другие драйвера на ту же систему и все заработало?
Чем отличались драйвера?

Hacker VBI
07.10.2013, 09:38
погудим?

0.504: Entering RenderThreadProc
0.509: Device found
0.572: Pin 0: Communication type = 1
0.573: Total 9 DataRanges
0.574: Interface GUID {1A8766A0-62CE-11CF-A5}
0.575: Interfice ID 0
0.576: Interface GUID {1A8766A0-62CE-11CF-A5}
0.576: Interfice ID 1
0.577: Found SINK IN Pin, id = 0, hr = 0
0.578: Pin 1: Communication type = 0
0.579: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.583: Succeeded to create filter for \\?\pci#ven_1102&dev_0007&subsys_100a1102&rev_00#4&e6d76c4&0&10f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\spdifwave
0.600: Pin 0: Communication type = 1
0.601: Total 3 DataRanges
0.602: Interface GUID {1A8766A0-62CE-11CF-A5}
0.603: Interfice ID 0
0.603: Interface GUID {1A8766A0-62CE-11CF-A5}
0.604: Interfice ID 1
0.605: Found SINK OUT Pin, id = 0, hr = 0
0.606: Pin 1: Communication type = 0
0.607: Pin 2: Communication type = 1
0.608: Total 3 DataRanges
0.609: Interface GUID {1A8766A0-62CE-11CF-A5}
0.609: Interfice ID 0
0.610: Interface GUID {1A8766A0-62CE-11CF-A5}
0.611: Interfice ID 1
0.617: Found SINK IN Pin, id = 2, hr = 0
0.618: Pin 3: Communication type = 0
0.619: RenderSink = 1, RenderSource = 0, CaptureSink = 1, CaptureSource = 0
0.620: Succeeded to create filter for \\?\pci#ven_1102&dev_0007&subsys_100a1102&rev_00#4&e6d76c4&0&10f0#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\wave
0.621: All devices enumerated
0.624: Filters enumerated
0.625: Filter for rendering is avaliable
0.625: Total 2 filters
0.626: Try WAVEFORMATEXTENSIBLE format
0.628: Pin Looped 1
0.632: Successfully instantiated Render Pin. Handle = 0x00000104
0.633: Pin for rendering is avaliable
0.635: Заполнение буфера 16-битным синусом
0.644: Pin state is KSSTATE_STOP
4.876: Setting Pin to KSSTATE_RUN ...
4.877: Packet 0 is available... Submitting packet 0
4.878: Position = 0, Position2 = 280, Delta = 280
4.885: Position = 280, Position2 = 560, Delta = 280
4.889: Position = 560, Position2 = 816, Delta = 256

погудели :)

Titus
07.10.2013, 12:37
ичейта дельта теперь плавает?? это нормально?
Ненормально. Но подождем, пока заработает хотя бы у кого-то, у кого не пищало на Вин7 раньше.

breeze
07.10.2013, 12:48
A RUN нажать?

Нажал. И в предыдущей версии и в последней:


Filed to retrive audiostream position - 0x80004005

И так весь экран нескончаемо залит. Ни на какие Stop/Pause больше не реагирует

ZEK
07.10.2013, 13:02
Звуков не слышу, Win8 x64


0.501: Entering RenderThreadProc
0.503: Device found
0.503: Pin 0: Communication type = 1
0.504: Total 1 DataRanges
0.504: Interface GUID {1A8766A0-62CE-11CF-A5}
0.504: Interfice ID 1
0.505: Found SINK IN Pin, id = 0, hr = 0
0.505: Pin 1: Communication type = 0
0.505: 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.510: Interfice ID 1
0.510: 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.511: 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.512: Total 1 DataRanges
0.512: Interface GUID {1A8766A0-62CE-11CF-A5}
0.513: Interfice ID 1
0.513: Found SINK IN Pin, id = 0, hr = 0
0.513: 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.517: Pin 0: Communication type = 1
0.518: Total 1 DataRanges
0.518: Interface GUID {1A8766A0-62CE-11CF-A5}
0.518: Interfice ID 1
0.518: Found SINK IN Pin, id = 0, hr = 0
0.520: Pin 1: Communication type = 0
0.521: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.521: 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.522: Pin 0: Communication type = 1
0.523: Total 2 DataRanges
0.523: Interface GUID {1A8766A0-62CE-11CF-A5}
0.524: Interfice ID 1
0.524: 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.525: 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.526: All devices enumerated
0.527: Filters enumerated
0.527: Filter for rendering is avaliable
0.528: Total 5 filters
0.528: Try WAVEFORMATEXTENSIBLE format
0.528: Pin Looped 1
0.529: Error_Success = 22
0.530: Failed to instantiate pin. hr=0x80070016
0.530: Failed to instantiate Render Pin
0.530: Pin Looped 1
0.531: Error_Success = 22
0.531: Failed to instantiate pin. hr=0x80070016
0.531: Try WAVEFORMATEX format
0.531: Pin Looped 1
0.532: Error_Success = 22
0.532: Failed to instantiate pin. hr=0x80070016
0.532: Failed to instantiate Render Pin
0.533: Pin Looped 1
0.533: Error_Success = 22
0.533: Failed to instantiate pin. hr=0x80070016
0.534: No pins available for rendering
0.534: Leaving RenderThreadProc

Titus
07.10.2013, 13:41
Я так понял, что никому еще из тех, у кого на семерке и раньше не звучало, не удалось запустить, верно?

psb
07.10.2013, 13:42
Еще немного, и Titus докажет нам, что Windows - ОСь реального времени
да-да, к тому все и идет. но этого не случится.

ZEK
07.10.2013, 13:43
Из новых тестов, у которых пропал звук, так и не появился

Titus
07.10.2013, 13:53
Из новых тестов, у которых пропал звук, так и не появился
Что значит пропал? А когда он был?
Тест в виде эмулятра не рассматриваем, он на другой основе.

---------- Post added at 13:53 ---------- Previous post was at 13:51 ----------


да-да, к тому все и идет. но этого не случится.
Не реального она времени, но приловчившись можно ее заставить быть практически таковой для отдельно выбранной программы, при этом корректно работающей в системе и в окне.
Во всяком случае, с видео в реальном времени получалось все неплохо, а вот аудио пока сопротивляется.

ZEK
07.10.2013, 14:03
Что значит пропал? А когда он был?
когда заикался в первых версиях, но я понял что его не рассматриваем, тогда вообще звук не появлялся

Titus
07.10.2013, 18:36
Поставил другие драйвера:

А где лог после RUN с другими дровами?

Hacker VBI
07.10.2013, 18:43
win 7 64, sb live
гудим
0.500: Entering RenderThreadProc
0.533: Device found
0.535: Pin 0: Communication type = 1
0.560: Total 1 DataRanges
0.561: Interface GUID {1A8766A0-62CE-11CF-A5}
0.561: Interfice ID 0
0.562: No standard streaming interfaces on the pin
0.562: Found SINK IN Pin, id = 0, hr = 80004005
0.563: Pin 1: Communication type = 4
0.564: Pin 2: Communication type = 1
0.565: Total 1 DataRanges
0.565: Interface GUID {1A8766A0-62CE-11CF-A5}
0.566: Interfice ID 0
0.567: No standard streaming interfaces on the pin
0.567: Found SINK OUT Pin, id = 2, hr = 80004005
0.568: Pin 3: Communication type = 4
0.568: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.573: Failed to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_ctrl
0.575: Pin 0: Communication type = 1
0.577: Total 1 DataRanges
0.577: Interface GUID {1A8766A0-62CE-11CF-A5}
0.578: Interfice ID 0
0.579: No standard streaming interfaces on the pin
0.579: Found SINK IN Pin, id = 0, hr = 80004005
0.580: Pin 1: Communication type = 4
0.580: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.585: Failed to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_synth1
0.587: Pin 0: Communication type = 1
0.588: Total 1 DataRanges
0.588: Interface GUID {1A8766A0-62CE-11CF-A5}
0.589: Interfice ID 0
0.589: No standard streaming interfaces on the pin
0.589: Found SINK IN Pin, id = 0, hr = 80004005
0.590: Pin 1: Communication type = 4
0.590: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.591: Failed to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_synth2
0.592: Pin 0: Communication type = 1
0.593: Total 1 DataRanges
0.594: Interface GUID {1A8766A0-62CE-11CF-A5}
0.594: Interfice ID 0
0.594: No standard streaming interfaces on the pin
0.594: Found SINK IN Pin, id = 0, hr = 80004005
0.595: Pin 1: Communication type = 4
0.595: Pin 2: Communication type = 1
0.596: Total 1 DataRanges
0.596: Interface GUID {1A8766A0-62CE-11CF-A5}
0.596: Interfice ID 0
0.597: No standard streaming interfaces on the pin
0.597: Found SINK OUT Pin, id = 2, hr = 80004005
0.597: Pin 3: Communication type = 4
0.598: RenderSink = 0, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.598: Failed to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_uart1
0.599: Pin 0: Communication type = 1
0.600: Total 3 DataRanges
0.600: Interface GUID {1A8766A0-62CE-11CF-A5}
0.600: Interfice ID 0
0.601: Interface GUID {1A8766A0-62CE-11CF-A5}
0.601: Interfice ID 1
0.601: Found SINK IN Pin, id = 0, hr = 0
0.601: Pin 1: Communication type = 0
0.602: Pin 2: Communication type = 1
0.603: Total 9 DataRanges
0.603: Interface GUID {1A8766A0-62CE-11CF-A5}
0.604: Interfice ID 0
0.604: Interface GUID {1A8766A0-62CE-11CF-A5}
0.604: Interfice ID 1
0.604: Found SINK OUT Pin, id = 2, hr = 0
0.605: Pin 3: Communication type = 4
0.605: Pin 4: Communication type = 1
0.606: Total 6 DataRanges
0.606: Interface GUID {1A8766A0-62CE-11CF-A5}
0.606: Interfice ID 0
0.607: Interface GUID {1A8766A0-62CE-11CF-A5}
0.607: Interfice ID 1
0.607: Found SINK IN Pin, id = 4, hr = 0
0.607: Pin 5: Communication type = 4
0.608: RenderSink = 1, RenderSource = 0, CaptureSink = 1, CaptureSource = 0
0.608: Succeeded to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_wave0
0.609: Pin 0: Communication type = 1
0.610: Total 3 DataRanges
0.610: Interface GUID {1A8766A0-62CE-11CF-A5}
0.610: Interfice ID 0
0.610: Interface GUID {1A8766A0-62CE-11CF-A5}
0.611: Interfice ID 1
0.611: Found SINK IN Pin, id = 0, hr = 0
0.611: Pin 1: Communication type = 4
0.612: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.612: Succeeded to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_wave1
0.613: Pin 0: Communication type = 1
0.613: Total 3 DataRanges
0.614: Interface GUID {1A8766A0-62CE-11CF-A5}
0.614: Interfice ID 0
0.614: Interface GUID {1A8766A0-62CE-11CF-A5}
0.614: Interfice ID 1
0.615: Found SINK IN Pin, id = 0, hr = 0
0.615: Pin 1: Communication type = 4
0.615: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.616: Succeeded to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_wave2
0.616: Pin 0: Communication type = 1
0.617: Total 3 DataRanges
0.617: Interface GUID {1A8766A0-62CE-11CF-A5}
0.617: Interfice ID 0
0.618: Interface GUID {1A8766A0-62CE-11CF-A5}
0.618: Interfice ID 1
0.618: Found SINK IN Pin, id = 0, hr = 0
0.619: Pin 1: Communication type = 4
0.619: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.619: Succeeded to create filter for \\?\pci#ven_1102&dev_0002&subsys_80271102&rev_06#4&1f7fa0a&0&4820#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\kx_wave3
0.619: All devices enumerated
0.621: Filters enumerated
0.621: Filter for rendering is avaliable
0.622: Total 4 filters
0.622: Try WAVEFORMATEXTENSIBLE format
0.623: Pin Looped 1
0.672: Error_Success = 1450
0.673: Failed to instantiate pin. hr=0x800705aa
0.673: Failed to instantiate Render Pin
0.673: Pin Looped 1
0.712: Error_Success = 1450
0.713: Failed to instantiate pin. hr=0x800705aa
0.713: Pin Looped 1
0.773: Pin for rendering is avaliable
0.773: Заполнение буфера 16-битным синусом
0.780: Pin state is KSSTATE_STOP
3.098: Setting Pin to KSSTATE_RUN ...
3.099: Packet 0 is available... Submitting packet 0
3.101: Position = 0, Position2 = 47, Delta = 47
3.101: Position = 75, Position2 = 76, Delta = 1
3.102: Position = 120, Position2 = 122, Delta = 2

дрова - kx driver for sb live

Titus
07.10.2013, 18:59
Собрал результат тестов в таблицу:


ZEK hdaudio subsys_10438444 secondarylineoutwave 1 1 1000
rtspdifoptwave 6 1 1000
rtspdifhdmiwave 1 1 1000
rearlineoutwave2 1 1 1000
e0hdmiout2wave 2 1 1000


zebest hdaudio subsys_1458a 102 rearlineoutwave3 3,6,4 0,1 1000

HackerVBI (Win7 max) pci subsys_100a1102 spdifwave 9 0,1 1000
(SB Live) wave 3,3 0,1 1010

[bETA]mEN (Win7 x64) hdaudio subsys_1458a 022 rearlineoutwave3 7 1 1000
(Realtek ALC892)
rtspdifoptwave 6 1 1000
rtspdifwave 6 1 1000

[bETA]mEN hdaudio subsys_1458a 022 elineoutwave 1 1 1000
(с новыми драйверами) espdifout2wave 5 1 1000
espdifoutwave 5 1 1000


breeze hdaudio subsys_1458a002 rearlineoutwave3 3 1 1000

Alex Rider (Win7 x64) hdaudio subsys_104384fb rearlineoutwave3 7 1 ????
(USB гарнитура) rtspdifoptwave 6 1 ????
rtspdifwave 6 1 ????
usb ??? global ? 0,? 1110




Итог такой - у всех, у кого устройства поддерживают 0-й режим вывода (KSINTERFACE_STANDARD_STREAMING), звук работает. Те же, у кого поддерживается только 1-й режим (KSINTERFACE_STANDARD_LOOPED_STREAMING) - звук не работает.

Несколько наблюдений:
1. На XP у всех устройств есть режим 0
2. На Win7 чаще всего у устройств такого режима нет
3. Если устройство поддерживает режим 0, то оно и поддерживает режим 1
4. Возможно, режим 1 можно тоже использовать но я его неправильно инициализирую.

---------- Post added at 18:58 ---------- Previous post was at 18:57 ----------

Похоже, пока у меня самого не будет семерки, понять это будет сложновато.

---------- Post added at 18:59 ---------- Previous post was at 18:58 ----------

Всем спасибо за тесты!

breeze
07.10.2013, 19:23
Похоже, пока у меня самого не будет семерки, понять это будет сложновато.

Так а в чём проблема поставить тот же VirtualBox и погонять в нём Win7/8?

palsw
07.10.2013, 19:33
WIN7 x64 звук VIA

0.501: Entering RenderThreadProc
0.529: Device found
0.531: Pin 0: Communication type = 1
0.532: Total 1 DataRanges
0.532: Interface GUID {1A8766A0-62CE-11CF-A5}
0.533: Interfice ID 1
0.533: Found SINK IN Pin, id = 0, hr = 0
0.533: Pin 1: Communication type = 0
0.534: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.536: Succeeded to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\hdmioutputwave
0.538: Pin 0: Communication type = 1
0.539: Total 1 DataRanges
0.539: Interface GUID {1A8766A0-62CE-11CF-A5}
0.540: Interfice ID 1
0.540: Found SINK IN Pin, id = 0, hr = 0
0.540: Pin 1: Communication type = 0
0.541: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.541: Succeeded to create filter for \\?\hdaudio#func_01&ven_1106&dev_0397&subsys_10438415&rev_1000#4&16c93ada&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave
0.541: All devices enumerated
0.542: Filters enumerated
0.543: Filter for rendering is avaliable
0.543: Total 2 filters
0.543: Try WAVEFORMATEXTENSIBLE format
0.544: Pin Looped 1
0.547: Successfully instantiated Render Pin. Handle = 0x00000108
0.548: Pin for rendering is avaliable
0.551: Заполнение буфера 16-битным синусом
0.560: Pin state is KSSTATE_STOP

Если нажать RUN
http://i.piccy_.info/i8/9a67e6c014eb9ebdcc7f2bead34301be/1381159997/31343/627841/Novyi_tochechnyi_rysunok_500.jpg (http://piccy_.info/view3/5245069/ebd2ee551ac613729d31c552f77a3b9f/)http://i.piccy_.info/a3/2013-10-07-15-33/i8-5245069/472x354-r/i.gif (http://i.piccy_.info/a3c/2013-10-07-15-33/i8-5245069/472x354-r)

Titus
07.10.2013, 20:00
WIN7 x64 звук VIA
Если нажать RUN
Да все уж понятно, не работают устройства с интерфейсом первого типа.

---------- Post added at 20:00 ---------- Previous post was at 19:59 ----------


Так а в чём проблема поставить тот же VirtualBox и погонять в нём Win7/8?

Я думал об этом, но жаба сказала, что пока что 50 гигов для виртуального жесткого диска на моем жестком диске она выдавать не хочет)

psb
07.10.2013, 20:03
Я думал об этом, но жаба сказала, что пока что 50 гигов для виртуального жесткого диска на моем жестком диске она выдавать не хочет)
ужас какой... посмотри на жабу не через микроскоп. 50 гигов - это страшный перебор.

другое дело, что виртуалки в подобной (железозависимой и в целом сомнительной) задаче не лучшие помощники.

Titus
07.10.2013, 20:05
ужас какой... посмотри на жабу не через микроскоп. 50 гигов - это страшный перебор.

другое дело, что виртуалки в подобной (железозависимой и в целом сомнительной) задаче не лучшие помощники.

Тут скорее неправильно идет обращение к устройствам с типом буфера LOOP. Т.е. глюк не на уровне железа, а на уровне 'не знаю, как обратиться'.

[bETA]mEN
07.10.2013, 20:28
Ты поставил другие драйвера на ту же систему и все заработало?
Чем отличались драйвера?
Если: 1. Поставить драйвера от производителя материнской платы Gigabyte 2. Поставить драйвера производителя звукового чипа Realtek 3. Снести все драйвера и Windows поставит что то из своего комплекта, то каждый раз будет новый результат.

Сейчас поставил драйвера Realtek и получил:


0.500: Entering RenderThreadProc
0.511: Device found
0.512: Pin 0: Communication type = 1
0.512: Total 7 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.516: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave3
0.517: Pin 0: Communication type = 1
0.518: Total 6 DataRanges
0.518: Interface GUID {1A8766A0-62CE-11CF-A5}
0.518: Interfice ID 1
0.519: Found SINK IN Pin, id = 0, hr = 0
0.519: Pin 1: Communication type = 0
0.519: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.520: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.520: Pin 0: Communication type = 1
0.521: Total 6 DataRanges
0.521: Interface GUID {1A8766A0-62CE-11CF-A5}
0.521: Interfice ID 1
0.522: Found SINK IN Pin, id = 0, hr = 0
0.522: Pin 1: Communication type = 0
0.522: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.523: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0892&subsys_1458a022&rev_1003#4&24707100&0&0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifwave
0.525: All devices enumerated
0.528: Filters enumerated
0.529: Filter for rendering is avaliable
0.529: Total 3 filters
0.529: Try WAVEFORMATEXTENSIBLE format
0.530: Pin Looped 1
0.530: Error_Success = 1450
0.531: Failed to instantiate pin. hr=0x800705aa
0.531: Failed to instantiate Render Pin
0.531: Pin Looped 1
0.532: Error_Success = 1450
0.532: Failed to instantiate pin. hr=0x800705aa
0.532: Try WAVEFORMATEX format
0.533: Pin Looped 1
0.533: Error_Success = 1450
0.533: Failed to instantiate pin. hr=0x800705aa
0.533: Failed to instantiate Render Pin
0.534: Pin Looped 1
0.534: Error_Success = 1450
0.534: Failed to instantiate pin. hr=0x800705aa
0.534: No pins available for rendering
0.535: Leaving RenderThreadProc

Titus
07.10.2013, 20:54
mEN;633068']Если: 1. Поставить драйвера от производителя материнской платы Gigabyte 2. Поставить драйвера производителя звукового чипа Realtek 3. Снести все драйвера и Windows поставит что то из своего комплекта, то каждый раз будет новый результат.

Сейчас поставил драйвера Realtek и получил:

как бы-то ни было, устройства с типом 1 не работают ни с какими драйверами. Так что пока что тесты не требуются.

Titus
08.10.2013, 01:31
А жаль. А то я запустил WinXP на материнке с интересным звуковым чипом. Интересным в том плане, что эмуль под линупсом на энтой мамке никак не хотел звук давать, и ketmar долго материл и меня, и производителей чипсета и ихнюю ALSU вместе взятую.. Но он ее победил.
А ну да, что хочу сказать, все тесты дают стабильную синьку после останова и повторного запуска. а, да, и дельта вроде всегда 128
лог до запуска

После креша ошибка одна и та же
STOP: 0x000000050
Senfilt.sys
хз что это за драйвер.
зы- в самом эмуле звук есть, но рассинхронизация пишет.

Эта звуковуха какая-то совсем не PCI-ная?

Кто такой ketmar?

Мне бы приноровиться к обычным звуковухам, не то, что к экзотике)

В эмуле звук через DirectSound, что должно быть совместимо со всем подряд! В тесте через KernelStreaming.

Titus
08.10.2013, 19:25
В общем, поставил я себе в VMWare виртуальный Win7.
И что же вы думаете? В нем все прекрасно работает, и устройство вывода звука wave работает во всех режимах, в 0 и 1) Так что обломс)

palsw
08.10.2013, 19:27
Titus, мне бы проще было отрезать раздел от диска гиг на 20-30 и поставить туда 7 и иметь выбор XP и WIN7 с нормальными дровами ,а не виртуальными.

Titus
08.10.2013, 19:31
Titus, мне бы проще было отрезать раздел от диска гиг на 20-30 и поставить туда 7 и иметь выбор XP и WIN7 с нормальными дровами ,а не виртуальными.
Не проще. На виртуальном диске у меня всего 7 гигов она скушала.
Я это делал вообще для того, чтобы провести эксперимент.
Да и звуковуха у меня крутая Audigy. Она все чего хочешь поддерживает.

psb
08.10.2013, 21:16
http://blogs.msdn.com/b/kichinsky/archive/2009/01/20/how-to-install-windows-7-on-vhd.aspx

ZEK
08.10.2013, 21:30
psb, оно с только с новым загрузчиком работает, так что только начиная с висты

Titus
09.10.2013, 00:42
http://blogs.msdn.com/b/kichinsky/archive/2009/01/20/how-to-install-windows-7-on-vhd.aspx

Да мне не требуется запустить у себя Вин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.

И мой перевод:


Интерфейс 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. Фильтр обрабатывает данные циклически из единственного буфера данных, предоставленного фильтру.


Замечу, что у меня буфер всего один и циклический, поэтому мне подходит, как 0-й, так и 1-й тип устройств.

---------- Post added 09.10.2013 at 00:06 ---------- Previous post was 08.10.2013 at 23:08 ----------

Вот здесь (http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/62fa6ebc-3bed-4971-b371-7a9a8ef13f2d/directks-sample-doesnt-work?forum=windowspro-audiodevelopment) обсуждали именно эту проблему, но, судя по всему, решения не нашли.

---------- 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 ----------

И вот здесь (http://music.columbia.edu/pipermail/portaudio/2010-June.txt) упоминают подобную проблему:


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 (http://msdn.microsoft.com/en-us/library/windows/hardware/ff561652(v=vs.85).aspx).

---------- Post added at 00:42 ---------- Previous post was at 00:22 ----------

В общем, если ни у кого нет подсказок, то надо найти исходники чего-либо, работающего с KS, кроме того, примера, которым я воспользовался.
И чтобы это работало на Win7. Или хотя бы заведомо использовало режим KSINTERFACE_STANDARD_LOOPED_STREAMING.
Явно это используется в ASIO4ALL или в ASIO4KS, но их исходников я не нашел. Хотя автор ASIO4ALL ссылается на то, что воспользовался идеей ASIO4KS, и может быть исходниками.

Titus
10.10.2013, 00:21
Сделал одно исправление в тесте. Проверяем кто-нибудь из тех, у кого устройства только типа 0, и у кого под вин7 тест пока не работал.

ZEK
10.10.2013, 00:24
На стоп не реагирует, не могу скопипастить, что то происходит при старте
Звука нет, 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




Приложил скрин