//Perform loading of the clip\r
try\r
{ \r
- if(_parameters[0] == L"VIDEO")\r
+ if(_parameters[0] == L"KEYER")\r
{\r
- if(_parameters[1] == L"IS_KEY")\r
+ bool value = lexical_cast_or_default(_parameters.at(1), false);\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- bool value = lexical_cast_or_default(_parameters.at(2), false);\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_is_key(value);\r
- return transform; \r
- };\r
+ transform.set_is_key(value);\r
+ return transform; \r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform);\r
- }\r
- else if(_parameters[1] == L"OPACITY")\r
- {\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform);\r
+ }\r
+ else if(_parameters[0] == L"OPACITY")\r
+ {\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
\r
- double value = boost::lexical_cast<double>(_parameters.at(2));\r
+ double value = boost::lexical_cast<double>(_parameters.at(1));\r
\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_opacity(value);\r
- return transform; \r
- };\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_opacity(value);\r
+ return transform; \r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
- }\r
- else if(_parameters[1] == L"FILL_RECT")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
+ }\r
+ else if(_parameters[0] == L"FILL")\r
+ {\r
+ int duration = _parameters.size() > 5 ? lexical_cast_or_default(_parameters[5], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 6 ? _parameters[6] : L"linear";\r
+ double x = boost::lexical_cast<double>(_parameters.at(1));\r
+ double y = boost::lexical_cast<double>(_parameters.at(2));\r
+ double x_s = boost::lexical_cast<double>(_parameters.at(3));\r
+ double y_s = boost::lexical_cast<double>(_parameters.at(4));\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- int duration = _parameters.size() > 6 ? lexical_cast_or_default(_parameters[6], 0) : 0;\r
- std::wstring tween = _parameters.size() > 7 ? _parameters[7] : L"linear";\r
- double x = boost::lexical_cast<double>(_parameters.at(2));\r
- double y = boost::lexical_cast<double>(_parameters.at(3));\r
- double x_s = boost::lexical_cast<double>(_parameters.at(4));\r
- double y_s = boost::lexical_cast<double>(_parameters.at(5));\r
-\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_fill_translation(x, y);\r
- transform.set_fill_scale(x_s, y_s);\r
- transform.set_clip_translation(x, y);\r
- transform.set_clip_scale(x_s, y_s);\r
- return transform;\r
- };\r
+ transform.set_fill_translation(x, y);\r
+ transform.set_fill_scale(x_s, y_s);\r
+ transform.set_clip_translation(x, y);\r
+ transform.set_clip_scale(x_s, y_s);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
- }\r
- else if(_parameters[1] == L"CLIP_RECT")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
+ }\r
+ else if(_parameters[0] == L"MASK")\r
+ {\r
+ int duration = _parameters.size() > 5 ? lexical_cast_or_default(_parameters[5], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 6 ? _parameters[6] : L"linear";\r
+ double x = boost::lexical_cast<double>(_parameters.at(1));\r
+ double y = boost::lexical_cast<double>(_parameters.at(2));\r
+ double x_s = boost::lexical_cast<double>(_parameters.at(3));\r
+ double y_s = boost::lexical_cast<double>(_parameters.at(4));\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- int duration = _parameters.size() > 6 ? lexical_cast_or_default(_parameters[6], 0) : 0;\r
- std::wstring tween = _parameters.size() > 7 ? _parameters[7] : L"linear";\r
- double x = boost::lexical_cast<double>(_parameters.at(2));\r
- double y = boost::lexical_cast<double>(_parameters.at(3));\r
- double x_s = boost::lexical_cast<double>(_parameters.at(4));\r
- double y_s = boost::lexical_cast<double>(_parameters.at(5));\r
-\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_clip_translation(x, y);\r
- transform.set_clip_scale(x_s, y_s);\r
- return transform;\r
- };\r
+ transform.set_clip_translation(x, y);\r
+ transform.set_clip_scale(x_s, y_s);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
- }\r
- else if(_parameters[1] == L"GRID")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween);\r
+ }\r
+ else if(_parameters[0] == L"GRID")\r
+ {\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ int n = boost::lexical_cast<int>(_parameters.at(1));\r
+ double delta = 1.0/static_cast<double>(n);\r
+ for(int x = 0; x < n; ++x)\r
{\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
- int n = boost::lexical_cast<int>(_parameters.at(2));\r
- double delta = 1.0/static_cast<double>(n);\r
- for(int x = 0; x < n; ++x)\r
+ for(int y = 0; y < n; ++y)\r
{\r
- for(int y = 0; y < n; ++y)\r
- {\r
- int index = x+y*n+1;\r
- auto transform = [=](image_transform transform) -> image_transform\r
- { \r
- transform.set_fill_translation(x*delta, y*delta);\r
- transform.set_fill_scale(delta, delta); \r
- transform.set_clip_translation(x*delta, y*delta);\r
- transform.set_clip_scale(delta, delta);\r
- return transform;\r
- };\r
- GetChannel()->mixer()->apply_image_transform(index, transform, duration, tween);\r
- }\r
+ int index = x+y*n+1;\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ { \r
+ transform.set_fill_translation(x*delta, y*delta);\r
+ transform.set_fill_scale(delta, delta); \r
+ transform.set_clip_translation(x*delta, y*delta);\r
+ transform.set_clip_scale(delta, delta);\r
+ return transform;\r
+ };\r
+ GetChannel()->mixer()->apply_image_transform(index, transform, duration, tween);\r
}\r
}\r
- else if(_parameters[1] == L"BLEND")\r
- {\r
- auto blend_str = _parameters.at(2); \r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->set_blend_mode(GetLayerIndex(), get_blend_mode(blend_str)); \r
- }\r
- else if(_parameters[1] == L"BRIGHTNESS")\r
- {\r
- auto value = boost::lexical_cast<double>(_parameters.at(2));\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_brightness(value);\r
- return transform;\r
- };\r
- \r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
- }\r
- else if(_parameters[1] == L"SATURATION")\r
+ }\r
+ else if(_parameters[0] == L"BLEND")\r
+ {\r
+ auto blend_str = _parameters.at(1); \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->set_blend_mode(GetLayerIndex(), get_blend_mode(blend_str)); \r
+ }\r
+ else if(_parameters[0] == L"BRIGHTNESS")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(1));\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- auto value = boost::lexical_cast<double>(_parameters.at(2));\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_saturation(value);\r
- return transform;\r
- };\r
+ transform.set_brightness(value);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
- }\r
- else if(_parameters[1] == L"CONTRAST")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[0] == L"SATURATION")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(1));\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- auto value = boost::lexical_cast<double>(_parameters.at(2));\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_contrast(value);\r
- return transform;\r
- };\r
+ transform.set_saturation(value);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
- }\r
- else if(_parameters[1] == L"LEVELS")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[0] == L"CONTRAST")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(1));\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- image_transform::levels value;\r
- value.min_input = boost::lexical_cast<double>(_parameters.at(2));\r
- value.max_input = boost::lexical_cast<double>(_parameters.at(3));\r
- value.gamma = boost::lexical_cast<double>(_parameters.at(4));\r
- value.min_output = boost::lexical_cast<double>(_parameters.at(5));\r
- value.max_output = boost::lexical_cast<double>(_parameters.at(6));\r
- int duration = _parameters.size() > 7 ? lexical_cast_or_default(_parameters[7], 0) : 0;\r
- std::wstring tween = _parameters.size() > 8 ? _parameters[8] : L"linear";\r
-\r
- auto transform = [=](image_transform transform) -> image_transform\r
- {\r
- transform.set_levels(value);\r
- return transform;\r
- };\r
+ transform.set_contrast(value);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
- }\r
- else if(_parameters[1] == L"RESET")\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[0] == L"LEVELS")\r
+ {\r
+ image_transform::levels value;\r
+ value.min_input = boost::lexical_cast<double>(_parameters.at(1));\r
+ value.max_input = boost::lexical_cast<double>(_parameters.at(2));\r
+ value.gamma = boost::lexical_cast<double>(_parameters.at(3));\r
+ value.min_output = boost::lexical_cast<double>(_parameters.at(4));\r
+ value.max_output = boost::lexical_cast<double>(_parameters.at(5));\r
+ int duration = _parameters.size() > 6 ? lexical_cast_or_default(_parameters[6], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 7 ? _parameters[7] : L"linear";\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
{\r
- int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
- std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ transform.set_levels(value);\r
+ return transform;\r
+ };\r
\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->set_image_transform(GetLayerIndex(), image_transform(), duration, tween);\r
- }\r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
}\r
- else if(_parameters[0] == L"AUDIO")\r
+ else if(_parameters[0] == L"VOLUME")\r
{\r
- if(_parameters[1] == L"GAIN")\r
- {\r
- int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
- std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
- double value = boost::lexical_cast<double>(_parameters[2]);\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ double value = boost::lexical_cast<double>(_parameters[1]);\r
\r
- auto transform = [=](audio_transform transform) -> audio_transform\r
- {\r
- transform.set_gain(value);\r
- return transform;\r
- };\r
- \r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->apply_audio_transform(GetLayerIndex(), transform, duration, tween);\r
- }\r
- else if(_parameters[1] == L"RESET")\r
+ auto transform = [=](audio_transform transform) -> audio_transform\r
{\r
- int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
- std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
-\r
- int layer = GetLayerIndex();\r
- GetChannel()->mixer()->set_audio_transform(GetLayerIndex(), audio_transform(), duration, tween);\r
- }\r
+ transform.set_volume(value);\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_audio_transform(GetLayerIndex(), transform, duration, tween);\r
}\r
else if(_parameters[0] == L"RESET")\r
{\r
GetChannel()->mixer()->reset_transforms();\r
}\r
+ else\r
+ {\r
+ SetReplyString(TEXT("404 MIXER ERROR\r\n"));\r
+ return false;\r
+ }\r
\r
SetReplyString(TEXT("202 MIXER OK\r\n"));\r
\r