Ru-Board.club
← Вернуться в раздел «Программы»

» Media Player Classic - HomeCinema (MPC-HC)

Автор: sola
Дата сообщения: 05.01.2010 09:04
Aleksoid1978

Цитата:
А как же Ctrl+Enter ???

а ну да, сам виноват - Alt+Enter это ведь фуллскрин без смены разрешения, вот почему не менялась частота, это я по привычке нажимал с Альтом, а по Ctrl+Enter все ок, так же как дабл клик, но вместо картинки тогда черный экран на всех рендерерах кроме VMR9 windowed

заметил еще такую вещь, почему-то оба устройства отображения у меня в опциях MPC-HC одинаковые



хотя в драйвере АТИ Каталист вот так



ну а в винде вообще вот так



Интересно, откуда считывает плеер информация о мониторах? Может можно как-то подобраться к драйверу, оттуда самое точное было бы.

И частоты тоже никак не делятся на черестрочку и прогрессив, вот например при выборе этой частоты в плеере



телевизор рапортует про 1080i50Hz (то есть это черестрочка), а если в плеере взять 50Гц, то телик скажет о 1080p50Hz (уже прогрессив), именно этот режим выбирается в режиме авто на чересстрочное видео 25Гц - а это не есть правильно, вернее бы первый

И может можно там режимы как в винде хотя бы сделать?



тут есть приписка интерлейсед (хотя к 24 герцам там тоже ошибочно приписано, на самом деле это 24р режим)
Автор: XDron
Дата сообщения: 05.01.2010 09:06

Цитата:
я не знаю что такое APE

Безпотерьный формат записи звука, очень популярный у меломанов.
Wiki
Автор: Aleksoid1978
Дата сообщения: 05.01.2010 09:26
sola

Цитата:
телевизор рапортует про 1080i50Hz (то есть это черестрочка), а если в плеере взять 50Гц, то телик скажет о 1080p50Hz (уже прогрессив), именно этот режим выбирается в режиме авто на чересстрочное видео 25Гц - а это не есть правильно, вернее бы первый


На сколько я видел код(проверить не могу, нету такого железа) если ты выбираеш
AUTO 23.97@24, 25.00@25 ... то для контента с частотой 25 будет выставляться частота 25 на устройстве вывода, т.е. на телеке.
а если выбрать AUTO 23.97@24, 25.00@50 ... - то выставиться частота 50 на телеке.
Автор: sola
Дата сообщения: 05.01.2010 09:51
Aleksoid1978
о, я не усмотрел различия между этими строчками, сегодня еще раз проверю, может первая (AUTO 23.97@24, 25.00@25 ...) и вправду будет чересстрочные режимы включать
Автор: asasha
Дата сообщения: 05.01.2010 10:00
Aleksoid1978
Цитата:
я не знаю что такое APE - может посветиш
Ну еже ли не знаешь, тогда вряд ли можешь помочь.
Может кто другой знает ?
Автор: XDron
Дата сообщения: 05.01.2010 10:10

Цитата:
заметил еще такую вещь, почему-то оба устройства отображения у меня в опциях MPC-HC одинаковые

Этот участок кода я унаследовал без изменений, можешь проверить на предыдущем релизе.
Я посмотрю, у меня тоже одинаковые, но вот так.


Поэтому я не придавал этому значения.


Цитата:
Интересно, откуда считывает плеер информация о мониторах?

Считываются с помощью функции.
EnumDisplaySettings()

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

Сейчас в режиме AUTO-HDMI на монитор выдаются команды только на смену частот в прогрессивном режиме.
Кстати, теперь, понятно почему у меня не выводился на радике 1080P25
Автор: sola
Дата сообщения: 05.01.2010 12:01
XDron
Спасибо, будет классно если получится с чересстрочкой


Цитата:
Набрал ты плейлист из контента с разным FPS. При открытии нового файла проверяешь частоту контента, и если не совпадает, то меняешь. И вот лист у тебя закончился, надо восстановить частоту. Внимание вопрос! На какую?


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

з.ы. Проверил первую строку (AUTO 23.97@24, 25.00@25 ...) она меняет именно на интерлейснутые режимы, 1080i50 и 1080i60, так что она более предпочтительна выходит, прогрессива с 25 и 30Гц я не встречал, это только если в кривых рипах каких будет, а так весь эфир и PAL DVD идут с чересстрочкой, остальное в 24р

Хотя, это все мелочи в сравнении с тем, что с рендерером VMR9 renderless функция неработоспособна. И что интересно, если к примеру телик стоял 24Гц и фильм такой же, то все ОК, плеер "перескакивает" на второй экран, картинка идет, а вот стоит запустить что-то требующее смены частоты (25 или 30Гц), как сразу обеспечен подвисон плеера и на телике вместо картинки черный экран (хотя звук при этом по HDMI идет, и даже играется, может и картинка "где-то" есть... но не на моих мониторах)
Автор: dimbat
Дата сообщения: 05.01.2010 12:26

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

