Пытаться - это все-таки что-то звучало?
Вид для печати
В первом ZXMAK синхронизация по TSC регистру процессора (при включении ограничителя 50гц), либо по vblank - в зависимости от настроек. Из за этого на многоядерных машинах и машинах с нефиксированной частотой были глюки.
В ZXMAK2 - синхра по звуковухе. Кстати, если это правда что w7 кеширует нотификации о позиции звукового буффера, то видимо именно с этим и связана некоторая неравномерность движения на плавных скролах. Дело в том что обновление экрана привязано к этим нотификациям :-)
Итак, поизучав аудиосистему виндовых систем, я пришел к несколько иной парадигме синхронизации звука и видео. При этом не понадобится никакого эксклюзивного владения звуковухой (как я пытался сделать ранее), только штатными методами. Посему написал некоторый тестик, позволящий в виде графиков отобразить внутреннюю систему синхронизации аудиовывода конкретной винды. Просьба не полениться, и запустить тесты на своих машинках.
Начнет заполнятся графиками черный экранчик. В это время надо сидеть пару минут сложа ручки. Как только чернота заполнится вся, следует сделать скриншот этого окошка, и окошка консоли. И все! Выглядит это примерно так:
Win XP:
http://s017.radikal.ru/i435/1502/e2/c048bde43eaa.png
Левая, фиолетовая часть - это поведение нотификации аудиобуфера, порезанного на 10мс отрезки (именно такими фрагментами микшируется звук начиная с 7 винды, или скорее с Висты). На XP будет выглядеть скорее изрезанно, на 7-рках гладенько, ибо с ними синхронен.
Правая, синяя часть - это временной снимок проигрывания аудиобуфера. Если синяя часть постепенно отьезжает от горизонтальной линии вниз или вверх (а так на половине машин и будет), это означает, что заявленная частота проигрывания 48000 отличается от таковой на доли процента, или же что тактирование процессора и звуковухи имеет разные источники, либо же производные их коэффициентов взаимно нацело неделимые.
Итак, надо сделать скриншот графика и консольного окна, и подписать, что за звуковуха, интегрированна она или нет, номер винды и процессор. И все!
Скачать ТЕСТ
Я тебе завтра вообще видео запишу. Но у меня видеокарта не новая.
ubuntu/wine 1.7.3
Вложение 50917
Вложение 50918
интегрированная Realtek ALC892
Windows 7 x64
Intel Core i5-2500 Sandy Bridge
http://i.imgur.com/Ix5e49u.png
win-7 x64, sound Creative X-Fi Fatality.
http://i60.fastpic.ru/thumb/2015/020...505722de2.jpeg
в файле похоже троян:
https://www.virustotal.com/en/file/1...e839/analysis/
судя по описанию, ворует пароли и рекламные банеры показываетЦитата:
ApplicUnwnt.Win32.AdWare.GameVance.FGK
Интересно, как ты кол-во сканлайнов определяешь?
На 8-ке почему-то вместо стандартного бордюра и заголовка у окна, какая-то эмуляция окон от win7 - зачем это?
Стандартный бордюр намного лучше выглядит.
И что эти кирпичики означают? :) (вертикальные полоски посредине - это я окно двигал)
http://savepic.su/4913132.png
То что у какого-то единственного антивируса из 57 снесло крышу, и он своим эмпирическим анализом заподозрил вирусняк, еще не значит, что в файле троян)
---------- Post added at 04:12 ---------- Previous post was at 04:00 ----------
Сканлайны сейчас вообще не трогаю, изучаю исключительно аудиосистему. Кирпичики слева означают границу сегментов аудиобуфера, который я специально (для виндовс старше XP) побил на принятые в них 10мс аудиопримитивы. Все винды старше XP не дают пользователю доступ к аппаратным буферам звуковухи (в отличие от XP, где аудиодрайвер, если мог, выделял вторичный аудиобуфер, в которой пользователь писал свои данные, а аудиосистема аппаратно этот буфер смешивала с остальными и выводила). В виндах старше XP все микширование вторичных буферов только программное, поэтому дискретность аудиобуфера унифицирована и равна 10мс, и не имеет возможности информировать о положении указателя с точностью выше этих 10мс.
п.с.: Ты, похоже, занимался какой-то активностью во время замера, из-за чего на середине счетчик сбился. Хорошо бы еще раз запустить тест.
п.п.с.: Благодаря таймеру высокого разрешения (который я раньше не брал в расчет, т.к. думал, что он сбрасывает скорость при замедлении ядер процессора в режиме энергосбережения), открываются новые возможности синхронизации. Ну, и разумеется, благодаря пониманию специфики работы аудиобуферов как XP-систем, так и вышестоящих.
---------- Post added at 04:13 ---------- Previous post was at 04:12 ----------
Я бордюр вообще не трогаю, открываю стандартное окно)
Еще картинка, после некоторого времени работы :)
Обращу внимание стандартный бордюр у консольного окна выглядит намного лучше чем эмуляция окон win7 :)
http://savepic.su/4893676.png
что это за параметр QPFrequency ?
вот не двигал:
http://savepic.su/4886508.png
если я правильно понял то рисуются полоски сверху вниз на которых время нотификации от аудиобуфера, а справа точность детекта vblank, верно?
Тогда что означают эти пересечения слева, из которых такие красивые кирпичи получаются? :biggrin:
---------- Post added at 03:29 ---------- Previous post was at 03:26 ----------
хз, может какой-то флаг нехороший указан :smile:
Буфер разбит на 16 нотификаций по 480 позиций каждая.
Слева идет замер, что нам сообщает аудиодрайвер о позиции в буфере после прихода очередной нотификации. Как видно на системах старше XP, все гладенько и ровненько, четкие фрагменты по 480 позиций снизу вверх (чтобы была видна граница фрагмента цвет меняется от фрагмента к фрагменту с яркого на бледный). На XP-системах тут идут биения, т.к. у каждой карточки своя дискретность (точность) нотификации, но в основном, кстати, они более точные, чем на системах старше XP.
Справа отображаются те же самые 16 нотификаций, но не позиция в буфере, а время прихода нотификации. Таким образом, в идеальной системе рисунок справа должен быть такой же, как слева. Но т.к. вычисления не 100% целочисленны и синхронны, правый искажается и постепенно едет, в основном вниз. В худших случаях справа биения. А у тебя вообще куда-то уползает. Надо для тебя сделать версию теста, когда в консоли в циферном виде выводится позиция того, что отображается справа.
Надо посмотреть на нехорошие флаги, но я их не ставил, чессслово.
Кстати, на Вин7 тоже мое окно отличается от других окон, как я посмотрю)
---------- Post added at 04:38 ---------- Previous post was at 04:36 ----------
Пересечения делающие кирпичики - это, как я понимаю, всплески, когда нотификация тебе говорит, что буфер дошел, например, до позиции 480, но делает это с запазданием, и когда ты спрашиваешь у буфера, а скажи-ка мне, на какой ты позиции? А он тебе человеческим голосом и отвечает - я на 960 позиции! А запаздание это происходит из рванины, которую видим на правом графике.
---------- Post added at 04:42 ---------- Previous post was at 04:38 ----------
И вообще, так сбиваться справа, как у тебя не должно. И только у тебя такой глюк. Я понимаю, что может сбиться, когда проявляешь активность в системе, но после этого должно все восстановиться, а у тебя не восстанавливается. Это можно обьяснить, например (что просто фантастика), что таймер высокого разрешения на какие-то мгновения затормаживается или замедляет счет.
---------- Post added at 04:49 ---------- Previous post was at 04:42 ----------
Вообще никаких флагов:
Код:hWnd = CreateWindowEx( // Создаем окно
NULL, // Улучшенный стиль окна
AppName, // Имя класса окна
AppName, // Заголовок окна
WS_OVERLAPPEDWINDOW, // Стиль окна - показать поверх всех окон
CW_USEDEFAULT, 0, // Горизонтальная и вертикальная позиции окна
800, 600, // Ширина и высота окна
NULL, // Хендл родительского окна
NULL, // Хендл меню
hInst, // Идентификатор приложения
NULL); // Дополнительные данные окна
И что, она при это мгновенно меняет рамку с одной на другую? Уберу полоску, посмотрим.
---------- Post added at 05:01 ---------- Previous post was at 04:59 ----------
Скорее, это из-за того, что я некоторые сообщения посылаемые окну обрабатываю по своему, а они как раз относятся к рисованию рамки.
http://i.imgur.com/IRoVRgl.png
Звуковуха внешняя.Код:Windows Version Microsoft Windows 8.1 (6.3) 64-bit (Build 9600)
DirectX Version 11.0
Processor Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz
Display adapter NVIDIA GeForce GTX 750 Ti
Audio device SoundBlaster Audigy
http://savepic.su/4882217.png
разве что могу добавить, что звук интегрированый, как и видео. винда ХР sp3, сборка StableOS.
solegstar, пост пустой. Ты на что скриншот загрузил? Клади сюда - http://savepic.ru/
О, теперь видно. Спасибо.
solegstar, Дропбокс не для картинок. Или их надо там архивировать, и давать ссылку на скачивание. Да и вообще сервис не особо удобный. Места мало дают.
---------- Post added at 14:30 ---------- Previous post was at 14:25 ----------
Я пользую Яндекс-Диск и Облако mail.ru. На облаке у меня место 1тб. Вон, в лёгкую туда запихнул 76 гигабайт.
http://zx-pk.ru/showthread.php?t=24361
Процессор: Intel(R) Core(TM)i7-3612QM
Аудиоустройство: Sony Panther Point High Definition Audio Controller (Аудиокодек Realtek ALC275)
Графический процессор: Intel(R) HD Graphics 4000
Microsoft Windows 7 Professional 6.01.7601 (Service Pack 1)
http://x-bytes.net/noutbook-1.png
http://x-bytes.net/noutbook-2.png
Процессор: Intel(R) Core(TM)i7-4765T
Аудиоустройство: ASRock Core (Haswell) HD Audio Controller (Аудиокодек Realtek ALC1150)
Графический процессор: Intel(R) HD Graphics 4600
Microsoft Windows 8.1 Professional 6.03.9600 64bit
http://x-bytes.net/pc-1.png
http://x-bytes.net/pc-2.png
Ага.:) LG IPS237L (24")
http://x-bytes.net/lcd.png
Для равноценности отклика матрицы как на гашение пикселя, так и на зажигание, можно проверить скроллирующимся изображением с чередованием черных и светлых полос. Попробуй запустить мой эмуль УКНЦ (это просто, скачал и запустил), и когда загрузится система написать DIR и нажать Enter. Экран должен покадрово синхронно с твоей разверткой начать скроллироваться. При этом на плохих LCD могут наблюдаться два эффекта:
1) Падение яркости из-за того, что скроллируются чередующиеся черные и светлые пиксели, и матрица не успевает зажечь пиксели так же быстро, как и гасить.
2) Замыливание изображения.
Хорошо бы проверить на твоем монике эти два эффекта на 50Гц.
Специальная версия теста для тех, у кого почему-то сбивается таймер высокого разрешения, а конкретно для ZXMAK'а.
Запусти, и скопипасть то, что пишется в консольном окне.
Там каждая строчка - это временная позиция прихода нотификации в пересчете на пиксели. Колебаться эти значения могут, смещаться постепенно могут, могут даже быть задержки на сколько-то кадров, когда таскаешь окно, но они восстанавливаются. А вот чего быть не может (но у тебя есть) - это некратное размеру буфера смещение во времени. Это и надо рассмотреть.