FDIVX v. 1.21 beta на основе 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 вида перемоток с настраиваемой скоростью +tripple buffering для исключения разрыва кадров +Оптимизация функций под MMX, включая QPel, GMC, Bframes +Автоматический выбор лучших методов на конкретном процессоре +сходные с LightAlloy +Малый размер, быстрая загрузка, меньше нагружает систему +Простота в управлении, но содержит множество дополнительных настроек, то есть подходит как новичкам, так и профессионалам +Панель управления и ползунок в режиме полного экрана +Произвольное изменение размеров экрана либо с сохранением пропорций или без +Опциональный выбор разрешения экрана при переходе на полный экран +Регулятор громкости звука на панели +Срез кадров с экрана (screen-shots) с возможностью непрерывной записи и указания каталога 2. Требования, использование. Для работы необходим DirectX 3.0 или выше (желателен 5.0 или выше). Путь к фильму указывается в командной строке. Либо при запуске без параметров появляется диалог открытия файла. Для простоты лучше запускать Controlpanel.exe Нажатие клавиши мыши вызывает/убирает панель интерфейса. Нажатие клавиши мыши на кнопке переключения режима(справа вверху) включает оконный режим или полноэкранный. Нажатие клавиши мыши на кнопке яркости вызывает/убирает панель настроек яркости и т.п. Двойной клик мыши на кнопке яркости возвращает настройки по умолчанию. Клавиши: влево, вправо -передвижение по файлу (быстро, процентная перемотка) с шифтом: посекундная перемотка c контролом: средняя (временная) вверх, вниз -регулировка громкости пробел -пауза home -возврат в начало и остановка Q/A -яркость (нажатие с контролом возвращает значение по умолчанию) W/S -контраст (нажатие с контролом возвращает значение по умолчанию) E/D -цветность(нажатие с контролом возвращает значение по умолчанию) T/G -гамма (нажатие с контролом возвращает значение по умолчанию) F - переключение Full Screen/Windowed ~ - включить/выключить панель интерфейса 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: ...". если оно больше ~1300 то попробуйте запускать программу FDIVX при другом режиме десктопа(например 640x480x256 или 1024x768). Если уменьшить его не удалось, то нужно установить режим с разрешением по горизонтали >=o_width*это_число/1000. (см. пункт 3**) 5.Если выдаётся "overlay show error" ,попробуйте установить значение параметра vertdest >= размера кадра по вертикали (но размер экрана по вертикали д.б. >= vertdest). Возможно 3* Если видео карта не интерполирует по вертикали, то качество м.б. выше, если установить vertdest -1 (размер кадра фильма по вертикали), но при этом может сильно исказиться aspect ratio. По возможности подкрутите регуляторы на мониторе или установите hordest -1 (или меньше разрешения экрана по горизонтали). (6. для ускорения см. 3** обрезав незначительную часть кадра.) 7. Если всё равно не работает, то сообщите автору и отключите использование оверлея параметром "nooverlay 1". 4. Пояснения к некоторым ключам qv_integer_idct Если 1, то используется целочисленное преобразование idct. В данной версии это качественнее. На amd-k6-1,2,3 и других процессорах с медленными вещественными операциями наверняка быстрее. Если 0, то используется вещественное преобразование idct. Быстрее на pentium 1 и mmx. sndbufsize размер буфера под декодированный звук, кб. Если слышны щелчки и т.п. _во время_ проигрывания файла, то его следует увеличить (до ~128) vid_gain рекомендуемое значение для быстрых машин -300 рекомендуемое значение для медленных машин 0 syncbyfp синхронизировать видео и аудио по файловой позиции, т.е., грубо говоря, чтобы они читались из одинаковой позиции файла. Позволяет устранить проблему постепенной(медленной) рассинхронизации. 'Эквивалентно' периодическому нажатию влево/вправо(без сдвига воспроизведения). В большинстве случаев лучше включить. После включения значение vid_gain, вероятно, следует повысить. Пишите, если синхронизация всё равно расходится, тогда как в других плейерах нет. snddev откройте какой-нибудь dxdiag, там в разделе dsound(звук) есть список устройств. Этот список выводится также в логе после "Audio stream:...". snddev - номер используемого устройства, начиная с нуля. dspriority Приоритетный режим dsound.(Это не приоритет потока и т.п.). При отключении качество звука, возможно, понизится. Скорость подсистемы звука лучше повышать параметром downmix. В нормальных условиях не отключать! Попробуйте отключить, если проблемы со звуком. Use_DX5 Использовать directx 5. Рекомендуется включить, если есть возможность установить directx 5.0 или выше. При включенном программа требует dx5.0 или выше, при выключенном dx3.0 При выключенном программа работает в "голой" NT. sndlev_by_dsound При =1(рекомендуется) параметр stsndlevel игнорируется. Начальный уровень звука берётся из настроек системы. 5. Q/A 1.Q: Неудобно каждый раз набирать путь к файлу. A: Откройте любую папку, вызовите её свойства. На вкладке filetypes зарегистрируйте программу на файлы avi (action/действие - open) 2.Q: Замирает видео сразу после старта. При нажатии мыши появляется текущий кадр и снова всё замирает. A: Установите параметр force_update 1 (не рекомендуется включать, если всё нормально при выключенном) 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. Максимальное качество. Программа распространяется с настройками по умолчанию, обеспечивающими максимальное качество и универсальность.Но автор иногда изменяет их и забывает вернуть обратно ;).Поэтому не помешает их проверить: Use_DX5 1 kshow -0.9 kjump 17.0 qv_integer_idct 1 zac_pred 1 sound 1 dspriority 1 downmix 0 downsample 0 sound_8bit 0 syncbyfp 1 nooverlay 0 start_o_format 0 o_width 0 o_height 0 Если у вас не включился оверлей, см. выше пункт по устранению этих ошибок. Оверлей обеспечивает наивысшее качество и скорость. Иногда, при плохом качестве интерполяции кадра оверлеем видео карты (зубцы на пологих линиях, разбиение на линии по вертикали и т.п.), можно её отключить параметрами hordest -1 vertdest -1, либо только vertdest -1 с подстройкой регуляторов высоты/ширины на мониторе(или с уменьшенным hordest). 7. Максимальная скорость. Внимание: в текущей версии формат вывода YUY2 оптимизирован под Pentium1. На Ppro, P2 и др. он будет работать медленнее. На этих процессорах используйте формат YV12(хотя он рекомендуется для всех процессоров). Возражения принимаются. Скорость удобно сравнивать, включив индикатор. Он включается/выключается клавишей "d". Он состоит из 3 полосок с 10 делениями. 1-я полоска(зелёная) показывает какую долю кадров показывает система. Т.е. это индикатор общей скорости. Границы от 0.0 до 1.0 Он расчитывается в режиме _kshow<0_ для интервала фильма до предыдущего ключевого кадра, поэтому изменяется скачками и редко. Справа от него зелёный квадратик сигнализирует о том, что в данный момент скорости системы более чем достаточно. 2-я полоска состоит из 2 частей, синей и красной. В нормальных условиях на не быстрых системах красная полоска д.б. практически незаметна (меньше полделения). Синяя полоска показывает время в мс, которое затрачивается на декодирование одного кадра. Красная -обработку сообщений, подгрузку из файла фильма, _время простоя_ и т.п. Границы индикатора - от 0 до 50 милисекунд. 3-я полоска(серая) показывает время на вывод одного кадра на экран, тоже в мс. Должна быть в 2-3 раза меньше синей. Границы индикатора - от 0 до 50 милисекунд. Необходимо заметить, что если звук декодируется в отдельном потоке, то это время распределяется между синей и серой полоской. Если же нет(в логе выдаётся "not using notify!") то это время идёт целиком в красную полоску. Таким образом, нужно стараться уменьшить значения 2 и 3 полоски. Удобно сначала, на время настройки видео, отключить звук (sound 0). Внимание: если получающееся от изменения значения ускорение(если оно есть) не стоит, на ваш взгляд и слух ухудшения качества, то эту настройку можно пропустить. Если у вас не включился оверлей, см. выше пункт по устранению этих ошибок. Оверлей обеспечивает наивысшее качество и скорость(в частности, растягивает на весь экран он аппаратно и от убирания этого(hordest -1 vertdest -1) скорость практически не увеличится). Учтите, что в настройках оверлея за 0 и -1 скрываются не эти конкретно числа, а другие (см. пояснения к ним в файле fdivx.cfg) При использовании оверлея используются 8-битные видео режимы. Было замечено, что программа быстрее работает в среде w95&dx5, чем например в w98. Стратегия HYPERBOOST. Включается параметром HYPERBOOST. При этом во время простоя программы(на медленных сценах) заполняется большой буфер звука. В дальнейшем, при нехватке мощности системы(на быстрых сценах) будет использоваться этот буфер для получения дополнительных ресурсов. В текущей версии находится в альфа-стадии! Если у вас быстрая система (всегда горит зелёный квадратик), то вам от этой опции нет ничего полезного и рекомендуется её выключить! В противном случае можете попробовать включить. Во включенном состоянии: Белая полоска отображает резерв в буфере (интервал 0 - 1) Параметр sndbufsize рекомендуется равным 1024(т.е. 1мб). Определяет размер буфера. Есть смысл увеличивать только если полоска постоянно скачет то к верхнему пределу, то к нижнему (а не у одного из них). При большом буфере возможна некоторая потеря скорости из-за промахов кэша процессора. Также в текущей версии возможна разсинхронизация при старте проигрывания, котороя должна исчезнуть со временем(если включена syncbyfp) Параметр preload_size определяет долю заполнения буфера при начале проигрывания. Рекомендуется значение 0.1 .Большие значения не имеют смысла, т.к. его эффект в любом случае пропадёт через абсолютный максимум в 30 сек, но он тормозит начало проигрывания после перемотки. Рекомендуется переписать фильм на винт, т.к. в этом режиме во время проигрывания позиция считывания из файла очень сильно скачет(на единицы мегабайт), а cd-rom и т.п. очень медленно переходит по непоследовательным позициям. Белый квадратик (вместо зелёного) сигнализирует о том, что программа всё-таки простаивает(буфер подходит к заполненному состоянию). Если скоро после этого белая полоска упадет практически до нуля, до, возможно, следует увеличить размер sndbufsize (но не больше~4096, т.к. иначе это может в текущей версии привести к непредсказуемым результатам и, действительно, медленнее). Рекомендуется более чем 16 мб системной памяти. -Синюю полоску могут уменьшить: qv_integer_idct 0 (на P1,P mmx,...) qv_integer_idct 1 (на k6,...) zac_pred 0 -Серую полоску могут уменьшить: screen_x как можно меньше, но не менее ширины показываемой части оверлея (o_width) screen_y как можно меньше, но не менее высоты показываемой части оверлея (o_height) start_o_format n (попробуйте разные значения n: 0,1,2) o_width поменьше. Например, если ширина фильма 576, то можно поставить 400 при этом будут показываться только центральные ~70% кадра, что вполне достаточно, т.к. по краям кадра мало визуальной информации. o_height тоже можно поменьше не используйте встроенную регулировку яркости и т.п., выключайте панель во время просмотра. force_update 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 --- Объясние параметров kshow и kjump. Параметры регулируют характер пропуска кадров на слабых машинах.Например: При kshow 1.0 или выше будет: .K++++++++++++++++++++......................K Здесь K-ключевые кадры, + -показанные кадры, .-пропущенные Реально между соседними ключевыми кадрами 200-300 кадров при kshow 0.5 будет: .K.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+..........K 0 1 Эффект от пропуска кадров не так велик, т.к. их всё равно надо декодировать, если до следующего ключевого кадра есть ещё кадры. (В этом примере -от цифр 0 до 1). (т.е. серая полоска для них=0, но синяя-та же). Поэтому при kshow 1.0 общее число показанных кадров будет выше, но они будут неравномерно распределяться . при kshow 0.33 будет: .K..+..+..+..+..+..+..+..+..+..+..+..+..+...K При kshow <0 плейер автоматически определяет используемое значение, используя значение kjump. При высоких значениях kjump будут выбираться большие kshow и наоборот, при небольших(до 1) -меньшие(до kshow-used = 0.2). kshow-used как раз и отображается зелёной полоской. Рекомендуемые значения: kshow -0.9 (меньше нуля) kjump 17.0 8. Общая информация. Программа распространяется свободно. Хотя вы, при желании, можете оказать помощь/содействие автору, чтобы улучшить программу. Сайт программы: fdivx.chat.ru Новейшие версии можно попросить у автора, отправив письмо на e-mail nialpof@pisem.net