Если телек пользовать только как экран для mpc-hc, тогда без разницы. А если кто захочет игру запустить или другой плеер врубить... Так что логичнее возврат на дефолтные 60, имхо.
Автор: sola
Дата сообщения: 05.01.2010 12:47
dimbat
Ну если в игры играть, возможно, тут я глубоко не в теме... А другой плеер не знаю, зачем если MPC-HC есть.

Эврика, победил таки режим VMR9 renderless, стал работать с посталенной галкой Alternative VSync



правда, теперь линия в статистике выглядит какой-то "неровной"



а раньше была идеальная прямая, без таких вот "шероховатостей"

может, если кто "в теме", просветит про этот альтернативный VSync и с чем его едят?
Автор: Silent_Rain
Дата сообщения: 05.01.2010 13:07

Цитата:
Aleksoid1978, да, из проводника так работает "Открыть папку" и "Открыть DVD", но также хотелось бы из контекстного меню "Воспроизвести в MPC-HC" ПКМ на папке с названием фильма, куда вложена стандартная DVD директория под общеизвестным названием VIDEO_TS , а не добираясь до последней для аналогичной процедуры непосредственно над последней.


Во! Еще один человек озадачен этим вопросом. Нас уже двое


Цитата:
Есть мысль сделать чтобы открывалось через контекстное меню, так же с рекурсивным добавлением всех подпапок, но тут есть и подводные камни - если через меню MPCHC ты можеш указывать включать подпапки или нет, то через контекстное меню проводника так сделать уже не получиться. И если открыть папку с кучей файлов, кучей вложенных папок ... MPCHC просто загнется на моменте их открытия.


А что, нельзя такую опцию сделать в настройках, чтобы в ней пользователь сам мог определить, открывать через контекстное меню только текущую папку или все вложенные папки?


Цитата:
P.S. - может быть создать еще один пункт меню, что-то типа "Открыть как DVD", так было бы более красиво ... а я пока подумаю как сделать без нового пункта.


Неплохая идея! А как сделать без нового пункта, я уже выше написал. Достаточно опцию такую замутить в настройках программы.
Автор: XDron
Дата сообщения: 05.01.2010 13:24

Цитата:
Проверил первую строку (AUTO 23.97@24, 25.00@25 ...) она меняет именно на интерлейснутые режимы, 1080i50 и 1080i60, так что она более предпочтительна выходит, прогрессива с 25 и 30Гц я не встречал


Странно, все это. Я на 100% уверен, что сейчас код не выдает смену режима на интерлейсные режимы...Только прогрессив. Проверь еще раз.
Вечером соберусь с мыслями и напишу более развернутые объяснения.
По большому счету в списке режимов надо писать
"1920x1080P 32dbpp AUTO 23.97@24, 25.00@25, 29.97@30"
"1920x1080P 32dbpp AUTO 23.97@24, 25.00@50, 29.97@60"
Автор: V0lt
Дата сообщения: 05.01.2010 13:53
asasha

Цитата:
MPC x64 APE воспроизводит ? И с помощью какого фильтра и библиотек ?

про x64 хз

а про x86 проблем писали тут и не раз:
1. Качаешь установшик Monkey's Audio с официального сайта. Устанавливаешь и все играется.

2. Тоже самое только в папке c:\Program Files\Monkey's Audio\ находишь APE.ax и делаешь копию. Саму обезьяну деинсталируешь, а файл APE.ax либо регишь в системе, либо добавляешь во внешние фильтры MPC.
Автор: sola
Дата сообщения: 05.01.2010 14:56
XDron
не, точно интерлейс ставит, я думаю это все вытекает отсюда



Это список всех режимов, которые поддерживает мой телевизор (у других может иначе будет, у меня так) и там видно, что 25 герц только интерлейснутые есть.
И когда запускаю кино с 25fps, плеер ставит именно 25i, ну а панель пишет на экране 1080i50 (но это она всегда так писала, даже когда я руками в драйвере ставил 25Гц Interlaced)
Автор: V0lt
Дата сообщения: 05.01.2010 15:07
sola

Цитата:
Это список всех режимов, которые поддерживает мой телевизор (у других может иначе будет, у меня так) и там видно, что 25 герц только интерлейснутые есть.

бред какой-то, что за издевательские режимы 24i, 25i при наличии 50p, 60p.
Автор: sola
Дата сообщения: 05.01.2010 15:39
V0lt
А чем вам чересстрочка не угодила так?
Куча видео идет именно в таких форматах, и я уверен, телевизор будет куда лучше обрабатывать его, если ему выставить именно Interlaced режим, там не зря делают различные "прибамбасы" по деинтерлейсингу и т.д.
Автор: V0lt
Дата сообщения: 05.01.2010 16:05
sola

