judelaw
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору V0lt Цитата: А почему она вообще сбрасывается? Ты не нашел участок кода, где происходит сброс? Если монитор в системе один, тоже сбрасывается? | от ко-ва мониторов не зависит. мы имеем pp.hDeviceWindow = m_hWnd; при создании рендерера и если оконный режим, окно плеера никуда не девается, а если полноэкранный д3д - создается доп окно, которое принимает hwnd. С внешними фильтрами с реестра напрямую у нас странная ситуация. Точно не могу понять, но предположительно создается и цепляется рендер до того как цепляется декодер с большим меритом в ситеме - потом ес-но где то дальше по коду проверка не проходит и рендер убивается, а в месте с ним и hwnd, и граф строится уже правильно со второй попытки. Этого не происходит с ДВД, там код другой. Я не один день пытаюсь понять где конкретно причина, но максимум чего добился - это построение графа с первой попытки, но... изображения тупо нет. (( Но даже если и решить эту проблему с двойным построением графа, то частота будет слетать при: например: была 60Гц - запустили фильм с 23,976 и частота автопереключилась на 23Гц - смотрим - далее допустим запускаем следующий в папке фильм с той же 23,976к/с через PgDn/Up - и что мы увидим? А Увидим следующую картину - сброс на 60Гц - и опять на 23Гц. Куча лишний морганий экрана в любом случае. Сброс произойдет при вызове ChangeDisplaySettingsEx(DisplayName1, &dmScreenSettings, NULL, NULL, NULL); и ChangeDisplaySettingsEx(DisplayName1, &dmScreenSettings, NULL, CDS_FULLSCREEN, NULL); но железно останется при ChangeDisplaySettingsEx(DisplayName1, &dmScreenSettings, NULL, (CDS_UPDATEREGISTRY | CDS_GLOBAL), NULL) Добавлено: "некорректное" построение графа с первой попытки имеет место и в обычном моде, просто этого мы не замечаем. Может так и должен строится граф в случае с внешними фильтрами с реестра? хз. Ведь механизм сцепки и выявления нужных фильтров - сложный. Там ведь как - получилось/неполучилось - дальше, пока не будет найдена подходящая цепочка. Фильтров в системе может быть дофига и все они в итоге болтаются в памяти, независимо какой из них мы используем. Ошибок с первого раза тоже не избежать. Что вроде как нормально ведь главное что в итоге имеем. граф/Рендер, д3д, временный режим смены частоты - взаимосвязаны друг с другом. Где то читал, что если приложение запускается в эксклюзиве и меняется режим дисплея, то выход с эксклюзива обязательно вернет режим дисплея по-дефолту. И с эти ничего поделать нельзя. Ничего, кроме как запускать смену режима с сохранением в реестре а не временно, то есть с параметрами CDS_UPDATEREGISTRY и CDS_GLOBAL | Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 01:27 09-01-2012 | Исправлено: judelaw, 02:02 09-01-2012 |
|