From b89af75ae20823839a343b1d877fba7d9d76b640 Mon Sep 17 00:00:00 2001 From: iovar Date: Thu, 9 Nov 2006 15:17:43 +0000 Subject: Writting and reading cache, is changed to happen through normal fwrites-freads, when zero compression is selected as an option git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@159 f606c939-3180-4ac9-a4b8-4b8779d57d0a --- recordmydesktop/src/cache_frame.c | 62 +++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 18 deletions(-) (limited to 'recordmydesktop/src/cache_frame.c') diff --git a/recordmydesktop/src/cache_frame.c b/recordmydesktop/src/cache_frame.c index c100505..01d83d6 100644 --- a/recordmydesktop/src/cache_frame.c +++ b/recordmydesktop/src/cache_frame.c @@ -46,14 +46,22 @@ int CompareBlocks(unsigned char *incoming,unsigned char *old,int blockno,int wid return 0; } -void FlushBlock(unsigned char *buf,int blockno,int width, int height,int divisor,gzFile *fp){ +void FlushBlock(unsigned char *buf,int blockno,int width, int height,int divisor,gzFile *fp,FILE *ucfp){ int j, block_i=blockno/divisor,//place on the grid block_k=blockno%divisor; register unsigned char *buf_reg=(&buf[block_i*(width*height/divisor)+block_k*width/divisor]); - for(j=0;jcache_data->ifp; + gzFile *fp=NULL; + FILE *ucfp=NULL; + int i,current=0,divisor=16,firstrun=1,frameno=0; - if(fp==NULL)exit(13); + if(!((ProgData *)pdata)->args.zerocompression){ + fp=((ProgData *)pdata)->cache_data->ifp; + if(fp==NULL)exit(13); + } + else{ + ucfp=((ProgData *)pdata)->cache_data->uncifp; + if(ucfp==NULL)exit(13); + } - int i,current=0,divisor=16,firstrun=1,frameno=0; for(i=0;i<2;i++){ yuv[i].y_width=((ProgData *)pdata)->enc_data->yuv.y_width; @@ -157,23 +173,30 @@ void *CacheImageBuffer(void *pdata){ fheader.Unum=unum; fheader.Vnum=vnum; fheader.pad=0; - gzwrite(fp,(void*)&fheader,sizeof(FrameHeader)); - //flush indexes - if(ynum)gzwrite(fp,yblocks,ynum); - if(unum)gzwrite(fp,ublocks,unum); - if(vnum)gzwrite(fp,vblocks,vnum); - - + if(!((ProgData *)pdata)->args.zerocompression){ + gzwrite(fp,(void*)&fheader,sizeof(FrameHeader)); + //flush indexes + if(ynum)gzwrite(fp,yblocks,ynum); + if(unum)gzwrite(fp,ublocks,unum); + if(vnum)gzwrite(fp,vblocks,vnum); + } + else{ + fwrite((void*)&fheader,sizeof(FrameHeader),1,ucfp); + //flush indexes + if(ynum)fwrite(yblocks,ynum,1,ucfp); + if(unum)fwrite(ublocks,unum,1,ucfp); + if(vnum)fwrite(vblocks,vnum,1,ucfp); + } //flush the blocks for each buffer if(ynum) for(j=0;jargs.zerocompression) + gzclose(fp); + else + fclose(ucfp); pthread_exit(&errno); } -- cgit v1.2.1