Цитата:
Куча видео идет именно в таких форматах

50i и 25p, но ни разу не видел 25i
Автор: chogo
Дата сообщения: 05.01.2010 16:19
V0lt
Interlaced конечно редкость, но бывает, с камеры приносят, а так больше не встречал)
Автор: vitsat
Дата сообщения: 05.01.2010 16:43
sola, не нужно это : 24i, 25i , 30i Телик хреново на них показывает. На 24p , 50p , 60p - отлично. У вас случаем не кинескопное старьё ?
Автор: JekaKot
Дата сообщения: 05.01.2010 17:09
asasha
Название: APE.ax
Размер: 164 кб
Доступен до: 2010-02-04 18:07:58
Ссылка для скачивания файла: http://ifolder.ru/15791884
Автор: sola
Дата сообщения: 05.01.2010 18:15
V0lt

Цитата:
50i и 25p, но ни разу не видел 25i

а на PAL'овских DVD какое видео по вашему?
в свою очередь буду очень рад узнать про видео 25р, можно пример, откуда оно происхождением? (могу предположить лишь одно - какая-то программа по записи видео с экрана монитора)
в кино есть лишь один прогрессивный формат - 24р (это в основном блю-реи), все остальное телевидение до сих пор работает с черестрочкой, даже HDTV'шное (но может там где вы живете уже прогрессив )

chogo

Цитата:
Interlaced конечно редкость

конечно редкость, купите любой DVD в магазине, будете очень удивлены

vitsat

Цитата:
не нужно это : 24i, 25i , 30i Телик хреново на них показывает. На 24p , 50p , 60p - отлично. У вас случаем не кинескопное старьё ?

у меня скорее плазменное новьё показывает отлично и именно в режимах 25i и 30i
Автор: selezniov
Дата сообщения: 05.01.2010 18:28
Кстати в прошлых обсуждениях затрагивали тему задействования DXVA при воспроизведении MPEG2 (например DVD).

Если ктото всетаки определился - какой декодер вы цепляете к МРС?

