changeset 7368:a894e99c1e51

changing return type of put_image void->int
author arpi
date Tue, 10 Sep 2002 22:18:32 +0000
parents 5b0baab4c4fd
children b34b005ab4f8
files libmpcodecs/dec_video.c libmpcodecs/ve_divx4.c libmpcodecs/ve_lavc.c libmpcodecs/ve_libdv.c libmpcodecs/ve_rawrgb.c libmpcodecs/ve_vfw.c libmpcodecs/vf.c libmpcodecs/vf.h libmpcodecs/vf_crop.c libmpcodecs/vf_cropdetect.c libmpcodecs/vf_eq.c libmpcodecs/vf_expand.c libmpcodecs/vf_fame.c libmpcodecs/vf_flip.c libmpcodecs/vf_halfpack.c libmpcodecs/vf_lavc.c libmpcodecs/vf_lavcdeint.c libmpcodecs/vf_mirror.c libmpcodecs/vf_noise.c libmpcodecs/vf_palette.c libmpcodecs/vf_pp.c libmpcodecs/vf_rectangle.c libmpcodecs/vf_rgb2bgr.c libmpcodecs/vf_rotate.c libmpcodecs/vf_scale.c libmpcodecs/vf_test.c libmpcodecs/vf_vo.c libmpcodecs/vf_yuy2.c libmpcodecs/vf_yvu9.c
diffstat 29 files changed, 69 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/dec_video.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/dec_video.c	Tue Sep 10 22:18:32 2002 +0000
@@ -212,6 +212,7 @@
 unsigned int t=GetTimer();
 unsigned int t2;
 double tt;
+int ret;
 
 //if(!(sh_video->ds->flags&1) || sh_video->ds->pack_no<5)
 mpi=mpvdec->decode(sh_video, start, in_size, drop_frame);
@@ -237,12 +238,12 @@
 
 //vo_draw_image(video_out,mpi);
 vf=sh_video->vfilter;
-vf->put_image(vf,mpi);
-vf->control(vf,VFCTRL_DRAW_OSD,NULL);
+ret = vf->put_image(vf,mpi); // apply video filters and call the leaf vo/ve
+if(ret>0) vf->control(vf,VFCTRL_DRAW_OSD,NULL);
 
     t2=GetTimer()-t2;
     tt=t2*0.000001f;
     vout_time_usage+=tt;
 
-  return 1;
+return ret;
 }
--- a/libmpcodecs/ve_divx4.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/ve_divx4.c	Tue Sep 10 22:18:32 2002 +0000
@@ -223,7 +223,7 @@
     return 0;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     ENC_RESULT enc_result;
     vf->priv->enc_frame.image=mpi->planes[0];
     vf->priv->enc_frame.bitstream=mux_v->buffer;
@@ -273,6 +273,7 @@
 	}
     }
     mencoder_write_chunk(mux_v,vf->priv->enc_frame.length,enc_result.is_key_frame?0x10:0);
+    return 1;
 }
 
 //===========================================================================//
--- a/libmpcodecs/ve_lavc.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/ve_lavc.c	Tue Sep 10 22:18:32 2002 +0000
@@ -387,7 +387,7 @@
     return 0;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     int out_size;
     AVPicture lavc_venc_picture;
 
@@ -431,6 +431,7 @@
     if(lavc_venc_context.stats_out && stats_file) 
         fprintf(stats_file, "%s", lavc_venc_context.stats_out);
 #endif
+    return 1;
 }
 
 static void uninit(struct vf_instance_s* vf){
--- a/libmpcodecs/ve_libdv.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/ve_libdv.c	Tue Sep 10 22:18:32 2002 +0000
@@ -72,13 +72,14 @@
     return 0;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
 
     dv_encode_full_frame(vf->priv->enc, mpi->planes, 
 	(mpi->flags&MP_IMGFLAG_YUV) ? e_dv_color_yuv : e_dv_color_rgb,
 	mux_v->buffer);
 
     mencoder_write_chunk(mux_v, 480 * (vf->priv->enc->isPAL ? 300 : 250) , 0x10);
+    return 1;
 }
 
 //===========================================================================//
--- a/libmpcodecs/ve_rawrgb.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/ve_rawrgb.c	Tue Sep 10 22:18:32 2002 +0000
@@ -46,9 +46,10 @@
     return 0;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mux_v->buffer=mpi->planes[0];
     mencoder_write_chunk(mux_v, mpi->width*mpi->height*3, 0x10);
+    return 1;
 }
 
 //===========================================================================//
