Signed-off-by: Paul B Mahol <onemda@gmail.com>
Paul B Mahol authored on 2016/02/08 03:24:49... | ... |
@@ -82,6 +82,7 @@ typedef struct ThreadData { |
82 | 82 |
{ "lighten", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_LIGHTEN}, 0, 0, FLAGS, "mode" },\ |
83 | 83 |
{ "linearlight","", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_LINEARLIGHT},0, 0, FLAGS, "mode" },\ |
84 | 84 |
{ "multiply", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_MULTIPLY}, 0, 0, FLAGS, "mode" },\ |
85 |
+ { "multiply128","", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_MULTIPLY128},0, 0, FLAGS, "mode" },\ |
|
85 | 86 |
{ "negation", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_NEGATION}, 0, 0, FLAGS, "mode" },\ |
86 | 87 |
{ "normal", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_NORMAL}, 0, 0, FLAGS, "mode" },\ |
87 | 88 |
{ "or", "", 0, AV_OPT_TYPE_CONST, {.i64=BLEND_OR}, 0, 0, FLAGS, "mode" },\ |
... | ... |
@@ -229,6 +230,7 @@ DEFINE_BLEND8(addition128, av_clip_uint8(A + B - 128)) |
229 | 229 |
DEFINE_BLEND8(average, (A + B) / 2) |
230 | 230 |
DEFINE_BLEND8(subtract, FFMAX(0, A - B)) |
231 | 231 |
DEFINE_BLEND8(multiply, MULTIPLY(1, A, B)) |
232 |
+DEFINE_BLEND8(multiply128,av_clip_uint8((A - 128) * B / 32. + 128)) |
|
232 | 233 |
DEFINE_BLEND8(negation, 255 - FFABS(255 - A - B)) |
233 | 234 |
DEFINE_BLEND8(difference, FFABS(A - B)) |
234 | 235 |
DEFINE_BLEND8(difference128, av_clip_uint8(128 + A - B)) |
... | ... |
@@ -268,6 +270,7 @@ DEFINE_BLEND16(addition128, av_clip_uint16(A + B - 32768)) |
268 | 268 |
DEFINE_BLEND16(average, (A + B) / 2) |
269 | 269 |
DEFINE_BLEND16(subtract, FFMAX(0, A - B)) |
270 | 270 |
DEFINE_BLEND16(multiply, MULTIPLY(1, A, B)) |
271 |
+DEFINE_BLEND16(multiply128, av_clip_uint16((A - 32768) * B / 8192. + 32768)) |
|
271 | 272 |
DEFINE_BLEND16(negation, 65535 - FFABS(65535 - A - B)) |
272 | 273 |
DEFINE_BLEND16(difference, FFABS(A - B)) |
273 | 274 |
DEFINE_BLEND16(difference128, av_clip_uint16(32768 + A - B)) |
... | ... |
@@ -500,6 +503,7 @@ static int config_output(AVFilterLink *outlink) |
500 | 500 |
case BLEND_LIGHTEN: param->blend = is_16bit ? blend_lighten_16bit : blend_lighten_8bit; break; |
501 | 501 |
case BLEND_LINEARLIGHT:param->blend = is_16bit ? blend_linearlight_16bit: blend_linearlight_8bit;break; |
502 | 502 |
case BLEND_MULTIPLY: param->blend = is_16bit ? blend_multiply_16bit : blend_multiply_8bit; break; |
503 |
+ case BLEND_MULTIPLY128:param->blend = is_16bit ? blend_multiply128_16bit: blend_multiply128_8bit;break; |
|
503 | 504 |
case BLEND_NEGATION: param->blend = is_16bit ? blend_negation_16bit : blend_negation_8bit; break; |
504 | 505 |
case BLEND_NORMAL: param->blend = param->opacity == 1 ? blend_normal: |
505 | 506 |
is_16bit ? blend_normal_16bit : blend_normal_8bit; break; |