AVPicture input;
AVPicture output;
#ifdef SWSCALE
- int flags = SWS_BILINEAR | SWS_ACCURATE_RND;
+ int flags = SWS_BICUBIC | SWS_ACCURATE_RND;
if ( out_fmt == PIX_FMT_YUYV422 )
flags |= SWS_FULL_CHR_H_INP;
#ifdef SWSCALE
struct SwsContext *context = sws_getContext( width, height, in_fmt,
width, height, out_fmt, flags, NULL, NULL, NULL);
- set_luma_transfer( context, colorspace, use_full_range );
- sws_scale( context, (const uint8_t* const*) input.data, input.linesize, 0, height,
- output.data, output.linesize);
- sws_freeContext( context );
+ if ( context )
+ {
+ set_luma_transfer( context, colorspace, use_full_range );
+ sws_scale( context, (const uint8_t* const*) input.data, input.linesize, 0, height,
+ output.data, output.linesize);
+ sws_freeContext( context );
+ }
#else
img_convert( &output, out_fmt, &input, in_fmt, width, height );
#endif
int in_fmt = convert_mlt_to_av_cs( *format );
int out_fmt = convert_mlt_to_av_cs( output_format );
- int size = avpicture_get_size( out_fmt, width, height );
+ int size = FFMAX( avpicture_get_size( out_fmt, width, height ),
+ mlt_image_format_size( output_format, width, height, NULL ) );
uint8_t *output = mlt_pool_alloc( size );
if ( *format == mlt_image_rgb24a || *format == mlt_image_opengl )
while ( --n > 0 );
}
mlt_frame_set_alpha( frame, alpha, len, mlt_pool_release );
- frame->get_alpha_mask = NULL;
}
}