]> git.sesse.net Git - mlt/blobdiff - src/modules/avformat/filter_avcolour_space.c
calc image size as largest of two image size calculation methods
[mlt] / src / modules / avformat / filter_avcolour_space.c
index 6396f887c10ad70e016c090d9124f75eaaa7b7e1..5bf53ea415d1d993a722aa78c6c0c5c1a28c931d 100644 (file)
@@ -117,7 +117,7 @@ static void av_convert_image( uint8_t *out, uint8_t *in, int out_fmt, int in_fmt
        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;
@@ -169,7 +169,8 @@ static int convert_image( mlt_frame frame, uint8_t **image, mlt_image_format *fo
 
                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 )
@@ -198,7 +199,6 @@ static int convert_image( mlt_frame frame, uint8_t **image, mlt_image_format *fo
                                                        while ( --n > 0 );
                                }
                                mlt_frame_set_alpha( frame, alpha, len, mlt_pool_release );
-                               frame->get_alpha_mask = NULL;
                        }
                }