--- a/libmpcodecs/ve_vfw.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/ve_vfw.c	Tue Sep 10 22:18:32 2002 +0000
@@ -238,12 +238,13 @@
     return 0;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     long flags=0;
     int ret;
 //    flip_upside_down(vo_image_ptr,vo_image_ptr,3*vo_w,vo_h); // dirty hack
     ret=vfw_encode_frame(mux_v->bih, mux_v->buffer, vfw_bih, mpi->planes[0], &flags, 10000);
     mencoder_write_chunk(mux_v,mux_v->bih->biSizeImage,flags);
+    return 1;
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf.c	Tue Sep 10 22:18:32 2002 +0000
@@ -347,8 +347,8 @@
     return flags;
 }
 
-void vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi){
-    vf->next->put_image(vf->next,mpi);
+int vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi){
+    return vf->next->put_image(vf->next,mpi);
 }
 
 //============================================================================
--- a/libmpcodecs/vf.h	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf.h	Tue Sep 10 22:18:32 2002 +0000
@@ -29,7 +29,7 @@
         unsigned int fmt);
     void (*get_image)(struct vf_instance_s* vf,
         mp_image_t *mpi);
-    void (*put_image)(struct vf_instance_s* vf,
+    int (*put_image)(struct vf_instance_s* vf,
         mp_image_t *mpi);
     void (*draw_slice)(struct vf_instance_s* vf,
         unsigned char** src, int* stride, int w,int h, int x, int y);
@@ -77,7 +77,7 @@
 	unsigned int flags, unsigned int outfmt);
 int vf_next_control(struct vf_instance_s* vf, int request, void* data);
 int vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt);
-void vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi);
+int vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi);
 
 vf_instance_t* append_filters(vf_instance_t* last);
 
--- a/libmpcodecs/vf_crop.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_crop.c	Tue Sep 10 22:18:32 2002 +0000
@@ -39,7 +39,7 @@
     return vf_next_config(vf,vf->priv->crop_w,vf->priv->crop_h,d_width,d_height,flags,outfmt);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi=vf_get_image(vf->next,mpi->imgfmt,
 	MP_IMGTYPE_EXPORT, 0,
 	vf->priv->crop_w, vf->priv->crop_h);
@@ -59,7 +59,7 @@
     }
     dmpi->stride[0]=mpi->stride[0];
     dmpi->width=mpi->width;
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_cropdetect.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_cropdetect.c	Tue Sep 10 22:18:32 2002 +0000
@@ -55,7 +55,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
     int bpp=mpi->bpp/8;
     int x,y;
@@ -115,7 +115,7 @@
 
 }
 
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_eq.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_eq.c	Tue Sep 10 22:18:32 2002 +0000
@@ -109,7 +109,7 @@
 
 /* FIXME: add packed yuv version of process */
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi)
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi)
 {
 	mp_image_t *dmpi;
 
@@ -135,7 +135,7 @@
 			vf->priv->contrast);
 	}
 
-	vf_next_put_image(vf,dmpi);
+	return vf_next_put_image(vf,dmpi);
 }
 
 static int control(struct vf_instance_s* vf, int request, void* data)
--- a/libmpcodecs/vf_expand.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_expand.c	Tue Sep 10 22:18:32 2002 +0000
@@ -221,14 +221,14 @@
     }
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     if(mpi->flags&MP_IMGFLAG_DIRECT){
 	vf->priv->dmpi=mpi->priv;
 #ifdef OSD_SUPPORT
 	if(vf->priv->osd) draw_osd(vf,mpi->w,mpi->h);
 #endif
-	vf_next_put_image(vf,vf->priv->dmpi);
-	return; // we've used DR, so we're ready...
+	// we've used DR, so we're ready...
+	return vf_next_put_image(vf,vf->priv->dmpi);
     }
 
     // hope we'll get DR buffer:
@@ -259,7 +259,7 @@
 #ifdef OSD_SUPPORT
     if(vf->priv->osd) draw_osd(vf,mpi->w,mpi->h);
 #endif
-    vf_next_put_image(vf,vf->priv->dmpi);
+    return vf_next_put_image(vf,vf->priv->dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_fame.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_fame.c	Tue Sep 10 22:18:32 2002 +0000
@@ -45,7 +45,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_MPEGPES);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     fame_yuv_t yuv;
     mp_image_t *dmpi;
     int out_size;
@@ -62,7 +62,7 @@
     out_size = fame_encode_slice(vf->priv->ctx);
     fame_end_frame(vf->priv->ctx, NULL);
     
