X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fcore%2Ffilter_mirror.c;h=e007ac2a06818758c152b3a0e97ece1afafe5eb9;hb=2ff111fe322cfdea5b879dd7912a8a375af62aff;hp=bc8927aae7b0b611b9958586c4645911cc162260;hpb=5b59ce704d4f317e845afa30c5ade12c0fd22d43;p=melted diff --git a/src/modules/core/filter_mirror.c b/src/modules/core/filter_mirror.c index bc8927a..e007ac2 100644 --- a/src/modules/core/filter_mirror.c +++ b/src/modules/core/filter_mirror.c @@ -145,6 +145,42 @@ static int filter_get_image( mlt_frame frame, uint8_t **image, mlt_image_format } } } + else if ( !strcmp( mirror, "xdiagonal" ) ) + { + uint8_t *end = ( uint8_t *)*image + *width * *height * 2; + uint8_t *p = NULL; + uint8_t *q = NULL; + int i; + int j; + for ( i = 0; i < *height; i ++ ) + { + p = ( uint8_t * )*image + ( i + 1 ) * *width * 2; + q = end - ( i + 1 ) * *width * 2; + j = ( ( *width * ( *height - i ) ) / *height ) / 2; + if ( !reverse ) + { + while ( j -- ) + { + *q ++ = *( p - 2 ); + *q ++ = *( p - 3 ); + *q ++ = *( p - 4 ); + *q ++ = *( p - 1 ); + p -= 4; + } + } + else + { + while ( j -- ) + { + *( p - 2 ) = *q ++; + *( p - 3 ) = *q ++; + *( p - 4 ) = *q ++; + *( p - 1 ) = *q ++; + p -= 4; + } + } + } + } else if ( !strcmp( mirror, "flip" ) ) { uint8_t t[ 4 ];