changeset 8631:3edba4a36c81

(temporary?) fix for redundant buffer re-allocation
author arpi
date Sun, 29 Dec 2002 02:57:49 +0000
parents 11888c95481b
children 9cecfb883d85
files libmpcodecs/vf.c
diffstat 1 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vf.c	Sun Dec 29 00:57:23 2002 +0000
+++ b/libmpcodecs/vf.c	Sun Dec 29 02:57:49 2002 +0000
@@ -184,13 +184,18 @@
     // accept restrictions & draw_slice flags only:
     mpi->flags|=mp_imgflag&(MP_IMGFLAGMASK_RESTRICTIONS|MP_IMGFLAG_DRAW_CALLBACK);
     if(!vf->draw_slice) mpi->flags&=~MP_IMGFLAG_DRAW_CALLBACK;
-    if((mpi->width!=w2 || mpi->height!=h) && !(mpi->flags&MP_IMGFLAG_DIRECT)){
-	mpi->width=w2; mpi->chroma_width=w2>>mpi->chroma_x_shift;
-	mpi->height=h; mpi->chroma_height=h>>mpi->chroma_y_shift;
+    if(mpi->width!=w2 || mpi->height!=h){
+//	printf("vf.c: MPI parameters changed!  %dx%d -> %dx%d   \n", mpi->width,mpi->height,w2,h);
 	if(mpi->flags&MP_IMGFLAG_ALLOCATED){
-	    // need to re-allocate buffer memory:
-	    free(mpi->planes[0]);
-	    mpi->flags&=~MP_IMGFLAG_ALLOCATED;
+	    if(mpi->width<w2 || mpi->height<h){
+		// need to re-allocate buffer memory:
+		free(mpi->planes[0]);
+		mpi->flags&=~MP_IMGFLAG_ALLOCATED;
+		printf("vf.c: have to REALLOCATE buffer memory :(\n");
+	    }
+	} else {
+	    mpi->width=w2; mpi->chroma_width=w2>>mpi->chroma_x_shift;
+	    mpi->height=h; mpi->chroma_height=h>>mpi->chroma_y_shift;
 	}
     }
     if(!mpi->bpp) mp_image_setfmt(mpi,outfmt);
@@ -246,6 +251,7 @@
 	  } else {
 	      if(!mpi->stride[0]) mpi->stride[0]=mpi->width*mpi->bpp/8;
 	  }
+//	  printf("clearing img!\n");
 	  vf_mpi_clear(mpi,0,0,mpi->width,mpi->height);
 	  mpi->flags|=MP_IMGFLAG_ALLOCATED;
         }
@@ -267,6 +273,9 @@
     }
 
   }
+//    printf("\rVF_MPI: %p %p %p %d %d %d    \n",
+//	mpi->planes[0],mpi->planes[1],mpi->planes[2],
+//	mpi->stride[0],mpi->stride[1],mpi->stride[2]);
   return mpi;
 }