-    if(out_size<=0) return;
+    if(out_size<=0) return 1;
 
     dmpi=vf_get_image(vf->next,IMGFMT_MPEGPES,
 	MP_IMGTYPE_EXPORT, 0,
@@ -75,7 +75,7 @@
     
     dmpi->planes[0]=&vf->priv->pes;
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_flip.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_flip.c	Tue Sep 10 22:18:32 2002 +0000
@@ -44,10 +44,10 @@
     }
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     if(mpi->flags&MP_IMGFLAG_DIRECT){
-	vf_next_put_image(vf,vf->priv->dmpi);
-	return; // we've used DR, so we're ready...
+	// we've used DR, so we're ready...
+	return vf_next_put_image(vf,vf->priv->dmpi);
     }
 
     vf->priv->dmpi=vf_get_image(vf->next,mpi->imgfmt,
@@ -68,7 +68,7 @@
     } else
 	vf->priv->dmpi->planes[1]=mpi->planes[1]; // passthru bgr8 palette!!!
     
-    vf_next_put_image(vf,vf->priv->dmpi);
+    return vf_next_put_image(vf,vf->priv->dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_halfpack.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_halfpack.c	Tue Sep 10 22:18:32 2002 +0000
@@ -140,7 +140,7 @@
 	unsigned int dststride, unsigned int srcstride[3], int w, int h);
 
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi)
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi)
 {
 	mp_image_t *dmpi;
 
@@ -153,7 +153,7 @@
 		 dmpi->stride[0], mpi->stride,
 		 mpi->w, mpi->h);
 
-	vf_next_put_image(vf,dmpi);
+	return vf_next_put_image(vf,dmpi);
 }
 
 static int config(struct vf_instance_s* vf,
--- a/libmpcodecs/vf_lavc.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_lavc.c	Tue Sep 10 22:18:32 2002 +0000
@@ -78,7 +78,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_MPEGPES);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t* dmpi;
     int out_size;
     AVPicture lavc_venc_picture;
@@ -93,7 +93,7 @@
     out_size = avcodec_encode_video(&lavc_venc_context, 
 	vf->priv->outbuf, vf->priv->outbuf_size, &lavc_venc_picture);
 
-    if(out_size<=0) return;
+    if(out_size<=0) return 1;
 
     dmpi=vf_get_image(vf->next,IMGFMT_MPEGPES,
 	MP_IMGTYPE_EXPORT, 0,
@@ -106,7 +106,7 @@
     
     dmpi->planes[0]=(unsigned char*)&vf->priv->pes;
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_lavcdeint.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_lavcdeint.c	Tue Sep 10 22:18:32 2002 +0000
@@ -107,7 +107,7 @@
 			flags, outfmt);
 }
 
-static void 
+static int 
 put_image (struct vf_instance_s* vf, mp_image_t *mpi)
 {
   struct vf_priv_s *priv = vf->priv;
@@ -137,10 +137,10 @@
 			    priv->pix_fmt, priv->width, priv->height) < 0)
     {
       /* This should not happen -- see config() */
-      return;
+      return 0;
     }
   
-  vf_next_put_image(vf, dmpi);
+  return vf_next_put_image(vf, dmpi);
 }
 
 
--- a/libmpcodecs/vf_mirror.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_mirror.c	Tue Sep 10 22:18:32 2002 +0000
@@ -42,7 +42,7 @@
 
 //===========================================================================//
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
 
     // hope we'll get DR buffer:
@@ -66,7 +66,7 @@
 	       dmpi->w,dmpi->h,dmpi->bpp>>3);	
     }
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_noise.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_noise.c	Tue Sep 10 22:18:32 2002 +0000
@@ -334,7 +334,7 @@
     mpi->flags|=MP_IMGFLAG_DIRECT;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
 	mp_image_t *dmpi;
 
 	if(!(mpi->flags&MP_IMGFLAG_DIRECT)){
@@ -361,7 +361,7 @@
 	if(gCpuCaps.hasMMX2) asm volatile ("sfence\n\t");
 #endif
 
-	vf_next_put_image(vf,dmpi);
+	return vf_next_put_image(vf,dmpi);
 }
 
 static void uninit(struct vf_instance_s* vf){
--- a/libmpcodecs/vf_palette.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_palette.c	Tue Sep 10 22:18:32 2002 +0000
@@ -68,7 +68,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,vf->priv->fmt);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
     
     // hope we'll get DR buffer:
@@ -144,7 +144,7 @@
 	}
     }
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_pp.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_pp.c	Tue Sep 10 22:18:32 2002 +0000
@@ -67,7 +67,7 @@
     mpi->flags|=MP_IMGFLAG_DIRECT;
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     if(!(mpi->flags&MP_IMGFLAG_DIRECT)){
 	// no DR, so get a new image! hope we'll get DR buffer:
 	vf->priv->dmpi=vf_get_image(vf->next,vf->priv->outfmt,
@@ -87,7 +87,7 @@
 		    vf->priv->pp);
     }
     
-    vf_next_put_image(vf,vf->priv->dmpi);
+    return vf_next_put_image(vf,vf->priv->dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_rectangle.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_rectangle.c	Tue Sep 10 22:18:32 2002 +0000
@@ -62,7 +62,7 @@
     return vf_next_control(vf, request, data);
     return 0;
 }
-static void
+static int
 put_image(struct vf_instance_s* vf, mp_image_t* mpi){
     mp_image_t* dmpi;
     unsigned int bpp;
@@ -136,7 +136,7 @@
 	    p += dmpi->stride[0];
 	}
     }
-    vf_next_put_image(vf, dmpi);
+    return vf_next_put_image(vf, dmpi);
 }
 
 static int
--- a/libmpcodecs/vf_rgb2bgr.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_rgb2bgr.c	Tue Sep 10 22:18:32 2002 +0000
@@ -44,7 +44,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,vf->priv->fmt);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
 
     // hope we'll get DR buffer:
@@ -72,7 +72,7 @@
 	    rgb24tobgr24(mpi->planes[0],dmpi->planes[0],mpi->w*mpi->h*3);
     }
 
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_rotate.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_rotate.c	Tue Sep 10 22:18:32 2002 +0000
@@ -60,7 +60,7 @@
     return vf_next_config(vf,height,width,d_height,d_width,flags,outfmt);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
 
     // hope we'll get DR buffer:
@@ -84,7 +84,7 @@
 	       dmpi->w,dmpi->h,dmpi->bpp>>3,vf->priv->direction);	
     }
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_scale.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_scale.c	Tue Sep 10 22:18:32 2002 +0000
@@ -166,7 +166,7 @@
     return vf_next_config(vf,vf->priv->w,vf->priv->h,d_width,d_height,flags,best);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
 
     // hope we'll get DR buffer:
@@ -182,7 +182,7 @@
 	dmpi->qstride=mpi->qstride;
     }
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_test.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_test.c	Tue Sep 10 22:18:32 2002 +0000
@@ -268,7 +268,7 @@
 	}
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
     int frame= vf->priv->frame_num;
 
@@ -299,9 +299,9 @@
 	}
     }
 
-    vf_next_put_image(vf,dmpi);
     frame++;
     vf->priv->frame_num= frame;
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_vo.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_vo.c	Tue Sep 10 22:18:32 2002 +0000
@@ -87,11 +87,11 @@
 	video_out->control(VOCTRL_GET_IMAGE,mpi);
 }
 
-static void put_image(struct vf_instance_s* vf,
+static int put_image(struct vf_instance_s* vf,
         mp_image_t *mpi){
-  if(!vo_config_count) return; // vo not configured?
+  if(!vo_config_count) return 0; // vo not configured?
   // first check, maybe the vo/vf plugin implements draw_image using mpi:
-  if(video_out->control(VOCTRL_DRAW_IMAGE,mpi)==VO_TRUE) return; // done.
+  if(video_out->control(VOCTRL_DRAW_IMAGE,mpi)==VO_TRUE) return 1; // done.
   // nope, fallback to old draw_frame/draw_slice:
   if(!(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK))){
     // blit frame:
@@ -100,6 +100,7 @@
     else
         video_out->draw_frame(mpi->planes);
   }
+  return 1;
 }
 
 static void draw_slice(struct vf_instance_s* vf,
--- a/libmpcodecs/vf_yuy2.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_yuy2.c	Tue Sep 10 22:18:32 2002 +0000
@@ -27,7 +27,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_YUY2);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
 
     // hope we'll get DR buffer:
@@ -45,7 +45,7 @@
     dmpi->qscale=mpi->qscale;
     dmpi->qstride=mpi->qstride;
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//
--- a/libmpcodecs/vf_yvu9.c	Tue Sep 10 22:10:06 2002 +0000
+++ b/libmpcodecs/vf_yvu9.c	Tue Sep 10 22:18:32 2002 +0000
@@ -27,7 +27,7 @@
     return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_YV12);
 }
 
-static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){
+static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
     mp_image_t *dmpi;
     int y,w,h;
 
@@ -58,7 +58,7 @@
     dmpi->qscale=mpi->qscale;
     dmpi->qstride=mpi->qstride;
     
-    vf_next_put_image(vf,dmpi);
+    return vf_next_put_image(vf,dmpi);
 }
 
 //===========================================================================//