FDIVX v. 1.3 alpha2 на основе ffmpeg 0.4.6 Автор: Порошин Николай, 2:5054/58.5, nialpof@pisem.net 1. Описание, особенности и возможности. Плеер видео/аудио файлов avi, обладающий очень широким диапазоном настройки скорости/качества. Основное отличие от остальных плееров - плавность воспроизведения на слабых машинах. В то же время сохраняется высокая точность декодирования (аналогичная наилучшим программам). А концепция "target=speed" позволяет за счёт сэкономленного времени включить на быстрых машинах качественные программные алгоритмы фильтрации и обработки изображения - часто это позволяет заметно уменьшить как артефакты низкокачественного видео, так и недостатки оборудования, видеокарт. Поддерживаются форматы: divx (все версии) xvid (все версии) mpeg4 msmpeg4 (все версии) wmv1 h263 (все версии) mpegaudio, mp2, mp3 ac3 pcm8/16 бит, mulaw/Alaw Поддерживаемые форматы оверлея: YUY2, YV12, Y211, IYUV, UYVY Пока основные недостатки -далеко не последняя веpсия Основные достоинства: +шиpоко настpаеваемая скоpость/качество +контpоль над hardware/software методами +гибкий механизм синхpонизации, обеспечивающий плавное воспpоизведение без значительных pазсинхpонизаций и пауз +скоpость, небольшой pазмеp, непpихотливость, независимость (плейеру не нужны установленные в систему кодеки) +удобная pегулиpовка яркости, контраста и т.п. +программа работает в "голой" NT4 и w95. +программа может просматривать неполные(недокачанные), с повреждённой таблицей ключевых кадров файлы avi. При этом нормально работает перемещение по файлу(естественно, в пределах скачанного фрагмента). +перемещение по файлу происходит практически мгновенно +можно задавать смещение видео по времени относительно аудио. +индикатор скорости программы. +стратегия равномерной загрузки HYPERBOOST. +динамическое упрощение декодирования(например ч/б режим) +поддержка аппаратной регулировки цвета. +возможность растянуть видео на полный экран, даже если в самом фильме чёрные поля. +Полная поддержка ранних карты matrox, на которых нет оверлея. +Включаемый качественный режим программного растяжения видео +3 вида перемоток с настраиваемой скоростью +Оптимизация функций под MMX, включая QPel, GMC, Bframes +Автоматический выбор лучших методов на конкретном процессоре +Упреждающее, строго последовательное чтение файлов. +Динамический буфер кадров в видеопамяти обеспечивает более плавное воспроизведение и эффективное использование ресурсов процессора. +технология Direct rendering 2 - декодирование кадров происходит на уровне кэша процессора, с исключением лишних доступов к памяти. +быстрый SPP deblocking, с динамическим уровнем постпроцессинга, эффективно убирает артефакты кодирования +сходные с LightAlloy +Малый размер, быстрая загрузка, меньше нагружает систему +Простота в управлении, но содержит множество дополнительных настроек, то есть подходит как новичкам, так и профессионалам +Панель управления и ползунок в режиме полного экрана +Произвольное изменение размеров экрана либо с сохранением пропорций или без +Опциональный выбор разрешения экрана при переходе на полный экран +Регулятор громкости звука на панели +Срез кадров с экрана (screen-shots) с возможностью непрерывной записи и указания каталога 2. Требования, использование. Для работы необходим DirectX 3.0 или выше (желателен 5.0 или выше). Путь к фильму указывается в командной строке. Либо при запуске без параметров появляется диалог открытия файла. В дистрибутив входят файлы fdivx.exe и fdivx_p5.exe - второй предназначен для процессоров Pentium без MMX, и ему аналогичным с быстрым FPU (будет работать и первый, но медленнее). Первый - для всех остальных процессоров с ММХ (Pentium MMX, Pentium 2 и выше, K6 и выше). Для простоты лучше запускать Controlpanel.exe Нажатие клавиши мыши вызывает/убирает панель интерфейса. Нажатие клавиши мыши на кнопке переключения режима(справа вверху) включает оконный режим или полноэкранный. Нажатие клавиши мыши на кнопке яркости вызывает/убирает панель настроек яркости и т.п. Двойной клик мыши на кнопке яркости возвращает настройки по умолчанию. Клавиши: влево, вправо -передвижение по файлу (быстро, процентная перемотка) с шифтом: посекундная перемотка c контролом: средняя (временная) вверх, вниз -регулировка громкости пробел -пауза home -возврат в начало и остановка Q/A -яркость (нажатие с контролом возвращает значение по умолчанию) W/S -контраст (нажатие с контролом возвращает значение по умолчанию) E/D -цветность(нажатие с контролом возвращает значение по умолчанию) T/G -гамма (нажатие с контролом возвращает значение по умолчанию) F - переключение полноэкранного/оконного режимов ~ - включить/выключить панель интерфейса F12- сохранить скриншот / - показать/спрятать индикаторы скорости (r - принудительная активация) Выход: esc или alt-f4 3. Как включить оверлей, если он не работает, но есть? (Что такое оверлей?: оверлей - возможность _железа_ видеокарты. Даёт более высокую скорость, качество, есть масштабирование. Если он не используется, то в логе пишется "using software output"). 0.Желательно протестировать все видео-режимы прилагаемой программой controlpanel.exe - в настройках на вкладке "Оверлей" кнопка "тест видео-режимов". Выдаваемые строчки означают, например: 720х480: 8 16 32 b16 что есть видео-режим 720х480 и в нём есть оверлеи при режимах 8,16,32 бит на точку (при любой битности видеорежима на оверлее будет одинаковая, максимальная цветность), также есть аппаратный blt с преобразованием цветового пространства в режиме 16 бит (в дальнейшем для простоты он тоже называется оверлеем). 1.Установите минимальное разрешение, при котором не выдаётся "overlays supported but not at this resolution try another resolution" (или минимальное из пред. пункта, в котором есть оверлей) (Это для скорости). 2.Если выдаётся "none of overlay formats supported.Report to author", то это означает, что ни один из форматов оверлея, которые поддерживает ваша видео карта, не поддерживается программой. Рекомендуется сообщить автору список этих форматов(он выводится в файле log.txt после строчки "creating overlay...<"). Переходите к пункту 7. 3.Если выдаётся "can't create overlay" то, п. 3* Если создан нежелательный формат оверлея(с низким качеством и т.п.), например Y211, то см. 3*. Для создания оверлея требуемого формата подберите параметр start_o_format. Пока рекомендуется YUY2 (выдаётся в логе в строке "selected: ..."). 3*.скорее всего, недостаточно видеопамяти/возможностей видео карты. см 3** 3** Установите уменьшенное значение параметра o_width (0->maximum=ширина кадра) 4.Если выдаётся "overlay size error, _select higher resolution_", то посмотрите число, которое выдаётся в логе после строки "selected: ...". если оно больше ~1.3 то попробуйте запускать программу FDIVX при другом режиме десктопа(например 640x480x256 или 1024x768). Если уменьшить его не удалось, то нужно установить режим с разрешением по горизонтали >=o_width*это_число. (см. пункт 3**) 5.Если выдаётся "overlay show error" ,попробуйте установить значение параметра vertdest >= размера кадра по вертикали (но размер экрана по вертикали д.б. >= vertdest). Возможно 3* Если видео карта не интерполирует по вертикали, то качество м.б. выше, если установить vertdest -1 (размер кадра фильма по вертикали), но при этом может сильно исказиться aspect ratio. По возможности подкрутите регуляторы на мониторе или установите hordest -1 (или меньше разрешения экрана по горизонтали). (6. для ускорения см. 3** обрезав незначительную часть кадра.) 7. Если всё равно не работает, то сообщите автору и отключите использование оверлея параметром "nooverlay 1". 4. Пояснения к некоторым ключам disable_mmx Если установлено, то fdivx.exe не будет использовать ММХ, а будут использоваться обычные целочисленные преобразования. Обычно, включать это не имеет смысла. sndbufsize Размер буфера под декодированный звук, кб. Если слышны щелчки и т.п. _во время_ проигрывания файла, то следует проверить, что его значение не менее ~128. Устанавливать более 1000 не рекомендуется. vid_gain Сдвиг видео по отн. к аудио вперёд, ms. Нужно изменить, если видео и аудио не синхронизированы. рекомендуемое значение 0. syncbyfp Синхронизировать видео и аудио по файловой позиции, т.е., грубо говоря, чтобы они читались из одинаковой позиции файла. Позволяет не учитывать некоторые поля частоты и т.п. в заголовках AVI файла и синхронизировать по альтернативному. Если не включено, то синхронизация не зависит от структуры AVI файла. Не рекомендуется включать. При проблеме постепенной(медленной) рассинхронизации можно попробовать включить. При изменении удалить файлы *.ind. Пишите, если синхронизация всё равно расходится, тогда как в других плейерах нет. snddev Номер используемого устройства для вывода звука. Откройте какой-нибудь dxdiag, там в разделе dsound(звук) есть список устройств. Этот список выводится также в логе после "Audio stream:...". snddev - номер используемого устройства, начиная с нуля. dspriority Приоритетный режим dsound.(Это не приоритет потока и т.п.). При отключении качество звука, возможно, понизится и звук будет выводиться в совместимом режиме. Скорость подсистемы звука лучше повышать параметром downmix. В нормальных условиях не отключать! Попробуйте отключить, если проблемы со звуком. Use_DX5 Использовать directx 5. Рекомендуется включить, если есть возможность установить directx 5.0 или выше. При включенном программа требует dx5.0 или выше, при выключенном dx3.0 При выключенном программа работает в "голой" NT и W95. sndlev_by_dsound При =1(рекомендуется) параметр stsndlevel игнорируется. Начальный уровень звука берётся из настроек системы. No_ind_files При установке не будут создаваться новые файлы индексов, но существующие будут использоваться. SC_sens Определяет границы отставания видео от звука (на слабых машинах), при переходе которых начинают пропускаться кадры или сложность кадров понижается. SC_lowfps Только каждый 6-й кадр. force_reind Игнорирование индексной таблицы AVI файла и её перестроение. Работает не всегда. copy_64byte Оптимизация под 64-байтный размер строки кэша процессора (P4). 5. Q/A 1.Q: Неудобно каждый раз набирать путь к файлу. A: Откройте любую папку, вызовите её свойства. На вкладке filetypes зарегистрируйте программу на файлы avi (action/действие - open) 2.Q: Пропадает видео после переключения режимов/т.п. Один черный (розовый экран). A: Пока-что надо нажать "r" 3.Q: Выдаёт ошибку "no DirectSoundCreate" A: Отключите или переведите другие программы, выводящие звук(винамп и т.д.) на вывод через directsound. Попробуйте snddev 0 или другое значение(см. пояснение к нему в пред. пункте) Перед строчкой "no DirectSoundCreate" в логе программа пишет, какая конкретно ошибка. Проверьте, установлен ли directx 5 или выше. В крайнем случае можете отключить звук sound 0. 4.Q: Можно ли не изменять общую громкость, а только громкость фильма. Либо не работает регулировка звука. A: установите параметр sndlev_by_dsound 2 5.Q: Тормозит и в других проигрывателях, и в этом. A: Внимательно! прочитайте 7 раздел. 6.Q: Программа ничего, но не хватает многого: поддержки новых форматов, оптимизации под разные процы(3dnow,...),общей проработанности программы, нормальных файлов справки и др. A: Автор довольно значительно ограничен во времени, ресурсах, платформах для разработки и тестирования и способностях по написанию нормальных файлов справки/сайтов и т.п. Принимается любая помощь: от активного содействия тестированию, помощи в распространении программы(через интернет и так далее) до участия в разработке частей программы, например файлов помощи или современного интерфейса. Если вы хотите скорее увидеть новые, "вкусные" особенности, то любая поддержка окажет прямое значительное влияние на их скорейшее воплощение. Вы можете связаться с автором по e-mail nialpof@pisem.net 6. Максимальное качество. В текущей версии основное влияние на качество (и скорость) в нормальных ситуациях оказывает параметр spp_max_level (или быстрый SPP deblocking/макс. уровень). Параметр включает алгоритм постпроцессинга, аналогичный SPP deblocking в FFDSHOW/MPlayer. Точнее, разные уровни его соответствуют: уровень уровень SPP в ffdshow/mplayer яркость цвет 0 - - 1 - 4 2 4 - 3 4 4 4 5 4 5 5 5 Алгоритм полностью убирает блоковые артефакты изображения и значительно уменьшает "артефактный шум"/неоднородности около резких краёв (ringing). При этом, однако, ненамного уменьшается резкость картинки. Можно регулировать порог отсечения шумов и, тем самым, резкость и силу подавления артефактов параметром spp_bias. Нормальный, 3, уровень алгоритма требует для работы процессор с частотой 600-800 MHz или выше. 5 уровень работает в 2 раза медленнее 3-го и обеспечивает чуть более высокое качество. При недостатке ресурсов уровень автоматически понижается, spp_max_level ограничивает максимальное значение уровня. В данной версии не используется Direct rendering 2 при работе постпроцессинга, т.е. при spp_max_level >0 . Следующие параметры по умолчанию обеспечивают максимальную универсальность и хорошее качество. Не помешает их проверить, особенно в случае проблем с качеством. Use_DX5 1 disable_mmx 0 SC_lowfps- 1 sound 1 snddev 0 dspriority 1 downmix 0 sound_8bit 0 sndbufsize 500 syncbyfp 0 vid_gain 0 nooverlay 0 max_bufmem 32768 pref_format -1 o_width 0 o_height 0 use_dr2 1 copy_64byte -1 spp_max_level 3 spp_bias 0 zero_bias -1 blt_bpp 0 Если у вас не включился оверлей, обязательно см. выше пункт по устранению этих ошибок. Оверлей обеспечивает наивысшее качество и скорость. Иногда, при плохом качестве интерполяции кадра оверлеем видео карты (зубцы на пологих линиях, разбиение на линии по вертикали и т.п.), можно её отключить параметрами hordest -1 vertdest -1, либо только vertdest -1 с подстройкой регуляторов высоты/ширины на мониторе(или с уменьшенным hordest). 7. Максимальная скорость. Скорость удобно сравнивать, включив индикатор. Он включается/выключается клавишей "/". Он состоит из 5 полосок с 10 делениями. 1-я полоска(зелёная) показывает степень достаточности скорости процессора для точной синхронизации. Т.е. это индикатор общей скорости в данный момент. Границы от 0.0 до 1.0, 1-це соответствует точная синхронизация. Справа от него зелёный квадратик сигнализирует о том, что в данный момент скорости системы более чем достаточно. Цифра на этом квадратике означает текущий уровень постпроцессинга. 2-я полоска состоит из 2 частей, синей и красной. В нормальных условиях на не быстрых системах красная полоска д.б. практически незаметна (меньше полделения). Синяя полоска показывает время в мс, которое затрачивается на декодирование одного кадра. Красная -обработку сообщений, подгрузку из файла фильма, _время простоя_ и т.п. Границы индикатора - от 0 до 50 милисекунд. 3-я полоска(серая) показывает время на вывод одного кадра на экран плюс время на его постпроцессинг, тоже в мс. При отключенном постпроцессинге должна быть в 2-3 раза меньше синей. Границы индикатора - от 0 до 50 милисекунд. 4-я полоска(белая) показывает количество готовых кадров в видеобуфере, каждому кадру соответствует свой фрагмент. 5-я полоска (светло-серая) показывает заполненость аудио-буфера, границы от 0.0 до 1.0. Необходимо заметить, что время, занятое декодированием звука, практически всегда целиком идёт в красную полоску. Таким образом, нужно стараться уменьшить значения 2 и 3 полоски. Удобно сначала, на время настройки видео, отключить звук (sound 0). Если у вас не включился оверлей, см. выше пункт по устранению этих ошибок. Оверлей обеспечивает наивысшее качество и скорость(в частности, растягивает на весь экран он аппаратно и от убирания этого(hordest -1 vertdest -1) скорость практически не увеличится). Учтите, что в настройках оверлея за 0 и -1 скрываются не эти конкретно числа, а другие (см. пояснения к ним в файле fdivx.cfg) При использовании оверлея используются 8-битные видео режимы. Рекомендуется использовать форматы оверлея YV12 и IYUV в любых ситуациях. При этом вывод видео будет происходить быстрее, а значение 3-ей полоски - меньше. В текущей версии работа Direct rendering 2 возможна только в этих режимах. При отсутствии их поддержки лучше установить формат YUY2. При установке по умолчанию, pref_format -1, форматы перебираются в порядке их приоритета и устанавливается лучший из поддерживаемых. Очень большое влияние на скорость оказывает постпроцессинг. Для достижения макс. скорости его следует полностью отключить (spp_max_level 0). При этом, соответственно, артефакты видео станут сильнее видны. Технология Direct rendering 2 обеспечивает минимизацию медленных обращений к памяти и общее ускорение декодирования. В данной версии возможна только при отсутствии постпроцессинга (spp_max_level 0) и форматах оверлея YV12 и IYUV. При её работе вывод кадров в видеопамять происходит во время их декодирования, поэтому 3-я полоска полностью исчезает, а значение 2-ой увеличивается. Параметр copy_64byte позволяет задать альтернативный режим, оптимизированный для процессоров с 64-байтной строкой кеша, например, Pentium 4. Рекомендуется автоопределение, copy_64byte -1 . Было замечено, что программа быстрее работает в среде w95&dx5, чем например в w98. Рекомендуется переписать фильм на винчестер. Стратегия HYPERBOOST. Во время простоя программы(на медленных сценах) заполняется большой буфер звука и видео. В дальнейшем, при нехватке мощности системы(на быстрых сценах) будет использоваться этот буфер для получения дополнительных ресурсов. Также, при наличии постпроцессинга, буфер видео позволяет динамически переключать уровень обработки между состояниями быстрее - медленнее реалтайма, не влияя на синхронизацию. При работе 5-я полоска (светло-серая) полоска отображает резерв аудио в буфере (интервал 0 - 1). Параметр sndbufsize рекомендуется равным 500 - 1024. Определяет размер буфера, т.е. сколько ресурсов он может аккумулировать. Есть смысл увеличивать только если полоска постоянно скачет то к верхнему пределу, то к нижнему (а не у одного из них). При слишком большом буфере возможна некоторая потеря скорости из-за промахов кэша процессора. Также в текущей версии возможно проблематичное упреждающее чтение из файла, из-за слишком отличающихся позиций чтения аудио и видео информации. При больших значениях рекомендуется более чем 16 мб системной памяти. 4-я полоска(белая) отображает число готовых кадров в видеобуфере, его размер ограничивается параметром max_bufmem, а также размером видеопамяти. При max_bufmem 32768 и видеокарте с 32 Мб или более видеопамяти ёмкость буфера около 100 кадров, что является достаточным и увеличивать его нет смысла. Мелькающий белый квадратик (вместо зелёного) сигнализирует о том, что программа всё-таки простаивает(буфер подходит к заполненному состоянию). Если скоро после этого значение этих полосок упадет практически до нуля, то, возможно, следует увеличить размеры соотв. буферов (но не слишком, т.к. это будет, наоборот, медленнее). Вышеперечисленное не влияет на качество декодирования видео и звука. Ниже приведены дополнительные способы. Если получающееся от их изменения ускорение(если оно есть) не стоит, на ваш взгляд и слух ухудшения качества, то этих настройки можно пропустить. -Синюю полоску могут уменьшить: Использование правильного исполняемого файла - fdivx.exe или fdivx_p5.exe, см. выше. disable_mmx 0 Параметр SC_sens определяет порог, при отставании видео больше которого оно будет упрощаться - пропускаться кадры, переключаться в ч/б режим и т.п. Нижеследующая в файле конфигурации группа флагов с "-" и "+" запрещает или всегда включает опр. действия. Рекомендуется оставить SC_lowfps- 1 . На слабых машинах подобные упрощения являются альтернативой значительной рассинхронизации и резким скачкам - например, лучше пропускать каждый 2 кадр, чем показать 120 кадров и пропустить 80 после них. (Для большей плавности, кадры пропускаются по фиксированным шаблонам, по типу N из каждых 6-ти, например, 2 из 6-ти). -Серую полоску могут уменьшить: screen_x как можно меньше, но не менее ширины показываемой части оверлея (o_width) screen_y как можно меньше, но не менее высоты показываемой части оверлея (o_height) pref_format -1 (форматы оверлея YV12 и IYUV) o_width поменьше. Например, если ширина фильма 576, то можно поставить 400 при этом будут показываться только центральные ~70% кадра, что вполне достаточно, т.к. по краям кадра мало визуальной информации. o_height тоже можно поменьше не используйте встроенную регулировку яркости и т.п., выключайте панель во время просмотра. use_hcc 1 , force_hcc 1 (при регулировке яркости/т.п.) use_dr2 1 spp_max_level 0 Довольно заметное влияние оказывает разгон видеокарты. Автору известны 2 программы(для не новых видеокарт): mclk и mystclk(для Matrox MGA Mystique/Mystique 220) Так, на s3trio64v+ в режиме 640x400 серая полоска ускоряется на 12 процентов, а в 1024х768 - на 45 процентов. Автор не несёт никакой ответственности за использование подобных программ! -Ускорение вывода звука Use_DX5 1 sound 0 :) downmix 1 - оказывает большое влияние ( sound_8bit 1 не ускоряет, а лишь увеличивает эффективный размер буфера HYPERBOOST. Его включать не рекомендутся, разве что у вас меньше 16мб памяти :) ) sndlev_by_dsound 0 8. Общая информация. Программа распространяется свободно. Хотя вы, при желании, можете оказать помощь/содействие автору, чтобы улучшить программу. Сайт программы: fdivx.narod.ru Новейшие версии можно попросить у автора, отправив письмо на e-mail nialpof@pisem.net