# Часто задаваемые вопросы по AviSynth - обработка с плагинами от VirtualDub

## Содержание

1. Где я могу загрузить последние версии скриптов, которые импортируют фильтры от VirtualDub ?
2. Какие фильтры могут быть импортированы ?
3. Работают ли эти скрипты в цветовом пространстве RGB или YUV ?
4. Как мне самому создать такой скрипт ?

### Где я могу скачать последние версии скриптов, которые импортируют фильтры от VirtualDub ?

Эти AviSynth скрипты находятся на странице ShareFunctions, или Вы можете скачать пакет, называемый vdub_filtersv15.zip, со ссылок на форуме или http://neuron2.net/hosted.html

### Какие фильтры могут быть импортированы ?

Большинство фильтров. Прочитайте соответствующую документацию, имеющуюся в том же zip файле.

### Работают ли эти скрипты в цветовом пространстве RGB или YUV ?

Только в RGB (RGB32). Вам необходимо преобразовать формат в RGB32 перед их применением

### Как мне самому создать такой скрипт ?

Пример скрипта (рассматриваемый VirtualDub фильтр может быть скачан с домашней страницы Donald Graft):

Фильтр Smart Bob от Donald Graft:

    function VD_SmartBob(clip clip, bool show_motion, int threshold, bool motion_map_denoising)
    {
      LoadVirtualdubPlugin("d:\bob.vdf", "_VD_SmartBob", 1)
      return clip.SeparateFields._VD_SmartBob(clip.GetParity?1:0,
        \  default(show_motion,false)?1:0, default(threshold,10),
        \  default(motion_map_denoising,true)?1:0)
    }

VirtualDub плагин SmartBob импортируется командой "LoadVirtualdubPlugin". Первый ее аргумент дает путь к плагину, второй аргумент это имя плагина, которое будет использовано в скрипте, и третий аргумент называется подмотка (preroll).

Подмотка должна быть установлена равной по крайней мере числу кадров, которые необходимо предварительной обработать фильтру, чтобы заполнить буферы и/или обновить его внутренние переменные. Этот последний аргумент используется с некоторыми фильтрами, такими как: SmartBob, SmartDeinterlace, TemporalCleaner и другими. Причина связана с архитектурой фильтрации в Virtual Dub, где будущие кадры недоступны фильтру. Dividee сообщает: "В диалоге "Add filter" VirtualDub, некоторые фильтры имеют параметр "Lag:" (задержка) в их описании. Я думаю это есть величина, которая должна быть использована как подмотка. К несчастью, это указание не всегда присутствует. В этих случаях вы должны использовать предполагаемое значение." Конечно, Вы всегда можете спросить у автора фильтра.

На первом шаге надо найти последовательность аргументов в последней строке, где клип выводится. Сконфигурируйте фильтр в VirtualDub и выберите "Save processing Settings" (сохранить настройки обработки) в меню "File", или нажмите Ctrl+S. Откройте созданный .vcf файл в текстовом редакторе, и вы увидите строки подобно следующим:

    VirtualDub.video.filters.Add("smart bob (1.1 beta 2)");
    VirtualDub.video.filters.instance[0].Config(1, 0, 10, 1);

Порядок аргументов тот же, который должен быть использован в AviSynth. Чтобы выяснить роль аргументов, поиграйте с ними в VirtualDub и контролируйте получаемые строки.

Второй шаг заключается в тестировании фильтра и сравнении его с фильтром в самом VirtualDub. Что касается собственно программирования скриптов, то Вы можете многому научиться, глядя на скрипты, уже содержащиеся в vdub_filters.avs.

Пример скрипта, который использует функцию VD_SmartBob:

    Import("d:\vdub_filters.avs")
    AviSource("d:\filename.avi")
    ConvertToRGB32 # только если необходимо (но не повредит)
    VD_SmartBob(1, 0, 10, 1)
    ConvertBackToYUY2 # только если необходимо

Пакет vdub_filtersv15.zip является немного устаревшим, так как много новых VirtualDub фильтров в нем нет. Если это как раз случай с нужным Вам фильтром VirtualDub, и вы не хотите создать функцию сами (такую как VD_SmartBob), можно также использовать следующий скрипт:

    LoadVirtualdubplugin("d:\bob.vdf", "VD_SmartBob", 1)
    VD_SmartBob(1, 0, 10, 1) # параметры взяты из файла .vcf

| Содержание FAQ | Общая информация | Загрузка клипов | Открытие скриптов | Общие сообщения об ошибках | Обработка различного контента | Работа с YV12 | Обработка с плагинами от Virtualdub |

`$English Date: 2008/07/04 17:07:28 $
Русский перевод 19.05.2005-04.07.2008 Fizick http://bag.hotmail.ru`