int error = mlt_frame_get_image( this, image, format, width, height, 1 );
// Only process if we have no error and a valid colour space
- if ( error == 0 && *format == mlt_image_yuv422 )
+ if ( error == 0 && *image && *format == mlt_image_yuv422 )
{
// We modify the whole image
uint8_t *p = *image;
- uint8_t *q = *image + *height * *width * 2;
+ int h = *height;
+ int uneven = *width % 2;
+ int w = ( *width - uneven ) / 2;
+ int t;
// Get u and v values
int u = mlt_properties_get_int( MLT_FILTER_PROPERTIES( filter ), "u" );
int v = mlt_properties_get_int( MLT_FILTER_PROPERTIES( filter ), "v" );
// Loop through image
- while ( p != q )
+ while( h -- )
{
- p ++;
- *p ++ = u;
- p ++;
- *p ++ = v;
+ t = w;
+ while( t -- )
+ {
+ p ++;
+ *p ++ = u;
+ p ++;
+ *p ++ = v;
+ }
+ if ( uneven )
+ {
+ p ++;
+ *p ++ = u;
+ }
}
}