diff options
Diffstat (limited to 'rMD-exp/src/rmd_cache.c')
| -rw-r--r-- | rMD-exp/src/rmd_cache.c | 90 | 
1 files changed, 90 insertions, 0 deletions
| diff --git a/rMD-exp/src/rmd_cache.c b/rMD-exp/src/rmd_cache.c new file mode 100644 index 0000000..eb86aad --- /dev/null +++ b/rMD-exp/src/rmd_cache.c @@ -0,0 +1,90 @@ +/********************************************************************************* +*                             recordMyDesktop                                    * +********************************************************************************** +*                                                                                * +*             Copyright (C) 2006  John Varouhakis                                * +*                                                                                * +*                                                                                * +*    This program is free software; you can redistribute it and/or modify        * +*    it under the terms of the GNU General Public License as published by        * +*    the Free Software Foundation; either version 2 of the License, or           * +*    (at your option) any later version.                                         * +*                                                                                * +*    This program is distributed in the hope that it will be useful,             * +*    but WITHOUT ANY WARRANTY; without even the implied warranty of              * +*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               * +*    GNU General Public License for more details.                                * +*                                                                                * +*    You should have received a copy of the GNU General Public License           * +*    along with this program; if not, write to the Free Software                 * +*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   * +*                                                                                * +*                                                                                * +*                                                                                * +*    For further information contact me at johnvarouhakis@gmail.com              * +**********************************************************************************/ + +#include <recordmydesktop.h> + +void InitCacheData(ProgData *pdata,EncData *enc_data_t,CacheData *cache_data_t){ +    int width,height,offset_x,offset_y,pid; +    char pidbuf[8]; + +    //we set the buffer only since there's +    //no need to initialize the encoder from now. +    width=((pdata->brwin.rgeom.width + 15) >>4)<<4; +    height=((pdata->brwin.rgeom.height + 15) >>4)<<4; +    offset_x=((width-pdata->brwin.rgeom.width)/2)&~1; +    offset_y=((height-pdata->brwin.rgeom.height)/2)&~1; + +    (pdata)->enc_data=enc_data_t; + +    enc_data_t->yuv.y=(unsigned char *)malloc(height*width); +    enc_data_t->yuv.u=(unsigned char *)malloc(height*width/4); +    enc_data_t->yuv.v=(unsigned char *)malloc(height*width/4); +    enc_data_t->yuv.y_width=width; +    enc_data_t->yuv.y_height=height; +    enc_data_t->yuv.y_stride=width; + +    enc_data_t->yuv.uv_width=width/2; +    enc_data_t->yuv.uv_height=height/2; +    enc_data_t->yuv.uv_stride=width/2; +    enc_data_t->x_offset=offset_x; +    enc_data_t->y_offset=offset_y; + + +    //now we set the cache files +    (pdata)->cache_data=cache_data_t; + +    cache_data_t->workdir=(pdata->args).workdir; +    pid=getpid(); + +    I16TOA(pid,pidbuf) +    //names are stored relatively to current dir(i.e. no chdir) +    cache_data_t->projname=malloc(strlen(cache_data_t->workdir)+12+strlen(pidbuf)+3); +    //projname +    strcpy(cache_data_t->projname,cache_data_t->workdir); +    strcat(cache_data_t->projname,"/"); +    strcat(cache_data_t->projname,"rMD-session-"); +    strcat(cache_data_t->projname,pidbuf); +    strcat(cache_data_t->projname,"/"); +    //image data +    cache_data_t->imgdata=malloc(strlen(cache_data_t->projname)+11); +    strcpy(cache_data_t->imgdata,cache_data_t->projname); +    strcat(cache_data_t->imgdata,"img.out.gz"); +    //audio data +    cache_data_t->audiodata=malloc(strlen(cache_data_t->projname)+10); +    strcpy(cache_data_t->audiodata,cache_data_t->projname); +    strcat(cache_data_t->audiodata,"audio.pcm"); + +    //now that've got out buffers and our filenames we start +    //creating the needed files + +    mkdir(cache_data_t->projname,0777); +    cache_data_t->ifp=gzopen(cache_data_t->imgdata,"wb1f"); +    if(!pdata->args.nosound) +        cache_data_t->afp=fopen(cache_data_t->audiodata,"wb"); + +} +  + | 
