Hi,
during working with line compositing function i faced a strange value
for *weight* parameter - 65534
that value is a rounding problem that flag fast-math used.
i prepared small code:
#include <stdio.h>
int main()
{
float mix = 100.0f;
int r1 = ((1 << 16) - 1) * mix / 100;
int r2 = (((1 << 16) - 1) * mix + 50 ) / 100;
int r3 = 65535.0f * mix / 100.0f;
printf("r1=%d, r2=%d, r3=%d\n", r1, r2, r3);
};
compiling running examples:
[root@dev-5 core]# gcc -o q -ffast-math q.c
[root@dev-5 core]# ./q
r1=65534, r2=65535, r3=65534
[root@dev-5 core]# ./q
r1=65535, r2=65535, r3=65535
may be it has a sense to fix such rounding issues:
- int weight = ( ( 1 << 16 ) - 1 ) * geometry.item.mix / 100;
- uint32_t luma_step = ( ( 1 << 16 ) - 1 ) * geometry.item.mix /
100 * ( 1.0 + softness );
+ int weight = ( ( ( 1 << 16 ) - 1 ) * geometry.item.mix + 50)/ 100;
+ uint32_t luma_step = ( ( ( 1 << 16 ) - 1 ) * geometry.item.mix +
50 ) / 100 * ( 1.0 + softness );
--
________________________________________
Maksym Veremeyenko
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Mlt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mlt-devel