]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/swscale.c
Use picture helpers (Yield,Release,CopyProperties).
[vlc] / modules / video_filter / swscale.c
index 24d603416d741c4073c8c67f042b0c6fdcf904ad..5e0e8d0928ada326ec7c6b094f00f4a7844a3a1b 100644 (file)
@@ -191,6 +191,8 @@ static int OpenScaler( vlc_object_t *p_this )
         free( p_sys );
         return VLC_EGENERIC;
     }
+    if( p_sys->ctx ) sws_freeContext( p_sys->ctx );
+    p_sys->ctx = NULL;
 
     msg_Dbg( p_filter, "%ix%i chroma: %4.4s -> %ix%i chroma: %4.4s",
              p_filter->fmt_in.video.i_width, p_filter->fmt_in.video.i_height,
@@ -231,7 +233,8 @@ static int CheckInit( filter_t *p_filter )
     if( ( p_filter->fmt_in.video.i_width != p_sys->fmt_in.video.i_width ) ||
         ( p_filter->fmt_in.video.i_height != p_sys->fmt_in.video.i_height ) ||
         ( p_filter->fmt_out.video.i_width != p_sys->fmt_out.video.i_width ) ||
-        ( p_filter->fmt_out.video.i_height != p_sys->fmt_out.video.i_height ) )
+        ( p_filter->fmt_out.video.i_height != p_sys->fmt_out.video.i_height ) ||
+        !p_sys->ctx )
     {
         int i_fmt_in, i_fmt_out;
 
@@ -318,14 +321,8 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
                dst, dst_stride );
 #endif
 
-    p_pic_dst->date = p_pic->date;
-    p_pic_dst->b_force = p_pic->b_force;
-    p_pic_dst->i_nb_fields = p_pic->i_nb_fields;
-    p_pic_dst->b_progressive = p_pic->b_progressive;
-    p_pic_dst->b_top_field_first = p_pic->b_top_field_first;
-
-    if( p_pic->pf_release )
-        p_pic->pf_release( p_pic );
+    picture_CopyProperties( p_pic_dst, p_pic );
+    picture_Release( p_pic );
     return p_pic_dst;
 }