Я вот пока нашел CLVD Pack с набором декодеров от CyberLink и Elecard MPEG-2 Decoder.
Оба используют видеокарту при работе с мпег2.
А на сайте второго даж расписано почему все это так хорошо (http://www.elecard.com/technology/mpeg2-dxva.php)
Автор: Silent_Rain
Дата сообщения: 05.01.2010 18:45

Цитата:
Если ктото всетаки определился - какой декодер вы цепляете к МРС?


Тот декодер, который встроен в ОС - Microsoft DTV-DVD Video Decoder. В нем есть поддержка DXVA при воспроизведении MPEG2 (DVD) и не нужно возиться со всякими сторонними декодерами непонятно каких фирм
Автор: selezniov
Дата сообщения: 05.01.2010 19:23
Silent_Rain

Цитата:
Цитата:
Если ктото всетаки определился - какой декодер вы цепляете к МРС?

 
Тот декодер, который встроен в ОС - Microsoft DTV-DVD Video Decoder. В нем есть поддержка DXVA при воспроизведении MPEG2 (DVD) и не нужно возиться со всякими сторонними декодерами непонятно каких фирм


Спасибо. Этого не знал

Единственный минус этого решения - теперь этот декодер (Microsoft DTV-DVD Video Decoder) цепляется и на h264 тоже.
А в этом деле мне родные из МРС больше нравятся (как минимум воспроизведение видео начинается без странной паузы).
Автор: AlessTO
Дата сообщения: 05.01.2010 19:49
selezniov
Галку выставить для встроенного или внести в исключения win'довый фильтр
Автор: arestarh1986
Дата сообщения: 05.01.2010 19:50
Новый рендерер Sync Renderer

(переименован в текущих билдах в EVR Sync)

(автор рендерера Arto Jarvinen a.k.a ar-jar)


Что за зверь такой?
Рендер включает в себя несколько альтернативных механизмов для устранения или уменьшения дрожания. Он основан на EVR и, таким образом, имеет те же фичи и ограничения, что и EVR. В будущем такие механизмы могут быть добавлены в существующие рендеры. Сейчас они введены в отдельный рендер для минимизации проблем.

Для чего его использовать? Есть же много других рендереров...
Разработка данного рендерера это еще одна попытка побороть *дрожание* картинки.

Хм... *Дрожание* картинки. А можно как-то точнее изьяснятся?
Прежде хотелось бы упомянуть о тиринге. В MPC-HC имеется Тearing test, который некорректно перевели как "Тест дрожания". На самом деле, Тearing в переводе означает разрыв. Это когда верхняя и нижняя части картинки принадлежат разным кадрам. Из-за чего видна раздражающая граница посреди экрана.
вот пример.
Лечиться вертикальной синхронизацией (V-sync).

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



Данные инструкции применимы к сборкам MPC-HC 1465 и последующим.

1. Нужно загрузить MPC-HC GothSync с ostrogothia.com или MPC-HC ревизии не ниже 1486 с XvidVideo.RU.
2. Если ваша цель отличная синхронизация, то проверьте, чтоб частота обновления экрана и частота воспроизведения видео(fps, Кадров\с), или их производные, отличались менее чем на 0.1%. Например, для видеоматериала с fps 23.976 подходящая частота обновления экрана будет 23.976 Гц или 47.95 Гц[т.е., (2*23.976 - 47.95)/47.952=0.00004=0.004% < 0.1%]. Для материала с fps 25 подходит частота обновления экрана 25 Гц, 50 Гц, 75 Гц, … . Тогда вы получите хорошую *картинку* на экране. Present at nearest vsync альтернативная синхронизация не требует совпадения частот, т.к. разработана для минимизации паразитных эффектов от несовпадения частот. Также имейте в виду, что частота обновления, которую вы видите на панели контроля вашего видоадаптера(Сatalyst Сontrol Сenter, NVIDIA Control Panel), не всегда корректна\верна. MPC-HC GothSync измеряет реальную частоту обновления в начале передачи(стриминга) и отображает её в экранной статистике(по Ctrl+J) как эталонную. Если у вас проблемы с синхронизацией, проверьте сначала соблюдение данных условий.
3. Проверьте, чтоб программа Reclock не была запущена если вы используете альтернативные методы синхронизации 1 и 2(см. ниже).
4. Убедитесь, что у вас в системе присутствет Enhanced Video Renderer (EVR). Для Windows XP, нужно загрузить и установить .NET 3.5 framework от Microsoft для задействования EVR. Sync Renderer основан на EVR.
5. Запустите плеер (mpc-hc.exe).
6. Откройте Вид -> Настройки -> Вывод.
7. Выберите Sync Renderer в DirectShow Видео. Закройте диалог настроек.


Альтернативный метод синхронизации 1: Синхронизация частоты воспроизведения видео с частотой обновления экрана

Используйте сперва этот альтернативный метод если у вас совпадают частоты видео - экрана(пункт 2 выше) и вы не смотрите много ТВ (или видео с видеокамеры, или других источников в реальном времени(live)). Метод должен работать со всеми мониторами и видеоадаптерами. Если используется SPDIF (цифровой) аудиовыход из ПК, данный метод может привести к небольшой рассинхронизации видео и аудио на протяжении всего просмотра. Для точной синхронизации аудио и видео необходимо использовать аналоговый аудиовыход. (Смотрите данный пост в блоге.)

Данный метод синхронизации использует частоту обновления экрана как опорную и подгоняет скорость воспроизведения видео и аудио под неё. Важно, чтоб разница между скоростями\частотами медиа и экрана была малой. Если она будет больше 0.5%, то аудио будет не синхронизировано, даже в случае, если видео будет синхронизировано\отвечать большинству контрольных параметров (см. ниже).

1. Oткройте Вид -> Настройки -> Воспроизведение -> Синхронизация. Выберите Sync video to display. Frequency adjustment необходимо задать как 0.0012 (~0.12% номинальной частоты), Target sync offset как 10 – 18 мс для частоты обновления 50 Гц и 8 – 14 мс для частоты 60 Гц, и Control limits как 2.0 мс. Вы не сможете менять\задавать настройки Синхронизации если не выбран Sync Renderer на вкладке Вывод или идет воспроизведение медиа (выберите Файл -> Закрыть в этом случае).
2. Посмотрите хороший фильм и проверьте синхронизацию согласно этой инструкции.


Альтернативный метод синхронизации 2: Синхронизация частоты обновления экрана с частотой воспроизведения видео

Этот метод синхронизации теоретически более точен и имитирует метод синхронизации ТВ экранов к видео на входе (хотя бы как в старую добрую эпоху аналогового ТВ). Также метод применим для live-источников, таких как ТВ. Но недостатком данного метода есть то, что он подойдет не для всех комбинаций видеокарта-дисплей-разрешение дисплея. Т.е., необходимо немного поэкспериментировать. Для этого метода необходимо применение программы PowerStrip.

Когда выбран данный метод синхронизации, Sync Renderer использует PowerStrip для подстройки выходной частоты обновления видеоадаптера так, чтобы она была синхронизирована с частотой воспроизведения видео на входе. Для достижения этого, добавляются или удаляются, если необходимо, (невидимые) столбцы или строки к передней порции видеокадра (изображения). Добавление столбцов или строк уменьшает эффективную скорость воспроизведения если время для отображения каждого пикселя остается постоянным. Удаление столбцов или строк увеличивает скорость воспроизведения.

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

1. Загрузите PowerStrip с Entech Taiwan. PowerStrip предоставляет API для подгонки временных параметров графического адаптера из программы. Также может использоваться для регулировки частоты обновления и разрешения экрана. PowerStrip'ом можно пользоваться определенный период времени бесплатно. Следуйте инструкциям установки PowerStrip.
2. Не позволяйте PowerStrip загружатся вместе с Windows (уберите галку с Autoload with Windows диалога Options программы). Автоматическая загрузка PowerStrip вместе с Windows может привести к неприятным последствиям если вам удастся выйти с разрешением, которое дисплей не поддерживает. Также нужно убедится, что разрешение экрана и частота обновления выставлены в значения по умолчанию. Сочетание клавиш CTRL+ALT+S в PowerStrip позволяет сбрасывать настройки графического адаптера в значения по умолчанию и может быть полезным в процесс подстройки при синхронизации. Для детального рассмотрения возможностей PowerStrip, воспользуйтесь встроенной в программу функцей помощи.
3. Откройте Вид -> Настройки -> Воспроизведение -> Синхронизация. Выберите Sync display to video. Выставьте Target sync offset как 10 – 18 мс (для 50 Гц дисплея) или 8 – 14 мс (для 60 Гц дисплея) и Control limits как 2.0 мс. Вы не сможете менять\задавать настройки Синхронизации если не выбран Sync Renderer на вкладке Вывод или идет воспроизведение медиа (выберите Файл -> Закрыть в этом случае).
4. Выберите дисплей, который будет использоваться для просмотра видео. Настройте ваш видеоадаптер(выставьте частоту обновления и разрешение экрана) так, как вы его используете большую часть времени, например, 720 линий @ 50 fps (720p50) как в большей части Европы.
5. Запустите PowerStrip и следуйте инструкциям по настройке при первом запуске. При запуске PowerStrip в системном трее появится иконка программы.
6. Кликните правой кнопкой мыши на иконке и выберите Display profiles -> Configure…. Выберите Advanced Options. Вы должны при этом увидеть диалог - примерно как изображено на рис. ниже (возможно, с некоторыми дополнительными параметрами).
7. Перетяните мышкой вызванный диалог на дисплей, который хотите использовать. Параметры диалога должны при этом обновится в соответствии с новым дисплеем. Убедитесь, что отмечена опция Real-time adjustment.
8. Для проверки того, как выш дисплей воспринимает изменения разрешения, попробуйте уменьшать или увеличивать число строк и столбцов во Front porch, используя стрелки вверх\вниз. Попробуйте и горизонтальную (столбцы) front porch и вертикальную (строки) front porch. Если вы можете изменять как число строк, так и число столбцов на одно деление больше\меньше номинального значения без видимых артефактов на экране, то GothSync сможет контролировать параметры дисплея с использованием тех же методов регулировки. Убедитесь, что вы можете увеличивать и уменьшать число в инкрементах 1 и 2. Если нет, то попробуйте изменить параметры разрешения дисплея. Некоторые значения разрешений позволяют использовать только большие инкременты (например, 8), что является очень грубым значением для точной подстройки GothSync. Если дисплей отображает черное, вы можете или подождать сброса разрешения (что происходит, если вы не Применили новые настройки, или использовать комбинацию клавиш CTRL+ALT+S.
9. Убедитесь, что все параметры видеоадаптера сброшены в номинальные значения (например, нажатием сочетания клавиш CTRL+ALT+S в PowerStrip) после проведения экспериментов.
10. Откройте Вид -> Настройки -> Воспроизведение -> Синхронизация. Если ваш дисплей поддерживает смену числа столбцов (см. выше), введите 1 (или 2, если 1 не разрешается PowerStrip) в поле столбцов. Если ваш дисплей также поддерживает смену числа строк, введите 1 (или 2, если 1 не разрешается PowerStrip) в поле строк. Инкремент 1 должен сочетаться с разрешением в 720 строк. С разрешением в 1080 строк вы можете попробовать сначала значение 2. Инкремент должен вызывать изменение частоты обновления приблизительно на 0.1%. При воспроизведении видео вы можете видеть реальные частоты на экранной статистике (по Ctrl+J) в процессе подстройки с использованием альтернативного метода синхронизации.

Этот альтернативный метод синхронизации был протестирован с использованием собственного плеера, GothPlayer, на разных видеоадаптерах NVidia серий 5000, 6000 и 7000 (PowerStrip пока что на совместим с 8000 и выше серией адаптеров) и ATI 3450. Также есть сообщение о работе PowerStrip с серией 4000 видеоадаптеров от ATI/AMD. (См. пост с PowerStrip forum.) Нужно, чтоб PowerStrip мог подстраивать временные параметры видеоадаптера для возможности Sync Renderer изменять частоту обновления. На форуме EntecTaiwan Forums, зайдя в раздел PowerStrip for Windows -> Announcements: Latest PowerStrip release notes, вы можете найти список поддерживаемых видеокарт. Запись "Yes" в колонке "Timing" означает, что метод синхронизации будет применяться к вашей видеокарте.

Функция синхронизации была проверена (опять на GothPlayer) на четырех разных HDTV дисплеях с номинальным разрешением у всех 720 строк. Сообщались ошибки при использовании дисплеев с 1080 строками.


Альтернативный метод синхронизации 3: Представление при ближайшем vsync

Этот альтернативный метод для тех, кто хочет использовать SPDIF выход вместо аналогового (альтернативный метод синхронизации 1 не работает) и нет совместимых с PowerStrip дисплея и видеоадаптера (альтернативный метод синхронизации 2 не работает) или просто не могут совпасть частоты обновления экрана и воспроизведения видео в силу ограничений дисплея. Также данный метод хорошо работает в паре с программой ReClock.

Этот альтернативный метод призван минимизировать паразитные эффекты нативной синхронизации путём (1) постоянного представления нового кадра видеоадаптеру на определенном удалении от vsync для упреждения разрыва(tearing) и (2) "вырывания\перехода" к ближайшему vsync как можно дольше. Распространённой причиной видимого дрожания(judder) есть тот момент, что номинальное время представления кадра как раз в начале vsync. Из-за свойственной коду представления видео неточности иногда кадры будут представлены или до vsync, или после vsync, что может означать, что кадры не будут представлены через равномерные интервалы времени. Это приводит к эффекту дрожания(judder) как показано на рис. ниже.

Неизбежное дрожание(judder) когда время представления близко к vsync, без синхронизации. Это дрожание(judder) проявлялось при проигрывании видеоматериала с fps 25 с 50.01 Гц частотой обновления экрана.

При включении опции Present at nearest vsync, дрожание(judder) уменьшается до одного "чистого" всплеска как показано на рис. ниже.

When the Present at nearest vsync активна проявляется только один "чистый" всплеск при vsync. Данная коррекция удерживает время призентации *вдали* от vsync на протяжении всего времени и только позволяет сдвигать полный период vsync назад или вперёд в случае надобности, но не непрерывно как показано на рис. выше. В даном случае нам необходимо показывать один кадр видео в одном дополнительном дисплейном цикле немедля и потом оставатся в *синхроне* в силу того, что период vsync стал больше на этот "всплеск".

Для активации этого метода нужно:

1. Откройте Вид -> Настройки -> Воспроизведение -> Синхронизация. Выберите Present at nearest vsync. Выставьте Target sync offset как 10 – 18 мс (для 50 Гц дисплея) или 8 – 14 мс (для 60 Гц дисплея) и Control limits как 2.0 мс. Вы не сможете менять\задавать настройки Синхронизации если не выбран Sync Renderer на вкладке Вывод или идет воспроизведение медиа (выберите Файл -> Закрыть в этом случае).

Данный материал лишь перевод вводной статьи автора рендерера Arto Jarvinen a.k.a ar-jar. Также есть его же статья Как проверить синхронизацию.
P.S. Данный материал может быть где-то неточен/неграмотен и, по возможности, укажите на ошибки.
P.S.S. Большое спасибо данной ветке ru-board и форуму Doom9 за детальное обсуждение работы MPC-HС, форуму AVS, разработчикам - за создание данной модификации MPC!!!!
Автор: selezniov
Дата сообщения: 05.01.2010 19:54
AlessTO

Цитата:
selezniov
Галку выставить для встроенного или внести в исключения win'довый фильтр


А вы до этого сообщения читали?

Проблема не вообще в этом декодере, а в том, чтоб он воспроизводил только MPEG2 не хватаясь за h264.


Кстати раз уж такие танцы пошли с подключениями интересных декодеров...
В PowerDVD да и в некоторых других софтовых плейерах вовсю пиарят хитрые механизмы апскейла для SD-видео.

В МРС ничего подобного не планируется? Или опять же может можно чтото внешнее подключить/прикрутить для этого. Ведь не все фильмы в ХД можно нарыть. А смотряться эти ДВД и полуторагиговые авишки на большом экране уж больно страхолюдно...
Автор: ashap88
Дата сообщения: 05.01.2010 20:04
selezniov если добавлял во внешних фильтрах Microsoft DTV-DVD Video Decoder,то убери его.А во строенных фильтрах убери галку с MPEG-2 Video,тогда h264 будет встроенным декодером воспроизводиться,а двд майкрософтским

http://imglink.ru/show-image.php?id=14cab2cc02276664e3b5d99c6153d5b4
Автор: selezniov
Дата сообщения: 05.01.2010 20:27
ashap88

Цитата:
selezniov если добавлял во внешних фильтрах Microsoft DTV-DVD Video Decoder,то убери его.А во строенных фильтрах убери галку с MPEG-2 Video,тогда h264 будет встроенным декодером воспроизводиться,а двд майкрософтским
 
http://imglink.ru/show-image.php?id=14cab2cc02276664e3b5d99c6153d5b4


Спасибо. Надеюсь заработает
Автор: XDron
Дата сообщения: 05.01.2010 20:53
Некоторые разъяснения по поводу AUTO-HDMI и вообще переключения режимов монитора (телевизора) при полноэкранном выводе.
В настоящий момент все должно работать только с прогрессивными режимами!!!
Для того, чтобы установить чрезстрочный режим нужно выполнить
dmScreenSettings.dmPelsWidth = dm.size.cx;
dmScreenSettings.dmPelsHeight = dm.size.cy;
dmScreenSettings.dmBitsPerPel = dm.bpp;
dmScreenSettings.dmDisplayFrequency = dm.freq;
dmScreenSettings. dmDisplayFlags = DM_INTERLACED;
dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS;

Присвоение dmDisplayFlags = DM_INTERLACED говорит системе, что режим чрезстрочный. В настоящий момент поле dmDisplayFlags нигде не устанавливается и имеет по-умолчанию нулевое значение, что говорит о том, что режим будет устанавливаться прогрессивным.

Для того , чтобы хоть как-то работать в MPC-HC с чрезстрочными режимами (хотя бы отображать в списке, что режим прогрессивный или чрезстрочный) нужно изменение структуры dispmode
Сейчас она имеет такой тип:

typedef struct
{
bool fValid;
CSize size;
int bpp, freq;
} dispmode;

Нужно добавить поле DWORD dmDisplayFlags;

typedef struct
{
bool fValid;
CSize size;
int bpp, freq;
DWORD dmDisplayFlags;
} dispmode;

Оно будет соответствовать полю dmDisplayFlags структуры DEVMODE .
Как сейчас работает на примере моей системы Win7 ATI4850 Driver 8.681.0.0 от 24.11.2009, CCC 2009.1124.2131.38610.
Режимы для телевизора

Видно, что прогрессивные режимы 24, 50, 60Гц, чрезстрочные 25, 29, 30.
MPC-HC выдает эти режимы так


Без признаков интерлейза, объясняю, почему.

В GetDispMode(int i, dispmode& dm, CString& DisplayName) (mplayerc.cpp)
Выполняется определение всех параметров дисплеев через вызов EnumDisplaySettings(DisplayName1, i, &devmode)
и в поля dm типа dispmode записываются параметры выбранного режима
dm.fValid = true; //Режим существует
dm.size = CSize(devmode.dmPelsWidth, devmode.dmPelsHeight) // размер экрана
dm.bpp = devmode.dmBitsPerPel; //глубина цвета
dm.freq = devmode.dmDisplayFrequency;// частота
и здесь теряется информация о чрезстрочности.
Если бы была
dm. dmDisplayFlags = devmode. dmDisplayFlags; // признак чрезстрочности, то не пропадала бы.
Но поля dmDisplayFlags в структуре dm типа dispmode нет.

Дальше везде в программе используется именно тип dispmode и соответственно вывести признак интерлейза в списке режима нельзя.
Для установки режима используется функция void SetDispMode(dispmode& dm, CString& DisplayName) в mplayerc.cpp
В ней перед выполнением ChangeDisplaySettingsEx(DisplayName1, &dmScreenSettings, NULL, CDS_FULLSCREEN, NULL);
Заполняется структура dmScreenSettings

DEVMODE dmScreenSettings; //Создается структура типа DEVMODE
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); //делается ее обнуление
dmScreenSettings.dmSize = sizeof(dmScreenSettings);// заносится размер структуры
dmScreenSettings.dmPelsWidth = dm.size.cx; //ширина экрана
dmScreenSettings.dmPelsHeight = dm.size.cy;//высота экрана
dmScreenSettings.dmBitsPerPel = dm.bpp;//глубина цвета
dmScreenSettings.dmDisplayFrequency = dm.freq; //частота
dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY;
если бы была запись
dmScreenSettings. dmDisplayFlags y = dm. dmDisplayFlags; //интерлайз

, то можно было бы установить чрезстрочный режим.
А так, только прогрессивные.

И когда я выставляю в настройках полноэкранного режима 25Гц, раскрываю окно на весь экран, то смены частоты не происходит. Как была 60 так и осталась. Драйвер дисплея 25P просто проигнорировал. Проверял в режиме AUTO-HDMI файлы с частотой контента 25 и 29.97Гц – частота не меняется. Драйвер игнорирует 25P и 30P.

С Nvidea вообще все шоколадно, там все переключения работают во всех режимах без проблем. Т.ч. мои рекомендации для HTPC.


Как работает AUTO-HDMI.
Комментариев, сделанных на русском в исходнике нет, это я только здесь привел.

if (dm.freq > 0) // If not AUTO-HDMI mode
{
// Здесь просто выдается команда на смену параметров монитора на выбранные из списка.
//Это не моя часть кода - наследие. И здесь скрыт описанный выше баг с выставлением
//чрезстрочного режима. Если в драйвере режим чрезстрочный, то он был удачно потерян,
//и сейчас будет выдаваться команда на прогрессивный. Команда может быть
//проигнорирована драйвером видео-карточки.
SetDispMode(dm, s.f_hmonitor);
}
Else // If AUTO-HDMI mode
{
//считывается из Pin длительность кадра и запивывается в m_rtTimePerFrame
LONGLONG m_rtTimePerFrame = 1;
// if ExtractAvgTimePerFrame isn't executed then MediaFPS=10000000.0,
// dm1.freq=10000000 and SetDispMode isn't executed too.
BeginEnumFilters(pGB, pEF, pBF)
{
BeginEnumPins(pBF, pEP, pPin)
{
CMediaTypeEx mt;
PIN_DIRECTION dir;
if(FAILED(pPin->QueryDirection(&dir)) || dir != PINDIR_OUTPUT
|| FAILED(pPin->ConnectionMediaType(&mt))) continue;
ExtractAvgTimePerFrame (&mt, m_rtTimePerFrame);
if (m_rtTimePerFrame == 0) m_rtTimePerFrame=1;
}
EndEnumPins
}
EndEnumFilters
//определяется частота контента
double MediaFPS = 10000000.0 / m_rtTimePerFrame;
//создается и инициализируюетя переменная dm1 типа dispmode для функции SetDispMode
dispmode dm1=dm;
//частота контента записывается в поле частоты freq dm1.
dm1.freq = (int)(MediaFPS + 0.5);
m_dmBeforeFullscreen.fValid=false; // пока не ясно будет смена параметров или нет
// -1 в dm.freq говорит о том, что выбран режим AUTO 23.97@24, 25.00@25, 29.97@30
if (dm.freq == -1)
{
if (dm1.freq == 24 || dm1.freq == 25 || dm1.freq == 30)
{
SetDispMode(dm1, s.f_hmonitor);
//Если частота контента равна 24,25,30Гц, то выставляем эти частоты на выбранном экране
m_dmBeforeFullscreen.fValid=true; //смена параметров была
}
}
// -2 в dm.freq говорит о том, что выбран режим AUTO 23.97@24, 25.00@50, 29.97@60
if (dm.freq == -2)
{
if (dm1.freq == 24 || dm1.freq == 25 || dm1.freq == 30)
{
// Если частота контента равна 24,25,30Гч, то выставляем удвоенные частоты 25,30Гц, или 24Гц на выбранном экране
if (dm1.freq == 25) dm1.freq = 50;
if (dm1.freq == 30) dm1.freq = 60;
SetDispMode(dm1, s.f_hmonitor);
m_dmBeforeFullscreen.fValid=true; //смена параметров была
}
}
}

Значение частоты контента можно сверить в этом экране MPC-HC.

Сам код AUTO-HDMI не вычисляет длительность кадра, он берет ее из PIN.

Aleksoid
Ну, как будем менять структуру dispmode?
Добавление поля не повлияет на весь остальной код, это не удаление и не написание программы с прямым распределением адресов. .
Позволит правильно работать с чрезстрочкой, сможем удалить имеющиеся баги и улучшить визуальное отображение.


Автор: ddiman
Дата сообщения: 05.01.2010 20:59

Цитата:
Если используется SPDIF (цифровой) аудиовыход из ПК, данный метод может привести к небольшой рассинхронизации видео и аудио на протяжении всего просмотра. Для точной синхронизации аудио и видео необходимо использовать аналоговый аудиовыход


Да, такой косяк при использовании Sync Renderer был мною замечен. На одном из фильмов звук стал отставать от видео почти на секунду. А использовать аналоговый выход мне не представляется возможным, т.к. звук выводиться через HDMI кабель посредством SPDIF (вместе с видео)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Acronis True Image, Backup & Recovery и Seagate Disc Wiz


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.