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" );
+ 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;
+ }
}
}
if ( this != NULL )
{
this->process = filter_process;
- mlt_properties_set( mlt_filter_properties( this ), "u", "75" );
- mlt_properties_set( mlt_filter_properties( this ), "v", "150" );
+ mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "u", "75" );
+ mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "v", "150" );
}
return this;
}