Использование плагинов VirtualDub

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

Скрипты AviSynth находятся на странице Shared\_functions или вы можете загрузить пакет с именем vdub\_filtersv15.zip.

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

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

**AVS+** Поскольку Avisynth + r2724 LoadVirtualdubPlugin обновлен для поддержки более новых версий интерфейса. Это обновление изменило версию поддерживаемого интерфейса от V6 до V20, а Filtermod версии 6 (частичная поддержка).

Поддерживаемые дополнительные функции:

* Поддержка VirtualDub2 с расширенными цветовыми пространствами
	+ Разрешить RGB24, RGB48, RGB64, кроме RGB32
	+ RGBP/RGBAP 8 бит: поскольку этот формат не поддерживается напрямую фильтрами Virtualdub, LoadVirtualdubPlugin автоматически преобразует 8-битный Planar RGB в/из RGB24, RGBAP в/из RGB32 (без потерь)
	+ RGB48/RGBP16/RGBAP16: поскольку этот формат напрямую не поддерживается фильтрами Virtualdub, LoadVirtualdubPlugin автоматически преобразует их в/из RGB64 (без потерь)
	+ YUV(A) 8 бит: YV12, YV16, YV24, YV411, YUVA420P8, YUVA422P8, YUVA444P8
	+ YUV(A) 10-16 бит (правильно установлены максимальные уровни «ref\_x», нет автоконвертера)
* Поддерживает обратный вызов prefetchProc2 (API> = V14 и prefetchProc2) для нескольких входных кадров из одного входного клипа
* Поддерживаются PrefetchFrameDirect и PrefetchFrame. PrefetchFrameSymbolic не поддерживается
* Поддерживается обратный вызов prefetchProc (API> = V12 и prefetchProc)
* Поддерживает, когда фильтр изменяет количество кадров выходного клипа
* Поддерживает задание некоторых свойств цветового пространства.

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

**AVS+** Перед применением скриптов необходимо преобразовать клип в RGB32.
Фильтр, входящий в состав Avisynth + r2724, позволяет загружать фильтры VirtualDub, которые могут обрабатывать цветовые пространства YUV, с некоторыми 10 и 16-битными форматами (как RGB, так и YUV), а также (Virtualdub2). Проверьте фильтр на наличие поддерживаемых цветовых пространств.

## Как создать такой скрипт?

Взгляните на следующий пример скрипта (этот фильтр VirtualDub можно загрузить с домашней страницы Donald's):

**Smart Bob by 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 импортируется командой «LoadVirtualDubPlugin». Первый аргумент дает путь к плагину, второй аргумент - имя плагина, которое будет использоваться в скрипте, а третий аргумент называется preroll.

Preroll должен быть установлен как минимум на количество кадров, которые необходимо предварительно обработать фильтру, чтобы заполнить свои буферы и / или обновить его внутренние переменные. Этот последний аргумент используется в некоторых фильтрах, таких как: SmartBob, SmartDeinterlace, TemporalCleaner и другие. Причина в том, что из-за фильтрации архитектуры VirtualDub доступ к фильтрам в будущих кадрах невозможен. Dividee reports: «В диалоговом окне« Добавить фильтр »VirtualDub некоторые фильтры имеют значение« Lag: »в своем описании. Я думаю, что это значение, которое должно использоваться как preroll. К сожалению, это указание не всегда присутствует. те случаи, которые вы должны угадать ». Конечно, вы всегда можете спросить создателя фильтра.

**AVS+** В конце списка параметров фильтра (без имени) может быть добавлен дополнительный параметр фильтра: string rangehint.

Первый шаг - найти последовательность аргументов в последней строке, где возвращается клип. Настройте сценарий в VirtualDub и выберите «Сохранить настройки обработки» в меню «Файл» или нажмите 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()  # only when necessary (but doesn't hurt)
VD_SmartBob(false, 10, true)
ConvertBackToYUY2()  # only when necessary

```

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

```
LoadVirtualdubplugin("d:\bob.vdf", "VD_SmartBob", 1)
VD_SmartBob(1, 0, 10, 1) # parameters taken from the .vcf file

```