# ChromaShift

## Общая информация (Abstract)

Автор: Симон Уолтерc (Simon Walters)
Версия: 2.7
Загрузка: http://www.geocities.com/siwalters_uk/fnews.html
Категория: Разнообразные (не входящие в базовые группы) плагины (Misc Plugins)
Требования: YV12 & YUY2 & RGB32 цветовые форматы (Colorspace)

## Описание

Фильтр смещает хроматическую информацию (C == U и V вместе) или U или V по отдельности, на четное количество пикселей, в любую сторону по горизонтали. Он может также выполнить общий вертикальный сдвиг всей хроматической информации вверх или вниз. Это применимо к клипам в цветовых форматах YUY2 или YV12.

Вильберт Дижхоф (Wilbert Dijkhof) любезно модифицировал фильтр так, что он также может использоваться для смещения красного (Red), зеленого (Green) или синего (Blue) цветов, если входное видео представлено в RGB32 цветовом формате.

Фильтр предназначен главным образом для коррекции неправильного совмещения цветов.

Загрузить версию 2.7 для Avisynth 2.5 (включая исходники)

Загрузить старую версию 1.2 для Avisynth 2.0.x (работает только в YUY2 цветовом формате)

Примеры синтаксиса

# Сдвинуть обе составляющие U и V влево на 2 пиксела и вниз на одну строку
# Обратите внимание: U и/или V нельзя сместить на 1 пиксель т.к. любая пара UV значений объединяет по 2 пикселя в YUY2-формате

    LoadPlugin("ChromaShift.dll")
    AVISource("Test.avi")
    ConvertToYUY2 # если преобразование необходимо
    ChromaShift(C=-2,L=1)

# Сдвинуть красную составляющую влево на 2 пикселя и зеленую вправо на 1 пиксель.

    LoadPlugin("ChromaShift.dll")
    AVISource("Test.avi")
    ConvertToRGB32 # если преобразование необходимо
    ChromaShift(R=-2,G=1)

# Сдвинуть обе составляющие U и V влево на 2 пиксела и вниз на 2 строки
# Обратите внимание: U и/или V нельзя сместить на 1 пиксель т.к. любая пара UV значений объединяет по 4 пикселя в YV12-формате
# L так же нельзя сместить на нечетное количество линий в YV12 по той же причине

    LoadPlugin("ChromaShift.dll")
    AVISource("Test.avi")
    ConvertToYV12
    ChromaShift(C=-2,L=2)

Полный список параметров: `ChromaShift` (clip, int "C", int "U", int "V", int "L", int "R", int "G", int "B")

Любые нечетные значения параметров для C, U или V будет вызывать ошибку (throw exception) т.к. хроматическая информация соотнесена только с парой из каждых двух пикселей в кадре с YUY2. L может принимать любые значения в YUY2, но должно быть четным в YV12-формате.

Задание любых значений параметрам C, U, V или L будет вызывать ошибку (give an error) при использовании RGB32-формата.

Задание любых значений параметрам R, G или B будет вызывать ошибку при использовании YUY2 или YV12 форматов.

### История изменений

4.11.2003 - V2.7: добавлена работа в YV12.

4.11.2003 - V2.6a: добавлена работа в RGB-формате (Wilbert Dijkhof.)

2.11.2003 - добавлены недостающие исходные тексты.

30.01.2003 – V2.5 – перекомпилировано для работы с Avisynth 2.5.

14.09.2002 - V1.2 - добавлена возможность смещения влево так же как и вправо и устранены ограничения на использование по отдельности параметров C, U или V. Также добавлен параметр L (Line - строка) для смещения по вертикали. Код оптимизирован по скорости за счет не применения буферизированного кадра.

14.09.2002 - V1.1 - добавлены параметры C,U и V для управления соответствующими значениями.

10.09.2002 - первый выпуск для АвиСинта

### Исходный код

Все исходные коды здесь представлены в соответствии с лицензией GPL. Это означает, что Вы можете использовать и распространять данный программный продукт и исходный код без какого либо вознаграждения. Это также означает, что Вы вправе улучшать и изменять код без ограничений до тех пор, пока вы следуете правилам лицензии GPL, и только в виде свободно-распространяемых программ с открытыми исходными кодами.
Исходный код компилируется с помощью Visual C++ 6.0 с установленным SP4. При обнаружении проблем с исходными кодами сообщите мне, пожалуйста.

Пожалуйста, шлите письма или пишите в конференцию rec.video.desktop - на случай появления вопросов/комментариев/идей/сообщений об ошибках

Copyright Simon Walters siwalters(at)hotmail.com

`$English Date: 2004/08/13 21:57:25 $
Русский перевод 05.06.2005 Turyst04 Turyst04@nextmail.ru`