Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Media Player Classic - HomeCinema (MPC-HC)

Модерирует : gyra, Maz

Widok (17-05-2010 12:16): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1-я часть 2-я часть 3-я часть
 
Media Player Classic - HomeCinema
 
   
 
Home page (Eng)

MPC HomeCinema - это самая продвинутая модификация классического Media Player Classic. Играет все распространенные видео форматы, большую часть из которых воспроизводит самостоятельно без использования дополнительных кодеков. Поддерживает аппаратное ускорение. Бесплатен.
 
>>Основные возможности MPC - HomeCinema
>>О встроенном в MPC HomeCinema MPEG2 DXVA декодере
 
  • Последняя "стабильная" версия: v1.3.1249.0 (от 26 августа 2009) - изменения
  • Свежайшие "нестабильные" версии (за 2010) можно скачать тут
  • Прямая ссылка на svn v1.3.1774 x86 (01.04.2010), только англ. EXE: скачать [2.51 МБ]
    >>Русификаторы и русские модули для скачивающих только EXE-файл проигрывателя
     
    Cкачать с SourceForge.net | тема на Doom9.org
    Что такое и для чего нужны Standalone filters?
     
    Media Player Classic (обычный, не HomeCinema)
     
  • DXVAChecker - определение возможностей видеокарты по декодированию видео.
  • Haali Media Splitter - Альтернативный сплиттер для Матрёшки (mkv), MP4, OGG/OGM, MPEG TS.
  • Rad Game Tools Splitter::[зеркало] - позволяет смотреть Smacker и Bink видео.
     
  • Собираем MPC- HomeCinema из исходников, сами
  • О MPC-HomeCinema и его особенности - поддержке DXVA
  • Новые опции настроек рендерера
  • Как избавиться от рывков и сделать воспроизведение более плавным | miniFAQ
  • Начиная с билда 1453, MPC-HC умеет это делать сам ; и здесь ; и здесь

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 11:53 25-12-2009 | Исправлено: chogo, 09:14 12-04-2010
    vitsat

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sola, не нужно это : 24i, 25i , 30i  Телик хреново на них показывает. На 24p , 50p , 60p - отлично. У вас случаем не кинескопное старьё ?

    Всего записей: 3472 | Зарегистр. 26-03-2006 | Отправлено: 17:43 05-01-2010
    JekaKot



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asasha
    Название: APE.ax
    Размер: 164 кб
    Доступен до: 2010-02-04 18:07:58
    Ссылка для скачивания файла: http://ifolder.ru/15791884

    Всего записей: 2697 | Зарегистр. 10-03-2006 | Отправлено: 18:09 05-01-2010
    sola

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V0lt

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

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

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

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

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

    у меня скорее плазменное новьё показывает отлично и именно в режимах 25i и 30i

    Всего записей: 916 | Зарегистр. 12-01-2006 | Отправлено: 19:15 05-01-2010
    selezniov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кстати в прошлых обсуждениях затрагивали тему задействования DXVA при воспроизведении MPEG2 (например DVD).  
     
    Если ктото всетаки определился - какой декодер вы цепляете к МРС?
     
    Я вот пока нашел CLVD Pack с набором декодеров от CyberLink и Elecard MPEG-2 Decoder.
    Оба используют видеокарту при работе с мпег2.
    А на сайте второго даж расписано почему все это так хорошо (http://www.elecard.com/technology/mpeg2-dxva.php)

    Всего записей: 53 | Зарегистр. 14-12-2008 | Отправлено: 19:28 05-01-2010
    Silent_Rain



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

    Всего записей: 2181 | Зарегистр. 21-03-2008 | Отправлено: 19:45 05-01-2010
    selezniov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Silent_Rain

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

     
    Спасибо. Этого не знал
     
    Единственный минус этого решения - теперь этот декодер (Microsoft DTV-DVD Video Decoder) цепляется и на h264 тоже.
    А в этом деле мне родные из МРС больше нравятся (как минимум воспроизведение видео начинается без странной паузы).

    Всего записей: 53 | Зарегистр. 14-12-2008 | Отправлено: 20:23 05-01-2010 | Исправлено: selezniov, 20:35 05-01-2010
    AlessTO

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    selezniov
    Галку выставить для встроенного или внести в исключения win'довый фильтр

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 20:49 05-01-2010
    arestarh1986



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Новый рендерер 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!!!!

    Всего записей: 241 | Зарегистр. 23-06-2008 | Отправлено: 20:50 05-01-2010 | Исправлено: arestarh1986, 22:09 01-03-2010
    selezniov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO

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

     
    А вы до этого сообщения читали?
     
    Проблема не вообще в этом декодере, а в том, чтоб он воспроизводил только MPEG2 не хватаясь за h264.
     
     
    Кстати раз уж такие танцы пошли с подключениями интересных декодеров...
    В PowerDVD да и в некоторых других софтовых плейерах вовсю пиарят хитрые механизмы апскейла для SD-видео.
     
    В МРС ничего подобного не планируется? Или опять же может можно чтото внешнее подключить/прикрутить для этого. Ведь не все фильмы в ХД можно нарыть. А смотряться эти ДВД и полуторагиговые авишки на большом экране уж больно страхолюдно...

    Всего записей: 53 | Зарегистр. 14-12-2008 | Отправлено: 20:54 05-01-2010 | Исправлено: selezniov, 20:58 05-01-2010
    ashap88



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

    Всего записей: 77 | Зарегистр. 13-11-2006 | Отправлено: 21:04 05-01-2010 | Исправлено: ashap88, 21:05 05-01-2010
    selezniov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ashap88

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

     
    Спасибо. Надеюсь заработает

    Всего записей: 53 | Зарегистр. 14-12-2008 | Отправлено: 21:27 05-01-2010
    XDron

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Некоторые разъяснения по поводу  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?
    Добавление поля не повлияет на весь остальной код, это не удаление и не написание программы с прямым распределением адресов. .
    Позволит правильно работать с чрезстрочкой, сможем удалить имеющиеся баги и улучшить визуальное отображение.
     
     

    Всего записей: 87 | Зарегистр. 23-01-2006 | Отправлено: 21:53 05-01-2010 | Исправлено: XDron, 22:13 05-01-2010
    ddiman



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

    Всего записей: 220 | Зарегистр. 27-05-2004 | Отправлено: 21:59 05-01-2010
    XDron

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sola
    Интерлейз в современных телевизорах все-равно убирается программным методом.
    Это не ЭЛТ.

    Всего записей: 87 | Зарегистр. 23-01-2006 | Отправлено: 22:02 05-01-2010
    ddiman



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    При установленной галочке "Полноэкранный Direct3D" плеер никак не реагирует на параметры "Полноэкранное разрешение". Указанные тут параметры частоты и разрешения срабатывают только если отключить галочку "Полноэкранный Direct3D" и переключать на фулскрин вручную.  
     
    Еще при установленной галочке "Полноэкранный Direct3D" и выводе изображение на второй монитор (телевизор) при проигрывании плей-листа плеер напрочь виснет при переходе между треками, воспроизводит только первый трек...
     
    Что это, баг или фича? (номер сборки MPC 1.3.1486.0)

    Всего записей: 220 | Зарегистр. 27-05-2004 | Отправлено: 22:09 05-01-2010
    sola

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XDron

    Цитата:
    Проверял в режиме AUTO-HDMI файлы с частотой контента 25 и 29.97Гц – частота не меняется. Драйвер игнорирует 25P и 30P.

     
    но у меня ведь меняется
    может дело в драйвере? я тут недавно тоже ставил 9.12, но после кучи глюков именно при подклюении телевизора, откатил на версию 9.8
     

    Цитата:
    // -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Гц, то выставляем эти частоты на выбранном экране

    вот здесь, насколько я понимаю, он и будет выставлять 24р, 25i или 30i, суть-то в том, что в драйвере режимы 25 и 30Гц чересстрочные (25р и 30р просто в природе не существуют), а значит ничего иного кроме чересстрочки выставить и не получится, другое дело если удвоенные частоты, там да, режимы 50 и 60 уже будут прогрессивными, но мой выбор режим AUTO 23.97@24, 25.00@25, 29.97@30.
     

    Цитата:
    Интерлейз в современных телевизорах все-равно убирается программным методом.

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

    Всего записей: 916 | Зарегистр. 12-01-2006 | Отправлено: 22:43 05-01-2010
    Nthnsq



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите: на всех ДВД стало изображение вытянутое по вертикали. Поигрался - так и не сделал нормально.
    Куда залезть, а то ДВД много, а смотреть - нельзя

    Всего записей: 4875 | Зарегистр. 15-02-2006 | Отправлено: 23:01 05-01-2010
    djbub

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Когда в опере кликаю на просмотр видео, то у меня открывается поток mms в винампе. А как переназначить на MPC?
     
    Добавлено:
    Nthnsq
    смена Aspect ratio (через хот ки) не помогает?

    Всего записей: 329 | Зарегистр. 06-03-2009 | Отправлено: 23:14 05-01-2010
    A_l_e_x_a_n_d_e_r



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ подскажите пожалуйста чем заменить DVD Navigator filter?

    Всего записей: 182 | Зарегистр. 05-11-2004 | Отправлено: 01:00 06-01-2010
    Aleksoid1978



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XDron

    Цитата:
    Ну, как будем менять структуру dispmode?

     
    Вводи, проверяй. У меня нет возможности тестить все эти нововведения, т.к. телек простой - поэтому верю наслово
     
     
    Добавлено:
    ddiman

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

     
    В режиме полноэкранного Direct3D - это баг.


    ----------
    AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

    Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 01:42 06-01-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

    Компьютерный форум Ru.Board » Компьютеры » Программы » Media Player Classic - HomeCinema (MPC-HC)
    Widok (17-05-2010 12:16): Лимит страниц. Продолжаем здесь.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru