changeset 4951:e5bd91881646

vd_ffmpeg added, handling of EXPORT imgtype changed
author arpi
date Wed, 06 Mar 2002 20:54:14 +0000
parents 307a94037c5c
children ffeba1050226
files libmpcodecs/vd.c
diffstat 1 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vd.c	Wed Mar 06 18:42:56 2002 +0000
+++ b/libmpcodecs/vd.c	Wed Mar 06 20:54:14 2002 +0000
@@ -24,11 +24,15 @@
 extern vd_functions_t mpcodecs_vd_null;
 extern vd_functions_t mpcodecs_vd_cinepak;
 extern vd_functions_t mpcodecs_vd_qtrpza;
+extern vd_functions_t mpcodecs_vd_ffmpeg;
 
 vd_functions_t* mpcodecs_vd_drivers[] = {
         &mpcodecs_vd_null,
         &mpcodecs_vd_cinepak,
         &mpcodecs_vd_qtrpza,
+#ifdef USE_LIBAVCODEC
+        &mpcodecs_vd_ffmpeg,
+#endif
 	NULL
 };
 
@@ -39,6 +43,7 @@
 
 static mp_image_t* static_images[2];
 static mp_image_t* temp_images[1];
+static mp_image_t* export_images[1];
 static int static_idx=0;
 
 // mp_imgtype: buffering type, see mp_image.h
@@ -51,7 +56,9 @@
   // and if not, then fallback to software buffers:
   switch(mp_imgtype){
   case MP_IMGTYPE_EXPORT:
-    mpi=new_mp_image(w,h);
+//    mpi=new_mp_image(w,h);
+    if(!export_images[0]) export_images[0]=new_mp_image(w,h);
+    mpi=export_images[0];
     break;
   case MP_IMGTYPE_STATIC:
     if(!static_images[0]) static_images[0]=new_mp_image(w,h);
@@ -77,6 +84,15 @@
     mpi->type=mp_imgtype;
     mpi->flags&=~(MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE);
     mpi->flags|=mp_imgflag&(MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE);
+    if((mpi->width!=w || mpi->height!=h) && !(mpi->flags&MP_IMGFLAG_DIRECT)){
+	mpi->width=w;
+	mpi->height=h;
+	if(mpi->flags&MP_IMGFLAG_ALLOCATED){
+	    // need to re-allocate buffer memory:
+	    free(mpi->planes[0]);
+	    mpi->flags&=~MP_IMGFLAG_ALLOCATED;
+	}
+    }
     if(!mpi->bpp){
       mp_image_setfmt(mpi,sh->codec->outfmt[sh->outfmtidx]);
       if(!(mpi->flags&(MP_IMGFLAG_ALLOCATED|MP_IMGFLAG_DIRECT))