Thread: [recordmydesktop-svn-commit] SF.net SVN: recordmydesktop:[512] trunk/recordmydesktop
Status: Alpha
Brought to you by:
enselic
From: svn c. f. r. <rec...@li...> - 2008-09-12 21:16:56
|
Revision: 512 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=512&view=rev Author: enselic Date: 2008-09-12 21:16:52 +0000 (Fri, 12 Sep 2008) Log Message: ----------- Give rectinsert.c a header file and include this header file in RectInsert() clients. src/Makefile.am src/rectinsert.h: Added rectinsert.h. src/get_frame.c src/rectinsert.c src/poll_events.c: Include rectinsert.h include/rmdfunc.h: Removed RectInsert() declaration, it's in rectinsert.h now. Modified Paths: -------------- trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/poll_events.c trunk/recordmydesktop/src/rectinsert.c Added Paths: ----------- trunk/recordmydesktop/src/rectinsert.h Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-12 21:04:36 UTC (rev 511) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-12 21:16:52 UTC (rev 512) @@ -89,20 +89,6 @@ void ClearList(RectArea **root); /** -* Insert a new rectangle on the list, making sure it doesn't overlap -* with the existing ones -* \param root Root entry of the list -* -* \param wgeom New area to be inserted -* -* \returns Number of insertions during operation -* -* \note This function is reentrant and recursive. The number -* of insertions takes this into account. -*/ -int RectInsert(RectArea **root,WGeometry *wgeom); - -/** * Set up all callbacks and signal handlers * \param pdata ProgData struct containing all program data */ Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-12 21:04:36 UTC (rev 511) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-12 21:16:52 UTC (rev 512) @@ -21,6 +21,7 @@ queryextensions.c \ recordmydesktop.c \ rectinsert.c \ + rectinsert.h \ register_callbacks.c \ rmd_cache.c \ rmd_error.c \ Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-12 21:04:36 UTC (rev 511) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-12 21:16:52 UTC (rev 512) @@ -27,7 +27,9 @@ #include <recordmydesktop.h> +#include "rectinsert.h" + #define CLIP_DUMMY_POINTER_AREA(dummy_p_area,brwin,wgeom){\ (wgeom)->x=((((dummy_p_area).x+\ (dummy_p_area).width>=(brwin)->rgeom.x)&&\ Modified: trunk/recordmydesktop/src/poll_events.c =================================================================== --- trunk/recordmydesktop/src/poll_events.c 2008-09-12 21:04:36 UTC (rev 511) +++ trunk/recordmydesktop/src/poll_events.c 2008-09-12 21:16:52 UTC (rev 512) @@ -38,6 +38,7 @@ #include <rmdfunc.h> #include <rmdtypes.h> #include <rmdmacro.h> +#include "rectinsert.h" #define CLIP_EVENT_AREA(e,brwin,wgeom){\ Modified: trunk/recordmydesktop/src/rectinsert.c =================================================================== --- trunk/recordmydesktop/src/rectinsert.c 2008-09-12 21:04:36 UTC (rev 511) +++ trunk/recordmydesktop/src/rectinsert.c 2008-09-12 21:16:52 UTC (rev 512) @@ -27,6 +27,9 @@ #include <recordmydesktop.h> +#include "rectinsert.h" + + /** * Collide two rectangles and dictate most sane action for insertion, * as well as provide the updated rectangle(s) Added: trunk/recordmydesktop/src/rectinsert.h =================================================================== --- trunk/recordmydesktop/src/rectinsert.h (rev 0) +++ trunk/recordmydesktop/src/rectinsert.h 2008-09-12 21:16:52 UTC (rev 512) @@ -0,0 +1,49 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef RECTINSERT_H +#define RECTINSERT_H 1 + + +#include "rmdtypes.h" + + +/** +* Insert a new rectangle on the list, making sure it doesn't overlap +* with the existing ones +* \param root Root entry of the list +* +* \param wgeom New area to be inserted +* +* \returns Number of insertions during operation +* +* \note This function is reentrant and recursive. The number +* of insertions takes this into account. +*/ +int RectInsert(RectArea **root, WGeometry *wgeom); + + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-12 22:15:40
|
Revision: 511 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=511&view=rev Author: enselic Date: 2008-09-12 21:04:36 +0000 (Fri, 12 Sep 2008) Log Message: ----------- include/recordmydesktop.h: Make the global exit_status variable src/recordmydesktop.c: local here. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/src/recordmydesktop.c Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-12 20:59:43 UTC (rev 510) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-12 21:04:36 UTC (rev 511) @@ -68,7 +68,5 @@ int capture_busy, encoder_busy; -int exit_status; - #endif Modified: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-12 20:59:43 UTC (rev 510) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-12 21:04:36 UTC (rev 511) @@ -30,8 +30,7 @@ int main(int argc,char **argv){ ProgData pdata; - - exit_status=0; + int exit_status = 0; DEFAULT_ARGS(&pdata.args); if(ParseArgs(argc,argv,&pdata.args)){ @@ -177,6 +176,7 @@ CleanUp(); } } + return exit_status; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-12 22:40:51
|
Revision: 515 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=515&view=rev Author: enselic Date: 2008-09-12 22:40:44 +0000 (Fri, 12 Sep 2008) Log Message: ----------- Don't include config.h, recordmydesktop.h, rmdtypes.h, rmdfuncs.h or skeleton.h as system headers. include/rmdfunc.h include/rmdmacro.h include/rmdtypes.h include/recordmydesktop.h src/cleanup.c src/opendev.c src/rmd_jack.c src/wm_check.c src/get_frame.c src/parseargs.c src/rmd_cache.c src/rmd_error.c src/rmd_timer.c src/shortcuts.c src/specsfile.c src/getzpixmap.c src/load_cache.c src/rectinsert.c src/rmd_rescue.c src/rmdthreads.c src/cache_audio.c src/poll_events.c src/setbrwindow.c src/encode_cache.c src/flush_to_ogg.c src/init_encoder.c src/update_image.c src/capture_sound.c src/initialize_data.c src/queryextensions.c src/recordmydesktop.c src/make_dummy_pointer.c src/register_callbacks.c src/encode_image_buffer.c src/encode_sound_buffer.c: Changed. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/include/rmdmacro.h trunk/recordmydesktop/include/rmdtypes.h trunk/recordmydesktop/src/cache_audio.c trunk/recordmydesktop/src/capture_sound.c trunk/recordmydesktop/src/cleanup.c trunk/recordmydesktop/src/encode_cache.c trunk/recordmydesktop/src/encode_image_buffer.c trunk/recordmydesktop/src/encode_sound_buffer.c trunk/recordmydesktop/src/flush_to_ogg.c trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/getzpixmap.c trunk/recordmydesktop/src/init_encoder.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/load_cache.c trunk/recordmydesktop/src/make_dummy_pointer.c trunk/recordmydesktop/src/opendev.c trunk/recordmydesktop/src/parseargs.c trunk/recordmydesktop/src/poll_events.c trunk/recordmydesktop/src/queryextensions.c trunk/recordmydesktop/src/recordmydesktop.c trunk/recordmydesktop/src/rectinsert.c trunk/recordmydesktop/src/register_callbacks.c trunk/recordmydesktop/src/rmd_cache.c trunk/recordmydesktop/src/rmd_error.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmd_timer.c trunk/recordmydesktop/src/rmdthreads.c trunk/recordmydesktop/src/setbrwindow.c trunk/recordmydesktop/src/shortcuts.c trunk/recordmydesktop/src/specsfile.c trunk/recordmydesktop/src/update_image.c trunk/recordmydesktop/src/wm_check.c Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-12 22:40:44 UTC (rev 515) @@ -29,7 +29,7 @@ #define RECORDMYDESKTOP_H 1 #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif //header inclusion is completely fucked up Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-12 22:40:44 UTC (rev 515) @@ -24,15 +24,17 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ + #ifndef RMDFUNC_H #define RMDFUNC_H 1 #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include "rmdtypes.h" + /**Function prototypes*/ /** Modified: trunk/recordmydesktop/include/rmdmacro.h =================================================================== --- trunk/recordmydesktop/include/rmdmacro.h 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/include/rmdmacro.h 2008-09-12 22:40:44 UTC (rev 515) @@ -24,15 +24,17 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ + #ifndef RMDMACRO_H #define RMDMACRO_H 1 #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include "rmdtypes.h" + //define which way we are reading a pixmap #if __BYTE_ORDER == __LITTLE_ENDIAN #define __ABYTE 3 Modified: trunk/recordmydesktop/include/rmdtypes.h =================================================================== --- trunk/recordmydesktop/include/rmdtypes.h 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/include/rmdtypes.h 2008-09-12 22:40:44 UTC (rev 515) @@ -26,7 +26,7 @@ #define RMDTYPES_H 1 #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif Modified: trunk/recordmydesktop/src/cache_audio.c =================================================================== --- trunk/recordmydesktop/src/cache_audio.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/cache_audio.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,7 +24,10 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> + +#include "recordmydesktop.h" + + void *CacheSoundBuffer(ProgData *pdata){ //We are simply going to throw sound on the disk. //It's sound is tiny compared to that of image, so Modified: trunk/recordmydesktop/src/capture_sound.c =================================================================== --- trunk/recordmydesktop/src/capture_sound.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/capture_sound.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void *CaptureSound(ProgData *pdata){ #ifdef HAVE_LIBASOUND Modified: trunk/recordmydesktop/src/cleanup.c =================================================================== --- trunk/recordmydesktop/src/cleanup.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/cleanup.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,7 +24,7 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" void CleanUp(void){ Modified: trunk/recordmydesktop/src/encode_cache.c =================================================================== --- trunk/recordmydesktop/src/encode_cache.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/encode_cache.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,7 +25,7 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" void EncodeCache(ProgData *pdata){ Modified: trunk/recordmydesktop/src/encode_image_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,7 +24,10 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> + +#include "recordmydesktop.h" + + void *EncodeImageBuffer(ProgData *pdata){ pdata->th_encoding_clean=0; while(pdata->running){ Modified: trunk/recordmydesktop/src/encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void *EncodeSoundBuffer(ProgData *pdata){ int sampread=pdata->periodsize; #ifdef HAVE_JACK_H Modified: trunk/recordmydesktop/src/flush_to_ogg.c =================================================================== --- trunk/recordmydesktop/src/flush_to_ogg.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/flush_to_ogg.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,7 +24,7 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" //we copy the page because the next call to ogg_stream_pageout //will invalidate it. But we must have pages from Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,7 @@ ******************************************************************************/ -#include <recordmydesktop.h> - +#include "recordmydesktop.h" #include "rectinsert.h" Modified: trunk/recordmydesktop/src/getzpixmap.c =================================================================== --- trunk/recordmydesktop/src/getzpixmap.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/getzpixmap.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + int GetZPixmap(Display *dpy, Window root, char *data, Modified: trunk/recordmydesktop/src/init_encoder.c =================================================================== --- trunk/recordmydesktop/src/init_encoder.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/init_encoder.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,10 +25,12 @@ ******************************************************************************/ -#include <recordmydesktop.h> #include <string.h> -#include <skeleton.h> +#include "recordmydesktop.h" +#include "skeleton.h" + + void m_add_fishead_packet(ogg_stream_state *m_ogg_state){ fishead_packet skel_fp; Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + #ifdef HAVE_LIBASOUND void FixBufferSize(snd_pcm_uframes_t *buffsize){ snd_pcm_uframes_t buffsize_t=*buffsize, Modified: trunk/recordmydesktop/src/load_cache.c =================================================================== --- trunk/recordmydesktop/src/load_cache.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/load_cache.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,7 +25,7 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" //The number of bytes for every Modified: trunk/recordmydesktop/src/make_dummy_pointer.c =================================================================== --- trunk/recordmydesktop/src/make_dummy_pointer.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/make_dummy_pointer.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,8 +24,10 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + + unsigned char *MakeDummyPointer(DisplaySpecs *specs, int size, int color, Modified: trunk/recordmydesktop/src/opendev.c =================================================================== --- trunk/recordmydesktop/src/opendev.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/opendev.c 2008-09-12 22:40:44 UTC (rev 515) @@ -27,9 +27,9 @@ -// #include <recordmydesktop.h> +// #include "recordmydesktop.h" #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdlib.h> Modified: trunk/recordmydesktop/src/parseargs.c =================================================================== --- trunk/recordmydesktop/src/parseargs.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/parseargs.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void PrintConfig(void){ fprintf(stderr,"\nrecordMyDesktop was compiled with" " the following options:\n\n"); Modified: trunk/recordmydesktop/src/poll_events.c =================================================================== --- trunk/recordmydesktop/src/poll_events.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/poll_events.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,7 +26,7 @@ #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdio.h> @@ -35,9 +35,10 @@ #include <X11/Xlibint.h> #include <X11/extensions/Xdamage.h> #include <pthread.h> -#include <rmdfunc.h> -#include <rmdtypes.h> -#include <rmdmacro.h> + +#include "rmdfunc.h" +#include "rmdtypes.h" +#include "rmdmacro.h" #include "rectinsert.h" Modified: trunk/recordmydesktop/src/queryextensions.c =================================================================== --- trunk/recordmydesktop/src/queryextensions.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/queryextensions.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,9 +25,11 @@ ******************************************************************************/ -#include <recordmydesktop.h> #include <X11/extensions/shape.h> +#include "recordmydesktop.h" + + void QueryExtensions(Display *dpy, ProgArgs *args, int *damage_event, Modified: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,7 +25,7 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" int main(int argc,char **argv){ Modified: trunk/recordmydesktop/src/rectinsert.c =================================================================== --- trunk/recordmydesktop/src/rectinsert.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rectinsert.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,7 @@ ******************************************************************************/ -#include <recordmydesktop.h> - +#include "recordmydesktop.h" #include "rectinsert.h" Modified: trunk/recordmydesktop/src/register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/register_callbacks.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/register_callbacks.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void SetPaused(int signum){ PauseStateChanged=1; Modified: trunk/recordmydesktop/src/rmd_cache.c =================================================================== --- trunk/recordmydesktop/src/rmd_cache.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmd_cache.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,9 +24,10 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + /** *Construct an number postfixed name * Modified: trunk/recordmydesktop/src/rmd_error.c =================================================================== --- trunk/recordmydesktop/src/rmd_error.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmd_error.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,15 +26,17 @@ #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xlibint.h> -#include <rmdfunc.h> +#include "rmdfunc.h" + + int rmdErrorHandler( Display *dpy, XErrorEvent *e ) { char error_desc[1024]; Modified: trunk/recordmydesktop/src/rmd_jack.c =================================================================== --- trunk/recordmydesktop/src/rmd_jack.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmd_jack.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + #ifdef HAVE_JACK_H Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,7 +26,7 @@ -#include <recordmydesktop.h> +#include "recordmydesktop.h" int rmdRescue(const char *path){ Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,14 +26,15 @@ #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdio.h> #include <stdlib.h> -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void *rmdTimer(ProgData *pdata){ long unsigned int secs_tw=1/pdata->args.fps; Modified: trunk/recordmydesktop/src/rmdthreads.c =================================================================== --- trunk/recordmydesktop/src/rmdthreads.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/rmdthreads.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,18 +26,19 @@ #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> -#include <rmdfunc.h> -#include <rmdtypes.h> +#include "rmdfunc.h" +#include "rmdtypes.h" + void rmdThreads(ProgData *pdata){ pthread_t poll_events_t, image_capture_t, Modified: trunk/recordmydesktop/src/setbrwindow.c =================================================================== --- trunk/recordmydesktop/src/setbrwindow.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/setbrwindow.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + /** *Align the recording window to a divisible by 2 pixel start and *and a size divisible by 16. Modified: trunk/recordmydesktop/src/shortcuts.c =================================================================== --- trunk/recordmydesktop/src/shortcuts.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/shortcuts.c 2008-09-12 22:40:44 UTC (rev 515) @@ -26,7 +26,7 @@ #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif #include <stdio.h> @@ -35,8 +35,9 @@ #include <X11/Xlib.h> #include <X11/Xlibint.h> #include <X11/keysym.h> -#include <rmdtypes.h> +#include "rmdtypes.h" + int RegisterShortcut(Display *dpy, Window root, const char *shortcut, Modified: trunk/recordmydesktop/src/specsfile.c =================================================================== --- trunk/recordmydesktop/src/specsfile.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/specsfile.c 2008-09-12 22:40:44 UTC (rev 515) @@ -24,15 +24,15 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ + #ifdef HAVE_CONFIG_H - #include <config.h> + #include "config.h" #endif - #include <stdlib.h> #include <stdio.h> -#include <rmdtypes.h> +#include "rmdtypes.h" int WriteSpecsFile(ProgData *pdata){ Modified: trunk/recordmydesktop/src/update_image.c =================================================================== --- trunk/recordmydesktop/src/update_image.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/update_image.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + void UpdateImage(Display * dpy, yuv_buffer *yuv, DisplaySpecs *specs, Modified: trunk/recordmydesktop/src/wm_check.c =================================================================== --- trunk/recordmydesktop/src/wm_check.c 2008-09-12 22:22:57 UTC (rev 514) +++ trunk/recordmydesktop/src/wm_check.c 2008-09-12 22:40:44 UTC (rev 515) @@ -25,8 +25,9 @@ ******************************************************************************/ -#include <recordmydesktop.h> +#include "recordmydesktop.h" + char *rmdWMCheck(Display *dpy,Window root){ Window *wm_child=NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 06:47:18
|
Revision: 521 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=521&view=rev Author: enselic Date: 2008-09-13 06:47:16 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdfunc.h: Removed ParseArgs() declaration. src/Makefile.am src/parseargs.h: Added. src/recordmydesktop.c: Include parseargs.h which contains the ParseArgs() declaration. Modified Paths: -------------- trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/recordmydesktop.c Added Paths: ----------- trunk/recordmydesktop/src/parseargs.h Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 06:21:43 UTC (rev 520) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 06:47:16 UTC (rev 521) @@ -197,19 +197,6 @@ int height); /** -* Fill ProgArgs struct with arguments entered at execution -* -* \param argc argc as entered from main -* -* \param argv argv as entered from main -* -* \param arg_return ProgArgs struct to be filled with the options -* -* \returns 0 on Success 1 on Failure -*/ -boolean ParseArgs(int argc, char **argv, ProgArgs *arg_return); - -/** * Check if needed extensions are present * * \param dpy Connection to the server Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 06:21:43 UTC (rev 520) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 06:47:16 UTC (rev 521) @@ -17,6 +17,7 @@ make_dummy_pointer.c \ opendev.c \ parseargs.c \ + parseargs.h \ poll_events.c \ queryextensions.c \ recordmydesktop.c \ Added: trunk/recordmydesktop/src/parseargs.h =================================================================== --- trunk/recordmydesktop/src/parseargs.h (rev 0) +++ trunk/recordmydesktop/src/parseargs.h 2008-09-13 06:47:16 UTC (rev 521) @@ -0,0 +1,47 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef PARSEARGS_H +#define PARSEARGS_H 1 + +#include "rmdtypes.h" + + +/** +* Fill ProgArgs struct with arguments entered at execution +* +* \param argc argc as entered from main +* +* \param argv argv as entered from main +* +* \param arg_return ProgArgs struct to be filled with the options +* +* \returns 0 on Success 1 on Failure +*/ +boolean ParseArgs(int argc, char **argv, ProgArgs *arg_return); + + +#endif Modified: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 06:21:43 UTC (rev 520) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 06:47:16 UTC (rev 521) @@ -26,6 +26,7 @@ #include "recordmydesktop.h" +#include "parseargs.h" int main(int argc,char **argv){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 08:28:00
|
Revision: 524 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=524&view=rev Author: enselic Date: 2008-09-13 08:27:57 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdtypes.h: No need to include <signal.h> src/load_cache.c src/cache_frame.c src/poll_events.c src/initialize_data.c src/register_callbacks.c: Include <signal.h> Modified Paths: -------------- trunk/recordmydesktop/include/rmdtypes.h trunk/recordmydesktop/src/cache_frame.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/load_cache.c trunk/recordmydesktop/src/poll_events.c trunk/recordmydesktop/src/register_callbacks.c Modified: trunk/recordmydesktop/include/rmdtypes.h =================================================================== --- trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 08:27:57 UTC (rev 524) @@ -38,7 +38,6 @@ #include <unistd.h> #include <fcntl.h> #include <time.h> -#include <signal.h> #include <sys/time.h> #include <sys/types.h> #ifdef HAVE_MACHINE_ENDIAN_H Modified: trunk/recordmydesktop/src/cache_frame.c =================================================================== --- trunk/recordmydesktop/src/cache_frame.c 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/src/cache_frame.c 2008-09-13 08:27:57 UTC (rev 524) @@ -24,9 +24,11 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ -#include <recordmydesktop.h> +#include <signal.h> +#include "recordmydesktop.h" + //minimize hard disk access #define CACHE_OUT_BUFFER_SIZE 4096 //500 mb file size Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 08:27:57 UTC (rev 524) @@ -112,7 +112,6 @@ pdata->running=1; time_cond=&pdata->time_cond; pause_cond=&pdata->pause_cond; - Running=&pdata->running; PauseStateChanged=0; if(!pdata->args.nosound){ Modified: trunk/recordmydesktop/src/load_cache.c =================================================================== --- trunk/recordmydesktop/src/load_cache.c 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/src/load_cache.c 2008-09-13 08:27:57 UTC (rev 524) @@ -24,6 +24,7 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ +#include <signal.h> #include "recordmydesktop.h" Modified: trunk/recordmydesktop/src/poll_events.c =================================================================== --- trunk/recordmydesktop/src/poll_events.c 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/src/poll_events.c 2008-09-13 08:27:57 UTC (rev 524) @@ -24,7 +24,6 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -34,6 +33,7 @@ #include <X11/Xlib.h> #include <X11/Xlibint.h> #include <X11/extensions/Xdamage.h> +#include <signal.h> #include <pthread.h> #include "rmdfunc.h" Modified: trunk/recordmydesktop/src/register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 07:38:24 UTC (rev 523) +++ trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 08:27:57 UTC (rev 524) @@ -24,6 +24,7 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ +#include <signal.h> #include "recordmydesktop.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 08:37:28
|
Revision: 526 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=526&view=rev Author: enselic Date: 2008-09-13 08:37:22 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdfunc.h: Removed RegisterCallbacks(). src/Makefile.am src/register_callbacks.h: New file declaring RegisterCallbacks(). src/rmd_rescue.c src/rmdthreads.c src/register_callbacks.c: Include register_callbacks.h Modified Paths: -------------- trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/register_callbacks.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmdthreads.c Added Paths: ----------- trunk/recordmydesktop/src/register_callbacks.h Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 08:29:41 UTC (rev 525) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 08:37:22 UTC (rev 526) @@ -91,12 +91,6 @@ void ClearList(RectArea **root); /** -* Set up all callbacks and signal handlers -* \param pdata ProgData struct containing all program data -*/ -void RegisterCallbacks(ProgArgs *args); - -/** * Retrieve and apply all changes, if xdamage is used. * * \param dpy Connection to the server Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 08:29:41 UTC (rev 525) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 08:37:22 UTC (rev 526) @@ -24,6 +24,7 @@ rectinsert.c \ rectinsert.h \ register_callbacks.c \ + register_callbacks.h \ rmd_cache.c \ rmd_error.c \ rmd_frame.c \ Modified: trunk/recordmydesktop/src/register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 08:29:41 UTC (rev 525) +++ trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 08:37:22 UTC (rev 526) @@ -27,6 +27,7 @@ #include <signal.h> #include "recordmydesktop.h" +#include "register_callbacks.h" static void SetPaused(int signum) { Added: trunk/recordmydesktop/src/register_callbacks.h =================================================================== --- trunk/recordmydesktop/src/register_callbacks.h (rev 0) +++ trunk/recordmydesktop/src/register_callbacks.h 2008-09-13 08:37:22 UTC (rev 526) @@ -0,0 +1,41 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef REGISTER_CALLBACKS_H +#define REGISTER_CALLBACKS_H 1 + + +#include "rmdtypes.h" + + +/** +* Set up all callbacks and signal handlers +* \param pdata ProgData struct containing all program data +*/ +void RegisterCallbacks(ProgArgs *args); + + +#endif Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 08:29:41 UTC (rev 525) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 08:37:22 UTC (rev 526) @@ -24,9 +24,8 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - - #include "recordmydesktop.h" +#include "register_callbacks.h" int rmdRescue(const char *path){ Modified: trunk/recordmydesktop/src/rmdthreads.c =================================================================== --- trunk/recordmydesktop/src/rmdthreads.c 2008-09-13 08:29:41 UTC (rev 525) +++ trunk/recordmydesktop/src/rmdthreads.c 2008-09-13 08:37:22 UTC (rev 526) @@ -24,7 +24,6 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -36,9 +35,9 @@ #include "rmdfunc.h" #include "rmdtypes.h" +#include "register_callbacks.h" - void rmdThreads(ProgData *pdata){ pthread_t image_capture_t, image_encode_t, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 12:38:01
|
Revision: 529 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=529&view=rev Author: enselic Date: 2008-09-13 12:37:57 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/recordmydesktop.h: Remove the globals Paused, Aborted and PauseStateChanged. include/rmdtypes.h: Add the previous globals as members in ProgData. src/rmd_jack.c src/get_frame.c src/rmd_timer.c src/rmd_rescue.c src/cache_audio.c src/cache_frame.c src/capture_sound.c src/initialize_data.c src/recordmydesktop.c src/register_callbacks.c src/encode_image_buffer.c src/encode_sound_buffer.c: Adapt. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/include/rmdtypes.h trunk/recordmydesktop/src/cache_audio.c trunk/recordmydesktop/src/cache_frame.c trunk/recordmydesktop/src/capture_sound.c trunk/recordmydesktop/src/encode_image_buffer.c trunk/recordmydesktop/src/encode_sound_buffer.c trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/recordmydesktop.c trunk/recordmydesktop/src/register_callbacks.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmd_timer.c Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 12:37:57 UTC (rev 529) @@ -50,7 +50,6 @@ /**Globals*/ //I've read somewhere that I'll go to hell for using globals... -int Paused, Aborted, PauseStateChanged; pthread_cond_t *time_cond,*pause_cond; pthread_mutex_t pause_mutex,time_mutex; unsigned char Yr[256],Yg[256],Yb[256], Modified: trunk/recordmydesktop/include/rmdtypes.h =================================================================== --- trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 12:37:57 UTC (rev 529) @@ -331,7 +331,6 @@ int damage_event, //damage event base code damage_error, //damage error base code shm_opcode, //MIT-Shm opcode - running, //1 while the program is capturing/paused/encoding dummy_p_size, //dummy pointer size,initially 16x16,always square th_encoding_clean, //thread exit inidcator v_encoding_clean, // >> >> @@ -342,6 +341,13 @@ //we have to close and reopen avd, //syncronization among audio and video sound_framesize; //size of each sound frame + + /** Progam state vars */ + int running; //1 while the program is capturing/paused/encoding + int paused; //1 while the program is paused + int aborted; //1 if we should abort + int pause_state_changed;//1 if pause state changed + #ifdef HAVE_LIBASOUND snd_pcm_t *sound_handle; snd_pcm_uframes_t periodsize; Modified: trunk/recordmydesktop/src/cache_audio.c =================================================================== --- trunk/recordmydesktop/src/cache_audio.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/cache_audio.c 2008-09-13 12:37:57 UTC (rev 529) @@ -42,7 +42,7 @@ while((pdata->running)){ SndBuffer *buff=NULL; - if(Paused){ + if (pdata->paused) { pthread_mutex_lock(&pause_mutex); pthread_cond_wait(&pdata->pause_cond,&pause_mutex); pthread_mutex_unlock(&pause_mutex); Modified: trunk/recordmydesktop/src/cache_frame.c =================================================================== --- trunk/recordmydesktop/src/cache_frame.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/cache_frame.c 2008-09-13 12:37:57 UTC (rev 529) @@ -115,7 +115,7 @@ pthread_mutex_unlock(&pdata->img_buff_ready_mutex); pdata->th_enc_thread_waiting=0; - if(Paused){ + if (pdata->paused) { pthread_mutex_lock(&pause_mutex); pthread_cond_wait(&pdata->pause_cond,&pause_mutex); pthread_mutex_unlock(&pause_mutex); Modified: trunk/recordmydesktop/src/capture_sound.c =================================================================== --- trunk/recordmydesktop/src/capture_sound.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/capture_sound.c 2008-09-13 12:37:57 UTC (rev 529) @@ -39,7 +39,7 @@ while(pdata->running){ int sret=0; SndBuffer *newbuf,*tmp; - if(Paused){ + if (pdata->paused) { #ifdef HAVE_LIBASOUND if(!pdata->hard_pause){ snd_pcm_pause(pdata->sound_handle,1); Modified: trunk/recordmydesktop/src/encode_image_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 12:37:57 UTC (rev 529) @@ -38,7 +38,7 @@ pthread_mutex_unlock(&pdata->img_buff_ready_mutex); pdata->th_enc_thread_waiting=0; encoder_busy=1; - if(Paused){ + if (pdata->paused) { pthread_mutex_lock(&pause_mutex); pthread_cond_wait(&pdata->pause_cond,&pause_mutex); pthread_mutex_unlock(&pause_mutex); Modified: trunk/recordmydesktop/src/encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 12:37:57 UTC (rev 529) @@ -42,7 +42,7 @@ int count=0,i,j; SndBuffer *buff=NULL; - if(Paused){ + if (pdata->paused) { pthread_mutex_lock(&pause_mutex); pthread_cond_wait(&pdata->pause_cond,&pause_mutex); pthread_mutex_unlock(&pause_mutex); Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-13 12:37:57 UTC (rev 529) @@ -393,7 +393,7 @@ pthread_mutex_lock(&time_mutex); pthread_cond_wait(&pdata->time_cond,&time_mutex); pthread_mutex_unlock(&time_mutex); - if(Paused){ + if (pdata->paused) { //this is necessary since event loop processes //the shortcuts which will unpause the program EventLoop(pdata); Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 12:37:57 UTC (rev 529) @@ -107,12 +107,14 @@ pthread_cond_init(&pdata->theora_lib_clean,NULL); pthread_cond_init(&pdata->vorbis_lib_clean,NULL); pdata->th_encoding_clean=pdata->v_encoding_clean=1; - Paused=Aborted=pdata->avd=0; + pdata->avd=0; pdata->sound_buffer=NULL; pdata->running=1; + pdata->paused=0; + pdata->aborted=0; + pdata->pause_state_changed=0; time_cond=&pdata->time_cond; pause_cond=&pdata->pause_cond; - PauseStateChanged=0; if(!pdata->args.nosound){ if(!pdata->args.use_jack){ Modified: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 12:37:57 UTC (rev 529) @@ -151,7 +151,7 @@ //encode and then cleanup cache if(!pdata.args.encOnTheFly && !pdata.args.no_encode){ - if(!Aborted){ + if (!pdata.aborted) { EncodeCache(&pdata); } fprintf(stderr,"Cleanning up cache...\n"); @@ -162,7 +162,7 @@ } - if(Aborted && pdata.args.encOnTheFly){ + if (pdata.aborted && pdata.args.encOnTheFly) { if(remove(pdata.args.filename)){ perror("Error while removing file:\n"); return 1; Modified: trunk/recordmydesktop/src/register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 12:37:57 UTC (rev 529) @@ -32,36 +32,40 @@ // There seem to be no way of passing user data to the signal handler, // so hack around not being able to pass ProgData to them -static int *pdata_running = NULL; +static int *pdata_running = NULL; +static int *pdata_paused = NULL; +static int *pdata_aborted = NULL; +static int *pdata_pause_state_changed = NULL; static void SetPaused(int signum) { - PauseStateChanged = 1; + *pdata_pause_state_changed = 1; } static void SetRunning(int signum) { - - if (!Paused){ - if (pdata_running != NULL) { - *pdata_running = 0; - } + if (!*pdata_paused) { + *pdata_running = 0; + if (signum == SIGABRT) { - Aborted = 1; + *pdata_aborted = 1; } } } -void RegisterCallbacks(ProgData *pata) { +void RegisterCallbacks(ProgData *pdata) { struct sigaction pause_act; struct sigaction end_act; - // Is there some way to pass pata to the signal handlers? - pdata_running = &pata->running; - + // Is there some way to pass pdata to the signal handlers? + pdata_running = &pdata->running; + pdata_paused = &pdata->paused; + pdata_aborted = &pdata->aborted; + pdata_pause_state_changed = &pdata->pause_state_changed; + // Setup pause_act sigfillset(&pause_act.sa_mask); pause_act.sa_flags = SA_RESTART; Modified: trunk/recordmydesktop/src/rmd_jack.c =================================================================== --- trunk/recordmydesktop/src/rmd_jack.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/rmd_jack.c 2008-09-13 12:37:57 UTC (rev 529) @@ -91,7 +91,7 @@ int i=0; JackData *jdata=(JackData *)jdata_t; - if (!jdata->pdata->running || Paused || !jdata->capture_started) { + if (!jdata->pdata->running || jdata->pdata->paused || !jdata->capture_started) { return 0; } Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 12:37:57 UTC (rev 529) @@ -108,9 +108,10 @@ pthread_cond_init(&pdata.theora_lib_clean,NULL); pthread_cond_init(&pdata.vorbis_lib_clean,NULL); pdata.th_encoding_clean=pdata.v_encoding_clean=1; - Aborted=pdata.avd=0; + pdata.avd=0; pdata.sound_buffer=NULL; pdata.running=1; + pdata.aborted=0; RegisterCallbacks(&pdata); fprintf(stderr,"Restoring %s!!!\n",path); Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 11:39:35 UTC (rev 528) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 12:37:57 UTC (rev 529) @@ -43,15 +43,15 @@ while(pdata->timer_alive){ - if(PauseStateChanged){ - PauseStateChanged=0; + if (pdata->pause_state_changed) { + pdata->pause_state_changed = 0; - if(!Paused){ - Paused=1; + if (!pdata->paused) { + pdata->paused = 1; fprintf(stderr,"STATE:PAUSED\n");fflush(stderr); } else{ - Paused=0; + pdata->paused = 0; fprintf(stderr,"STATE:RECORDING\n");fflush(stderr); pthread_mutex_lock(&pause_mutex); pthread_cond_broadcast(pause_cond); @@ -60,7 +60,7 @@ } - if(!Paused){ + if (!pdata->paused) { frames_total++; if(capture_busy){ frames_lost++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 12:52:32
|
Revision: 530 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=530&view=rev Author: enselic Date: 2008-09-13 12:52:30 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdtypes.h: Make ProgData::running, paused, aborted and pause_state_changed booleans. src/rmd_jack.c src/rmd_timer.c src/rmd_rescue.c src/encode_cache.c src/capture_sound.c src/initialize_data.c src/register_callbacks.c: Adapt. Modified Paths: -------------- trunk/recordmydesktop/include/rmdtypes.h trunk/recordmydesktop/src/capture_sound.c trunk/recordmydesktop/src/encode_cache.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/register_callbacks.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmd_timer.c Modified: trunk/recordmydesktop/include/rmdtypes.h =================================================================== --- trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 12:52:30 UTC (rev 530) @@ -343,10 +343,10 @@ sound_framesize; //size of each sound frame /** Progam state vars */ - int running; //1 while the program is capturing/paused/encoding - int paused; //1 while the program is paused - int aborted; //1 if we should abort - int pause_state_changed;//1 if pause state changed + boolean running; //1 while the program is capturing/paused/encoding + boolean paused; //1 while the program is paused + boolean aborted; //1 if we should abort + boolean pause_state_changed; //1 if pause state changed #ifdef HAVE_LIBASOUND snd_pcm_t *sound_handle; Modified: trunk/recordmydesktop/src/capture_sound.c =================================================================== --- trunk/recordmydesktop/src/capture_sound.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/capture_sound.c 2008-09-13 12:52:30 UTC (rev 530) @@ -65,7 +65,7 @@ ); if(pdata->sound_handle==NULL){ fprintf(stderr,"Couldn't reopen sound device.Exiting\n"); - pdata->running=0; + pdata->running = FALSE; errno=3; pthread_exit(&errno); } @@ -81,7 +81,7 @@ pdata->args.frequency); if(pdata->sound_handle<0){ fprintf(stderr,"Couldn't reopen sound device.Exiting\n"); - pdata->running=0; + pdata->running = FALSE; errno=3; pthread_exit(&errno); } Modified: trunk/recordmydesktop/src/encode_cache.c =================================================================== --- trunk/recordmydesktop/src/encode_cache.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/encode_cache.c 2008-09-13 12:52:30 UTC (rev 530) @@ -37,7 +37,7 @@ " (resuming will not be possible, but\n" "any portion of the video, which is already encoded won't be deleted).\n" "Please wait...\n"); - pdata->running=1; + pdata->running = TRUE; InitEncoder(pdata,pdata->enc_data,1); //load encoding and flushing threads if(!pdata->args.nosound){ Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 12:52:30 UTC (rev 530) @@ -109,10 +109,10 @@ pdata->th_encoding_clean=pdata->v_encoding_clean=1; pdata->avd=0; pdata->sound_buffer=NULL; - pdata->running=1; - pdata->paused=0; - pdata->aborted=0; - pdata->pause_state_changed=0; + pdata->running = TRUE; + pdata->paused = FALSE; + pdata->aborted = FALSE; + pdata->pause_state_changed = FALSE; time_cond=&pdata->time_cond; pause_cond=&pdata->pause_cond; Modified: trunk/recordmydesktop/src/register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/register_callbacks.c 2008-09-13 12:52:30 UTC (rev 530) @@ -40,17 +40,17 @@ static void SetPaused(int signum) { - *pdata_pause_state_changed = 1; + *pdata_pause_state_changed = TRUE; } static void SetRunning(int signum) { if (!*pdata_paused) { - *pdata_running = 0; + *pdata_running = FALSE; if (signum == SIGABRT) { - *pdata_aborted = 1; + *pdata_aborted = TRUE; } } } Modified: trunk/recordmydesktop/src/rmd_jack.c =================================================================== --- trunk/recordmydesktop/src/rmd_jack.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/rmd_jack.c 2008-09-13 12:52:30 UTC (rev 530) @@ -210,7 +210,7 @@ static void JackShutdown(void *jdata_t) { JackData *jdata = (JackData *)jdata_t; - jdata->pdata->running = 0; + jdata->pdata->running = FALSE; fprintf (stderr, "JACK shutdown\n"); } Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 12:52:30 UTC (rev 530) @@ -110,8 +110,8 @@ pdata.th_encoding_clean=pdata.v_encoding_clean=1; pdata.avd=0; pdata.sound_buffer=NULL; - pdata.running=1; - pdata.aborted=0; + pdata.running = TRUE; + pdata.aborted = FALSE; RegisterCallbacks(&pdata); fprintf(stderr,"Restoring %s!!!\n",path); Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 12:37:57 UTC (rev 529) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 12:52:30 UTC (rev 530) @@ -44,14 +44,14 @@ while(pdata->timer_alive){ if (pdata->pause_state_changed) { - pdata->pause_state_changed = 0; + pdata->pause_state_changed = FALSE; if (!pdata->paused) { - pdata->paused = 1; + pdata->paused = TRUE; fprintf(stderr,"STATE:PAUSED\n");fflush(stderr); } else{ - pdata->paused = 0; + pdata->paused = FALSE; fprintf(stderr,"STATE:RECORDING\n");fflush(stderr); pthread_mutex_lock(&pause_mutex); pthread_cond_broadcast(pause_cond); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 13:13:50
|
Revision: 531 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=531&view=rev Author: enselic Date: 2008-09-13 13:13:46 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/recordmydesktop.h: Remove the globals time_cond and pause_cond. They are completely unnecessary. src/rmd_timer.c src/initialize_data.c: Adapt. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/rmd_timer.c Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 12:52:30 UTC (rev 530) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 13:13:46 UTC (rev 531) @@ -50,7 +50,6 @@ /**Globals*/ //I've read somewhere that I'll go to hell for using globals... -pthread_cond_t *time_cond,*pause_cond; pthread_mutex_t pause_mutex,time_mutex; unsigned char Yr[256],Yg[256],Yb[256], Ur[256],Ug[256],UbVr[256], Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 12:52:30 UTC (rev 530) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 13:13:46 UTC (rev 531) @@ -113,8 +113,6 @@ pdata->paused = FALSE; pdata->aborted = FALSE; pdata->pause_state_changed = FALSE; - time_cond=&pdata->time_cond; - pause_cond=&pdata->pause_cond; if(!pdata->args.nosound){ if(!pdata->args.use_jack){ Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 12:52:30 UTC (rev 530) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 13:13:46 UTC (rev 531) @@ -54,7 +54,7 @@ pdata->paused = FALSE; fprintf(stderr,"STATE:RECORDING\n");fflush(stderr); pthread_mutex_lock(&pause_mutex); - pthread_cond_broadcast(pause_cond); + pthread_cond_broadcast(&pdata->pause_cond); pthread_mutex_unlock(&pause_mutex); } @@ -68,7 +68,7 @@ } pthread_mutex_lock(&time_mutex); - pthread_cond_broadcast(time_cond); + pthread_cond_broadcast(&pdata->time_cond); pthread_mutex_unlock(&time_mutex); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 13:28:50
|
Revision: 532 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=532&view=rev Author: enselic Date: 2008-09-13 13:28:47 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdtypes.h include/recordmydesktop.h: Continue the globals killing spree by putting pause_mutex and time_mutex in ProgData instead of having them as globals. src/get_frame.c src/rmd_timer.c src/cache_audio.c src/cache_frame.c src/capture_sound.c src/initialize_data.c src/encode_image_buffer.c src/encode_sound_buffer.c: Adapt. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/include/rmdtypes.h trunk/recordmydesktop/src/cache_audio.c trunk/recordmydesktop/src/cache_frame.c trunk/recordmydesktop/src/capture_sound.c trunk/recordmydesktop/src/encode_image_buffer.c trunk/recordmydesktop/src/encode_sound_buffer.c trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/rmd_timer.c Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 13:28:47 UTC (rev 532) @@ -50,7 +50,6 @@ /**Globals*/ //I've read somewhere that I'll go to hell for using globals... -pthread_mutex_t pause_mutex,time_mutex; unsigned char Yr[256],Yg[256],Yb[256], Ur[256],Ug[256],UbVr[256], Vg[256],Vb[256]; Modified: trunk/recordmydesktop/include/rmdtypes.h =================================================================== --- trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/include/rmdtypes.h 2008-09-13 13:28:47 UTC (rev 532) @@ -348,6 +348,9 @@ boolean aborted; //1 if we should abort boolean pause_state_changed; //1 if pause state changed + pthread_mutex_t pause_mutex; + pthread_mutex_t time_mutex; + #ifdef HAVE_LIBASOUND snd_pcm_t *sound_handle; snd_pcm_uframes_t periodsize; Modified: trunk/recordmydesktop/src/cache_audio.c =================================================================== --- trunk/recordmydesktop/src/cache_audio.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/cache_audio.c 2008-09-13 13:28:47 UTC (rev 532) @@ -43,9 +43,9 @@ SndBuffer *buff=NULL; if (pdata->paused) { - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); } if(!pdata->args.use_jack){ if(pdata->sound_buffer==NULL){ Modified: trunk/recordmydesktop/src/cache_frame.c =================================================================== --- trunk/recordmydesktop/src/cache_frame.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/cache_frame.c 2008-09-13 13:28:47 UTC (rev 532) @@ -116,9 +116,9 @@ pdata->th_enc_thread_waiting=0; if (pdata->paused) { - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); } pthread_mutex_lock(&pdata->yuv_mutex); Modified: trunk/recordmydesktop/src/capture_sound.c =================================================================== --- trunk/recordmydesktop/src/capture_sound.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/capture_sound.c 2008-09-13 13:28:47 UTC (rev 532) @@ -43,16 +43,16 @@ #ifdef HAVE_LIBASOUND if(!pdata->hard_pause){ snd_pcm_pause(pdata->sound_handle,1); - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); snd_pcm_pause(pdata->sound_handle,0); } else{//device doesn't support pause(is this the norm?mine doesn't) snd_pcm_close(pdata->sound_handle); - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); pdata->sound_handle= OpenDev(pdata->args.device, &pdata->args.channels, @@ -72,9 +72,9 @@ } #else close(pdata->sound_handle); - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); pdata->sound_handle= OpenDev(pdata->args.device, pdata->args.channels, Modified: trunk/recordmydesktop/src/encode_image_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 13:28:47 UTC (rev 532) @@ -39,9 +39,9 @@ pdata->th_enc_thread_waiting=0; encoder_busy=1; if (pdata->paused) { - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); } pthread_mutex_lock(&pdata->yuv_mutex); Modified: trunk/recordmydesktop/src/encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 13:28:47 UTC (rev 532) @@ -43,9 +43,9 @@ SndBuffer *buff=NULL; if (pdata->paused) { - pthread_mutex_lock(&pause_mutex); - pthread_cond_wait(&pdata->pause_cond,&pause_mutex); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); + pthread_cond_wait(&pdata->pause_cond, &pdata->pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); } if(!pdata->args.use_jack){ if(pdata->sound_buffer==NULL){ Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-13 13:28:47 UTC (rev 532) @@ -390,9 +390,9 @@ //also before actually pausing we must make sure the streams //are synced. sound stops so this should only happen quickly. if(pdata->avd>0 || pdata->args.nosound){ - pthread_mutex_lock(&time_mutex); - pthread_cond_wait(&pdata->time_cond,&time_mutex); - pthread_mutex_unlock(&time_mutex); + pthread_mutex_lock(&pdata->time_mutex); + pthread_cond_wait(&pdata->time_cond, &pdata->time_mutex); + pthread_mutex_unlock(&pdata->time_mutex); if (pdata->paused) { //this is necessary since event loop processes //the shortcuts which will unpause the program Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 13:28:47 UTC (rev 532) @@ -97,8 +97,8 @@ pthread_mutex_init(&pdata->vorbis_lib_mutex,NULL); pthread_mutex_init(&pdata->libogg_mutex,NULL); pthread_mutex_init(&pdata->yuv_mutex,NULL); - pthread_mutex_init(&pause_mutex,NULL); - pthread_mutex_init(&time_mutex,NULL); + pthread_mutex_init(&pdata->pause_mutex, NULL); + pthread_mutex_init(&pdata->time_mutex, NULL); pthread_cond_init(&pdata->time_cond,NULL); pthread_cond_init(&pdata->pause_cond,NULL); pthread_cond_init(&pdata->image_buffer_ready,NULL); Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 13:13:46 UTC (rev 531) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-09-13 13:28:47 UTC (rev 532) @@ -53,9 +53,9 @@ else{ pdata->paused = FALSE; fprintf(stderr,"STATE:RECORDING\n");fflush(stderr); - pthread_mutex_lock(&pause_mutex); + pthread_mutex_lock(&pdata->pause_mutex); pthread_cond_broadcast(&pdata->pause_cond); - pthread_mutex_unlock(&pause_mutex); + pthread_mutex_unlock(&pdata->pause_mutex); } } @@ -67,9 +67,9 @@ } } - pthread_mutex_lock(&time_mutex); + pthread_mutex_lock(&pdata->time_mutex); pthread_cond_broadcast(&pdata->time_cond); - pthread_mutex_unlock(&time_mutex); + pthread_mutex_unlock(&pdata->time_mutex); if(secs_tw) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 14:23:15
|
Revision: 533 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=533&view=rev Author: enselic Date: 2008-09-13 14:23:12 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/recordmydesktop.h: Get rid of YUV data variables (which were insanely *defined* in this header (like the other globals)). include/rmdmacro.h: Get rid of YUV utility macros. src/initialize_data.c: Get rid of MakeMatrices() and include the new yuv_utils.h. src/yuv_utils.[ch]: New files to host the YUV data variables and the MakeMatrices() function. The globals are now properly defined in the .c and exposed in the .h which also contains the YUV utility macros. src/get_frame.c src/update_image.c: Include the new yuv_utils.h src/Makefile.am: Added yuv_utils.[ch]. Modified Paths: -------------- trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/include/rmdmacro.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/update_image.c Added Paths: ----------- trunk/recordmydesktop/src/yuv_utils.c trunk/recordmydesktop/src/yuv_utils.h Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 14:23:12 UTC (rev 533) @@ -50,9 +50,6 @@ /**Globals*/ //I've read somewhere that I'll go to hell for using globals... -unsigned char Yr[256],Yg[256],Yb[256], - Ur[256],Ug[256],UbVr[256], - Vg[256],Vb[256]; //the following values are of no effect //but they might be usefull later for profiling unsigned int frames_total, //frames calculated by total time expirations Modified: trunk/recordmydesktop/include/rmdmacro.h =================================================================== --- trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 14:23:12 UTC (rev 533) @@ -189,319 +189,7 @@ (t3&__B16_MASK)+(t4&__B16_MASK))/4)&__B16_MASK);\ } -#define POINT_IN_BLOCK(xv,yv,widthv,blocksize) ((yv/blocksize)*\ - (widthv/blocksize)+\ - (xv/blocksize)) -#define UPDATE_Y_PLANE(data,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ - *_yr=Yr,*_yg=Yg,*_yb=Yb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data;\ - for(k=0;k<height_tm;k++){\ - for(i=0;i<width_tm;i++){\ - t_val=*datapi;\ - *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ - _yg[__GVALUE_##__bit_depth__(t_val)] +\ - _yb[__BVALUE_##__bit_depth__(t_val)] ;\ - datapi++;\ - yuv_y++;\ - }\ - yuv_y+=yuv->y_width-width_tm;\ - }\ -} - -#define UPDATE_Y_PLANE_DBUF(data,\ - data_back,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ - *_yr=Yr,*_yg=Yg,*_yb=Yb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ - *datapi_back=(u_int##__bit_depth__##_t *)data_back;\ - for(k=0;k<height_tm;k++){\ - for(i=0;i<width_tm;i++){\ - if(*datapi!=*datapi_back){\ - t_val=*datapi;\ - *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ - _yg[__GVALUE_##__bit_depth__(t_val)] +\ - _yb[__BVALUE_##__bit_depth__(t_val)] ;\ - yblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi++;\ - datapi_back++;\ - yuv_y++;\ - }\ - yuv_y+=yuv->y_width-width_tm;\ - }\ -} - -#define UPDATE_A_UV_PIXEL(yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - if(__sampling_type==__PXL_AVERAGE){\ - CALC_TVAL_AVG_##__bit_depth__(t_val,datapi,datapi_next)\ - }\ - else\ - t_val=*datapi;\ - *yuv_u=\ - _ur[__RVALUE_##__bit_depth__(t_val)] +\ - _ug[__GVALUE_##__bit_depth__(t_val)] +\ - _ubvr[__BVALUE_##__bit_depth__(t_val)];\ - *yuv_v=\ - _ubvr[__RVALUE_##__bit_depth__(t_val)] +\ - _vg[__GVALUE_##__bit_depth__(t_val)] +\ - _vb[__BVALUE_##__bit_depth__(t_val)];\ - - -#define UPDATE_UV_PLANES(data,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __sampling_type,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ - *_vg=Vg,*_vb=Vb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ - *datapi_next=NULL;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next=datapi+width_tm;\ - }\ - for(k=0;k<height_tm;k+=2){\ - for(i=0;i<width_tm;i+=2){\ - UPDATE_A_UV_PIXEL( yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - datapi+=2;\ - if(__sampling_type==__PXL_AVERAGE)\ - datapi_next+=2;\ - yuv_u++;\ - yuv_v++;\ - }\ - yuv_u+=(yuv->y_width-width_tm)/2;\ - yuv_v+=(yuv->y_width-width_tm)/2;\ - datapi+=width_tm;\ - if(__sampling_type==__PXL_AVERAGE)\ - datapi_next+=width_tm;\ - }\ -} - -#define UPDATE_UV_PLANES_DBUF( data,\ - data_back,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __sampling_type,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ - *_vg=Vg,*_vb=Vb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ - *datapi_next=NULL,\ - *datapi_back=(u_int##__bit_depth__##_t *)data_back,\ - *datapi_back_next=NULL;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next=datapi+width_tm;\ - datapi_back_next=datapi_back+width_tm;\ - for(k=0;k<height_tm;k+=2){\ - for(i=0;i<width_tm;i+=2){\ - if(( (*datapi!=*datapi_back) ||\ - (*(datapi+1)!=*(datapi_back+1)) ||\ - (*datapi_next!=*datapi_back_next) ||\ - (*(datapi_next+1)!=*(datapi_back_next+1)))){\ - UPDATE_A_UV_PIXEL( yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi+=2;\ - datapi_back+=2;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=2;\ - datapi_back_next+=2;\ - }\ - yuv_u++;\ - yuv_v++;\ - }\ - yuv_u+=(yuv->y_width-width_tm)/2;\ - yuv_v+=(yuv->y_width-width_tm)/2;\ - datapi+=width_tm;\ - datapi_back+=width_tm;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=width_tm;\ - datapi_back_next+=width_tm;\ - }\ - }\ - }\ - else{\ - for(k=0;k<height_tm;k+=2){\ - for(i=0;i<width_tm;i+=2){\ - if ((*datapi!=*datapi_back)){\ - UPDATE_A_UV_PIXEL( yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi+=2;\ - datapi_back+=2;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=2;\ - datapi_back_next+=2;\ - }\ - yuv_u++;\ - yuv_v++;\ - }\ - yuv_u+=(yuv->y_width-width_tm)/2;\ - yuv_v+=(yuv->y_width-width_tm)/2;\ - datapi+=width_tm;\ - datapi_back+=width_tm;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=width_tm;\ - datapi_back_next+=width_tm;\ - }\ - }\ - }\ -} - -#define UPDATE_YUV_BUFFER(yuv,\ - data,\ - data_back,\ - x_tm,\ - y_tm,\ - width_tm,\ - height_tm,\ - __sampling_type,\ - __color_depth){\ - if(data_back==NULL){\ - if((__color_depth==24)||(__color_depth==32)){\ - UPDATE_Y_PLANE(data,x_tm,y_tm,height_tm,width_tm,yuv,32)\ - UPDATE_UV_PLANES(data,x_tm,y_tm,height_tm,width_tm,\ - yuv,__sampling_type,32)\ - }\ - else if(__color_depth==16){\ - UPDATE_Y_PLANE(data,x_tm,y_tm,height_tm,width_tm,yuv,16)\ - UPDATE_UV_PLANES(data,x_tm,y_tm,height_tm,width_tm,\ - yuv,__sampling_type,16)\ - }\ - }\ - else{\ - if((__color_depth==24)||(__color_depth==32)){\ - UPDATE_Y_PLANE_DBUF(data,data_back,x_tm,y_tm,\ - height_tm,width_tm,yuv,32)\ - UPDATE_UV_PLANES_DBUF(data,data_back,x_tm,y_tm,height_tm,width_tm,\ - yuv,__sampling_type,32)\ - }\ - else if(__color_depth==16){\ - UPDATE_Y_PLANE_DBUF(data,data_back,x_tm,y_tm,\ - height_tm,width_tm,yuv,16)\ - UPDATE_UV_PLANES_DBUF(data,data_back,x_tm,y_tm,height_tm,width_tm,\ - yuv,__sampling_type,16)\ - }\ - }\ -} - - - -#define DUMMY_POINTER_TO_YUV(yuv,\ - data_tm,\ - x_tm,\ - y_tm,\ - width_tm,\ - height_tm,\ - x_offset,\ - y_offset,\ - no_pixel){\ - int i,k,j=0;\ - int x_2=x_tm/2,y_2=y_tm/2,y_width_2=(yuv)->y_width/2;\ - for(k=y_offset;k<y_offset+height_tm;k++){\ - for(i=x_offset;i<x_offset+width_tm;i++){\ - j=k*16+i;\ - if(data_tm[(j*4)]!=(no_pixel)){\ - (yuv)->y[x_tm+(i-x_offset)+((k-y_offset)+y_tm)*(yuv)->y_width]=\ - Yr[data_tm[(j*4)+__RBYTE]] +\ - Yg[data_tm[(j*4)+__GBYTE]] +\ - Yb[data_tm[(j*4)+__BBYTE]];\ - if((k%2)&&(i%2)){\ - yuv->u[x_2+(i-x_offset)/2+((k-y_offset)/2+y_2)*y_width_2]=\ - Ur[data_tm[(k*width_tm+i)*4+__RBYTE]] +\ - Ug[data_tm[(k*width_tm+i)*4+__GBYTE]] +\ - UbVr[data_tm[(k*width_tm+i)*4+__BBYTE]];\ - yuv->v[x_2+(i-x_offset)/2+((k-y_offset)/2+y_2)*y_width_2]=\ - UbVr[data_tm[(k*width_tm+i)*4+__RBYTE]] +\ - Vg[data_tm[(k*width_tm+i)*4+__GBYTE]] +\ - Vb[data_tm[(k*width_tm+i)*4+__BBYTE]] ;\ - }\ - }\ - }\ - }\ -} - -#define MARK_BACK_BUFFER_C( data,\ - x_tm,\ - y_tm,\ - width_tm,\ - height_tm,\ - buffer_width,\ - __bit_depth__){\ - int k,i;\ - register u_int##__bit_depth__##_t\ - *datapi=\ - ((u_int##__bit_depth__##_t *)data)+y_tm*buffer_width+x_tm;\ - for(k=0;k<height_tm;k++){\ - for(i=0;i<width_tm;i++){\ - *datapi+=1;\ - datapi++;\ - }\ - datapi+=buffer_width-width_tm;\ - }\ -} - #define I16TOA(number,buffer){\ int t_num=(number),__k=0,__i=0;\ char *t_buf=malloc(8);\ Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 14:23:12 UTC (rev 533) @@ -37,6 +37,8 @@ skeleton.c \ specsfile.c \ update_image.c \ + yuv_utils.c \ + yuv_utils.h \ wm_check.c Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-13 14:23:12 UTC (rev 533) @@ -27,6 +27,7 @@ #include "recordmydesktop.h" #include "rectinsert.h" +#include "yuv_utils.h" #define CLIP_DUMMY_POINTER_AREA(dummy_p_area,brwin,wgeom){\ Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 14:23:12 UTC (rev 533) @@ -24,8 +24,8 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #include "recordmydesktop.h" +#include "yuv_utils.h" #ifdef HAVE_LIBASOUND @@ -44,32 +44,6 @@ (int)buffsize_ret,(int)*buffsize); } -/** -* Fill Yr,Yg,Yb,Ur,Ug.Ub,Vr,Vg,Vb arrays(globals) with values. -*/ -static void MakeMatrices () { - int i; - - for (i = 0; i < 256; i++) - Yr[i] = (2104.0 * i) / 8192.0 + 8.0; - for (i = 0; i < 256; i++) - Yg[i] = (4130.0 * i) / 8192.0 + 8.0; - for (i = 0; i < 256; i++) - Yb[i] = (802.0 * i) / 8192.0; - - for (i = 0; i < 256; i++) - Ur[i] = 37.8 - (1204.0 * i) / 8192.0 + 8.0; - for (i = 0; i < 256; i++) - Ug[i] = 74.2 - (2384.0 * i) / 8192.0 + 8.0; - for (i = 0; i < 256; i++) - UbVr[i] = (3598.0 * i) / 8192.0 ; - - for (i = 0; i < 256; i++) - Vg[i] = 93.8 - (3013.0 * i) / 8192.0 + 8.0; - for (i = 0; i < 256; i++) - Vb[i] = 18.2 - (585.0 * i) / 8192.0 + 8.0; -} - int InitializeData(ProgData *pdata, EncData *enc_data, CacheData *cache_data){ Modified: trunk/recordmydesktop/src/update_image.c =================================================================== --- trunk/recordmydesktop/src/update_image.c 2008-09-13 13:28:47 UTC (rev 532) +++ trunk/recordmydesktop/src/update_image.c 2008-09-13 14:23:12 UTC (rev 533) @@ -26,6 +26,7 @@ #include "recordmydesktop.h" +#include "yuv_utils.h" void UpdateImage(Display * dpy, Added: trunk/recordmydesktop/src/yuv_utils.c =================================================================== --- trunk/recordmydesktop/src/yuv_utils.c (rev 0) +++ trunk/recordmydesktop/src/yuv_utils.c 2008-09-13 14:23:12 UTC (rev 533) @@ -0,0 +1,55 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#include "yuv_utils.h" + +// Keep these global (for performance reasons I assume). +unsigned char Yr[256], Yg[256], Yb[256], + Ur[256], Ug[256], UbVr[256], + Vg[256], Vb[256]; + +void MakeMatrices (void) { + int i; + + for (i = 0; i < 256; i++) + Yr[i] = (2104.0 * i) / 8192.0 + 8.0; + for (i = 0; i < 256; i++) + Yg[i] = (4130.0 * i) / 8192.0 + 8.0; + for (i = 0; i < 256; i++) + Yb[i] = (802.0 * i) / 8192.0; + + for (i = 0; i < 256; i++) + Ur[i] = 37.8 - (1204.0 * i) / 8192.0 + 8.0; + for (i = 0; i < 256; i++) + Ug[i] = 74.2 - (2384.0 * i) / 8192.0 + 8.0; + for (i = 0; i < 256; i++) + UbVr[i] = (3598.0 * i) / 8192.0 ; + + for (i = 0; i < 256; i++) + Vg[i] = 93.8 - (3013.0 * i) / 8192.0 + 8.0; + for (i = 0; i < 256; i++) + Vb[i] = 18.2 - (585.0 * i) / 8192.0 + 8.0; +} Added: trunk/recordmydesktop/src/yuv_utils.h =================================================================== --- trunk/recordmydesktop/src/yuv_utils.h (rev 0) +++ trunk/recordmydesktop/src/yuv_utils.h 2008-09-13 14:23:12 UTC (rev 533) @@ -0,0 +1,356 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef YUV_UTILS_H +#define YUV_UTILS_H 1 + + +// The macros work directly on this data (for performance reasons I +// suppose) so we keep this global +extern unsigned char Yr[256], Yg[256], Yb[256], + Ur[256], Ug[256], UbVr[256], + Vg[256], Vb[256]; + + +#define POINT_IN_BLOCK(xv,yv,widthv,blocksize) ((yv/blocksize)*\ + (widthv/blocksize)+\ + (xv/blocksize)) + +#define UPDATE_Y_PLANE(data,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ + *_yr=Yr,*_yg=Yg,*_yb=Yb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data;\ + for(k=0;k<height_tm;k++){\ + for(i=0;i<width_tm;i++){\ + t_val=*datapi;\ + *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ + _yg[__GVALUE_##__bit_depth__(t_val)] +\ + _yb[__BVALUE_##__bit_depth__(t_val)] ;\ + datapi++;\ + yuv_y++;\ + }\ + yuv_y+=yuv->y_width-width_tm;\ + }\ +} + +#define UPDATE_Y_PLANE_DBUF(data,\ + data_back,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ + *_yr=Yr,*_yg=Yg,*_yb=Yb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ + *datapi_back=(u_int##__bit_depth__##_t *)data_back;\ + for(k=0;k<height_tm;k++){\ + for(i=0;i<width_tm;i++){\ + if(*datapi!=*datapi_back){\ + t_val=*datapi;\ + *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ + _yg[__GVALUE_##__bit_depth__(t_val)] +\ + _yb[__BVALUE_##__bit_depth__(t_val)] ;\ + yblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi++;\ + datapi_back++;\ + yuv_y++;\ + }\ + yuv_y+=yuv->y_width-width_tm;\ + }\ +} + +#define UPDATE_A_UV_PIXEL(yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + if(__sampling_type==__PXL_AVERAGE){\ + CALC_TVAL_AVG_##__bit_depth__(t_val,datapi,datapi_next)\ + }\ + else\ + t_val=*datapi;\ + *yuv_u=\ + _ur[__RVALUE_##__bit_depth__(t_val)] +\ + _ug[__GVALUE_##__bit_depth__(t_val)] +\ + _ubvr[__BVALUE_##__bit_depth__(t_val)];\ + *yuv_v=\ + _ubvr[__RVALUE_##__bit_depth__(t_val)] +\ + _vg[__GVALUE_##__bit_depth__(t_val)] +\ + _vb[__BVALUE_##__bit_depth__(t_val)];\ + + +#define UPDATE_UV_PLANES(data,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __sampling_type,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ + *_vg=Vg,*_vb=Vb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ + *datapi_next=NULL;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next=datapi+width_tm;\ + }\ + for(k=0;k<height_tm;k+=2){\ + for(i=0;i<width_tm;i+=2){\ + UPDATE_A_UV_PIXEL( yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + datapi+=2;\ + if(__sampling_type==__PXL_AVERAGE)\ + datapi_next+=2;\ + yuv_u++;\ + yuv_v++;\ + }\ + yuv_u+=(yuv->y_width-width_tm)/2;\ + yuv_v+=(yuv->y_width-width_tm)/2;\ + datapi+=width_tm;\ + if(__sampling_type==__PXL_AVERAGE)\ + datapi_next+=width_tm;\ + }\ +} + +#define UPDATE_UV_PLANES_DBUF( data,\ + data_back,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __sampling_type,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ + *_vg=Vg,*_vb=Vb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ + *datapi_next=NULL,\ + *datapi_back=(u_int##__bit_depth__##_t *)data_back,\ + *datapi_back_next=NULL;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next=datapi+width_tm;\ + datapi_back_next=datapi_back+width_tm;\ + for(k=0;k<height_tm;k+=2){\ + for(i=0;i<width_tm;i+=2){\ + if(( (*datapi!=*datapi_back) ||\ + (*(datapi+1)!=*(datapi_back+1)) ||\ + (*datapi_next!=*datapi_back_next) ||\ + (*(datapi_next+1)!=*(datapi_back_next+1)))){\ + UPDATE_A_UV_PIXEL( yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi+=2;\ + datapi_back+=2;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=2;\ + datapi_back_next+=2;\ + }\ + yuv_u++;\ + yuv_v++;\ + }\ + yuv_u+=(yuv->y_width-width_tm)/2;\ + yuv_v+=(yuv->y_width-width_tm)/2;\ + datapi+=width_tm;\ + datapi_back+=width_tm;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=width_tm;\ + datapi_back_next+=width_tm;\ + }\ + }\ + }\ + else{\ + for(k=0;k<height_tm;k+=2){\ + for(i=0;i<width_tm;i+=2){\ + if ((*datapi!=*datapi_back)){\ + UPDATE_A_UV_PIXEL( yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi+=2;\ + datapi_back+=2;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=2;\ + datapi_back_next+=2;\ + }\ + yuv_u++;\ + yuv_v++;\ + }\ + yuv_u+=(yuv->y_width-width_tm)/2;\ + yuv_v+=(yuv->y_width-width_tm)/2;\ + datapi+=width_tm;\ + datapi_back+=width_tm;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=width_tm;\ + datapi_back_next+=width_tm;\ + }\ + }\ + }\ +} + +#define UPDATE_YUV_BUFFER(yuv,\ + data,\ + data_back,\ + x_tm,\ + y_tm,\ + width_tm,\ + height_tm,\ + __sampling_type,\ + __color_depth){\ + if(data_back==NULL){\ + if((__color_depth==24)||(__color_depth==32)){\ + UPDATE_Y_PLANE(data,x_tm,y_tm,height_tm,width_tm,yuv,32)\ + UPDATE_UV_PLANES(data,x_tm,y_tm,height_tm,width_tm,\ + yuv,__sampling_type,32)\ + }\ + else if(__color_depth==16){\ + UPDATE_Y_PLANE(data,x_tm,y_tm,height_tm,width_tm,yuv,16)\ + UPDATE_UV_PLANES(data,x_tm,y_tm,height_tm,width_tm,\ + yuv,__sampling_type,16)\ + }\ + }\ + else{\ + if((__color_depth==24)||(__color_depth==32)){\ + UPDATE_Y_PLANE_DBUF(data,data_back,x_tm,y_tm,\ + height_tm,width_tm,yuv,32)\ + UPDATE_UV_PLANES_DBUF(data,data_back,x_tm,y_tm,height_tm,width_tm,\ + yuv,__sampling_type,32)\ + }\ + else if(__color_depth==16){\ + UPDATE_Y_PLANE_DBUF(data,data_back,x_tm,y_tm,\ + height_tm,width_tm,yuv,16)\ + UPDATE_UV_PLANES_DBUF(data,data_back,x_tm,y_tm,height_tm,width_tm,\ + yuv,__sampling_type,16)\ + }\ + }\ +} + +#define DUMMY_POINTER_TO_YUV(yuv,\ + data_tm,\ + x_tm,\ + y_tm,\ + width_tm,\ + height_tm,\ + x_offset,\ + y_offset,\ + no_pixel){\ + int i,k,j=0;\ + int x_2=x_tm/2,y_2=y_tm/2,y_width_2=(yuv)->y_width/2;\ + for(k=y_offset;k<y_offset+height_tm;k++){\ + for(i=x_offset;i<x_offset+width_tm;i++){\ + j=k*16+i;\ + if(data_tm[(j*4)]!=(no_pixel)){\ + (yuv)->y[x_tm+(i-x_offset)+((k-y_offset)+y_tm)*(yuv)->y_width]=\ + Yr[data_tm[(j*4)+__RBYTE]] +\ + Yg[data_tm[(j*4)+__GBYTE]] +\ + Yb[data_tm[(j*4)+__BBYTE]];\ + if((k%2)&&(i%2)){\ + yuv->u[x_2+(i-x_offset)/2+((k-y_offset)/2+y_2)*y_width_2]=\ + Ur[data_tm[(k*width_tm+i)*4+__RBYTE]] +\ + Ug[data_tm[(k*width_tm+i)*4+__GBYTE]] +\ + UbVr[data_tm[(k*width_tm+i)*4+__BBYTE]];\ + yuv->v[x_2+(i-x_offset)/2+((k-y_offset)/2+y_2)*y_width_2]=\ + UbVr[data_tm[(k*width_tm+i)*4+__RBYTE]] +\ + Vg[data_tm[(k*width_tm+i)*4+__GBYTE]] +\ + Vb[data_tm[(k*width_tm+i)*4+__BBYTE]] ;\ + }\ + }\ + }\ + }\ +} + +#define MARK_BACK_BUFFER_C( data,\ + x_tm,\ + y_tm,\ + width_tm,\ + height_tm,\ + buffer_width,\ + __bit_depth__){\ + int k,i;\ + register u_int##__bit_depth__##_t\ + *datapi=\ + ((u_int##__bit_depth__##_t *)data)+y_tm*buffer_width+x_tm;\ + for(k=0;k<height_tm;k++){\ + for(i=0;i<width_tm;i++){\ + *datapi+=1;\ + datapi++;\ + }\ + datapi+=buffer_width-width_tm;\ + }\ +} + + +/** +* Fill Yr,Yg,Yb,Ur,Ug.Ub,Vr,Vg,Vb arrays(globals) with values. +*/ +void MakeMatrices(void); + + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 14:41:33
|
Revision: 534 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=534&view=rev Author: enselic Date: 2008-09-13 14:41:31 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdfunc.h: Get rid of InitializeData(). include/rmdmacro.h: Get rid of the DEFAULT_ARGS() macro. src/initialize_data.[ch]: Completely move InitializeData() here and also put the new DEFAULT_ARGS() replacement, the SetupDefaultArgs() function, here. src/Makefile.am src/rmd_rescue.c src/recordmydesktop.c: Adapt. Modified Paths: -------------- trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/include/rmdmacro.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/recordmydesktop.c trunk/recordmydesktop/src/rmd_rescue.c Added Paths: ----------- trunk/recordmydesktop/src/initialize_data.h Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 14:41:31 UTC (rev 534) @@ -455,22 +455,6 @@ */ void rmdThreads(ProgData *pdata); -/** -* initialize lists,mutexes,image buffers, take first screenshot, -* and anything else needed before launching the capture threads. -* -* \param pdata ProgData struct containing all program data -* -* \param enc_data reference to enc_data structure -* -* \param cache_data reference to cache_data structure -* -* \returns 0 on success, other values must cause the program to exit -*/ -int InitializeData(ProgData *pdata, - EncData *enc_data, - CacheData *cache_data); - #ifdef HAVE_JACK_H size_t (*jack_ringbuffer_read_p)(jack_ringbuffer_t *rb, Modified: trunk/recordmydesktop/include/rmdmacro.h =================================================================== --- trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 14:41:31 UTC (rev 534) @@ -94,57 +94,6 @@ #endif - -#define DEFAULT_ARGS(args){\ - (args)->delay=0;\ - if(getenv("DISPLAY")!=NULL){\ - (args)->display=(char *)malloc(strlen(getenv("DISPLAY"))+1);\ - strcpy((args)->display,getenv("DISPLAY"));\ - }\ - else\ - (args)->display=NULL;\ - (args)->windowid=\ - (args)->x=\ - (args)->y=\ - (args)->width=\ - (args)->height=\ - (args)->nosound=\ - (args)->full_shots=\ - (args)->follow_mouse=\ - (args)->encOnTheFly=\ - (args)->nowmcheck=\ - (args)->overwrite=\ - (args)->use_jack=\ - (args)->noshared=\ - (args)->no_encode=\ - (args)->noframe=\ - (args)->jack_nports=0;\ - (args)->jack_ringbuffer_secs=3.0;\ - (args)->jack_port_names=NULL;\ - (args)->zerocompression=\ - (args)->no_quick_subsample=1;\ - (args)->filename=(char *)malloc(8);\ - strcpy((args)->filename,"out.ogv");\ - (args)->cursor_color=1;\ - (args)->have_dummy_cursor=0;\ - (args)->xfixes_cursor=1;\ - (args)->device=(char *)malloc(strlen(DEFAULT_AUDIO_DEVICE)+1);\ - strcpy((args)->device,DEFAULT_AUDIO_DEVICE);\ - (args)->fps=15;\ - (args)->channels=1;\ - (args)->frequency=22050;\ - (args)->buffsize=4096;\ - (args)->v_bitrate=45000;\ - (args)->v_quality=63;\ - (args)->s_quality=10;\ - (args)->workdir=(char *)malloc(5);\ - strcpy((args)->workdir,"/tmp");\ - (args)->pause_shortcut=(char *)malloc(15);\ - strcpy((args)->pause_shortcut,"Control+Mod1+p");\ - (args)->stop_shortcut=(char *)malloc(15);\ - strcpy((args)->stop_shortcut,"Control+Mod1+s");\ -} - #define AVG_4_PIXELS(data_array,width_img,k_tm,i_tm,offset)\ ((data_array[(k_tm*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ data_array[((k_tm-1)*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 14:41:31 UTC (rev 534) @@ -13,6 +13,7 @@ getzpixmap.c \ init_encoder.c \ initialize_data.c \ + initialize_data.h \ load_cache.c \ make_dummy_pointer.c \ opendev.c \ Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 14:41:31 UTC (rev 534) @@ -175,3 +175,61 @@ return 0; } + +void SetupDefaultArgs(ProgArgs *args) { + + args->delay = 0; + args->windowid = 0; + args->x = 0; + args->y = 0; + args->width = 0; + args->height = 0; + args->nosound = 0; + args->full_shots = 0; + args->follow_mouse = 0; + args->encOnTheFly = 0; + args->nowmcheck = 0; + args->overwrite = 0; + args->use_jack = 0; + args->noshared = 0; + args->no_encode = 0; + args->noframe = 0; + args->jack_nports = 0; + args->jack_ringbuffer_secs = 3.0; + args->jack_port_names = NULL; + args->zerocompression = 1; + args->no_quick_subsample = 1; + args->cursor_color = 1; + args->have_dummy_cursor = 0; + args->xfixes_cursor = 1; + args->fps = 15; + args->channels = 1; + args->frequency = 22050; + args->buffsize = 4096; + args->v_bitrate = 45000; + args->v_quality = 63; + args->s_quality = 10; + + if (getenv("DISPLAY") != NULL) { + args->display = (char *) malloc(strlen(getenv("DISPLAY")) + 1); + strcpy(args->display, getenv("DISPLAY")); + } + else { + args->display = NULL; + } + + args->device = (char *) malloc(strlen(DEFAULT_AUDIO_DEVICE) + 1); + strcpy(args->device, DEFAULT_AUDIO_DEVICE); + + args->workdir = (char *) malloc(5); + strcpy(args->workdir, "/tmp"); + + args->pause_shortcut = (char *) malloc(15); + strcpy(args->pause_shortcut, "Control+Mod1+p"); + + args->stop_shortcut = (char *) malloc(15); + strcpy(args->stop_shortcut, "Control+Mod1+s"); + + args->filename = (char *) malloc(8); + strcpy(args->filename, "out.ogv"); +} Added: trunk/recordmydesktop/src/initialize_data.h =================================================================== --- trunk/recordmydesktop/src/initialize_data.h (rev 0) +++ trunk/recordmydesktop/src/initialize_data.h 2008-09-13 14:41:31 UTC (rev 534) @@ -0,0 +1,55 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef INITIALIZE_DATA_H +#define INITIALIZE_DATA_H 1 + +#include "rmdtypes.h" + + +/** +* initialize lists,mutexes,image buffers, take first screenshot, +* and anything else needed before launching the capture threads. +* +* \param pdata ProgData struct containing all program data +* +* \param enc_data reference to enc_data structure +* +* \param cache_data reference to cache_data structure +* +* \returns 0 on success, other values must cause the program to exit +*/ +int InitializeData(ProgData *pdata, + EncData *enc_data, + CacheData *cache_data); + +/** +* Sets up the ProgArgs structure to default values. +*/ +void SetupDefaultArgs(ProgArgs *args); + + +#endif Modified: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-13 14:41:31 UTC (rev 534) @@ -26,6 +26,7 @@ #include "recordmydesktop.h" +#include "initialize_data.h" #include "parseargs.h" @@ -33,7 +34,8 @@ ProgData pdata; int exit_status = 0; - DEFAULT_ARGS(&pdata.args); + SetupDefaultArgs(&pdata.args); + if (!ParseArgs(argc, argv, &pdata.args)) { exit(1); } Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 14:23:12 UTC (rev 533) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-09-13 14:41:31 UTC (rev 534) @@ -25,6 +25,7 @@ ******************************************************************************/ #include "recordmydesktop.h" +#include "initialize_data.h" #include "register_callbacks.h" @@ -40,9 +41,8 @@ EncData enc_data; CacheData cache_data; + SetupDefaultArgs(&pdata.args); - DEFAULT_ARGS(&pdata.args); - pdata.enc_data=&enc_data; pdata.cache_data=&cache_data; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 15:15:01
|
Revision: 535 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=535&view=rev Author: enselic Date: 2008-09-13 15:14:58 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdmacro.h: Move AVG_4_PIXELS(), CALC_TVAL_AVG_16(), CALC_TVAL_AVG_32() and CLEAR_FRAME() out of here. src/get_frame.c: Put AVG_4_PIXELS() here. src/yuv_utils.h: Put CALC_TVAL_AVG_16() and CALC_TVAL_AVG_32() here. src/load_cache.c: Expand CLEAR_FRAME() here. Modified Paths: -------------- trunk/recordmydesktop/include/rmdmacro.h trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/load_cache.c trunk/recordmydesktop/src/yuv_utils.h Modified: trunk/recordmydesktop/include/rmdmacro.h =================================================================== --- trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 14:41:31 UTC (rev 534) +++ trunk/recordmydesktop/include/rmdmacro.h 2008-09-13 15:14:58 UTC (rev 535) @@ -24,7 +24,6 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #ifndef RMDMACRO_H #define RMDMACRO_H 1 @@ -79,8 +78,6 @@ #define COMPARE_STRIDE 4 #endif - - //The width, in bytes, of the blocks //on which the y,u and v planes are broken. //These blocks are square. @@ -93,52 +90,6 @@ #define DEFAULT_AUDIO_DEVICE "/dev/dsp" #endif - -#define AVG_4_PIXELS(data_array,width_img,k_tm,i_tm,offset)\ - ((data_array[(k_tm*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ - data_array[((k_tm-1)*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ - data_array[(k_tm*width_img+i_tm-1)*RMD_ULONG_SIZE_T+offset]+\ - data_array[((k_tm-1)*width_img+i_tm-1)*RMD_ULONG_SIZE_T+offset])/4) - - -//the 4 most significant bytes represent the A component which -//does not need to be added on t_val, as it is always unused -#define CALC_TVAL_AVG_32(t_val,datapi,datapi_next){\ - register unsigned int t1,t2,t3,t4;\ - t1=*datapi;\ - t2=*(datapi+1);\ - t3=*datapi_next;\ - t4=*(datapi_next+1);\ - t_val=((((t1&0x00ff0000) +(t2&0x00ff0000)+\ - (t3&0x00ff0000)+(t4&0x00ff0000))/4)&0x00ff0000)+\ - ((((t1&0x0000ff00) +(t2&0x0000ff00)+\ - (t3&0x0000ff00)+(t4&0x0000ff00))/4)&0x0000ff00)+\ - ((((t1&0x000000ff) +(t2&0x000000ff)+\ - (t3&0x000000ff)+(t4&0x000000ff))/4)&0x000000ff);\ -} - -//when adding the r values, we go beyond -//the (16 bit)range of the t_val variable, but we are performing -//32 bit arithmetics, so there's no problem. -//(This note is useless, I'm just adding because -//the addition of the A components in CALC_TVAL_AVG_32, -//now removed as uneeded, produced an overflow which would have caused -//color distrtion, where it one of the R,G or B components) -#define CALC_TVAL_AVG_16(t_val,datapi,datapi_next){\ - register u_int16_t t1,t2,t3,t4;\ - t1=*datapi;\ - t2=*(datapi+1);\ - t3=*datapi_next;\ - t4=*(datapi_next+1);\ - t_val=((((t1&__R16_MASK) +(t2&__R16_MASK)+\ - (t3&__R16_MASK)+(t4&__R16_MASK))/4)&__R16_MASK)+\ - ((((t1&__G16_MASK) +(t2&__G16_MASK)+\ - (t3&__G16_MASK)+(t4&__G16_MASK))/4)&__G16_MASK)+\ - ((((t1&__B16_MASK) +(t2&__B16_MASK)+\ - (t3&__B16_MASK)+(t4&__B16_MASK))/4)&__B16_MASK);\ -} - - #define I16TOA(number,buffer){\ int t_num=(number),__k=0,__i=0;\ char *t_buf=malloc(8);\ @@ -156,11 +107,5 @@ free(t_buf);\ };\ -#define CLEAR_FRAME(frame_t){\ - free((frame_t)->YData);\ - free((frame_t)->UData);\ - free((frame_t)->VData);\ -}; #endif - Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-13 14:41:31 UTC (rev 534) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-13 15:14:58 UTC (rev 535) @@ -30,6 +30,12 @@ #include "yuv_utils.h" +#define AVG_4_PIXELS(data_array,width_img,k_tm,i_tm,offset)\ + ((data_array[(k_tm*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ + data_array[((k_tm-1)*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ + data_array[(k_tm*width_img+i_tm-1)*RMD_ULONG_SIZE_T+offset]+\ + data_array[((k_tm-1)*width_img+i_tm-1)*RMD_ULONG_SIZE_T+offset])/4) + #define CLIP_DUMMY_POINTER_AREA(dummy_p_area,brwin,wgeom){\ (wgeom)->x=((((dummy_p_area).x+\ (dummy_p_area).width>=(brwin)->rgeom.x)&&\ Modified: trunk/recordmydesktop/src/load_cache.c =================================================================== --- trunk/recordmydesktop/src/load_cache.c 2008-09-13 14:41:31 UTC (rev 534) +++ trunk/recordmydesktop/src/load_cache.c 2008-09-13 15:14:58 UTC (rev 535) @@ -306,7 +306,12 @@ pthread_cond_signal(&pdata->vorbis_lib_clean); pthread_mutex_unlock(&pdata->vorbis_lib_mutex); fprintf(stdout,"\n"); - CLEAR_FRAME(&frame) + + // Clear frame + free(frame.YData); + free(frame.UData); + free(frame.VData); + free(sound_data); if(!pdata->args.nosound){ Modified: trunk/recordmydesktop/src/yuv_utils.h =================================================================== --- trunk/recordmydesktop/src/yuv_utils.h 2008-09-13 14:41:31 UTC (rev 534) +++ trunk/recordmydesktop/src/yuv_utils.h 2008-09-13 15:14:58 UTC (rev 535) @@ -35,6 +35,43 @@ Vg[256], Vb[256]; +//when adding the r values, we go beyond +//the (16 bit)range of the t_val variable, but we are performing +//32 bit arithmetics, so there's no problem. +//(This note is useless, I'm just adding because +//the addition of the A components in CALC_TVAL_AVG_32, +//now removed as uneeded, produced an overflow which would have caused +//color distrtion, where it one of the R,G or B components) +#define CALC_TVAL_AVG_16(t_val,datapi,datapi_next){\ + register u_int16_t t1,t2,t3,t4;\ + t1=*datapi;\ + t2=*(datapi+1);\ + t3=*datapi_next;\ + t4=*(datapi_next+1);\ + t_val=((((t1&__R16_MASK) +(t2&__R16_MASK)+\ + (t3&__R16_MASK)+(t4&__R16_MASK))/4)&__R16_MASK)+\ + ((((t1&__G16_MASK) +(t2&__G16_MASK)+\ + (t3&__G16_MASK)+(t4&__G16_MASK))/4)&__G16_MASK)+\ + ((((t1&__B16_MASK) +(t2&__B16_MASK)+\ + (t3&__B16_MASK)+(t4&__B16_MASK))/4)&__B16_MASK);\ +} + +//the 4 most significant bytes represent the A component which +//does not need to be added on t_val, as it is always unused +#define CALC_TVAL_AVG_32(t_val,datapi,datapi_next){\ + register unsigned int t1,t2,t3,t4;\ + t1=*datapi;\ + t2=*(datapi+1);\ + t3=*datapi_next;\ + t4=*(datapi_next+1);\ + t_val=((((t1&0x00ff0000) +(t2&0x00ff0000)+\ + (t3&0x00ff0000)+(t4&0x00ff0000))/4)&0x00ff0000)+\ + ((((t1&0x0000ff00) +(t2&0x0000ff00)+\ + (t3&0x0000ff00)+(t4&0x0000ff00))/4)&0x0000ff00)+\ + ((((t1&0x000000ff) +(t2&0x000000ff)+\ + (t3&0x000000ff)+(t4&0x000000ff))/4)&0x000000ff);\ +} + #define POINT_IN_BLOCK(xv,yv,widthv,blocksize) ((yv/blocksize)*\ (widthv/blocksize)+\ (xv/blocksize)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 15:22:52
|
Revision: 536 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=536&view=rev Author: enselic Date: 2008-09-13 15:22:48 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdfunc.h: Removed CleanUp() declaration from here. src/initialize_data.[ch]: Host CleanUp() here instead. Long-term there should be much more code shared between rmd_rescue.c and initialize_data.c. src/cleanup.c: Removed. src/Makefile.am: Removed cleanup.c. Modified Paths: -------------- trunk/recordmydesktop/include/rmdfunc.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/initialize_data.h Removed Paths: ------------- trunk/recordmydesktop/src/cleanup.c Modified: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 15:14:58 UTC (rev 535) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 15:22:48 UTC (rev 536) @@ -484,16 +484,6 @@ #endif - -/** -* Currently only frees some memory -* (y,u,v blocks) -* -* -*/ -void CleanUp(void); - - /* * Check a shortcut combination and if valid, * register it, on the root window. Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 15:14:58 UTC (rev 535) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 15:22:48 UTC (rev 536) @@ -4,7 +4,6 @@ cache_audio.c \ cache_frame.c \ capture_sound.c \ - cleanup.c \ encode_cache.c \ encode_image_buffer.c \ encode_sound_buffer.c \ Deleted: trunk/recordmydesktop/src/cleanup.c =================================================================== --- trunk/recordmydesktop/src/cleanup.c 2008-09-13 15:14:58 UTC (rev 535) +++ trunk/recordmydesktop/src/cleanup.c 2008-09-13 15:22:48 UTC (rev 536) @@ -1,41 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 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 joh...@gm... * -******************************************************************************/ - -#include "recordmydesktop.h" - -void CleanUp(void){ - - free(yblocks); - free(ublocks); - free(vblocks); - -} - - - - - - Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 15:14:58 UTC (rev 535) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 15:22:48 UTC (rev 536) @@ -233,3 +233,11 @@ args->filename = (char *) malloc(8); strcpy(args->filename, "out.ogv"); } + +void CleanUp(void){ + + free(yblocks); + free(ublocks); + free(vblocks); + +} Modified: trunk/recordmydesktop/src/initialize_data.h =================================================================== --- trunk/recordmydesktop/src/initialize_data.h 2008-09-13 15:14:58 UTC (rev 535) +++ trunk/recordmydesktop/src/initialize_data.h 2008-09-13 15:22:48 UTC (rev 536) @@ -51,5 +51,12 @@ */ void SetupDefaultArgs(ProgArgs *args); +/** +* Currently only frees some memory +* (y,u,v blocks) +* +*/ +void CleanUp(void); + #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-13 20:03:32
|
Revision: 538 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=538&view=rev Author: enselic Date: 2008-09-13 20:03:27 +0000 (Sat, 13 Sep 2008) Log Message: ----------- include/rmdfunc.h: Removed and replaced with a header file for (almost) each .c file. include/recordmydesktop.h include/Makefile.am: src/cache_audio.[ch] src/cache_frame.[ch] src/capture_sound.[ch] src/encode_cache.[ch] src/encode_image_buffer.[ch] src/encode_sound_buffer.[ch] src/flush_to_ogg.[ch] src/get_frame.[ch] src/getzpixmap.[ch] src/init_encoder.[ch] src/initialize_data.c src/load_cache.[ch] src/make_dummy_pointer.[ch] src/opendev.[ch] src/parseargs.c src/poll_events.[ch] src/queryextensions.[ch] src/recordmydesktop.c src/rectinsert.h src/rmd_cache.[ch] src/rmd_error.[ch] src/rmd_frame.[ch] src/rmd_jack.[ch] src/rmd_rescue.[ch] src/rmd_timer.[ch] src/rmdthreads.[ch] src/setbrwindow.[ch] src/shortcuts.[ch] src/specsfile.[ch] src/update_image.[ch] src/wm_check.[ch] src/Makefile.am: Changed acordingly and adjust includes in .c files. Modified Paths: -------------- trunk/recordmydesktop/include/Makefile.am trunk/recordmydesktop/include/recordmydesktop.h trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/cache_audio.c trunk/recordmydesktop/src/cache_frame.c trunk/recordmydesktop/src/capture_sound.c trunk/recordmydesktop/src/encode_cache.c trunk/recordmydesktop/src/encode_image_buffer.c trunk/recordmydesktop/src/encode_sound_buffer.c trunk/recordmydesktop/src/flush_to_ogg.c trunk/recordmydesktop/src/get_frame.c trunk/recordmydesktop/src/getzpixmap.c trunk/recordmydesktop/src/init_encoder.c trunk/recordmydesktop/src/initialize_data.c trunk/recordmydesktop/src/load_cache.c trunk/recordmydesktop/src/make_dummy_pointer.c trunk/recordmydesktop/src/opendev.c trunk/recordmydesktop/src/parseargs.c trunk/recordmydesktop/src/poll_events.c trunk/recordmydesktop/src/queryextensions.c trunk/recordmydesktop/src/recordmydesktop.c trunk/recordmydesktop/src/rectinsert.h trunk/recordmydesktop/src/rmd_cache.c trunk/recordmydesktop/src/rmd_error.c trunk/recordmydesktop/src/rmd_frame.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmd_timer.c trunk/recordmydesktop/src/rmdthreads.c trunk/recordmydesktop/src/setbrwindow.c trunk/recordmydesktop/src/shortcuts.c trunk/recordmydesktop/src/specsfile.c trunk/recordmydesktop/src/update_image.c trunk/recordmydesktop/src/wm_check.c Added Paths: ----------- trunk/recordmydesktop/src/cache_audio.h trunk/recordmydesktop/src/cache_frame.h trunk/recordmydesktop/src/capture_sound.h trunk/recordmydesktop/src/encode_cache.h trunk/recordmydesktop/src/encode_image_buffer.h trunk/recordmydesktop/src/encode_sound_buffer.h trunk/recordmydesktop/src/flush_to_ogg.h trunk/recordmydesktop/src/get_frame.h trunk/recordmydesktop/src/getzpixmap.h trunk/recordmydesktop/src/init_encoder.h trunk/recordmydesktop/src/load_cache.h trunk/recordmydesktop/src/make_dummy_pointer.h trunk/recordmydesktop/src/opendev.h trunk/recordmydesktop/src/poll_events.h trunk/recordmydesktop/src/queryextensions.h trunk/recordmydesktop/src/rmd_cache.h trunk/recordmydesktop/src/rmd_error.h trunk/recordmydesktop/src/rmd_frame.h trunk/recordmydesktop/src/rmd_jack.h trunk/recordmydesktop/src/rmd_rescue.h trunk/recordmydesktop/src/rmd_timer.h trunk/recordmydesktop/src/rmdthreads.h trunk/recordmydesktop/src/setbrwindow.h trunk/recordmydesktop/src/shortcuts.h trunk/recordmydesktop/src/specsfile.h trunk/recordmydesktop/src/update_image.h trunk/recordmydesktop/src/wm_check.h Removed Paths: ------------- trunk/recordmydesktop/include/rmdfunc.h Modified: trunk/recordmydesktop/include/Makefile.am =================================================================== --- trunk/recordmydesktop/include/Makefile.am 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/include/Makefile.am 2008-09-13 20:03:27 UTC (rev 538) @@ -1 +1 @@ -noinst_HEADERS= recordmydesktop.h rmdfunc.h rmdtypes.h rmdmacro.h skeleton.h +noinst_HEADERS = recordmydesktop.h rmdtypes.h rmdmacro.h skeleton.h Modified: trunk/recordmydesktop/include/recordmydesktop.h =================================================================== --- trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/include/recordmydesktop.h 2008-09-13 20:03:27 UTC (rev 538) @@ -43,7 +43,6 @@ *vblocks; #include "rmdmacro.h" -#include "rmdfunc.h" Deleted: trunk/recordmydesktop/include/rmdfunc.h =================================================================== --- trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/include/rmdfunc.h 2008-09-13 20:03:27 UTC (rev 538) @@ -1,636 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 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 joh...@gm... * -******************************************************************************/ - - -#ifndef RMDFUNC_H -#define RMDFUNC_H 1 - -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include "rmdtypes.h" - - -/**Function prototypes*/ - -/** -* Start listening to damage and substructure notify events -* (needed before EventLoop call) -* \param pdata ProgData struct containing all program data -*/ -void InitEventsPolling(ProgData *pdata); - - -/** -* Loop calling XNextEvent.Retrieve and place on -* list damage events that arive, create damage for new windows -* and pickup key events for shortcuts. -* \param pdata ProgData struct containing all program data -*/ -void EventLoop(ProgData *pdata); - -/** -* Loop ,signal timer cond var,sleep-\ -* ^ | -* |________________________________/ -* -* -* \param pdata ProgData struct containing all program data -*/ -void *rmdTimer(ProgData *pdata); - -/** -* Retrieve frame form xserver, and transform to a yuv buffer, -* either directly(full shots) or by calling UpdateImage. -* \param pdata ProgData struct containing all program data -*/ -void *GetFrame(ProgData *pdata); - -/** -* feed a yuv buffer to the theora encoder and submit outcome to -* the ogg stream. -* \param pdata ProgData struct containing all program data -*/ -void *EncodeImageBuffer(ProgData *pdata); - -/** -* Query theora and vorbis streams for ready packages and -* flush them on the disk -* \param pdata ProgData struct containing all program data -*/ -void *FlushToOgg(ProgData *pdata); - -/** -* Clean up a list of areas marked for update. -* \param root Root entry of the list -*/ -void ClearList(RectArea **root); - -/** -* Retrieve and apply all changes, if xdamage is used. -* -* \param dpy Connection to the server -* -* \param yuv yuv_buffer that is to be modified -* -* \param specs DisplaySpecs struct with -* information about the display to be recorded -* -* \param root Root entry of the list with damaged areas -* -* \param brwin BRWindow struct contaning the recording window specs -* -* \param enc Encoding options -* -* \param datatemp Buffer for pixel data to be -* retrieved before placed on the yuv buffer -* -* \param noshmem don't use MIT_Shm extension -* -* \param no_quick_subsample Don't do quick subsampling -* -*/ -void UpdateImage(Display * dpy, - yuv_buffer *yuv, - DisplaySpecs *specs, - RectArea **root, - BRWindow *brwin, - EncData *enc, - char *datatemp, - int noshmem, - XShmSegmentInfo *shminfo, - int shm_opcode, - int no_quick_subsample); - -/** -* Rerieve pixmap data from xserver -* -* \param dpy Connection to the server -* -* \param root root window of the display -* -* \param data (preallocated)buffer to place the data -* -* \param x x position of the screenshot -* -* \param y y position of the screenshot -* -* \param x x position of the screenshot -* -* \param width width of the screenshot -* -* \param height height position of the screenshot -* -* \returns 0 on Success 1 on Failure -*/ -int GetZPixmap(Display *dpy, - Window root, - char *data, - int x, - int y, - int width, - int height); - -/** -* Rerieve pixmap data from xserver through the MIT-Shm extension -* -* \param dpy Connection to the server -* -* \param root root window of the display -* -* \param shminfo Info for the shared memory segment -* -* \param shm_opcode Opcode of Shm extension -* -* \param data (preallocated)buffer to place the data -* -* \param x x position of the screenshot -* -* \param y y position of the screenshot -* -* \param x x position of the screenshot -* -* \param width width of the screenshot -* -* \param height height position of the screenshot -* -* \returns 0 on Success 1 on Failure -*/ -int GetZPixmapSHM(Display *dpy, - Window root, - XShmSegmentInfo *shminfo, - int shm_opcode, - char *data, - int x, - int y, - int width, - int height); - -/** -* Check if needed extensions are present -* -* \param dpy Connection to the server -* -* \param args ProgArgs struct containing the user-set options -* -* \param damage_event gets filled with damage event number -* -* \param damage_error gets filled with damage error number -* -* \note Can be an exit point if extensions are not found -*/ -void QueryExtensions(Display *dpy, - ProgArgs *args, - int *damage_event, - int *damage_error, - int *shm_opcode); - -/** -* Check and align window size -* -* \param dpy Connection to the server -* -* \param brwin BRWindow struct contaning the initial and final window -* -* \param specs DisplaySpecs struct with -* information about the display to be recorded -* -* \param args ProgArgs struct containing the user-set options -* -* \returns 0 on Success 1 on Failure -*/ -int SetBRWindow(Display *dpy, - BRWindow *brwin, - DisplaySpecs *specs, - ProgArgs *args); - -/** -* Create an array containing the data for the dummy pointer -* -* \param specs DisplaySpecs struct with -* information about the display to be recorded -* -* \param size Pointer size, always square, always 16.(exists only -* for the possibility to create more dummy cursors) -* \param color 0 white, 1 black -* -* \param type Always 0.(exists only for the possibility to create -* more dummy cursors) -* -* \param npxl Return of pixel value that denotes non-drawing, while -* applying the cursor on the target image -* -* \returns Pointer to pixel data of the cursor -*/ -unsigned char *MakeDummyPointer(DisplaySpecs *specs, - int size, - int color, - int type, - unsigned char *npxl); - -/** -* Sound capturing thread. Data are placed on a -* list to be picked up by other threads. -* -* \param pdata ProgData struct containing all program data -*/ -void *CaptureSound(ProgData *pdata); - -/** -* Sound encoding thread. Picks up data from the buffer queue , -* encodes and places them on the vorbis stream. -* -* \param pdata ProgData struct containing all program data -*/ -void *EncodeSoundBuffer(ProgData *pdata); -#ifdef HAVE_LIBASOUND -/** -* Try to open (alsa) sound device, with the desired parameters, -* and place the obtained ones on their place -* -* \param pcm_dev name of the device -* -* \param channels desired number of channels -* (gets modified with the acieved value) -* -* \param frequency desired frequency(gets modified with the acieved value) -* -* \param buffsize Size of buffer -* -* \param periodsize Size of a period(can be NULL) -* -* \param periodtime Duration of a period(can be NULL) -* -* \param hardpause Set to 1 when the device has to be stopped during pause -* and to 0 when it supports pausing -* (can be NULL) -* -* \returns snd_pcm_t handle on success, NULL on failure -*/ -snd_pcm_t *OpenDev( const char *pcm_dev, - unsigned int *channels, - unsigned int *frequency, - snd_pcm_uframes_t *buffsize, - snd_pcm_uframes_t *periodsize, - unsigned int *periodtime, - int *hardpause); -#else -/** -* Try to open (OSS) sound device, with the desired parameters. -* -* -* \param pcm_dev name of the device -* -* \param channels desired number of channels -* -* \param frequency desired frequency -* -* -* \returns file descriptor of open device,-1 on failure -*/ -int OpenDev( const char *pcm_dev, - unsigned int channels, - unsigned int frequency); -#endif -/** -* Initialize theora,vorbis encoders, and their respective ogg streams. -* -* \param pdata ProgData struct containing all program data -* -* \param enc_data_t Encoding options -* -* \param buffer_ready when 1, the yuv buffer must be preallocated -* when 0 InitEncoder will alocate a new one -* -*/ -void InitEncoder(ProgData *pdata,EncData *enc_data_t,int buffer_ready); - -/** -* Image caching thread. Copies the yuv buffer, compares with the last one and -* caches the result. -* -* \param pdata ProgData struct containing all program data -* -*/ -void *CacheImageBuffer(ProgData *pdata); - -/** -* Initializes paths and everything else needed to start caching -* -* \param pdata ProgData struct containing all program data -* -* \param enc_data_t Encoding options -* -* \param cache_data_t Caching options -* -*/ -void InitCacheData(ProgData *pdata, - EncData *enc_data_t, - CacheData *cache_data_t); - -/** -* Sound caching thread. Simply writes the pcm buffers on disk -* -* \param pdata ProgData struct containing all program data -* -*/ -void *CacheSoundBuffer(ProgData *pdata); - -/** -* Cache loading and processing thread -* -* \param pdata ProgData struct containing all program data -* -*/ -void *LoadCache(ProgData *pdata); - -/** -* As EncodeImageBuffer, only with the assumption that -* this is not a thread on it's own -* -* \param pdata ProgData struct containing all program data -* -*/ -void SyncEncodeImageBuffer(ProgData *pdata); - - -/** -* As EncodeSoundBuffer, only with the assumption that -* this is not a thread on it's own -* -* \param pdata ProgData struct containing all program data -* -*/ -void SyncEncodeSoundBuffer(ProgData *pdata,signed char *buff); - -/** -*Check current running window manager. -* -* \param dpy Connection to the server -* -* \param root root window of the display -* -* \returns Window manager name -*/ -char *rmdWMCheck(Display *dpy,Window root); - -/** -* Change file pointer to a new file while writting -* (file name is incremented with CacheFileN) -* -* \param name base file name -* -* \param n number to be used as a postfix -* -* \param fp File pointer if compression is used(must be NULL otherwise) -* -* \param ucfp File pointer if compression is NOT used(must be NULL otherwise) -* -* \returns 0 on Success 1 on Failure -*/ -int SwapCacheFilesWrite(char *name,int n,gzFile **fp,FILE **ucfp); - -/** -* Change file pointer to a new file while reading -* (file name is incremented with CacheFileN) -* -* \param name base file name -* -* \param n number to be used as a postfix -* -* \param fp File pointer if compression is used(must be NULL otherwise) -* -* \param ucfp File pointer if compression is NOT used(must be NULL otherwise) -* -* \returns 0 on Success 1 on Failure -*/ -int SwapCacheFilesRead(char *name,int n,gzFile **fp,FILE **ucfp); - -/** -* Delete all cache files -* -* \param cache_data_t Caching options(file names etc.) -* -* \returns 0 if all files and folders where deleted, 1 otherwise -*/ -int PurgeCache(CacheData *cache_data_t,int sound); - -/** -* Encode cache into an -* ogg stream. -* \param pdata ProgData struct containing all program data -*/ -void EncodeCache(ProgData *pdata); - -/** -* Launch and wait capture threads. -* Also creates and waits the encoding threads when -* encode-on-the-fly is enabled. -* -* \param pdata ProgData struct containing all program data -*/ -void rmdThreads(ProgData *pdata); - -#ifdef HAVE_JACK_H - -size_t (*jack_ringbuffer_read_p)(jack_ringbuffer_t *rb, - char *dest, size_t cnt); -size_t (*jack_ringbuffer_read_space_p)(const jack_ringbuffer_t *rb); - -/** -* Load libjack, create and activate client,register ports -* -* \param jdata_t Pointer to JackData struct containing port -* and client information -* -* \returns 0 on Success, error code on failure -* (depending on where the error occured) -*/ -int StartJackClient(JackData *jdata); - -/** -* Close Jack Client -* -* \param jdata_t Pointer to JackData struct containing port -* and client information -* -* \returns 0 on Success, 1 on failure -*/ -int StopJackClient(JackData *jdata); - -#endif - -/* - * Check a shortcut combination and if valid, - * register it, on the root window. - * - * \param dpy Connection to the X Server - * - * \param root Root window id - * - * \param shortcut String represantation of the shortcut - * - * \param HotKey Pre-allocated struct that is filled with the - * modifiers and the keycode, for checks on incoming - * keypress events. Left untouched if the call fails. - * - * - * \returns 0 on Success, 1 on Failure. - * - */ -int RegisterShortcut(Display *dpy, - Window root, - const char *shortcut, - HotKey *hotkey); - -/* - * Handling of X errors. - * Ignores, bad access when registering shortcuts - * and BadWindow on XQueryTree - * - * \param dpy Connection to the X Server - * - * \param e XErrorEvent struct containing error info - * - * \returns 0 on the two ignored cases, calls exit(1) - * otherwise. - * - */ -int rmdErrorHandler(Display *dpy,XErrorEvent *e); - -/* - * Create a frame that marks the recording area. - * - * \param dpy Connection to the X Server - * - * \param screen Recorded screen - * - * \param root Root window of the display - * - * \param x X pos of the recorded area - * - * \param y Y pos of the recorded area - * - * \param width Width of the recorded area - * - * \param height Height of the recorded area - * - * \returns The WindowID of the frame - * - */ -Window rmdFrameInit(Display *dpy, - int screen, - Window root, - int x, - int y, - int width, - int height); - - -/* - * Move the frame (subtracts the borderwidth) - * - * \param dpy Connection to the X Server - * - * \param win WindowId of the frame - * - * \param x New X pos of the recorded area - * - * \param y New Y pos of the recorded area - * - */ -void rmdMoveFrame(Display *dpy, - Window win, - int x, - int y); - - -/* - * Redraw the frame that marks the recording area. - * - * \param dpy Connection to the X Server - * - * \param screen Recorded screen - * - * \param win WindoID of the frame - * - * \param width Width of the recorded area - * - * \param height Height of the recorded area - * - */ -void rmdDrawFrame(Display *dpy, - int screen, - Window win, - int width, - int height); - - -/* - * Create a text file that holds the required - * capture attributes, in the cache directory. - * - * \param pdata ProgData struct containing all program data - * - * \returns 0 on Success, 1 on failure - * - */ -int WriteSpecsFile(ProgData *pdata); - - - -/* - * Read the text file that holds the required - * capture attributes, in the cache directory. - * - * \param pdata ProgData struct that will be fille - * with all program data - * - * \returns 0 on Success, 1 on failure - * - */ -int ReadSpecsFile(ProgData *pdata); - - -/* - * Rescue a previous recording, found in - * the given path. - * - * \param path Path to the cache folder. - * - * \returns 0 on Success, 1 on failure - * - */ -int rmdRescue(const char *path); - -#endif - - - - - - Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-13 20:03:27 UTC (rev 538) @@ -2,44 +2,71 @@ recordmydesktop_SOURCES = \ cache_audio.c \ + cache_audio.h \ cache_frame.c \ + cache_frame.h \ capture_sound.c \ + capture_sound.h \ encode_cache.c \ + encode_cache.h \ encode_image_buffer.c \ + encode_image_buffer.h \ encode_sound_buffer.c \ + encode_sound_buffer.h \ flush_to_ogg.c \ + flush_to_ogg.h \ get_frame.c \ + get_frame.h \ getzpixmap.c \ + getzpixmap.h \ init_encoder.c \ + init_encoder.h \ initialize_data.c \ initialize_data.h \ load_cache.c \ + load_cache.h \ make_dummy_pointer.c \ + make_dummy_pointer.h \ opendev.c \ + opendev.h \ parseargs.c \ parseargs.h \ poll_events.c \ + poll_events.h \ queryextensions.c \ + queryextensions.h \ recordmydesktop.c \ rectinsert.c \ rectinsert.h \ register_callbacks.c \ register_callbacks.h \ rmd_cache.c \ + rmd_cache.h \ rmd_error.c \ + rmd_error.h \ rmd_frame.c \ + rmd_frame.h \ rmd_jack.c \ + rmd_jack.h \ rmd_rescue.c \ + rmd_rescue.h \ rmd_timer.c \ + rmd_timer.h \ rmdthreads.c \ + rmdthreads.h \ setbrwindow.c \ + setbrwindow.h \ shortcuts.c \ + shortcuts.h \ skeleton.c \ specsfile.c \ + specsfile.h \ update_image.c \ + update_image.h \ yuv_utils.c \ yuv_utils.h \ - wm_check.c + wm_check.c \ + wm_check.h INCLUDES = $(all_includes) -I$(top_srcdir)/include Modified: trunk/recordmydesktop/src/cache_audio.c =================================================================== --- trunk/recordmydesktop/src/cache_audio.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/cache_audio.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,9 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - +#include "cache_audio.h" #include "recordmydesktop.h" +#include "rmd_jack.h" void *CacheSoundBuffer(ProgData *pdata){ Added: trunk/recordmydesktop/src/cache_audio.h =================================================================== --- trunk/recordmydesktop/src/cache_audio.h (rev 0) +++ trunk/recordmydesktop/src/cache_audio.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,42 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef CACHE_AUDIO_H +#define CACHE_AUDIO_H 1 + +#include "rmdtypes.h" + + +/** +* Sound caching thread. Simply writes the pcm buffers on disk +* +* \param pdata ProgData struct containing all program data +* +*/ +void *CacheSoundBuffer(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/cache_frame.c =================================================================== --- trunk/recordmydesktop/src/cache_frame.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/cache_frame.c 2008-09-13 20:03:27 UTC (rev 538) @@ -26,7 +26,9 @@ #include <signal.h> +#include "cache_frame.h" #include "recordmydesktop.h" +#include "rmd_cache.h" //minimize hard disk access Added: trunk/recordmydesktop/src/cache_frame.h =================================================================== --- trunk/recordmydesktop/src/cache_frame.h (rev 0) +++ trunk/recordmydesktop/src/cache_frame.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,43 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef CACHE_FRAME_H +#define CACHE_FRAME_H 1 + +#include "rmdtypes.h" + + +/** +* Image caching thread. Copies the yuv buffer, compares with the last one and +* caches the result. +* +* \param pdata ProgData struct containing all program data +* +*/ +void *CacheImageBuffer(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/capture_sound.c =================================================================== --- trunk/recordmydesktop/src/capture_sound.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/capture_sound.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,13 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ +#include "opendev.h" +#include "recordmydesktop.h" +#include "rmd_jack.h" +#include "capture_sound.h" #include "recordmydesktop.h" +#include "rmd_jack.h" void *CaptureSound(ProgData *pdata){ Added: trunk/recordmydesktop/src/capture_sound.h =================================================================== --- trunk/recordmydesktop/src/capture_sound.h (rev 0) +++ trunk/recordmydesktop/src/capture_sound.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,42 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef CAPTURE_SOUND_H +#define CAPTURE_SOUND_H 1 + +#include "rmdtypes.h" + + +/** +* Sound capturing thread. Data are placed on a +* list to be picked up by other threads. +* +* \param pdata ProgData struct containing all program data +*/ +void *CaptureSound(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/encode_cache.c =================================================================== --- trunk/recordmydesktop/src/encode_cache.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/encode_cache.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,7 +24,10 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - +#include "encode_cache.h" +#include "flush_to_ogg.h" +#include "init_encoder.h" +#include "load_cache.h" #include "recordmydesktop.h" Added: trunk/recordmydesktop/src/encode_cache.h =================================================================== --- trunk/recordmydesktop/src/encode_cache.h (rev 0) +++ trunk/recordmydesktop/src/encode_cache.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,41 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef ENCODE_CACHE_H +#define ENCODE_CACHE_H 1 + +#include "rmdtypes.h" + + +/** +* Encode cache into an +* ogg stream. +* \param pdata ProgData struct containing all program data +*/ +void EncodeCache(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/encode_image_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/encode_image_buffer.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,8 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #include "recordmydesktop.h" +#include "encode_image_buffer.h" void *EncodeImageBuffer(ProgData *pdata){ @@ -90,4 +90,3 @@ } } } - Added: trunk/recordmydesktop/src/encode_image_buffer.h =================================================================== --- trunk/recordmydesktop/src/encode_image_buffer.h (rev 0) +++ trunk/recordmydesktop/src/encode_image_buffer.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,50 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef ENCODE_IMAGE_BUFFER_H +#define ENCODE_IMAGE_BUFFER_H 1 + +#include "rmdtypes.h" + + +/** +* feed a yuv buffer to the theora encoder and submit outcome to +* the ogg stream. +* \param pdata ProgData struct containing all program data +*/ +void *EncodeImageBuffer(ProgData *pdata); + +/** +* As EncodeImageBuffer, only with the assumption that +* this is not a thread on it's own +* +* \param pdata ProgData struct containing all program data +* +*/ +void SyncEncodeImageBuffer(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/encode_sound_buffer.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,9 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - +#include "encode_sound_buffer.h" #include "recordmydesktop.h" +#include "rmd_jack.h" void *EncodeSoundBuffer(ProgData *pdata){ Added: trunk/recordmydesktop/src/encode_sound_buffer.h =================================================================== --- trunk/recordmydesktop/src/encode_sound_buffer.h (rev 0) +++ trunk/recordmydesktop/src/encode_sound_buffer.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,51 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef ENCODE_SOUND_BUFFER_H +#define ENCODE_SOUND_BUFFER_H 1 + +#include "rmdtypes.h" + + +/** +* Sound encoding thread. Picks up data from the buffer queue , +* encodes and places them on the vorbis stream. +* +* \param pdata ProgData struct containing all program data +*/ +void *EncodeSoundBuffer(ProgData *pdata); + +/** +* As EncodeSoundBuffer, only with the assumption that +* this is not a thread on it's own +* +* \param pdata ProgData struct containing all program data +* +*/ +void SyncEncodeSoundBuffer(ProgData *pdata,signed char *buff); + + +#endif Modified: trunk/recordmydesktop/src/flush_to_ogg.c =================================================================== --- trunk/recordmydesktop/src/flush_to_ogg.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/flush_to_ogg.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,12 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ +#include "encode_image_buffer.h" +#include "encode_sound_buffer.h" +#include "flush_to_ogg.h" #include "recordmydesktop.h" + //we copy the page because the next call to ogg_stream_pageout //will invalidate it. But we must have pages from //both streams at every time in Added: trunk/recordmydesktop/src/flush_to_ogg.h =================================================================== --- trunk/recordmydesktop/src/flush_to_ogg.h (rev 0) +++ trunk/recordmydesktop/src/flush_to_ogg.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,40 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef FLUSH_TO_OGG_H +#define FLUSH_TO_OGG_H 1 + +#include "rmdtypes.h" + + +/** +* Query theora and vorbis streams for ready packages and +* flush them on the disk +* \param pdata ProgData struct containing all program data +*/ +void *FlushToOgg(ProgData *pdata); + +#endif Modified: trunk/recordmydesktop/src/get_frame.c =================================================================== --- trunk/recordmydesktop/src/get_frame.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/get_frame.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,9 +24,14 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - +#include "get_frame.h" +#include "getzpixmap.h" +#include "poll_events.h" #include "recordmydesktop.h" #include "rectinsert.h" +#include "rmd_cache.h" +#include "rmd_frame.h" +#include "update_image.h" #include "yuv_utils.h" Added: trunk/recordmydesktop/src/get_frame.h =================================================================== --- trunk/recordmydesktop/src/get_frame.h (rev 0) +++ trunk/recordmydesktop/src/get_frame.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,41 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef GET_FRAME_H +#define GET_FRAME_H 1 + +#include "rmdtypes.h" + + +/** +* Retrieve frame form xserver, and transform to a yuv buffer, +* either directly(full shots) or by calling UpdateImage. +* \param pdata ProgData struct containing all program data +*/ +void *GetFrame(ProgData *pdata); + + +#endif Modified: trunk/recordmydesktop/src/getzpixmap.c =================================================================== --- trunk/recordmydesktop/src/getzpixmap.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/getzpixmap.c 2008-09-13 20:03:27 UTC (rev 538) @@ -24,8 +24,8 @@ * For further information contact me at joh...@gm... * ******************************************************************************/ - #include "recordmydesktop.h" +#include "getzpixmap.h" int GetZPixmap(Display *dpy, Added: trunk/recordmydesktop/src/getzpixmap.h =================================================================== --- trunk/recordmydesktop/src/getzpixmap.h (rev 0) +++ trunk/recordmydesktop/src/getzpixmap.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,98 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef GETZPIXMAP_H +#define GETZPIXMAP_H 1 + +#include "rmdtypes.h" + + +/** +* Rerieve pixmap data from xserver +* +* \param dpy Connection to the server +* +* \param root root window of the display +* +* \param data (preallocated)buffer to place the data +* +* \param x x position of the screenshot +* +* \param y y position of the screenshot +* +* \param x x position of the screenshot +* +* \param width width of the screenshot +* +* \param height height position of the screenshot +* +* \returns 0 on Success 1 on Failure +*/ +int GetZPixmap(Display *dpy, + Window root, + char *data, + int x, + int y, + int width, + int height); + +/** +* Rerieve pixmap data from xserver through the MIT-Shm extension +* +* \param dpy Connection to the server +* +* \param root root window of the display +* +* \param shminfo Info for the shared memory segment +* +* \param shm_opcode Opcode of Shm extension +* +* \param data (preallocated)buffer to place the data +* +* \param x x position of the screenshot +* +* \param y y position of the screenshot +* +* \param x x position of the screenshot +* +* \param width width of the screenshot +* +* \param height height position of the screenshot +* +* \returns 0 on Success 1 on Failure +*/ +int GetZPixmapSHM(Display *dpy, + Window root, + XShmSegmentInfo *shminfo, + int shm_opcode, + char *data, + int x, + int y, + int width, + int height); + + +#endif Modified: trunk/recordmydesktop/src/init_encoder.c =================================================================== --- trunk/recordmydesktop/src/init_encoder.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/init_encoder.c 2008-09-13 20:03:27 UTC (rev 538) @@ -27,6 +27,7 @@ #include <string.h> +#include "init_encoder.h" #include "recordmydesktop.h" #include "skeleton.h" Added: trunk/recordmydesktop/src/init_encoder.h =================================================================== --- trunk/recordmydesktop/src/init_encoder.h (rev 0) +++ trunk/recordmydesktop/src/init_encoder.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,47 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef INIT_ENCODER_H +#define INIT_ENCODER_H 1 + +#include "rmdtypes.h" + + +/** +* Initialize theora,vorbis encoders, and their respective ogg streams. +* +* \param pdata ProgData struct containing all program data +* +* \param enc_data_t Encoding options +* +* \param buffer_ready when 1, the yuv buffer must be preallocated +* when 0 InitEncoder will alocate a new one +* +*/ +void InitEncoder(ProgData *pdata,EncData *enc_data_t,int buffer_ready); + + +#endif Modified: trunk/recordmydesktop/src/initialize_data.c =================================================================== --- trunk/recordmydesktop/src/initialize_data.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/initialize_data.c 2008-09-13 20:03:27 UTC (rev 538) @@ -26,6 +26,11 @@ #include "recordmydesktop.h" #include "yuv_utils.h" +#include "make_dummy_pointer.h" +#include "opendev.h" +#include "rmd_jack.h" +#include "init_encoder.h" +#include "rmd_cache.h" #ifdef HAVE_LIBASOUND Modified: trunk/recordmydesktop/src/load_cache.c =================================================================== --- trunk/recordmydesktop/src/load_cache.c 2008-09-13 17:06:27 UTC (rev 537) +++ trunk/recordmydesktop/src/load_cache.c 2008-09-13 20:03:27 UTC (rev 538) @@ -26,7 +26,11 @@ #include <signal.h> +#include "encode_image_buffer.h" +#include "encode_sound_buffer.h" +#include "load_cache.h" #include "recordmydesktop.h" +#include "rmd_cache.h" //The number of bytes for every Added: trunk/recordmydesktop/src/load_cache.h =================================================================== --- trunk/recordmydesktop/src/load_cache.h (rev 0) +++ trunk/recordmydesktop/src/load_cache.h 2008-09-13 20:03:27 UTC (rev 538) @@ -0,0 +1,42 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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. ... [truncated message content] |
From: svn c. f. r. <rec...@li...> - 2008-09-15 22:47:40
|
Revision: 547 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=547&view=rev Author: enselic Date: 2008-09-16 05:47:37 +0000 (Tue, 16 Sep 2008) Log Message: ----------- src/recordmydesktop.c: Renamed to src/rmd.c this, it feels cleaner this way. configure.ac src/Makefile.am: Changed accordingly. Modified Paths: -------------- trunk/recordmydesktop/configure.ac trunk/recordmydesktop/src/Makefile.am Added Paths: ----------- trunk/recordmydesktop/src/rmd.c Removed Paths: ------------- trunk/recordmydesktop/src/recordmydesktop.c Modified: trunk/recordmydesktop/configure.ac =================================================================== --- trunk/recordmydesktop/configure.ac 2008-09-14 13:06:20 UTC (rev 546) +++ trunk/recordmydesktop/configure.ac 2008-09-16 05:47:37 UTC (rev 547) @@ -2,10 +2,10 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT(src/recordmydesktop.c) +AC_INIT(src/rmd.c) AM_INIT_AUTOMAKE(recordmydesktop,0.3.7.3,) -AC_CONFIG_SRCDIR([src/recordmydesktop.c]) +AC_CONFIG_SRCDIR([src/rmd.c]) AM_CONFIG_HEADER(config.h) Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-09-14 13:06:20 UTC (rev 546) +++ trunk/recordmydesktop/src/Makefile.am 2008-09-16 05:47:37 UTC (rev 547) @@ -1,7 +1,7 @@ bin_PROGRAMS = recordmydesktop recordmydesktop_SOURCES = \ - recordmydesktop.c \ + rmd.c \ rmd_block_utils.c \ rmd_block_utils.h \ rmd_cache.c \ Deleted: trunk/recordmydesktop/src/recordmydesktop.c =================================================================== --- trunk/recordmydesktop/src/recordmydesktop.c 2008-09-14 13:06:20 UTC (rev 546) +++ trunk/recordmydesktop/src/recordmydesktop.c 2008-09-16 05:47:37 UTC (rev 547) @@ -1,212 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 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 joh...@gm... * -******************************************************************************/ - -#include "config.h" - -#include "rmd_types.h" - -#include "rmd_encode_cache.h" -#include "rmd_initialize_data.h" -#include "rmd_parseargs.h" -#include "rmd_queryextensions.h" -#include "rmd_cache.h" -#include "rmd_error.h" -#include "rmd_threads.h" -#include "rmd_setbrwindow.h" -#include "rmd_shortcuts.h" -#include "rmd_wm_check.h" - - -int main(int argc,char **argv){ - ProgData pdata; - int exit_status = 0; - - SetupDefaultArgs(&pdata.args); - - if (!ParseArgs(argc, argv, &pdata.args)) { - exit(1); - } - if(XInitThreads ()==0){ - fprintf(stderr,"Couldn't initialize thread support!\n"); - exit(7); - } - if(pdata.args.display!=NULL){ - pdata.dpy = XOpenDisplay(pdata.args.display); - XSetErrorHandler(rmdErrorHandler); - } - else{ - fprintf(stderr,"No display specified for connection!\n"); - exit(8); - } - if (pdata.dpy == NULL) { - fprintf(stderr, "Cannot connect to X server %s\n",pdata.args.display); - exit(9); - } - else{ - EncData enc_data; - CacheData cache_data; -#ifdef HAVE_JACK_H - JackData jdata; - - // Give jack access to program data, mainly for program state - jdata.pdata = &pdata; - pdata.jdata = &jdata; -#endif - - // Query display specs - pdata.specs.screen = DefaultScreen(pdata.dpy); - pdata.specs.width = DisplayWidth(pdata.dpy, pdata.specs.screen); - pdata.specs.height = DisplayHeight(pdata.dpy, pdata.specs.screen); - pdata.specs.root = RootWindow(pdata.dpy, pdata.specs.screen); - pdata.specs.visual = DefaultVisual(pdata.dpy, pdata.specs.screen); - pdata.specs.gc = DefaultGC(pdata.dpy, pdata.specs.screen); - pdata.specs.depth = DefaultDepth(pdata.dpy, pdata.specs.screen); - pdata.specs.bpixel = XBlackPixel(pdata.dpy, pdata.specs.screen); - pdata.specs.wpixel = XWhitePixel(pdata.dpy, pdata.specs.screen); - - if((pdata.specs.depth!=32)&& - (pdata.specs.depth!=24)&& - (pdata.specs.depth!=16)){ - fprintf(stderr,"Only 32bpp,24bpp and 16bpp" - " color depth modes are currently supported.\n"); - exit(10); - } - if(SetBRWindow(pdata.dpy,&pdata.brwin,&pdata.specs,&pdata.args)) - exit(11); - - //check if we are under compiz or beryl, - //in which case we must enable full-shots - //and with it use of shared memory.User can override this - pdata.window_manager=((pdata.args.nowmcheck)? - NULL:rmdWMCheck(pdata.dpy,pdata.specs.root)); - if(pdata.window_manager==NULL){ - fprintf(stderr,"Not taking window manager into account.\n"); - } - //Right now only wm's that I know of performing - //3d compositing are beryl and compiz. - //No, the blue screen in metacity doesn't count :) - //names can be compiz for compiz and beryl/beryl-co/beryl-core - //for beryl(so it's strncmp ) - else if(!strcmp(pdata.window_manager,"compiz") || - !strncmp(pdata.window_manager,"beryl",5)){ - fprintf(stderr,"\nDetected 3d compositing window manager.\n" - "Reverting to full screen capture at every frame.\n" - "To disable this check run with --no-wm-check\n" - "(though that is not advised, since it will " - "probably produce faulty results).\n\n"); - pdata.args.full_shots=1; - pdata.args.noshared=0; - } - - QueryExtensions(pdata.dpy, - &pdata.args, - &pdata.damage_event, - &pdata.damage_error, - &pdata.shm_opcode); - - - if((exit_status=InitializeData(&pdata,&enc_data,&cache_data))==0){ - - if(!strcmp(pdata.args.pause_shortcut, - pdata.args.stop_shortcut)|| - RegisterShortcut(pdata.dpy, - pdata.specs.root, - pdata.args.pause_shortcut, - &(pdata.pause_key)) || - RegisterShortcut(pdata.dpy, - pdata.specs.root, - pdata.args.stop_shortcut, - &(pdata.stop_key))){ - - fprintf(stderr,"Invalid shortcut," - " or shortcuts are the same!\n\n" - "Using defaults.\n"); - - RegisterShortcut(pdata.dpy, - pdata.specs.root, - "Control+Mod1+p", - &(pdata.pause_key)); - RegisterShortcut(pdata.dpy, - pdata.specs.root, - "Control+Mod1+s", - &(pdata.stop_key)); - } - - //this is where the capturing happens. - rmdThreads(&pdata); - - XCloseDisplay(pdata.dpy); - fprintf(stderr,".\n"); - - //encode and then cleanup cache - if(!pdata.args.encOnTheFly && !pdata.args.no_encode){ - if (!pdata.aborted) { - EncodeCache(&pdata); - } - fprintf(stderr,"Cleanning up cache...\n"); - if(PurgeCache(pdata.cache_data,!pdata.args.nosound)) - fprintf(stderr,"Some error occured " - "while cleaning up cache!\n"); - fprintf(stderr,"Done!!!\n"); - } - - - if (pdata.aborted && pdata.args.encOnTheFly) { - if(remove(pdata.args.filename)){ - perror("Error while removing file:\n"); - return 1; - } - else{ - fprintf(stderr,"SIGABRT received,file %s removed\n", - pdata.args.filename); - return 0; - } - } - else - fprintf(stderr,"Goodbye!\n"); - - - CleanUp(); - } - } - - return exit_status; -} - - - - - - - - - - - - - - - Copied: trunk/recordmydesktop/src/rmd.c (from rev 546, trunk/recordmydesktop/src/recordmydesktop.c) =================================================================== --- trunk/recordmydesktop/src/rmd.c (rev 0) +++ trunk/recordmydesktop/src/rmd.c 2008-09-16 05:47:37 UTC (rev 547) @@ -0,0 +1,197 @@ +/****************************************************************************** +* recordMyDesktop * +******************************************************************************* +* * +* Copyright (C) 2006,2007,2008 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 joh...@gm... * +******************************************************************************/ + +#include "config.h" + +#include "rmd_types.h" + +#include "rmd_encode_cache.h" +#include "rmd_initialize_data.h" +#include "rmd_parseargs.h" +#include "rmd_queryextensions.h" +#include "rmd_cache.h" +#include "rmd_error.h" +#include "rmd_threads.h" +#include "rmd_setbrwindow.h" +#include "rmd_shortcuts.h" +#include "rmd_wm_check.h" + + +int main(int argc,char **argv){ + ProgData pdata; + int exit_status = 0; + + SetupDefaultArgs(&pdata.args); + + if (!ParseArgs(argc, argv, &pdata.args)) { + exit(1); + } + if(XInitThreads ()==0){ + fprintf(stderr,"Couldn't initialize thread support!\n"); + exit(7); + } + if(pdata.args.display!=NULL){ + pdata.dpy = XOpenDisplay(pdata.args.display); + XSetErrorHandler(rmdErrorHandler); + } + else{ + fprintf(stderr,"No display specified for connection!\n"); + exit(8); + } + if (pdata.dpy == NULL) { + fprintf(stderr, "Cannot connect to X server %s\n",pdata.args.display); + exit(9); + } + else{ + EncData enc_data; + CacheData cache_data; +#ifdef HAVE_JACK_H + JackData jdata; + + // Give jack access to program data, mainly for program state + jdata.pdata = &pdata; + pdata.jdata = &jdata; +#endif + + // Query display specs + pdata.specs.screen = DefaultScreen(pdata.dpy); + pdata.specs.width = DisplayWidth(pdata.dpy, pdata.specs.screen); + pdata.specs.height = DisplayHeight(pdata.dpy, pdata.specs.screen); + pdata.specs.root = RootWindow(pdata.dpy, pdata.specs.screen); + pdata.specs.visual = DefaultVisual(pdata.dpy, pdata.specs.screen); + pdata.specs.gc = DefaultGC(pdata.dpy, pdata.specs.screen); + pdata.specs.depth = DefaultDepth(pdata.dpy, pdata.specs.screen); + pdata.specs.bpixel = XBlackPixel(pdata.dpy, pdata.specs.screen); + pdata.specs.wpixel = XWhitePixel(pdata.dpy, pdata.specs.screen); + + if((pdata.specs.depth!=32)&& + (pdata.specs.depth!=24)&& + (pdata.specs.depth!=16)){ + fprintf(stderr,"Only 32bpp,24bpp and 16bpp" + " color depth modes are currently supported.\n"); + exit(10); + } + if(SetBRWindow(pdata.dpy,&pdata.brwin,&pdata.specs,&pdata.args)) + exit(11); + + //check if we are under compiz or beryl, + //in which case we must enable full-shots + //and with it use of shared memory.User can override this + pdata.window_manager=((pdata.args.nowmcheck)? + NULL:rmdWMCheck(pdata.dpy,pdata.specs.root)); + if(pdata.window_manager==NULL){ + fprintf(stderr,"Not taking window manager into account.\n"); + } + //Right now only wm's that I know of performing + //3d compositing are beryl and compiz. + //No, the blue screen in metacity doesn't count :) + //names can be compiz for compiz and beryl/beryl-co/beryl-core + //for beryl(so it's strncmp ) + else if(!strcmp(pdata.window_manager,"compiz") || + !strncmp(pdata.window_manager,"beryl",5)){ + fprintf(stderr,"\nDetected 3d compositing window manager.\n" + "Reverting to full screen capture at every frame.\n" + "To disable this check run with --no-wm-check\n" + "(though that is not advised, since it will " + "probably produce faulty results).\n\n"); + pdata.args.full_shots=1; + pdata.args.noshared=0; + } + + QueryExtensions(pdata.dpy, + &pdata.args, + &pdata.damage_event, + &pdata.damage_error, + &pdata.shm_opcode); + + + if((exit_status=InitializeData(&pdata,&enc_data,&cache_data))==0){ + + if(!strcmp(pdata.args.pause_shortcut, + pdata.args.stop_shortcut)|| + RegisterShortcut(pdata.dpy, + pdata.specs.root, + pdata.args.pause_shortcut, + &(pdata.pause_key)) || + RegisterShortcut(pdata.dpy, + pdata.specs.root, + pdata.args.stop_shortcut, + &(pdata.stop_key))){ + + fprintf(stderr,"Invalid shortcut," + " or shortcuts are the same!\n\n" + "Using defaults.\n"); + + RegisterShortcut(pdata.dpy, + pdata.specs.root, + "Control+Mod1+p", + &(pdata.pause_key)); + RegisterShortcut(pdata.dpy, + pdata.specs.root, + "Control+Mod1+s", + &(pdata.stop_key)); + } + + //this is where the capturing happens. + rmdThreads(&pdata); + + XCloseDisplay(pdata.dpy); + fprintf(stderr,".\n"); + + //encode and then cleanup cache + if(!pdata.args.encOnTheFly && !pdata.args.no_encode){ + if (!pdata.aborted) { + EncodeCache(&pdata); + } + fprintf(stderr,"Cleanning up cache...\n"); + if(PurgeCache(pdata.cache_data,!pdata.args.nosound)) + fprintf(stderr,"Some error occured " + "while cleaning up cache!\n"); + fprintf(stderr,"Done!!!\n"); + } + + + if (pdata.aborted && pdata.args.encOnTheFly) { + if(remove(pdata.args.filename)){ + perror("Error while removing file:\n"); + return 1; + } + else{ + fprintf(stderr,"SIGABRT received,file %s removed\n", + pdata.args.filename); + return 0; + } + } + else + fprintf(stderr,"Goodbye!\n"); + + + CleanUp(); + } + } + + return exit_status; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-09-18 11:59:50
|
Revision: 560 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=560&view=rev Author: enselic Date: 2008-09-18 18:59:47 +0000 (Thu, 18 Sep 2008) Log Message: ----------- src/rmd_parseargs.c doc/recordmydesktop.1: Make options consistently have GNU-style, i.e. --this instead of -this. We're still backwards compatible with old options, but they are undocumented. Modified Paths: -------------- trunk/recordmydesktop/doc/recordmydesktop.1 trunk/recordmydesktop/src/rmd_parseargs.c Modified: trunk/recordmydesktop/doc/recordmydesktop.1 =================================================================== --- trunk/recordmydesktop/doc/recordmydesktop.1 2008-09-18 13:16:18 UTC (rev 559) +++ trunk/recordmydesktop/doc/recordmydesktop.1 2008-09-18 18:59:47 UTC (rev 560) @@ -58,10 +58,10 @@ .br See .B -\-pause\-shortcut +\-\-pause\-shortcut and .B -\-stop\-shortcut +\-\-stop\-shortcut , on the .B Misc. @@ -99,7 +99,7 @@ To specify a region for recording you can type this: .br .B -~$ recordmydesktop \-x X_pos \-y Y_pos \-width WIDTH \-height HEIGHT \-o foo.ogv +~$ recordmydesktop \-x X_pos \-y Y_pos \-\-width WIDTH \-\-height HEIGHT \-o foo.ogv .br where X_pos and Y_pos specify the offset in pixels from the upper left .br @@ -201,12 +201,12 @@ .br .TP .B - \-windowid id_of_window + \-\-windowid id_of_window id of window to be recorded. .br .TP .B - \-display DISPLAY + \-\-display DISPLAY Display to connect to. .br .TP @@ -221,12 +221,12 @@ .br .TP .B - \-width N + \-\-width N Width of recorded window. .br .TP .B - \-height N + \-\-height N Height of recorded window. .br .TP @@ -235,7 +235,7 @@ .br .TP .B - \-dummy\-cursor color + \-\-dummy\-cursor color Draw a dummy cursor, instead of the normal one.Value of color can be "black" or "white". .br .TP @@ -270,7 +270,7 @@ .br .TP .B - \-fps N(number>0.0) + \-\-fps N(number>0.0) A positive number denoting desired framerate. .br .br @@ -280,22 +280,22 @@ .br .TP .B - \-channels N(number>0) + \-\-channels N(number>0) A positive number denoting desired sound channels in recording. .br .TP .B - \-freq N(number>0) + \-\-freq N(number>0) A positive number denoting desired sound frequency. .br .TP .B - \-buffer\-size N(number>0) + \-\-buffer\-size N(number>0) A positive number denoting the desired sound buffer size(in frames, when using ALSA or OSS). .br .TP .B - \-ring\-buffer\-size N(float number>0) + \-\-ring\-buffer\-size N(float number>0) A float number denoting the desired ring buffer size (in seconds,when using JACK only). The overall size of the buffer in bytes will be: ring_buffer_size * samplerate * number_of_ports * sizeof(jack_default_audio_sample_t), @@ -303,12 +303,12 @@ .br .TP .B - \-device SOUND_DEVICE + \-\-device SOUND_DEVICE Sound device(default hw:0,0 or /dev/dsp, depending on whether ALSA or OSS is used). .br .TP .B - \-use\-jack port1 port2... portn + \-\-use\-jack port1 port2... portn Record audio from the specified list of .B space-separated @@ -332,17 +332,17 @@ .br .TP .B - \-v_quality n + \-\-v_quality n A number from 0 to 63 for desired encoded video quality(default 63). .br .TP .B - \-v_bitrate n + \-\-v_bitrate n A number from 45000 to 2000000 for desired encoded video bitrate(default 45000). .br .TP .B - \-s_quality n + \-\-s_quality n Desired audio quality(\-1 to 10). .br .PP @@ -352,7 +352,7 @@ .br .TP .B - \-rescue path_to_data + \-\-rescue path_to_data Encode cache data from a previous session, into an Ogg/Theora+Vorbis file. The filename will be the one that was chosen initially. Any other option specified with this one will be implicitly ignored @@ -387,7 +387,7 @@ .br .TP .B - \-pause\-shortcut MOD+KEY + \-\-pause\-shortcut MOD+KEY Shortcut that will be used for pausing or unpausing the recording. MOD can be any combination of the following modifier keys: Control, Shift and Mod1 to Mod5. The modifiers can be separated @@ -403,7 +403,7 @@ .br .TP .B - \-stop\-shortcut MOD+KEY + \-\-stop\-shortcut MOD+KEY Shortcut that will be used to stop the recording. For more, see \-pause\-shortcut above. Default is Control+Mod1+s. @@ -415,12 +415,12 @@ .br .TP .B - \-workdir DIR + \-\-workdir DIR Location where a temporary directory will be created to hold project files(default /tmp). .br .TP .B - \-delay n[H|h|M|m] + \-\-delay n[H|h|M|m] Number of secs(default),minutes or hours before capture starts(number can be float). .br .TP @@ -460,9 +460,9 @@ .br .SH NOTES .br - Recording a window using the \-windowid option, doesn't track the window itself, but the region that it covers. + Recording a window using the \-\-windowid option, doesn't track the window itself, but the region that it covers. .br -Also when using that option the \-x,\-y,\-width and \-height options are relative to the specified window area. +Also when using that option the \-x,\-y,\-\-width and \-\-height options are relative to the specified window area. .br An easy way to find out the id of a window, is by using the .B @@ -479,7 +479,7 @@ More conviniently you can put all that in the command that launches recordMyDesktop like this: .br .B -~$recordmydesktop \-windowid $(xwininfo | awk \'/Window id:/ {print $4}\') +~$recordmydesktop \-\-windowid $(xwininfo | awk \'/Window id:/ {print $4}\') .br .br Also, the lower quality you select on a video recording ( Modified: trunk/recordmydesktop/src/rmd_parseargs.c =================================================================== --- trunk/recordmydesktop/src/rmd_parseargs.c 2008-09-18 13:16:18 UTC (rev 559) +++ trunk/recordmydesktop/src/rmd_parseargs.c 2008-09-18 18:59:47 UTC (rev 560) @@ -47,6 +47,10 @@ fprintf(stderr,"\n\n"); } +/** + * Still has backwards compatible options like -this, but --this is + * what is documented. + */ boolean ParseArgs(int argc, char **argv, ProgArgs *arg_return) { int i; char *usage="\nUsage:\n" @@ -59,14 +63,14 @@ "selected during compilation and exit.\n\n" "Image Options:\n" - "\t-windowid id_of_window\tid of window to be recorded.\n" - "\t-display DISPLAY\tDisplay to connect to.\n" + "\t--windowid id_of_window\tid of window to be recorded.\n" + "\t--display DISPLAY\tDisplay to connect to.\n" "\t-x X\t\t\tOffset in x direction.\n" "\t-y Y\t\t\tOffset in y direction.\n" - "\t-width N\t\tWidth of recorded window.\n" - "\t-height N\t\tHeight of recorded window.\n\n" + "\t--width N\t\tWidth of recorded window.\n" + "\t--height N\t\tHeight of recorded window.\n\n" - "\t-dummy-cursor color\tColor of the dummy cursor [black|white]\n" + "\t--dummy-cursor color\tColor of the dummy cursor [black|white]\n" "\t--no-cursor\t\tDisable drawing of the cursor.\n" "\t--no-shared\t\tDisable usage of" " MIT-shared memory extension(Not Recommended!).\n" @@ -75,50 +79,50 @@ "\t--quick-subsampling\tDo subsampling" " of the chroma planes by discarding,not averaging.\n" - "\t-fps N(number>0.0)\tA positive number denoting desired framerate.\n\n" + "\t--fps N(number>0.0)\tA positive number denoting desired framerate.\n\n" "Sound Options:\n" - "\t-channels N\t\t\tA positive number denoting" + "\t--channels N\t\t\tA positive number denoting" " desired sound channels in recording.\n" - "\t-freq N\t\t\t\tA positive number denoting desired sound frequency.\n" - "\t-buffer-size N\t\t\tA positive number denoting the desired" + "\t--freq N\t\t\t\tA positive number denoting desired sound frequency.\n" + "\t--buffer-size N\t\t\tA positive number denoting the desired" " sound buffer size (in frames,when using ALSA or OSS)\n" - "\t-ring-buffer-size N\t\tA float number denoting the desired" + "\t--ring-buffer-size N\t\tA float number denoting the desired" " ring buffer size (in seconds,when using JACK only).\n" - "\t-device SOUND_DEVICE\t\tSound device(default " + "\t--device SOUND_DEVICE\t\tSound device(default " DEFAULT_AUDIO_DEVICE ").\n" - "\t-use-jack port1 port2... portn\tRecord audio from the specified\n" + "\t--use-jack port1 port2... portn\tRecord audio from the specified\n" "\t\t\t\t\tlist of space-separated jack ports.\n" "\t--no-sound\t\t\tDo not record sound.\n\n" "Encoding Options\n" "\t--on-the-fly-encoding\tEncode the audio-video data, while recording.\n" - "\t-v_quality n\t\tA number from 0 to 63 for" + "\t--v_quality n\t\tA number from 0 to 63 for" " desired encoded video quality(default 63).\n" - "\t-v_bitrate n\t\tA number from 45000 to 2000000" + "\t--v_bitrate n\t\tA number from 45000 to 2000000" " for desired encoded video bitrate(default 45000).\n" - "\t-s_quality n\t\tDesired audio quality(-1 to 10).\n\n" + "\t--s_quality n\t\tDesired audio quality(-1 to 10).\n\n" "Misc Options:\n" - "\t-rescue path_to_data\tEncode data from a previous, crashed, session.\n" + "\t--rescue path_to_data\tEncode data from a previous, crashed, session.\n" "\t--no-wm-check\t\tDo not try to detect" " the window manager(and set options according to it)\n" - "\t-pause-shortcut MOD+KEY\tShortcut that will be used for (un)pausing" + "\t--pause-shortcut MOD+KEY\tShortcut that will be used for (un)pausing" "(default Control+Mod1+p).\n" - "\t-stop-shortcut MOD+KEY\tShortcut that will be used to stop the " + "\t--stop-shortcut MOD+KEY\tShortcut that will be used to stop the " "recording (default Control+Mod1+s).\n" "\t--compress-cache\tImage data are cached with light compression.\n" - "\t-workdir DIR\t\tLocation where a temporary directory" + "\t--workdir DIR\t\tLocation where a temporary directory" " will be created to hold project files(default $HOME).\n" - "\t-delay n[H|h|M|m]\tNumber of secs(default),minutes or hours" + "\t--delay n[H|h|M|m]\tNumber of secs(default),minutes or hours" " before capture starts(number can be float)\n" "\t--overwrite\t\tIf there is already a file with the same name," @@ -138,7 +142,8 @@ } } for(i=1;i<argc;i++){ - if(!strcmp(argv[i],"-delay")){ + if (strcmp(argv[i], "--delay") == 0 || + strcmp(argv[i], "-delay") == 0) { if(i+1<argc){ float num=atof(argv[i+1]); if(num>0.0){ @@ -156,37 +161,39 @@ arg_return->delay=(int)num; } else{ - fprintf(stderr,"Argument Usage: -delay n[H|h|M|m]\n" + fprintf(stderr,"Argument Usage: --delay n[H|h|M|m]\n" "where n is a float number\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -delay n[H|h|M|m]\n" + fprintf(stderr,"Argument Usage: --delay n[H|h|M|m]\n" "where n is a float number\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-windowid")){ + else if (strcmp(argv[i], "--windowid") == 0 || + strcmp(argv[i], "-windowid") == 0) { if(i+1<argc){ Window num=strtod(argv[i+1],NULL); if(num>0) arg_return->windowid=num; else{ fprintf(stderr,"Argument Usage:" - " -windowid id_of_window(number)\n"); + " --windowid id_of_window(number)\n"); return FALSE; } } else{ fprintf(stderr,"Argument Usage:" - " -windowid id_of_window(number)\n"); + " --windowid id_of_window(number)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-display")){ + else if (strcmp(argv[i], "--display") == 0 || + strcmp(argv[i], "-display") == 0) { if(i+1<argc){ if(arg_return->display!=NULL) free(arg_return->display); @@ -194,7 +201,7 @@ strcpy(arg_return->display,argv[i+1]); } else{ - fprintf(stderr,"Argument Usage: -display DISPLAY\n"); + fprintf(stderr,"Argument Usage: --display DISPLAY\n"); return FALSE; } i++; @@ -231,34 +238,36 @@ } i++; } - else if(!strcmp(argv[i],"-width")){ + else if (strcmp(argv[i], "--width") == 0 || + strcmp(argv[i], "-width") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if(num>0) arg_return->width=num; else{ - fprintf(stderr,"Argument Usage: -width N(number>0)\n"); + fprintf(stderr,"Argument Usage: --width N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -width N(number>0)\n"); + fprintf(stderr,"Argument Usage: --width N(number>0)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-height")){ + else if (strcmp(argv[i], "--height") == 0 || + strcmp(argv[i], "-height") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if(num>0) arg_return->height=num; else{ - fprintf(stderr,"Argument Usage: -height N(number>0)\n"); + fprintf(stderr,"Argument Usage: --height N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -height N(number>0)\n"); + fprintf(stderr,"Argument Usage: --height N(number>0)\n"); return FALSE; } i++; @@ -275,59 +284,63 @@ } i++; } - else if(!strcmp(argv[i],"-fps")){ + else if (strcmp(argv[i], "--fps") == 0 || + strcmp(argv[i], "-fps") == 0) { if(i+1<argc){ float num=atof(argv[i+1]); if(num>0.0) arg_return->fps=num; else{ - fprintf(stderr,"Argument Usage: -fps N(number>0)\n"); + fprintf(stderr,"Argument Usage: --fps N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -fps N(number>0)\n"); + fprintf(stderr,"Argument Usage: --fps N(number>0)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-v_quality")){ + else if (strcmp(argv[i], "--v_quality") == 0 || + strcmp(argv[i], "-v_quality") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if((num>=0)&&(num<64)) arg_return->v_quality=num; else{ fprintf(stderr,"Argument Usage:" - " -v_quality n(number 0-63)\n"); + " --v_quality n(number 0-63)\n"); return FALSE; } } else{ fprintf(stderr,"Argument Usage:" - " -v_quality n(number 0-63)\n"); + " --v_quality n(number 0-63)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-v_bitrate")){ + else if (strcmp(argv[i], "--v_bitrate") == 0 || + strcmp(argv[i], "-v_bitrate") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if((num>=45000)&&(num<=2000000)) arg_return->v_bitrate=num; else{ fprintf(stderr,"Argument Usage:" - " -v_bitrate n(number 45000-2000000)\n"); + " --v_bitrate n(number 45000-2000000)\n"); return FALSE; } } else{ fprintf(stderr,"Argument Usage:" - " -v_bitrate n(number 45000-2000000)\n"); + " --v_bitrate n(number 45000-2000000)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-dummy-cursor")){ + else if (strcmp(argv[i], "--dummy-cursor") == 0 || + strcmp(argv[i], "-dummy-cursor") == 0) { if(i+1<argc){ if(!strcmp(argv[i+1],"white")) arg_return->cursor_color=0; @@ -335,7 +348,7 @@ arg_return->cursor_color=1; else{ fprintf(stderr,"Argument Usage:" - " -dummy-cursor [black|white]\n"); + " --dummy-cursor [black|white]\n"); return FALSE; } arg_return->have_dummy_cursor=1; @@ -343,64 +356,68 @@ } else{ fprintf(stderr,"Argument Usage:" - " -dummy-cursor [black|white]\n"); + " --dummy-cursor [black|white]\n"); return FALSE; } i++; } else if(!strcmp(argv[i],"--no-cursor")) arg_return->xfixes_cursor=0; - else if(!strcmp(argv[i],"-freq")){ + else if (strcmp(argv[i], "--freq") == 0 || + strcmp(argv[i], "-freq") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if(num>0) arg_return->frequency=num; else{ - fprintf(stderr,"Argument Usage: -freq N(number>0)\n"); + fprintf(stderr,"Argument Usage: --freq N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -freq N(number>0)\n"); + fprintf(stderr,"Argument Usage: --freq N(number>0)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-channels")){ + else if (strcmp(argv[i], "--channels") == 0 || + strcmp(argv[i], "-channels") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if(num>0) arg_return->channels=num; else{ - fprintf(stderr,"Argument Usage: -channels N(number>0)\n"); + fprintf(stderr,"Argument Usage: --channels N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -channels N(number>0)\n"); + fprintf(stderr,"Argument Usage: --channels N(number>0)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-s_quality")){ + else if (strcmp(argv[i], "--s_quality") == 0 || + strcmp(argv[i], "-s_quality") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if((num>=-1)&&(num<=10)) arg_return->s_quality=num; else{ fprintf(stderr,"Argument Usage:" - " -s_quality n(number -1 to 10)\n"); + " --s_quality n(number -1 to 10)\n"); return FALSE; } } else{ fprintf(stderr,"Argument Usage:" - " -s_quality n(number -1 to 10)\n"); + " --s_quality n(number -1 to 10)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-device")){ + else if (strcmp(argv[i], "--device") == 0 || + strcmp(argv[i], "-device") == 0) { if(i+1<argc){ free(arg_return->device); arg_return->device=malloc(strlen(argv[i+1])+1); @@ -412,60 +429,65 @@ } i++; } - else if(!strcmp(argv[i],"-workdir")){ + else if (strcmp(argv[i], "--workdir") == 0 || + strcmp(argv[i], "-workdir") == 0) { if(i+1<argc){ free(arg_return->workdir); arg_return->workdir=malloc(strlen(argv[i+1])+1); strcpy(arg_return->workdir,argv[i+1]); } else{ - fprintf(stderr,"Argument Usage: -workdir DIR\n"); + fprintf(stderr,"Argument Usage: --workdir DIR\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-pause-shortcut")){ + else if (strcmp(argv[i], "--pause-shortcut") == 0 || + strcmp(argv[i], "-pause-shortcut") == 0) { if(i+1<argc){ free(arg_return->pause_shortcut); arg_return->pause_shortcut=malloc(strlen(argv[i+1])+1); strcpy(arg_return->pause_shortcut,argv[i+1]); } else{ - fprintf(stderr,"Argument Usage: -pause-shortcut MOD+KEY\n"); + fprintf(stderr,"Argument Usage: --pause-shortcut MOD+KEY\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-stop-shortcut")){ + else if (strcmp(argv[i], "--stop-shortcut") == 0 || + strcmp(argv[i], "-stop-shortcut") == 0) { if(i+1<argc){ free(arg_return->stop_shortcut); arg_return->stop_shortcut=malloc(strlen(argv[i+1])+1); strcpy(arg_return->stop_shortcut,argv[i+1]); } else{ - fprintf(stderr,"Argument Usage: -stop-shortcut MOD+KEY\n"); + fprintf(stderr,"Argument Usage: --stop-shortcut MOD+KEY\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-buffer-size")){ + else if (strcmp(argv[i], "--buffer-size") == 0 || + strcmp(argv[i], "-buffer-size") == 0) { if(i+1<argc){ int num=atoi(argv[i+1]); if(num>0) arg_return->buffsize=num; else{ fprintf(stderr,"Argument Usage:" - " -buffer-size N(number>0)\n"); + " --buffer-size N(number>0)\n"); return FALSE; } } else{ - fprintf(stderr,"Argument Usage: -buffer-size N(number>0)\n"); + fprintf(stderr,"Argument Usage: --buffer-size N(number>0)\n"); return FALSE; } i++; } - else if(!strcmp(argv[i],"-use-jack")){ + else if (strcmp(argv[i], "--use-jack") == 0 || + strcmp(argv[i], "-use-jack") == 0) { if(i+1<argc){ #ifdef HAVE_JACK_H int k=i+1; @@ -487,7 +509,7 @@ arg_return->use_jack=1; } else{ - fprintf(stderr,"Argument Usage: -use-jack port1" + fprintf(stderr,"Argument Usage: --use-jack port1" " port2... portn\n"); return FALSE; } @@ -498,12 +520,13 @@ #endif } else{ - fprintf(stderr,"Argument Usage: -use-jack port1" + fprintf(stderr,"Argument Usage: --use-jack port1" " port2... portn\n"); return FALSE; } } - else if(!strcmp(argv[i],"-ring-buffer-size")){ + else if (strcmp(argv[i], "--ring-buffer-size") == 0 || + strcmp(argv[i], "-ring-buffer-size") == 0) { if(i+1<argc){ float num=atof(argv[i+1]); if(num>0.0) @@ -521,12 +544,13 @@ } i++; } - else if(!strcmp(argv[i],"-rescue")){ + else if (strcmp(argv[i], "--rescue") == 0 || + strcmp(argv[i], "-rescue") == 0) { if(i+1<argc){ arg_return->rescue_path = argv[i + 1]; } else{ - fprintf(stderr,"Argument Usage: -rescue path_to_data\n"); + fprintf(stderr,"Argument Usage: --rescue path_to_data\n"); return FALSE; } i++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-11-15 21:04:18
|
Revision: 569 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=569&view=rev Author: iovar Date: 2008-11-15 21:04:13 +0000 (Sat, 15 Nov 2008) Log Message: ----------- configure.ac, doc/recordmydesktop.1, src/rmd.c, src/rmd_cache_audio.c, src/rmd_encode_sound_buffer.c, src/rmd_initialize_data.c, src/rmd_jack.c, src/rmd_jack.h, src/rmd_parseargs.c, src/rmd_threads.c, src/rmd_types.h: Changed the way Jack support is offered, from dlopening at runtime to normal linking at compilation. Modified Paths: -------------- trunk/recordmydesktop/configure.ac trunk/recordmydesktop/doc/recordmydesktop.1 trunk/recordmydesktop/src/rmd.c trunk/recordmydesktop/src/rmd_cache_audio.c trunk/recordmydesktop/src/rmd_encode_sound_buffer.c trunk/recordmydesktop/src/rmd_initialize_data.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_jack.h trunk/recordmydesktop/src/rmd_parseargs.c trunk/recordmydesktop/src/rmd_threads.c trunk/recordmydesktop/src/rmd_types.h Modified: trunk/recordmydesktop/configure.ac =================================================================== --- trunk/recordmydesktop/configure.ac 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/configure.ac 2008-11-15 21:04:13 UTC (rev 569) @@ -60,12 +60,7 @@ fi AC_CHECK_HEADER([sys/soundcard.h]) -AC_CHECK_HEADER([dlfcn.h],[dlfcn_header=true]) -if test x$jack = xtrue && test x$dlfcn_header = xtrue; then -AC_CHECK_HEADER([jack/jack.h], - jack_headers_present=true) -fi AC_CHECK_HEADERS([sys/time.h unistd.h vorbis/vorbisfile.h fcntl.h]) @@ -99,6 +94,11 @@ AC_CHECK_LIB([pthread],[pthread_mutex_lock],, AC_MSG_ERROR([Can't find libpthread])) +if test x$jack = xtrue ; then +AC_CHECK_LIB([jack],[jack_activate],, + jack_lib_found=false) +fi + if test x$oss = xfalse; then AC_CHECK_LIB([asound],[snd_pcm_drain],, audio_backend="OSS") @@ -106,23 +106,6 @@ audio_backend="OSS" fi -if test x$jack_headers_present = xtrue; then - case "$host_os" in - *bsd*) - AC_CHECK_LIB([c], [dlopen],,libdl_np=true) - ;; - *) - AC_CHECK_LIB([dl],[dlopen],,libdl_np=true) - ;; - esac - - if test x$libdl_np != xtrue; then - AC_DEFINE([HAVE_JACK_H],1, - define to 1 if <jack/jack.h> exists) - fi -fi - - # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. @@ -137,7 +120,8 @@ if test x$audio_backend != xOSS; then audio_backend="ALSA" fi -if test x$jack_headers_present = xtrue && test x$libdl_np != xtrue; then +if test x$jack_lib_found != xfalse ; then +# AC_DEFINE([HAVE_JACK_H],1,define to 1 if libjack is found) , jack_support="Enabled" else jack_support="Disabled" Modified: trunk/recordmydesktop/doc/recordmydesktop.1 =================================================================== --- trunk/recordmydesktop/doc/recordmydesktop.1 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/doc/recordmydesktop.1 2008-11-15 21:04:13 UTC (rev 569) @@ -165,7 +165,10 @@ .br 13 Cannot open file for writting. .br -14 Cannot load the Jack library (dlopen/dlsym error on libjack.so). +14 Cannot load the Jack library ( +.B +UNUSED SINCE 0.3.8 +). .br 15 Cannot create new client. .br Modified: trunk/recordmydesktop/src/rmd.c =================================================================== --- trunk/recordmydesktop/src/rmd.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd.c 2008-11-15 21:04:13 UTC (rev 569) @@ -72,7 +72,7 @@ else{ EncData enc_data; CacheData cache_data; -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK JackData jdata; // Give jack access to program data, mainly for program state Modified: trunk/recordmydesktop/src/rmd_cache_audio.c =================================================================== --- trunk/recordmydesktop/src/rmd_cache_audio.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_cache_audio.c 2008-11-15 21:04:13 UTC (rev 569) @@ -39,7 +39,7 @@ //It's sound is tiny compared to that of image, so //compressing would reducethe overall size by only an //insignificant fraction. -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK void *jackbuf=NULL; if(pdata->args.use_jack){ jackbuf=malloc(pdata->sound_framesize*pdata->jdata->buffersize); @@ -76,10 +76,10 @@ free(buff); } else{ -#ifdef HAVE_JACK_H - if((*jack_ringbuffer_read_space_p)(pdata->jdata->sound_buffer)>= +#ifdef HAVE_LIBJACK + if((*jack_ringbuffer_read_space)(pdata->jdata->sound_buffer)>= (pdata->sound_framesize*pdata->jdata->buffersize)){ - (*jack_ringbuffer_read_p)(pdata->jdata->sound_buffer, + (*jack_ringbuffer_read)(pdata->jdata->sound_buffer, jackbuf, (pdata->sound_framesize* pdata->jdata->buffersize)); Modified: trunk/recordmydesktop/src/rmd_encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/rmd_encode_sound_buffer.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_encode_sound_buffer.c 2008-11-15 21:04:13 UTC (rev 569) @@ -36,7 +36,7 @@ void *EncodeSoundBuffer(ProgData *pdata){ int sampread=pdata->periodsize; -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK void *jackbuf=NULL; if(pdata->args.use_jack){ jackbuf=malloc(pdata->sound_framesize*pdata->jdata->buffersize); @@ -85,10 +85,10 @@ free(buff); } else{ -#ifdef HAVE_JACK_H - if((*jack_ringbuffer_read_space_p)(pdata->jdata->sound_buffer)>= +#ifdef HAVE_LIBJACK + if((*jack_ringbuffer_read_space)(pdata->jdata->sound_buffer)>= (pdata->sound_framesize*pdata->jdata->buffersize)){ - (*jack_ringbuffer_read_p)(pdata->jdata->sound_buffer, + (*jack_ringbuffer_read)(pdata->jdata->sound_buffer, jackbuf, (pdata->sound_framesize* pdata->jdata->buffersize)); Modified: trunk/recordmydesktop/src/rmd_initialize_data.c =================================================================== --- trunk/recordmydesktop/src/rmd_initialize_data.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_initialize_data.c 2008-11-15 21:04:13 UTC (rev 569) @@ -138,7 +138,7 @@ } } else{ -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK int jack_error=0; pdata->jdata->port_names=pdata->args.jack_port_names; pdata->jdata->nports=pdata->args.jack_nports; Modified: trunk/recordmydesktop/src/rmd_jack.c =================================================================== --- trunk/recordmydesktop/src/rmd_jack.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_jack.c 2008-11-15 21:04:13 UTC (rev 569) @@ -33,56 +33,10 @@ #include "rmd_jack.h" -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK -#define CHECK_DLERRORS_FATAL(__error_p)\ - if((__error_p=dlerror())!=NULL){\ - fprintf(stderr,"%s\n",__error_p);\ - return 1;\ - } - -#define DLSYM_AND_CHECK(lib_handle,__call_name__,__error_p)\ - __call_name__##_p=dlsym(lib_handle,#__call_name__);\ - CHECK_DLERRORS_FATAL(__error_p) - - /** -* -* Fuction Pointers To Jack API Calls (shouldn't a jack header provide these?) -* -*/ -jack_client_t *(*jack_client_new_p)(const char *client_name); -jack_nframes_t (*jack_get_sample_rate_p)(jack_client_t * client); -int (*jack_set_buffer_size_p)(jack_client_t *client, jack_nframes_t nframes); -jack_nframes_t (*jack_get_buffer_size_p)(jack_client_t *client); -int (*jack_set_process_callback_p)(jack_client_t *client, - JackProcessCallback process_callback, - void *arg); -void (*jack_on_shutdown_p)(jack_client_t *client, - void(*function)(void *arg), - void *arg); -int (*jack_activate_p)(jack_client_t *client); -int (*jack_client_close_p)(jack_client_t *client); -void *(*jack_port_get_buffer_p)(jack_port_t *port,jack_nframes_t); -jack_port_t *(*jack_port_register_p)(jack_client_t *client, - const char *port_name, - const char *port_type, - unsigned long flags, - unsigned long buffer_size); -int (*jack_connect_p)(jack_client_t *client, - const char *source_port, - const char *destination_port); -const char *(*jack_port_name_p)(const jack_port_t *port); -int (*jack_port_name_size_p)(void); -jack_ringbuffer_t *(*jack_ringbuffer_create_p)(size_t sz); -void (*jack_ringbuffer_free_p)(jack_ringbuffer_t *rb); -size_t (*jack_ringbuffer_write_p)(jack_ringbuffer_t *rb, - const char *src, - size_t cnt); - - -/** * Callback for capture through jack * * \param nframes Number of frames captured @@ -101,12 +55,12 @@ } for(i= 0;i<jdata->nports;i++) - jdata->portbuf[i]=jack_port_get_buffer_p(jdata->ports[i],nframes); + jdata->portbuf[i]=jack_port_get_buffer(jdata->ports[i],nframes); //vorbis analysis buffer wants uninterleaved data //so we are simply placing the buffers for every channel //sequentially on the ringbuffer for(i=0;i<jdata->nports;i++) - (*jack_ringbuffer_write_p)(jdata->sound_buffer, + (*jack_ringbuffer_write)(jdata->sound_buffer, (void *)(jdata->portbuf[i]), nframes* sizeof(jack_default_audio_sample_t)); @@ -148,7 +102,7 @@ strcpy(name,"input_"); snprintf( num, 8, "%d", i+1 ); strcat(name,num); - if((jdata->ports[i]=jack_port_register_p(jdata->client, + if((jdata->ports[i]=jack_port_register(jdata->client, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, @@ -156,11 +110,11 @@ fprintf(stderr,"Cannot register input port \"%s\"!\n",name); return 1; } - if(jack_connect_p(jdata->client, + if(jack_connect(jdata->client, jdata->port_names[i], - jack_port_name_p(jdata->ports[i]))){ + jack_port_name(jdata->ports[i]))){ fprintf(stderr,"Cannot connect input port %s to %s\n", - jack_port_name_p(jdata->ports[i]), + jack_port_name(jdata->ports[i]), jdata->port_names[i]); return 1; } @@ -168,46 +122,6 @@ return 0; } -/** -* dlopen libjack and dlsym all needed functions -* -* \param jack_lib_handle Pointer to handle for jack library -* -* \returns 0 on Success, 1 on failure -*/ -static int LoadJackLib(void *jack_lib_handle) { - char *error; - jack_lib_handle=dlopen("libjack.so",RTLD_LAZY); - if(!jack_lib_handle){ - fprintf(stderr,"%s\n",dlerror()); - return 1; - } - if((error=dlerror())!=NULL){ - fprintf(stderr,"%s\n",dlerror()); - } -//this macro will call return with status 1 on failure - DLSYM_AND_CHECK(jack_lib_handle,jack_client_new,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_get_sample_rate,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_set_buffer_size,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_get_buffer_size,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_set_process_callback,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_on_shutdown,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_activate,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_client_close,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_port_get_buffer,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_port_register,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_connect,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_port_name,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_port_name_size,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_ringbuffer_create,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_ringbuffer_free,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_ringbuffer_read,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_ringbuffer_read_space,error) - DLSYM_AND_CHECK(jack_lib_handle,jack_ringbuffer_write,error) - - return 0; -} - //in case the jack server shuts down //the program should stop recording, //encode the result(if not on the fly) @@ -236,11 +150,7 @@ snprintf( pidbuf, 8, "%d", pid ); strcat(rmd_client_name,pidbuf); - if(LoadJackLib(jdata->jack_lib_handle)){ - fprintf (stderr,"Couldn't load the Jack library (libjack.so)!\n"); - return 14; - } - if ((jdata->client=(*jack_client_new_p)(rmd_client_name))==0){ + if ((jdata->client=(*jack_client_new)(rmd_client_name))==0){ fprintf(stderr,"Could not create new client!\n" "Make sure that Jack server is running!\n"); return 15; @@ -258,23 +168,23 @@ //(it might be in some cases, but it will certainly be the cause //of unpredicted problems). A clean exit is preferable //and any recording up to that point will be encoded and saved. - jdata->frequency=jack_get_sample_rate_p(jdata->client); - jdata->buffersize=jack_get_buffer_size_p(jdata->client); + jdata->frequency=jack_get_sample_rate(jdata->client); + jdata->buffersize=jack_get_buffer_size(jdata->client); ring_buffer_size=(jdata->ringbuffer_secs* jdata->frequency* sizeof(jack_default_audio_sample_t)* jdata->nports); jdata->sound_buffer= - (*jack_ringbuffer_create_p)((int)(ring_buffer_size+0.5));//round up - jack_set_process_callback_p(jdata->client,JackCapture,jdata); - jack_on_shutdown_p(jdata->client,JackShutdown,jdata); + (*jack_ringbuffer_create)((int)(ring_buffer_size+0.5));//round up + jack_set_process_callback(jdata->client,JackCapture,jdata); + jack_on_shutdown(jdata->client,JackShutdown,jdata); - if (jack_activate_p(jdata->client)) { + if (jack_activate(jdata->client)) { fprintf(stderr,"cannot activate client!\n"); return 16; } if(SetupPorts(jdata)){ - jack_client_close_p(jdata->client); + jack_client_close(jdata->client); return 17; } @@ -284,8 +194,8 @@ int StopJackClient(JackData *jdata){ int ret=0; - (*jack_ringbuffer_free_p)(jdata->sound_buffer); - if(jack_client_close_p(jdata->client)){ + (*jack_ringbuffer_free)(jdata->sound_buffer); + if(jack_client_close(jdata->client)){ fprintf(stderr,"Cannot close Jack client!\n"); ret=1; } Modified: trunk/recordmydesktop/src/rmd_jack.h =================================================================== --- trunk/recordmydesktop/src/rmd_jack.h 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_jack.h 2008-11-15 21:04:13 UTC (rev 569) @@ -30,14 +30,10 @@ #include "rmd_types.h" -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK -size_t (*jack_ringbuffer_read_p)(jack_ringbuffer_t *rb, - char *dest, size_t cnt); -size_t (*jack_ringbuffer_read_space_p)(const jack_ringbuffer_t *rb); - /** -* Load libjack, create and activate client,register ports +* create and activate client,register ports * * \param jdata_t Pointer to JackData struct containing port * and client information Modified: trunk/recordmydesktop/src/rmd_parseargs.c =================================================================== --- trunk/recordmydesktop/src/rmd_parseargs.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_parseargs.c 2008-11-15 21:04:13 UTC (rev 569) @@ -34,7 +34,7 @@ static void PrintConfig(void) { fprintf(stderr,"\nrecordMyDesktop was compiled with" " the following options:\n\n"); -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK fprintf(stdout,"Jack\t\t\t:Enabled\n"); #else fprintf(stdout,"Jack\t\t\t:Disabled\n"); @@ -489,7 +489,7 @@ else if (strcmp(argv[i], "--use-jack") == 0 || strcmp(argv[i], "-use-jack") == 0) { if(i+1<argc){ -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK int k=i+1; arg_return->jack_nports=0; while((k<argc)&&(argv[k][0]!='-')){ Modified: trunk/recordmydesktop/src/rmd_threads.c =================================================================== --- trunk/recordmydesktop/src/rmd_threads.c 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_threads.c 2008-11-15 21:04:13 UTC (rev 569) @@ -107,7 +107,7 @@ (void *)rmdTimer, (void *)pdata); fprintf(stderr,"Capturing!\n"); -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK if(pdata->args.use_jack){ pdata->jdata->capture_started=1; } @@ -132,7 +132,7 @@ fprintf(stderr,"."); if(!pdata->args.nosound){ -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK if(pdata->args.use_jack) StopJackClient(pdata->jdata); #endif Modified: trunk/recordmydesktop/src/rmd_types.h =================================================================== --- trunk/recordmydesktop/src/rmd_types.h 2008-11-15 16:28:36 UTC (rev 568) +++ trunk/recordmydesktop/src/rmd_types.h 2008-11-15 21:04:13 UTC (rev 569) @@ -46,10 +46,9 @@ #define DEFAULT_AUDIO_DEVICE "/dev/dsp" #endif -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK #include <jack/jack.h> #include <jack/ringbuffer.h> - #include <dlfcn.h> #endif @@ -223,10 +222,9 @@ struct _SndBuffer *next; }SndBuffer; -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK typedef struct _JackData{ ProgData *pdata; //pointer to prog data - void *jack_lib_handle; //handle for jack library (loaded with dlopen). jack_client_t *client; unsigned int buffersize, //buffer size for every port in frames. frequency, //samplerate with which jack server was started. @@ -264,7 +262,7 @@ CacheData *cache_data; HotKey pause_key, //Shortcuts stop_key; -#ifdef HAVE_JACK_H +#ifdef HAVE_LIBJACK JackData *jdata; #endif /**X related info*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-12-13 17:20:32
|
Revision: 583 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=583&view=rev Author: iovar Date: 2008-12-13 17:20:24 +0000 (Sat, 13 Dec 2008) Log Message: ----------- Added missing stdio.h and errno.h headers in any files that needed them (could cause compilation failure on some platforms). Also, rearranged the sequence with which include's happen, so that any missing headers will be more likely to show up as copilation errors, in the future. rmd_yuv_utils.[ch] and rmd_block_utils.[ch] have been merged within the former, as they deal with the same subject (converting rgb buffers to yuv ones, with the only difference that rmd_block_utils had the double-buffer convertions while rmd_yuv_utils dealt with the single-buffered ones). Their headers also had the a circular dependency (rmd_yuv_utils.h included rmd_block_utils.h and vice-versa). rmd_math.[ch] was added. This file holds now the rmdRoundf function which is a portable implementation of roundf (which depends on C99). The reasoning behind the addition of these files, is that they might hold more purely mathematical functions, in the future. Modified Paths: -------------- trunk/recordmydesktop/configure.ac trunk/recordmydesktop/src/Makefile.am trunk/recordmydesktop/src/rmd.c trunk/recordmydesktop/src/rmd_cache.c trunk/recordmydesktop/src/rmd_cache.h trunk/recordmydesktop/src/rmd_cache_audio.c trunk/recordmydesktop/src/rmd_cache_frame.c trunk/recordmydesktop/src/rmd_capture_sound.c trunk/recordmydesktop/src/rmd_encode_cache.c trunk/recordmydesktop/src/rmd_encode_image_buffer.c trunk/recordmydesktop/src/rmd_encode_sound_buffer.c trunk/recordmydesktop/src/rmd_error.c trunk/recordmydesktop/src/rmd_flush_to_ogg.c trunk/recordmydesktop/src/rmd_frame.c trunk/recordmydesktop/src/rmd_get_frame.c trunk/recordmydesktop/src/rmd_getzpixmap.c trunk/recordmydesktop/src/rmd_getzpixmap.h trunk/recordmydesktop/src/rmd_init_encoder.c trunk/recordmydesktop/src/rmd_initialize_data.c trunk/recordmydesktop/src/rmd_jack.c trunk/recordmydesktop/src/rmd_load_cache.c trunk/recordmydesktop/src/rmd_macro.h trunk/recordmydesktop/src/rmd_make_dummy_pointer.c trunk/recordmydesktop/src/rmd_opendev.c trunk/recordmydesktop/src/rmd_parseargs.c trunk/recordmydesktop/src/rmd_poll_events.c trunk/recordmydesktop/src/rmd_queryextensions.c trunk/recordmydesktop/src/rmd_rectinsert.c trunk/recordmydesktop/src/rmd_register_callbacks.c trunk/recordmydesktop/src/rmd_rescue.c trunk/recordmydesktop/src/rmd_setbrwindow.c trunk/recordmydesktop/src/rmd_shortcuts.c trunk/recordmydesktop/src/rmd_specsfile.c trunk/recordmydesktop/src/rmd_threads.c trunk/recordmydesktop/src/rmd_timer.c trunk/recordmydesktop/src/rmd_types.h trunk/recordmydesktop/src/rmd_update_image.c trunk/recordmydesktop/src/rmd_update_image.h trunk/recordmydesktop/src/rmd_wm_check.c trunk/recordmydesktop/src/rmd_wm_is_compositing.c trunk/recordmydesktop/src/rmd_yuv_utils.c trunk/recordmydesktop/src/rmd_yuv_utils.h trunk/recordmydesktop/src/skeleton.h trunk/recordmydesktop/src/test-rectinsert-data.c trunk/recordmydesktop/src/test-rectinsert.c Added Paths: ----------- trunk/recordmydesktop/src/rmd_math.c trunk/recordmydesktop/src/rmd_math.h Removed Paths: ------------- trunk/recordmydesktop/src/rmd_block_utils.c trunk/recordmydesktop/src/rmd_block_utils.h Modified: trunk/recordmydesktop/configure.ac =================================================================== --- trunk/recordmydesktop/configure.ac 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/configure.ac 2008-12-13 17:20:24 UTC (rev 583) @@ -95,8 +95,7 @@ AC_MSG_ERROR([Can't find libpthread])) if test x$jack = xtrue ; then -AC_CHECK_LIB([jack],[jack_activate],, - jack_lib_found=false) +AC_CHECK_LIB([jack],[jack_activate],jack_lib_found=true,) fi if test x$oss = xfalse; then @@ -120,8 +119,7 @@ if test x$audio_backend != xOSS; then audio_backend="ALSA" fi -if test x$jack_lib_found != xfalse ; then -# AC_DEFINE([HAVE_JACK_H],1,define to 1 if libjack is found) , +if test x$jack_lib_found = xtrue ; then jack_support="Enabled" else jack_support="Disabled" Modified: trunk/recordmydesktop/src/Makefile.am =================================================================== --- trunk/recordmydesktop/src/Makefile.am 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/Makefile.am 2008-12-13 17:20:24 UTC (rev 583) @@ -2,8 +2,6 @@ recordmydesktop_SOURCES = \ rmd.c \ - rmd_block_utils.c \ - rmd_block_utils.h \ rmd_cache.c \ rmd_cache.h \ rmd_cache_audio.c \ @@ -39,6 +37,8 @@ rmd_macro.h \ rmd_make_dummy_pointer.c \ rmd_make_dummy_pointer.h \ + rmd_math.c \ + rmd_math.h \ rmd_opendev.c \ rmd_opendev.h \ rmd_parseargs.c \ Modified: trunk/recordmydesktop/src/rmd.c =================================================================== --- trunk/recordmydesktop/src/rmd.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd.c 2008-12-13 17:20:24 UTC (rev 583) @@ -26,8 +26,6 @@ #include "config.h" -#include "rmd_types.h" - #include "rmd_cache.h" #include "rmd_encode_cache.h" #include "rmd_error.h" @@ -39,8 +37,14 @@ #include "rmd_shortcuts.h" #include "rmd_threads.h" #include "rmd_wm_is_compositing.h" +#include "rmd_types.h" +#include <X11/Xlib.h> +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> + int main(int argc,char **argv){ ProgData pdata; int exit_status = 0; Deleted: trunk/recordmydesktop/src/rmd_block_utils.c =================================================================== --- trunk/recordmydesktop/src/rmd_block_utils.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_block_utils.c 2008-12-13 17:20:24 UTC (rev 583) @@ -1,37 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 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 joh...@gm... * -******************************************************************************/ - -#include "config.h" - -#include "rmd_block_utils.h" - - -// FIXME: These globals are modified in other source files! We keep -// thsee here for now. These are the cache blocks. They need to be -// accesible in the dbuf macros -u_int32_t *yblocks, - *ublocks, - *vblocks; Deleted: trunk/recordmydesktop/src/rmd_block_utils.h =================================================================== --- trunk/recordmydesktop/src/rmd_block_utils.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_block_utils.h 2008-12-13 17:20:24 UTC (rev 583) @@ -1,170 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 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 joh...@gm... * -******************************************************************************/ - -#ifndef BLOCK_UTILS_H -#define BLOCK_UTILS_H 1 - -#include "rmd_macro.h" -#include "rmd_types.h" -#include "rmd_yuv_utils.h" - - -// We keep these global for now. FIXME: Isolate them. -extern u_int32_t *yblocks, - *ublocks, - *vblocks; - -#define POINT_IN_BLOCK(xv,yv,widthv,blocksize) ((yv/blocksize)*\ - (widthv/blocksize)+\ - (xv/blocksize)) - -#define UPDATE_Y_PLANE_DBUF(data,\ - data_back,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ - *_yr=Yr,*_yg=Yg,*_yb=Yb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ - *datapi_back=(u_int##__bit_depth__##_t *)data_back;\ - for(k=0;k<height_tm;k++){\ - for(i=0;i<width_tm;i++){\ - if(*datapi!=*datapi_back){\ - t_val=*datapi;\ - *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ - _yg[__GVALUE_##__bit_depth__(t_val)] +\ - _yb[__BVALUE_##__bit_depth__(t_val)] ;\ - yblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi++;\ - datapi_back++;\ - yuv_y++;\ - }\ - yuv_y+=yuv->y_width-width_tm;\ - }\ -} - -#define UPDATE_UV_PLANES_DBUF( data,\ - data_back,\ - x_tm,\ - y_tm,\ - height_tm,\ - width_tm,\ - yuv,\ - __sampling_type,\ - __bit_depth__){ \ - int k,i;\ - register u_int##__bit_depth__##_t t_val;\ - register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ - *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ - *_vg=Vg,*_vb=Vb;\ - register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ - *datapi_next=NULL,\ - *datapi_back=(u_int##__bit_depth__##_t *)data_back,\ - *datapi_back_next=NULL;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next=datapi+width_tm;\ - datapi_back_next=datapi_back+width_tm;\ - for(k=0;k<height_tm;k+=2){\ - for(i=0;i<width_tm;i+=2){\ - if(( (*datapi!=*datapi_back) ||\ - (*(datapi+1)!=*(datapi_back+1)) ||\ - (*datapi_next!=*datapi_back_next) ||\ - (*(datapi_next+1)!=*(datapi_back_next+1)))){\ - UPDATE_A_UV_PIXEL( yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi+=2;\ - datapi_back+=2;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=2;\ - datapi_back_next+=2;\ - }\ - yuv_u++;\ - yuv_v++;\ - }\ - yuv_u+=(yuv->y_width-width_tm)/2;\ - yuv_v+=(yuv->y_width-width_tm)/2;\ - datapi+=width_tm;\ - datapi_back+=width_tm;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=width_tm;\ - datapi_back_next+=width_tm;\ - }\ - }\ - }\ - else{\ - for(k=0;k<height_tm;k+=2){\ - for(i=0;i<width_tm;i+=2){\ - if ((*datapi!=*datapi_back)){\ - UPDATE_A_UV_PIXEL( yuv_u,\ - yuv_v,\ - t_val,\ - datapi,\ - datapi_next,\ - _ur,_ug,_ubvr,_vg,_vb,\ - __sampling_type,\ - __bit_depth__)\ - ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ - }\ - datapi+=2;\ - datapi_back+=2;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=2;\ - datapi_back_next+=2;\ - }\ - yuv_u++;\ - yuv_v++;\ - }\ - yuv_u+=(yuv->y_width-width_tm)/2;\ - yuv_v+=(yuv->y_width-width_tm)/2;\ - datapi+=width_tm;\ - datapi_back+=width_tm;\ - if(__sampling_type==__PXL_AVERAGE){\ - datapi_next+=width_tm;\ - datapi_back_next+=width_tm;\ - }\ - }\ - }\ -} - - -#endif Modified: trunk/recordmydesktop/src/rmd_cache.c =================================================================== --- trunk/recordmydesktop/src/rmd_cache.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_cache.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_cache.h" -#include <sys/stat.h> - +#include "rmd_specsfile.h" #include "rmd_types.h" -#include "rmd_cache.h" +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/stat.h> -#include "rmd_specsfile.h" - /** *Construct an number postfixed name * Modified: trunk/recordmydesktop/src/rmd_cache.h =================================================================== --- trunk/recordmydesktop/src/rmd_cache.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_cache.h 2008-12-13 17:20:24 UTC (rev 583) @@ -29,7 +29,12 @@ #include "rmd_types.h" +#include <zlib.h> +#include <stdio.h> + + + /** * Change file pointer to a new file while writting * (file name is incremented with CacheFileN) Modified: trunk/recordmydesktop/src/rmd_cache_audio.c =================================================================== --- trunk/recordmydesktop/src/rmd_cache_audio.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_cache_audio.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,13 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_cache_audio.h" +#include "rmd_jack.h" +#include "rmd_types.h" + #include <pthread.h> -#include "rmd_types.h" +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> -#include "rmd_cache_audio.h" -#include "rmd_jack.h" void *CacheSoundBuffer(ProgData *pdata){ Modified: trunk/recordmydesktop/src/rmd_cache_frame.c =================================================================== --- trunk/recordmydesktop/src/rmd_cache_frame.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_cache_frame.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,17 +25,19 @@ ******************************************************************************/ #include "config.h" +#include "rmd_cache_frame.h" +#include "rmd_yuv_utils.h" +#include "rmd_cache.h" +#include "rmd_types.h" + #include <signal.h> +#include <string.h> +#include <stdio.h> +#include <errno.h> #include <math.h> -#include "rmd_types.h" -#include "rmd_block_utils.h" -#include "rmd_cache.h" -#include "rmd_cache_frame.h" - - #define BYTES_PER_MB (1024 * 1024) #define CACHE_OUT_BUFFER_SIZE (4 * 1024) #define CACHE_FILE_SIZE_LIMIT (500 * 1024 * 1024) Modified: trunk/recordmydesktop/src/rmd_capture_sound.c =================================================================== --- trunk/recordmydesktop/src/rmd_capture_sound.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_capture_sound.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_capture_sound.h" -#include <pthread.h> - -#include "rmd_types.h" - -#include "rmd_capture_sound.h" #include "rmd_jack.h" #include "rmd_opendev.h" +#include "rmd_types.h" +#include <pthread.h> +#include <string.h> +#include <errno.h> + void *CaptureSound(ProgData *pdata){ #ifdef HAVE_LIBASOUND Modified: trunk/recordmydesktop/src/rmd_encode_cache.c =================================================================== --- trunk/recordmydesktop/src/rmd_encode_cache.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_encode_cache.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,17 +25,20 @@ ******************************************************************************/ #include "config.h" +#include "rmd_encode_cache.h" -#include <pthread.h> - -#include "rmd_types.h" - -#include "rmd_encode_cache.h" #include "rmd_flush_to_ogg.h" #include "rmd_init_encoder.h" #include "rmd_load_cache.h" +#include "rmd_types.h" +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> + + + void EncodeCache(ProgData *pdata){ pthread_t flush_to_ogg_t, load_cache_t; Modified: trunk/recordmydesktop/src/rmd_encode_image_buffer.c =================================================================== --- trunk/recordmydesktop/src/rmd_encode_image_buffer.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_encode_image_buffer.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,10 +25,11 @@ ******************************************************************************/ #include "config.h" +#include "rmd_encode_image_buffer.h" #include "rmd_types.h" -#include "rmd_encode_image_buffer.h" +#include <errno.h> void *EncodeImageBuffer(ProgData *pdata){ Modified: trunk/recordmydesktop/src/rmd_encode_sound_buffer.c =================================================================== --- trunk/recordmydesktop/src/rmd_encode_sound_buffer.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_encode_sound_buffer.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,15 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_encode_sound_buffer.h" +#include "rmd_jack.h" +#include "rmd_types.h" + #include <pthread.h> -#include "rmd_types.h" +#include <stdlib.h> +#include <errno.h> -#include "rmd_encode_sound_buffer.h" -#include "rmd_jack.h" - void *EncodeSoundBuffer(ProgData *pdata){ int sampread=pdata->periodsize; #ifdef HAVE_LIBJACK Modified: trunk/recordmydesktop/src/rmd_error.c =================================================================== --- trunk/recordmydesktop/src/rmd_error.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_error.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,15 +25,16 @@ ******************************************************************************/ #include "config.h" +#include "rmd_error.h" -#include <stdio.h> -#include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xlibint.h> -#include "rmd_error.h" +#include <stdio.h> +#include <stdlib.h> + int rmdErrorHandler( Display *dpy, XErrorEvent *e ) { char error_desc[1024]; Modified: trunk/recordmydesktop/src/rmd_flush_to_ogg.c =================================================================== --- trunk/recordmydesktop/src/rmd_flush_to_ogg.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_flush_to_ogg.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,14 +25,18 @@ ******************************************************************************/ #include "config.h" +#include "rmd_flush_to_ogg.h" +#include "rmd_encode_image_buffer.h" +#include "rmd_encode_sound_buffer.h" +#include "rmd_types.h" + #include <pthread.h> -#include "rmd_types.h" +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> -#include "rmd_encode_image_buffer.h" -#include "rmd_encode_sound_buffer.h" -#include "rmd_flush_to_ogg.h" //we copy the page because the next call to ogg_stream_pageout Modified: trunk/recordmydesktop/src/rmd_frame.c =================================================================== --- trunk/recordmydesktop/src/rmd_frame.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_frame.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,13 +25,13 @@ ******************************************************************************/ #include "config.h" +#include "rmd_frame.h" -#include <stdio.h> -#include <stdlib.h> #include <X11/Xlib.h> #include <X11/extensions/shape.h> -#include "rmd_frame.h" +#include <stdio.h> +#include <stdlib.h> #define BORDER_WIDTH 6 Modified: trunk/recordmydesktop/src/rmd_get_frame.c =================================================================== --- trunk/recordmydesktop/src/rmd_get_frame.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_get_frame.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,26 +25,26 @@ ******************************************************************************/ #include "config.h" +#include "rmd_get_frame.h" -#include <limits.h> -#include <pthread.h> -#include <sys/shm.h> - -#include <X11/extensions/Xfixes.h> -#include <X11/extensions/XShm.h> - -#include "rmd_types.h" - #include "rmd_cache.h" #include "rmd_frame.h" -#include "rmd_get_frame.h" #include "rmd_getzpixmap.h" #include "rmd_poll_events.h" #include "rmd_rectinsert.h" #include "rmd_update_image.h" #include "rmd_yuv_utils.h" +#include "rmd_types.h" +#include <X11/extensions/Xfixes.h> +#include <X11/extensions/XShm.h> +#include <limits.h> +#include <pthread.h> +#include <sys/shm.h> +#include <errno.h> + + #define AVG_4_PIXELS(data_array,width_img,k_tm,i_tm,offset)\ ((data_array[(k_tm*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ data_array[((k_tm-1)*width_img+i_tm)*RMD_ULONG_SIZE_T+offset]+\ Modified: trunk/recordmydesktop/src/rmd_getzpixmap.c =================================================================== --- trunk/recordmydesktop/src/rmd_getzpixmap.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_getzpixmap.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,17 +25,18 @@ ******************************************************************************/ #include "config.h" +#include "rmd_getzpixmap.h" +#include "rmd_types.h" + + #include <X11/Xlib.h> #include <X11/Xlibint.h> #include <X11/extensions/shmstr.h> #include <X11/extensions/XShm.h> -#include "rmd_types.h" -#include "rmd_getzpixmap.h" - int GetZPixmap(Display *dpy, Window root, char *data, Modified: trunk/recordmydesktop/src/rmd_getzpixmap.h =================================================================== --- trunk/recordmydesktop/src/rmd_getzpixmap.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_getzpixmap.h 2008-12-13 17:20:24 UTC (rev 583) @@ -29,6 +29,7 @@ #include "rmd_types.h" +#include <X11/extensions/XShm.h> /** * Rerieve pixmap data from xserver Modified: trunk/recordmydesktop/src/rmd_init_encoder.c =================================================================== --- trunk/recordmydesktop/src/rmd_init_encoder.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_init_encoder.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,19 @@ ******************************************************************************/ #include "config.h" +#include "rmd_init_encoder.h" +#include "rmd_types.h" + +#include "skeleton.h" + #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <sys/stat.h> -#include "skeleton.h" -#include "rmd_types.h" -#include "rmd_init_encoder.h" static void m_add_fishead_packet(ogg_stream_state *m_ogg_state) { Modified: trunk/recordmydesktop/src/rmd_initialize_data.c =================================================================== --- trunk/recordmydesktop/src/rmd_initialize_data.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_initialize_data.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,20 +25,22 @@ ******************************************************************************/ #include "config.h" +#include "rmd_initialize_data.h" -#include <pthread.h> - -#include "rmd_types.h" - -#include "rmd_block_utils.h" #include "rmd_cache.h" #include "rmd_init_encoder.h" #include "rmd_jack.h" #include "rmd_make_dummy_pointer.h" #include "rmd_opendev.h" #include "rmd_yuv_utils.h" +#include "rmd_types.h" +#include <pthread.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + #ifdef HAVE_LIBASOUND static void FixBufferSize(snd_pcm_uframes_t *buffsize) { snd_pcm_uframes_t buffsize_t=*buffsize, Modified: trunk/recordmydesktop/src/rmd_jack.c =================================================================== --- trunk/recordmydesktop/src/rmd_jack.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_jack.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,13 +25,13 @@ ******************************************************************************/ #include "config.h" +#include "rmd_jack.h" -#include <pthread.h> - #include "rmd_types.h" -#include "rmd_jack.h" +#include <pthread.h> +#include <string.h> #ifdef HAVE_LIBJACK Modified: trunk/recordmydesktop/src/rmd_load_cache.c =================================================================== --- trunk/recordmydesktop/src/rmd_load_cache.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_load_cache.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,19 +25,22 @@ ******************************************************************************/ #include "config.h" +#include "rmd_load_cache.h" -#include <pthread.h> -#include <signal.h> - -#include "rmd_types.h" - #include "rmd_cache.h" #include "rmd_encode_image_buffer.h" #include "rmd_encode_sound_buffer.h" -#include "rmd_load_cache.h" #include "rmd_macro.h" +#include "rmd_types.h" +#include <pthread.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + //The number of bytes for every //sub-block of the y,u and v planes. //Since the blocks are square Modified: trunk/recordmydesktop/src/rmd_macro.h =================================================================== --- trunk/recordmydesktop/src/rmd_macro.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_macro.h 2008-12-13 17:20:24 UTC (rev 583) @@ -29,11 +29,11 @@ #include "config.h" +#include "rmd_types.h" + #include <limits.h> -#include "rmd_types.h" - //define which way we are reading a pixmap #if __BYTE_ORDER == __LITTLE_ENDIAN #define __ABYTE 3 Modified: trunk/recordmydesktop/src/rmd_make_dummy_pointer.c =================================================================== --- trunk/recordmydesktop/src/rmd_make_dummy_pointer.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_make_dummy_pointer.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,13 +25,12 @@ ******************************************************************************/ #include "config.h" +#include "rmd_make_dummy_pointer.h" -#include <X11/Xlib.h> - +#include "rmd_macro.h" #include "rmd_types.h" -#include "rmd_macro.h" -#include "rmd_make_dummy_pointer.h" +#include <X11/Xlib.h> unsigned char *MakeDummyPointer(Display *display, Added: trunk/recordmydesktop/src/rmd_math.c =================================================================== --- trunk/recordmydesktop/src/rmd_math.c (rev 0) +++ trunk/recordmydesktop/src/rmd_math.c 2008-12-13 17:20:24 UTC (rev 583) @@ -0,0 +1,36 @@ +/****************************************************************************** +* recordMyDesktop - rmd_math.c * +******************************************************************************* +* * +* Copyright (C) 2008 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 joh...@gm... * +******************************************************************************/ + +#include "config.h" +#include "rmd_math.h" + +#include <math.h> + +double rmdRoundf(double val){ + + return val < 0.0 ? ceilf( val - 0.5 ) : floorf( val + 0.5 ); + +} + Added: trunk/recordmydesktop/src/rmd_math.h =================================================================== --- trunk/recordmydesktop/src/rmd_math.h (rev 0) +++ trunk/recordmydesktop/src/rmd_math.h 2008-12-13 17:20:24 UTC (rev 583) @@ -0,0 +1,44 @@ +/****************************************************************************** +* recordMyDesktop - rmd_math.h * +******************************************************************************* +* * +* Copyright (C) 2008 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 joh...@gm... * +******************************************************************************/ + +#ifndef RMD_MATH_H +#define RMD_MATH_H 1 + +/* + * Since roundf depends on C99, using it might make + * the code non-portable. rmdRoundf solves this + * problem, by behaving identically with roundf + * and being portable (floorf and ceilf, that are + * used in the implementation, are defined in C89) + * + * \param val Number to be rounded + * + * \returns val rounded + * + */ +double rmdRoundf( double val ); + +#endif + Modified: trunk/recordmydesktop/src/rmd_opendev.c =================================================================== --- trunk/recordmydesktop/src/rmd_opendev.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_opendev.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,12 +25,8 @@ ******************************************************************************/ #include "config.h" +#include "rmd_opendev.h" -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <fcntl.h> - #ifdef HAVE_LIBASOUND #include <alsa/asoundlib.h> #else @@ -38,8 +34,12 @@ #include <sys/soundcard.h> #endif -#include "rmd_opendev.h" +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <fcntl.h> + #ifdef HAVE_LIBASOUND snd_pcm_t *OpenDev( const char *pcm_dev, Modified: trunk/recordmydesktop/src/rmd_parseargs.c =================================================================== --- trunk/recordmydesktop/src/rmd_parseargs.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_parseargs.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,12 +25,15 @@ ******************************************************************************/ #include "config.h" +#include "rmd_parseargs.h" +#include "rmd_types.h" + #include <stdio.h> +#include <stdlib.h> +#include <string.h> -#include "rmd_types.h" - static void PrintConfig(void) { fprintf(stderr,"\nrecordMyDesktop was compiled with" " the following options:\n\n"); Modified: trunk/recordmydesktop/src/rmd_poll_events.c =================================================================== --- trunk/recordmydesktop/src/rmd_poll_events.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_poll_events.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,22 +25,23 @@ ******************************************************************************/ #include "config.h" +#include "rmd_poll_events.h" -#include <stdio.h> -#include <stdlib.h> +#include "rmd_frame.h" +#include "rmd_macro.h" +#include "rmd_rectinsert.h" +#include "rmd_types.h" + #include <X11/Xlib.h> #include <X11/Xlibint.h> #include <X11/extensions/Xdamage.h> + +#include <stdio.h> +#include <stdlib.h> #include <signal.h> #include <pthread.h> -#include "rmd_frame.h" -#include "rmd_macro.h" -#include "rmd_poll_events.h" -#include "rmd_rectinsert.h" -#include "rmd_types.h" - #define CLIP_EVENT_AREA(e,brwin,xrect){\ if(((e)->area.x<=(brwin)->rrect.x)&&((e)->area.y<=(brwin)->rrect.y)&&\ ((e)->area.width>=(brwin)->rrect.width)&&\ Modified: trunk/recordmydesktop/src/rmd_queryextensions.c =================================================================== --- trunk/recordmydesktop/src/rmd_queryextensions.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_queryextensions.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,16 @@ ******************************************************************************/ #include "config.h" +#include "rmd_queryextensions.h" +#include "rmd_types.h" + #include <X11/extensions/shape.h> #include <X11/extensions/Xfixes.h> #include <X11/extensions/Xdamage.h> -#include "rmd_types.h" -#include "rmd_queryextensions.h" - void QueryExtensions(Display *dpy, ProgArgs *args, int *damage_event, Modified: trunk/recordmydesktop/src/rmd_rectinsert.c =================================================================== --- trunk/recordmydesktop/src/rmd_rectinsert.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_rectinsert.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,11 +25,13 @@ ******************************************************************************/ #include "config.h" +#include "rmd_rectinsert.h" -#include "rmd_rectinsert.h" #include "rmd_types.h" +#include <stdlib.h> + /** * Collide two rectangles and dictate most sane action for insertion, * as well as provide the updated rectangle(s) Modified: trunk/recordmydesktop/src/rmd_register_callbacks.c =================================================================== --- trunk/recordmydesktop/src/rmd_register_callbacks.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_register_callbacks.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,12 +25,11 @@ ******************************************************************************/ #include "config.h" +#include "rmd_register_callbacks.h" -#include <signal.h> - #include "rmd_types.h" -#include "rmd_register_callbacks.h" +#include <signal.h> // There seem to be no way of passing user data to the signal handler, Modified: trunk/recordmydesktop/src/rmd_rescue.c =================================================================== --- trunk/recordmydesktop/src/rmd_rescue.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_rescue.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,19 +25,20 @@ ******************************************************************************/ #include "config.h" +#include "rmd_rescue.h" -#include <pthread.h> - -#include "rmd_types.h" - -#include "rmd_block_utils.h" +#include "rmd_yuv_utils.h" #include "rmd_encode_cache.h" #include "rmd_initialize_data.h" #include "rmd_register_callbacks.h" -#include "rmd_rescue.h" #include "rmd_specsfile.h" +#include "rmd_types.h" +#include <pthread.h> +#include <string.h> + + int rmdRescue(const char *path){ int i=0, Modified: trunk/recordmydesktop/src/rmd_setbrwindow.c =================================================================== --- trunk/recordmydesktop/src/rmd_setbrwindow.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_setbrwindow.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,12 +25,11 @@ ******************************************************************************/ #include "config.h" +#include "rmd_setbrwindow.h" #include "rmd_types.h" -#include "rmd_setbrwindow.h" - /** *Align the recording window to a divisible by 2 pixel start and *and a size divisible by 16. Modified: trunk/recordmydesktop/src/rmd_shortcuts.c =================================================================== --- trunk/recordmydesktop/src/rmd_shortcuts.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_shortcuts.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_shortcuts.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> +#include "rmd_types.h" + #include <X11/Xlib.h> #include <X11/Xlibint.h> #include <X11/keysym.h> -#include "rmd_shortcuts.h" -#include "rmd_types.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> int RegisterShortcut(Display *dpy, Window root, Modified: trunk/recordmydesktop/src/rmd_specsfile.c =================================================================== --- trunk/recordmydesktop/src/rmd_specsfile.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_specsfile.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,14 +25,14 @@ ******************************************************************************/ #include "config.h" +#include "rmd_specsfile.h" +#include "rmd_types.h" + #include <stdlib.h> #include <stdio.h> -#include "rmd_specsfile.h" -#include "rmd_types.h" - int WriteSpecsFile(ProgData *pdata){ FILE *fp; Modified: trunk/recordmydesktop/src/rmd_threads.c =================================================================== --- trunk/recordmydesktop/src/rmd_threads.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_threads.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,14 +25,8 @@ ******************************************************************************/ #include "config.h" +#include "rmd_threads.h" -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - -#include "rmd_types.h" - #include "rmd_cache_audio.h" #include "rmd_cache_frame.h" #include "rmd_capture_sound.h" @@ -42,10 +36,15 @@ #include "rmd_get_frame.h" #include "rmd_jack.h" #include "rmd_register_callbacks.h" -#include "rmd_threads.h" #include "rmd_timer.h" +#include "rmd_types.h" +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + void rmdThreads(ProgData *pdata){ pthread_t image_capture_t, image_encode_t, Modified: trunk/recordmydesktop/src/rmd_timer.c =================================================================== --- trunk/recordmydesktop/src/rmd_timer.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_timer.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,16 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_timer.h" +#include "rmd_types.h" + #include <pthread.h> + #include <stdio.h> #include <stdlib.h> +#include <errno.h> -#include "rmd_types.h" -#include "rmd_timer.h" - - void *rmdTimer(ProgData *pdata){ long unsigned int secs_tw=1/pdata->args.fps; Modified: trunk/recordmydesktop/src/rmd_types.h =================================================================== --- trunk/recordmydesktop/src/rmd_types.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_types.h 2008-12-13 17:20:24 UTC (rev 583) @@ -27,6 +27,7 @@ #include "config.h" +#include <stdio.h> #include <pthread.h> #include <zlib.h> #include <X11/Xlib.h> Modified: trunk/recordmydesktop/src/rmd_update_image.c =================================================================== --- trunk/recordmydesktop/src/rmd_update_image.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_update_image.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,18 +25,17 @@ ******************************************************************************/ #include "config.h" +#include "rmd_update_image.h" +#include "rmd_getzpixmap.h" +#include "rmd_yuv_utils.h" +#include "rmd_types.h" + #include <X11/Xlibint.h> #include <X11/extensions/shmstr.h> #include <X11/extensions/XShm.h> -#include "rmd_types.h" -#include "rmd_getzpixmap.h" -#include "rmd_update_image.h" -#include "rmd_yuv_utils.h" - - void UpdateImage(Display * dpy, yuv_buffer *yuv, DisplaySpecs *specs, Modified: trunk/recordmydesktop/src/rmd_update_image.h =================================================================== --- trunk/recordmydesktop/src/rmd_update_image.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_update_image.h 2008-12-13 17:20:24 UTC (rev 583) @@ -29,6 +29,7 @@ #include "rmd_types.h" +#include <X11/extensions/XShm.h> /** * Retrieve and apply all changes, if xdamage is used. Modified: trunk/recordmydesktop/src/rmd_wm_check.c =================================================================== --- trunk/recordmydesktop/src/rmd_wm_check.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_wm_check.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,14 +25,14 @@ ******************************************************************************/ #include "config.h" +#include "rmd_wm_check.h" +#include "rmd_types.h" + #include <X11/Xatom.h> -#include "rmd_types.h" -#include "rmd_wm_check.h" - char *rmdWMCheck(Display *dpy,Window root){ Window *wm_child=NULL; Modified: trunk/recordmydesktop/src/rmd_wm_is_compositing.c =================================================================== --- trunk/recordmydesktop/src/rmd_wm_is_compositing.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_wm_is_compositing.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,15 +25,16 @@ ******************************************************************************/ #include "config.h" +#include "rmd_wm_is_compositing.h" +#include "rmd_wm_check.h" +#include "rmd_types.h" + #include <X11/Xatom.h> -#include "rmd_types.h" +#include <stdlib.h> -#include "rmd_wm_check.h" -#include "rmd_wm_is_compositing.h" - boolean rmdWMIsCompositing( Display *dpy, int screen ) { Window win; Modified: trunk/recordmydesktop/src/rmd_yuv_utils.c =================================================================== --- trunk/recordmydesktop/src/rmd_yuv_utils.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_yuv_utils.c 2008-12-13 17:20:24 UTC (rev 583) @@ -25,14 +25,23 @@ ******************************************************************************/ #include "config.h" - #include "rmd_yuv_utils.h" +#include "rmd_math.h" + + // Keep these global (for performance reasons I assume). unsigned char Yr[256], Yg[256], Yb[256], Ur[256], Ug[256], UbVr[256], Vg[256], Vb[256]; +// FIXME: These globals are modified in other source files! We keep +// thsee here for now. These are the cache blocks. They need to be +// accesible in the dbuf macros +u_int32_t *yblocks, + *ublocks, + *vblocks; + void MakeMatrices (void) { int i; @@ -68,16 +77,16 @@ for( i = 0 ; i < 256 ; i++ ) { - Yr[i] = (unsigned char) roundf( Yoffset + yr * i ); - Yg[i] = (unsigned char) roundf( yg * i ); - Yb[i] = (unsigned char) roundf( yb * i ); + Yr[i] = (unsigned char) rmdRoundf( Yoffset + yr * i ); + Yg[i] = (unsigned char) rmdRoundf( yg * i ); + Yb[i] = (unsigned char) rmdRoundf( yb * i ); - Ur[i] = (unsigned char) roundf( Coffset + ur * i ); - Ug[i] = (unsigned char) roundf( ug * i ); - UbVr[i] = (unsigned char) roundf( ub * i ); + Ur[i] = (unsigned char) rmdRoundf( Coffset + ur * i ); + Ug[i] = (unsigned char) rmdRoundf( ug * i ); + UbVr[i] = (unsigned char) rmdRoundf( ub * i ); - Vg[i] = (unsigned char) roundf( vg * i ); - Vb[i] = (unsigned char) roundf( Coffset + vb * i ); + Vg[i] = (unsigned char) rmdRoundf( vg * i ); + Vb[i] = (unsigned char) rmdRoundf( Coffset + vb * i ); } Modified: trunk/recordmydesktop/src/rmd_yuv_utils.h =================================================================== --- trunk/recordmydesktop/src/rmd_yuv_utils.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/rmd_yuv_utils.h 2008-12-13 17:20:24 UTC (rev 583) @@ -27,7 +27,6 @@ #ifndef YUV_UTILS_H #define YUV_UTILS_H 1 -#include "rmd_block_utils.h" #include "rmd_macro.h" #include "rmd_types.h" @@ -39,6 +38,15 @@ Vg[256], Vb[256]; +// We keep these global for now. FIXME: Isolate them. +extern u_int32_t *yblocks, + *ublocks, + *vblocks; + +#define POINT_IN_BLOCK(xv,yv,widthv,blocksize) ((yv/blocksize)*\ + (widthv/blocksize)+\ + (xv/blocksize)) + //when adding the r values, we go beyond //the (16 bit)range of the t_val variable, but we are performing //32 bit arithmetics, so there's no problem. @@ -238,6 +246,131 @@ }\ } +#define UPDATE_Y_PLANE_DBUF(data,\ + data_back,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_y=yuv->y+x_tm+y_tm*yuv->y_width,\ + *_yr=Yr,*_yg=Yg,*_yb=Yb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ + *datapi_back=(u_int##__bit_depth__##_t *)data_back;\ + for(k=0;k<height_tm;k++){\ + for(i=0;i<width_tm;i++){\ + if(*datapi!=*datapi_back){\ + t_val=*datapi;\ + *yuv_y=_yr[__RVALUE_##__bit_depth__(t_val)] +\ + _yg[__GVALUE_##__bit_depth__(t_val)] +\ + _yb[__BVALUE_##__bit_depth__(t_val)] ;\ + yblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi++;\ + datapi_back++;\ + yuv_y++;\ + }\ + yuv_y+=yuv->y_width-width_tm;\ + }\ +} + +#define UPDATE_UV_PLANES_DBUF( data,\ + data_back,\ + x_tm,\ + y_tm,\ + height_tm,\ + width_tm,\ + yuv,\ + __sampling_type,\ + __bit_depth__){ \ + int k,i;\ + register u_int##__bit_depth__##_t t_val;\ + register unsigned char *yuv_u=yuv->u+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *yuv_v=yuv->v+x_tm/2+(y_tm*yuv->uv_width)/2,\ + *_ur=Ur,*_ug=Ug,*_ubvr=UbVr,\ + *_vg=Vg,*_vb=Vb;\ + register u_int##__bit_depth__##_t *datapi=(u_int##__bit_depth__##_t *)data,\ + *datapi_next=NULL,\ + *datapi_back=(u_int##__bit_depth__##_t *)data_back,\ + *datapi_back_next=NULL;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next=datapi+width_tm;\ + datapi_back_next=datapi_back+width_tm;\ + for(k=0;k<height_tm;k+=2){\ + for(i=0;i<width_tm;i+=2){\ + if(( (*datapi!=*datapi_back) ||\ + (*(datapi+1)!=*(datapi_back+1)) ||\ + (*datapi_next!=*datapi_back_next) ||\ + (*(datapi_next+1)!=*(datapi_back_next+1)))){\ + UPDATE_A_UV_PIXEL( yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi+=2;\ + datapi_back+=2;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=2;\ + datapi_back_next+=2;\ + }\ + yuv_u++;\ + yuv_v++;\ + }\ + yuv_u+=(yuv->y_width-width_tm)/2;\ + yuv_v+=(yuv->y_width-width_tm)/2;\ + datapi+=width_tm;\ + datapi_back+=width_tm;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=width_tm;\ + datapi_back_next+=width_tm;\ + }\ + }\ + }\ + else{\ + for(k=0;k<height_tm;k+=2){\ + for(i=0;i<width_tm;i+=2){\ + if ((*datapi!=*datapi_back)){\ + UPDATE_A_UV_PIXEL( yuv_u,\ + yuv_v,\ + t_val,\ + datapi,\ + datapi_next,\ + _ur,_ug,_ubvr,_vg,_vb,\ + __sampling_type,\ + __bit_depth__)\ + ublocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + vblocks[POINT_IN_BLOCK(i,k,width_tm,Y_UNIT_WIDTH)]=1;\ + }\ + datapi+=2;\ + datapi_back+=2;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=2;\ + datapi_back_next+=2;\ + }\ + yuv_u++;\ + yuv_v++;\ + }\ + yuv_u+=(yuv->y_width-width_tm)/2;\ + yuv_v+=(yuv->y_width-width_tm)/2;\ + datapi+=width_tm;\ + datapi_back+=width_tm;\ + if(__sampling_type==__PXL_AVERAGE){\ + datapi_next+=width_tm;\ + datapi_back_next+=width_tm;\ + }\ + }\ + }\ +} + /** * Fill Yr,Yg,Yb,Ur,Ug.Ub,Vr,Vg,Vb arrays(globals) with values. */ Modified: trunk/recordmydesktop/src/skeleton.h =================================================================== --- trunk/recordmydesktop/src/skeleton.h 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/skeleton.h 2008-12-13 17:20:24 UTC (rev 583) @@ -10,6 +10,7 @@ extern "C" { #endif +#include <stdio.h> #include <ogg/ogg.h> #define SKELETON_VERSION_MAJOR 3 Modified: trunk/recordmydesktop/src/test-rectinsert-data.c =================================================================== --- trunk/recordmydesktop/src/test-rectinsert-data.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/test-rectinsert-data.c 2008-12-13 17:20:24 UTC (rev 583) @@ -21,9 +21,9 @@ ******************************************************************************/ #include "config.h" +#include "test-rectinsert-data.h" #include "test-rectinsert-types.h" -#include "test-rectinsert-data.h" // Defines to increase readability of test data Modified: trunk/recordmydesktop/src/test-rectinsert.c =================================================================== --- trunk/recordmydesktop/src/test-rectinsert.c 2008-11-23 15:51:26 UTC (rev 582) +++ trunk/recordmydesktop/src/test-rectinsert.c 2008-12-13 17:20:24 UTC (rev 583) @@ -21,14 +21,14 @@ ******************************************************************************/ #include "config.h" - -#include "rmd_types.h" #include "rmd_rectinsert.h" #include "test-rectinsert-types.h" #include "test-rectinsert-data.h" +#include "rmd_types.h" + static void SetPixel(boolean *state, int x, int y, boolean value) { int index = y * STATE_WIDTH + x; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2008-12-13 17:46:45
|
Revision: 584 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=584&view=rev Author: iovar Date: 2008-12-13 17:46:41 +0000 (Sat, 13 Dec 2008) Log Message: ----------- Version changes. Modified Paths: -------------- trunk/recordmydesktop/ChangeLog trunk/recordmydesktop/configure.ac Modified: trunk/recordmydesktop/ChangeLog =================================================================== --- trunk/recordmydesktop/ChangeLog 2008-12-13 17:20:24 UTC (rev 583) +++ trunk/recordmydesktop/ChangeLog 2008-12-13 17:46:41 UTC (rev 584) @@ -1,3 +1,10 @@ +/*Version 0.3.8.1*/ +* Fixed a bug that caused compilation to fail on some platforms, due +to missing headers. +* Minor code refactoring to assist maintainability and +portability of the program. + + /*Version 0.3.8*/ * Extensive refactoring and cleanups of the code from Martin Nordholts. * Cursor-flickering bug has been fixed, by Martin. Modified: trunk/recordmydesktop/configure.ac =================================================================== --- trunk/recordmydesktop/configure.ac 2008-12-13 17:20:24 UTC (rev 583) +++ trunk/recordmydesktop/configure.ac 2008-12-13 17:46:41 UTC (rev 584) @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT( [recordmydesktop], [0.3.8], ) +AC_INIT( [recordmydesktop], [0.3.8.1], ) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([src/rmd.c]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: svn c. f. r. <rec...@li...> - 2009-01-11 12:31:42
|
Revision: 593 http://recordmydesktop.svn.sourceforge.net/recordmydesktop/?rev=593&view=rev Author: enselic Date: 2009-01-11 11:39:18 +0000 (Sun, 11 Jan 2009) Log Message: ----------- configure.ac: Link with libpopt. src/rmd_parseargs.c: Port to libpopt. Modified Paths: -------------- trunk/recordmydesktop/configure.ac trunk/recordmydesktop/src/rmd_parseargs.c Modified: trunk/recordmydesktop/configure.ac =================================================================== --- trunk/recordmydesktop/configure.ac 2009-01-11 11:08:25 UTC (rev 592) +++ trunk/recordmydesktop/configure.ac 2009-01-11 11:39:18 UTC (rev 593) @@ -73,6 +73,7 @@ AC_CHECK_LIB([m],[isnan],,) AC_CHECK_LIB([z],[deflate],,AC_MSG_ERROR([Can't find zlib])) +AC_CHECK_LIB([popt], poptSetOtherOptionHelp,,AC_MSG_ERROR([Can't find libpopt])) AC_CHECK_LIB([ICE],[IceOpenConnection],,AC_MSG_ERROR([Can't find libICE]),) AC_CHECK_LIB([SM],[SmcOpenConnection],,AC_MSG_ERROR([Can't find libSM]),) AC_CHECK_LIB([X11],[XOpenDisplay],,AC_MSG_ERROR([Can't find libX11]), Modified: trunk/recordmydesktop/src/rmd_parseargs.c =================================================================== --- trunk/recordmydesktop/src/rmd_parseargs.c 2009-01-11 11:08:25 UTC (rev 592) +++ trunk/recordmydesktop/src/rmd_parseargs.c 2009-01-11 11:39:18 UTC (rev 593) @@ -3,6 +3,7 @@ ******************************************************************************* * * * Copyright (C) 2006,2007,2008 John Varouhakis * +* Copyright (C) 2009 Martin Nordholts * * * * * * This program is free software; you can redistribute it and/or modify * @@ -29,6 +30,8 @@ #include "rmd_types.h" +#include <popt.h> + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -36,8 +39,10 @@ #ifdef HAVE_LIBJACK #define RMD_LIBJACK_STATUS "Enabled" +#define RMD_USE_JACK_EXTRA_FLAG 0 #else #define RMD_LIBJACK_STATUS "Disabled" +#define RMD_USE_JACK_EXTRA_FLAG POPT_ARGFLAG_DOC_HIDDEN #endif #ifdef HAVE_LIBASOUND @@ -46,522 +51,446 @@ #define RMD_LIBASOUND_STATUS "OSS" #endif -static void rmdPrintConfig(void) { - fprintf(stderr, - "\n" - "recordMyDesktop was compiled with the following options:\n" - "\n" - "Jack:\t\t\t" RMD_LIBJACK_STATUS "\n" - "Default Audio Backend:\t" RMD_LIBASOUND_STATUS "\n" - "\n" - "\n"); -} +#define RMD_ARG_DELAY 1 +#define RMD_ARG_DUMMY_CURSOR 2 +#define RMD_ARG_USE_JACK 3 +#define RMD_OPTION_TABLE(name, table) \ + { NULL, '\0', \ + POPT_ARG_INCLUDE_TABLE, (table), \ + 0, (name), NULL } + + +static void rmdPrintAndExit(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data); +static boolean rmdValidateArguments(const ProgArgs *args); + +// Note: print-config only shown in Generic, in man tis also shown in +// Misc (less complciate code that way) boolean rmdParseArgs(int argc, char **argv, ProgArgs *arg_return) { - int i; - char *usage = - "\n" - "Usage:\n" - "\trecordmydesktop [OPTIONS]^filename\n" - "\n" - "\n" - "General Options:\n" - "\t-h or --help\t\tPrint this help and exit.\n" - "\t--version\t\tPrint program version and exit.\n" - "\t--print-config\t\tPrint info about options selected during compilation and exit.\n" - "\n" - "Image Options:\n" - "\t--windowid id_of_window\tid of window to be recorded.\n" - "\t--display DISPLAY\tDisplay to connect to.\n" - "\t-x X\t\t\tOffset in x direction.\n" - "\t-y Y\t\t\tOffset in y direction.\n" - "\t--width N\t\tWidth of recorded window.\n" - "\t--height N\t\tHeight of recorded window.\n" - "\n" - "\t--dummy-cursor color\tColor of the dummy cursor [black|white]\n" - "\t--no-cursor\t\tDisable drawing of the cursor.\n" - "\t--no-shared\t\tDisable usage of MIT-shared memory extension(Not Recommended!).\n" - "\t--full-shots\t\tTake full screenshot at every frame(Not recomended!).\n" - "\t--quick-subsampling\tDo subsampling of the chroma planes by discarding,not averaging.\n" - "\t--fps N(number>0.0)\tA positive number denoting desired framerate.\n" - "\n" - "Sound Options:\n" - "\t--channels N\t\t\tA positive number denoting desired sound channels in recording.\n" - "\t--freq N\t\t\tA positive number denoting desired sound frequency.\n" - "\t--buffer-size N\t\t\tA positive number denoting the desired sound buffer size (in frames,when using ALSA or OSS)\n" - "\t--ring-buffer-size N\t\tA float number denoting the desired ring buffer size (in seconds,when using JACK only).\n" - "\t--device SOUND_DEVICE\t\tSound device(default " DEFAULT_AUDIO_DEVICE ").\n" - "\t--use-jack port1 port2... portn\tRecord audio from the specified list of space-separated jack ports.\n" - "\t--no-sound\t\t\tDo not record sound.\n" - "\n" - "Encoding Options\n" - "\t--on-the-fly-encoding\tEncode the audio-video data, while recording.\n" - "\t--v_quality n\t\tA number from 0 to 63 for desired encoded video quality(default 63).\n" - "\t--v_bitrate n\t\tA number from 45000 to 2000000 for desired encoded video bitrate(default 45000).\n" - "\t--s_quality n\t\tDesired audio quality(-1 to 10).\n" - "\n" - "Misc Options:\n" - "\t--rescue path_to_data\t\tEncode data from a previous, crashed, session.\n" - "\t--no-wm-check\t\t\tDo not try to detect the window manager(and set options according to it)\n" - "\t--pause-shortcut MOD+KEY\tShortcut that will be used for (un)pausing (default Control+Mod1+p).\n" - "\t--stop-shortcut MOD+KEY\t\tShortcut that will be used to stop the recording (default Control+Mod1+s).\n" - "\t--compress-cache\t\tImage data are cached with light compression.\n" - "\t--workdir DIR\t\t\tLocation where a temporary directory will be created to hold project files(default $HOME).\n" - "\t--delay n[H|h|M|m]\t\tNumber of secs(default),minutes or hours before capture starts(number can be float)\n" - "\t--overwrite\t\t\tIf there is already a file with the same name, delete it (default is to add a number postfix to the new one).\n" - "\t-o filename\t\t\tName of recorded video(default out.ogv).\n" - "\n" - "\tIf no other options are specified, filename can be given without the -o switch.\n" - "\n" - "\n"; + poptContext popt_context = NULL; + boolean no_cursor = FALSE; + boolean quick_subsampling = FALSE; + boolean compress_cache = FALSE; + boolean success = TRUE; + int arg_id = 0; - if(argc==2){ - if(argv[1][0]!='-'){ - free(arg_return->filename); - arg_return->filename=malloc(strlen(argv[1])+1); - strcpy(arg_return->filename,argv[1]); - return TRUE; - } - } - for(i=1;i<argc;i++){ - if (strcmp(argv[i], "--delay") == 0) { - if(i+1<argc){ - float num=atof(argv[i+1]); - if(num>0.0){ + // Setup the option tables + struct poptOption generic_options[] = { + { NULL, '\0', + POPT_ARG_CALLBACK, (void *)rmdPrintAndExit, 0, + NULL, NULL }, + + { "help", 'h', + POPT_ARG_NONE, NULL, 0, + "Print this help and exit.", + NULL }, + + { "version", '\0', + POPT_ARG_NONE, NULL, 0, + "Print program version and exit.", + NULL }, + + { "print-config", '\0', + POPT_ARG_NONE, NULL, 0, + "Print info about options selected during compilation and exit.", + NULL }, + + POPT_TABLEEND }; + + struct poptOption image_options[] = { + { "windowid", '\0', + POPT_ARG_INT, &arg_return->windowid, 0, + "id of window to be recorded.", + "id_of_window" }, + + { "display", '\0', + POPT_ARG_STRING, &arg_return->display, 0, + "Display to connect to.", + "DISPLAY" }, + + { NULL, 'x', + POPT_ARG_INT, &arg_return->x, 0, + "Offset in x direction.", + "N>=0" }, + + { NULL, 'y', + POPT_ARG_INT, &arg_return->y, 0, + "Offset in y direction.", + "N>=0" }, + + { "width", '\0', + POPT_ARG_INT, &arg_return->width, 0, + "Width of recorded window.", + "N>0" }, + + { "height", '\0', + POPT_ARG_INT, &arg_return->height, 0, + "Height of recorded window.", + "N>0" }, + + { "dummy-cursor", '\0', + POPT_ARG_STRING, NULL, RMD_ARG_DUMMY_CURSOR, + "Color of the dummy cursor [black|white]", + "color" }, + + { "no-cursor", '\0', + POPT_ARG_NONE, &no_cursor, 0, + "Disable drawing of the cursor.", + NULL }, + + { "no-shared", '\0', + POPT_ARG_NONE, &arg_return->noshared, 0, + "Disable usage of MIT-shared memory extension(Not Recommended!).", + NULL }, + + { "full-shots", '\0', + POPT_ARG_NONE, &arg_return->full_shots, 0, + "Take full screenshot at every frame(Not recomended!).", + NULL }, + + { "follow-mouse", '\0', + POPT_ARG_NONE, &arg_return->follow_mouse, 0, + "Makes the capture area follow the mouse cursor. Autoenables --full-shots.", + NULL }, + + { "quick-subsampling", '\0', + POPT_ARG_NONE, &quick_subsampling, 0, + "Do subsampling of the chroma planes by discarding, not averaging.", + NULL }, + + { "fps", '\0', + POPT_ARG_FLOAT, &arg_return->fps, 0, + "A positive number denoting desired framerate.", + "N(number>0.0)" }, + + POPT_TABLEEND }; + + struct poptOption sound_options[] = { + { "channels", '\0', + POPT_ARG_INT, &arg_return->channels, 0, + "A positive number denoting desired sound channels in recording.", + "N" }, + + { "freq", '\0', + POPT_ARG_INT, &arg_return->frequency, 0, + "A positive number denoting desired sound frequency.", + "N" }, + + { "buffer-size", '\0', + POPT_ARG_INT, &arg_return->buffsize, 0, + "A positive number denoting the desired sound buffer size (in frames,when using ALSA or OSS)", + "N" }, + + { "ring-buffer-size", '\0', + POPT_ARG_FLOAT, &arg_return->jack_ringbuffer_secs, 0, + "A float number denoting the desired ring buffer size (in seconds,when using JACK only).", + "N" }, + + { "device", '\0', + POPT_ARG_STRING, &arg_return->device, 0, + "Sound device(default " DEFAULT_AUDIO_DEVICE ").", + "SOUND_DEVICE" }, + + { "use-jack", '\0', + POPT_ARG_STRING | RMD_USE_JACK_EXTRA_FLAG, &arg_return->x, RMD_ARG_USE_JACK, + "Record audio from the specified list of space-separated jack ports.", + "port1 port2... portn" }, + + { "no-sound", '\0', + POPT_ARG_NONE, &arg_return->nosound, 0, + "Do not record sound.", + NULL }, + + POPT_TABLEEND }; + + struct poptOption encoding_options[] = { + { "on-the-fly-encoding", '\0', + POPT_ARG_NONE, &arg_return->encOnTheFly, 0, + "Encode the audio-video data, while recording.", + NULL }, + + { "v_quality", '\0', + POPT_ARG_INT, &arg_return->v_quality, 0, + "A number from 0 to 63 for desired encoded video quality(default 63).", + "n" }, + + { "v_bitrate", '\0', + POPT_ARG_INT, &arg_return->v_bitrate, 0, + "A number from 45000 to 2000000 for desired encoded video bitrate(default 45000).", + "n" }, + + { "s_quality", '\0', + POPT_ARG_INT, &arg_return->s_quality, 0, + "Desired audio quality(-1 to 10).", + "n" }, + + POPT_TABLEEND }; + + struct poptOption misc_options[] = { + { "rescue", '\0', + POPT_ARG_STRING, &arg_return->rescue_path, 0, + "Encode data from a previous, crashed, session.", + "path_to_data" }, + + { "no-encode", '\0', + POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &arg_return->no_encode, 0, + "Do not encode any data after recording is complete. This is instead done manually afterwards with --rescue.", + NULL }, + + { "no-wm-check", '\0', + POPT_ARG_NONE, &arg_return->nowmcheck, 0, + "Do not try to detect the window manager(and set options according to it)", + NULL }, + + { "no-frame", '\0', + POPT_ARG_NONE, &arg_return->noframe, 0, + "Don not show the frame that visualizes the recorded area.", + NULL }, + + { "pause-shortcut", '\0', + POPT_ARG_STRING, &arg_return->pause_shortcut, 0, + "Shortcut that will be used for (un)pausing (default Control+Mod1+p).", + "MOD+KEY" }, + + { "stop-shortcut", '\0', + POPT_ARG_STRING, &arg_return->stop_shortcut, 0, + "Shortcut that will be used to stop the recording (default Control+Mod1+s).", + "MOD+KEY" }, + + { "compress-cache", '\0', + POPT_ARG_NONE, &compress_cache, 0, + "Image data are cached with light compression.", + NULL }, + + { "workdir", '\0', + POPT_ARG_STRING, &arg_return->workdir, 0, + "Location where a temporary directory will be created to hold project files(default $HOME).", + "DIR" }, + + { "delay", '\0', + POPT_ARG_STRING, &arg_return->delay, RMD_ARG_DELAY, + "Number of secs(default),minutes or hours before capture starts(number can be float)", + "n[H|h|M|m]" }, + + { "overwrite", '\0', + POPT_ARG_NONE, &arg_return->overwrite, 0, + "If there is already a file with the same name, delete it (default is to add a number postfix to the new one).", + NULL }, + + { NULL, 'o', + POPT_ARG_STRING, &arg_return->filename, 0, + "Name of recorded video(default out.ogv).", + "filename" }, + + POPT_TABLEEND }; + + struct poptOption rmd_args[] = { + RMD_OPTION_TABLE("Generic Options", generic_options), + RMD_OPTION_TABLE("Image Options", image_options), + RMD_OPTION_TABLE("Sound Options", sound_options), + RMD_OPTION_TABLE("Encoding Options", encoding_options), + RMD_OPTION_TABLE("Misc Options", misc_options), + POPT_TABLEEND }; + + + // Some trivial setup + popt_context = poptGetContext(NULL, argc, (const char **)argv, rmd_args, 0); + poptSetOtherOptionHelp(popt_context, "[OPTIONS]^filename"); + + + // Parse the arguments + while ((arg_id = poptGetNextOpt(popt_context)) > 0) { + char *arg = poptGetOptArg(popt_context); + + // Most arguments are handled completely by libpopt but we + // handle some by ourself, namely those in this switch case + switch (arg_id) { + case RMD_ARG_DELAY: + { + float num = atof(arg); + + if (num > 0.0) { int k; - for(k=0;k<strlen(argv[i+1]);k++){ - if((argv[i+1][k]=='M')||(argv[i+1][k]=='m')){ - num*=60.0; + for (k = 0; k < strlen(arg); k++) { + if ((arg[k] == 'M') || (arg[k] == 'm')) { + num *= 60.0; break; } - else if((argv[i+1][k]=='H')||(argv[i+1][k]=='h')){ - num*=3600.0; + else if ((arg[k] == 'H') || (arg[k] == 'h')) { + num *= 3600.0; break; } } - arg_return->delay=(int)num; + arg_return->delay = (int) num; } - else{ - fprintf(stderr,"Argument Usage: --delay n[H|h|M|m]\n" - "where n is a float number\n"); - return FALSE; + else { + fprintf(stderr, + "Argument Usage: --delay n[H|h|M|m]\n" + "where n is a float number\n"); + success = FALSE; } } - else{ - fprintf(stderr,"Argument Usage: --delay n[H|h|M|m]\n" - "where n is a float number\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--windowid") == 0) { - if(i+1<argc){ - Window num=strtod(argv[i+1],NULL); - if(num>0) - arg_return->windowid=num; - else{ - fprintf(stderr,"Argument Usage:" - " --windowid id_of_window(number)\n"); - return FALSE; + break; + + case RMD_ARG_DUMMY_CURSOR: + { + if (!strcmp(arg, "white")) + arg_return->cursor_color = 0; + else if (!strcmp(arg, "black")) + arg_return->cursor_color = 1; + else { + fprintf(stderr, + "Argument Usage:\n" + " --dummy-cursor [black|white]\n"); + success = FALSE; } + arg_return->have_dummy_cursor = TRUE; + arg_return->xfixes_cursor = FALSE; } - else{ - fprintf(stderr,"Argument Usage:" - " --windowid id_of_window(number)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--display") == 0) { - if(i+1<argc){ - if(arg_return->display!=NULL) - free(arg_return->display); - arg_return->display=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->display,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: --display DISPLAY\n"); - return FALSE; - } - i++; - } - else if(!strcmp(argv[i],"-x")){ - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->x=num; - else{ - fprintf(stderr,"Argument Usage: -x X(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: -x X(number>0)\n"); - return FALSE; - } - i++; - } - else if(!strcmp(argv[i],"-y")){ - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->y=num; - else{ - fprintf(stderr,"Argument Usage: -y Y(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: -y Y(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--width") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->width=num; - else{ - fprintf(stderr,"Argument Usage: --width N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --width N(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--height") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->height=num; - else{ - fprintf(stderr,"Argument Usage: --height N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --height N(number>0)\n"); - return FALSE; - } - i++; - } - else if(!strcmp(argv[i],"-o")){ - if(i+1<argc){ - free(arg_return->filename); - arg_return->filename=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->filename,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: -o filename\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--fps") == 0) { - if(i+1<argc){ - float num=atof(argv[i+1]); - if(num>0.0) - arg_return->fps=num; - else{ - fprintf(stderr,"Argument Usage: --fps N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --fps N(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--v_quality") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if((num>=0)&&(num<64)) - arg_return->v_quality=num; - else{ - fprintf(stderr,"Argument Usage:" - " --v_quality n(number 0-63)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage:" - " --v_quality n(number 0-63)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--v_bitrate") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if((num>=45000)&&(num<=2000000)) - arg_return->v_bitrate=num; - else{ - fprintf(stderr,"Argument Usage:" - " --v_bitrate n(number 45000-2000000)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage:" - " --v_bitrate n(number 45000-2000000)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--dummy-cursor") == 0) { - if(i+1<argc){ - if(!strcmp(argv[i+1],"white")) - arg_return->cursor_color=0; - else if(!strcmp(argv[i+1],"black")) - arg_return->cursor_color=1; - else{ - fprintf(stderr,"Argument Usage:" - " --dummy-cursor [black|white]\n"); - return FALSE; - } - arg_return->have_dummy_cursor=1; - arg_return->xfixes_cursor=0; - } - else{ - fprintf(stderr,"Argument Usage:" - " --dummy-cursor [black|white]\n"); - return FALSE; - } - i++; - } - else if(!strcmp(argv[i],"--no-cursor")) - arg_return->xfixes_cursor=0; - else if (strcmp(argv[i], "--freq") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->frequency=num; - else{ - fprintf(stderr,"Argument Usage: --freq N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --freq N(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--channels") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->channels=num; - else{ - fprintf(stderr,"Argument Usage: --channels N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --channels N(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--s_quality") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if((num>=-1)&&(num<=10)) - arg_return->s_quality=num; - else{ - fprintf(stderr,"Argument Usage:" - " --s_quality n(number -1 to 10)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage:" - " --s_quality n(number -1 to 10)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--device") == 0) { - if(i+1<argc){ - free(arg_return->device); - arg_return->device=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->device,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: -device SOUND_DEVICE\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--workdir") == 0) { - if(i+1<argc){ - free(arg_return->workdir); - arg_return->workdir=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->workdir,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: --workdir DIR\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--pause-shortcut") == 0) { - if(i+1<argc){ - free(arg_return->pause_shortcut); - arg_return->pause_shortcut=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->pause_shortcut,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: --pause-shortcut MOD+KEY\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--stop-shortcut") == 0) { - if(i+1<argc){ - free(arg_return->stop_shortcut); - arg_return->stop_shortcut=malloc(strlen(argv[i+1])+1); - strcpy(arg_return->stop_shortcut,argv[i+1]); - } - else{ - fprintf(stderr,"Argument Usage: --stop-shortcut MOD+KEY\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--buffer-size") == 0) { - if(i+1<argc){ - int num=atoi(argv[i+1]); - if(num>0) - arg_return->buffsize=num; - else{ - fprintf(stderr,"Argument Usage:" - " --buffer-size N(number>0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --buffer-size N(number>0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--use-jack") == 0) { - if(i+1<argc){ -#ifdef HAVE_LIBJACK - int k=i+1; - arg_return->jack_nports=0; - while((k<argc)&&(argv[k][0]!='-')&&k-i-1<RMD_MAX_JACK_PORTS){ + break; + + case RMD_ARG_USE_JACK: + { + arg_return->jack_nports = 0; + + while (arg) { + arg_return->jack_nports++; - arg_return->jack_port_names[k-i-1]=malloc(strlen(argv[k])+1); - strcpy(arg_return->jack_port_names[k-i-1],argv[k]); + arg_return->jack_port_names[arg_return->jack_nports - 1] = malloc(strlen(arg) + 1); + strcpy(arg_return->jack_port_names[arg_return->jack_nports - 1], arg); - arg_return->use_jack=1; + arg = poptGetOptArg(popt_context); + } - k++; + if (arg_return->jack_nports > 0) + { + arg_return->use_jack = 1; } + else + { + fprintf(stderr, + "Argument Usage: --use-jack port1 port2... portn\n"); + success = FALSE; + } - i+=arg_return->jack_nports; - - if (arg_return->jack_nports==0) { - fprintf(stderr,"Argument Usage: --use-jack port1" - " port2... portn\n"); - return FALSE; + if (RMD_USE_JACK_EXTRA_FLAG == POPT_ARGFLAG_DOC_HIDDEN) + { + fprintf(stderr, + "Warning, will ignore --use-jack flags, no libjack support in build.\n"); } -#else - fprintf(stderr,"recordMyDesktop is not compiled" - " with Jack support!\n"); - return FALSE; -#endif - } - else{ - fprintf(stderr,"Argument Usage: --use-jack port1" - " port2... portn\n"); - return FALSE; - } + } + + default: + break; } - else if (strcmp(argv[i], "--ring-buffer-size") == 0) { - if(i+1<argc){ - float num=atof(argv[i+1]); - if(num>0.0) - arg_return->jack_ringbuffer_secs=num; - else{ - fprintf(stderr,"Argument Usage: --ring-buffer-size" - " N(floating point number>0.0)\n"); - return FALSE; - } - } - else{ - fprintf(stderr,"Argument Usage: --ring-buffer-size" - " N(floating point number>0.0)\n"); - return FALSE; - } - i++; - } - else if (strcmp(argv[i], "--rescue") == 0) { - if(i+1<argc){ - arg_return->rescue_path = argv[i + 1]; - } - else{ - fprintf(stderr,"Argument Usage: --rescue path_to_data\n"); - return FALSE; - } - i++; - } - else if(!strcmp(argv[i],"--no-sound")) - arg_return->nosound=1; - else if(!strcmp(argv[i],"--no-shared")){ - arg_return->noshared=1; - } - else if(!strcmp(argv[i],"--full-shots")){ - arg_return->full_shots=1; - } - else if(!strcmp(argv[i],"--no-frame")){ - arg_return->noframe=1; - } - else if(!strcmp(argv[i],"--follow-mouse")){ - arg_return->full_shots=1; - arg_return->follow_mouse=1; - } - else if(!strcmp(argv[i],"--no-encode")) - arg_return->no_encode=1; - else if(!strcmp(argv[i],"--quick-subsampling")){ - arg_return->no_quick_subsample=0; - } - else if(!strcmp(argv[i],"--on-the-fly-encoding")){ - arg_return->encOnTheFly=1; - } - else if(!strcmp(argv[i],"--overwrite")) - arg_return->overwrite=1; - else if(!strcmp(argv[i],"--no-wm-check")) - arg_return->nowmcheck=1; - else if(!strcmp(argv[i],"--compress-cache")){ - arg_return->zerocompression=0; - } - else if(!strcmp(argv[i],"--help")||!strcmp(argv[i],"-h")){ - fprintf(stderr,"%s",usage); - exit(0); - } - else if(!strcmp(argv[i],"--version")){ - fprintf(stderr,"recordMyDesktop v%s\n\n",VERSION); - exit(0); - } - else if(!strcmp(argv[i],"--print-config")){ - rmdPrintConfig(); - exit(0); - } - else{ - fprintf(stderr,"\n\tError parsing arguments.\n\t" - "Type --help or -h for usage.\n\n"); - return FALSE; - } } + + // Parsing is complete, perform final adjustments + if (no_cursor) + arg_return->xfixes_cursor = FALSE; + + if (quick_subsampling) + arg_return->no_quick_subsample = FALSE; + + if (compress_cache) + arg_return->zerocompression = FALSE; + + if (arg_return->follow_mouse) + arg_return->full_shots = TRUE; + + if (!arg_return->filename) + arg_return->filename = strdup(poptGetArg(popt_context)); + + // Make sure argument ranges are valid + success = success && rmdValidateArguments(arg_return); + + // Clean up + poptFreeContext(popt_context); - return TRUE; + return success; } + +static boolean rmdValidateArguments(const ProgArgs *args) +{ + static + boolean success = TRUE; + + if (args->x < 0) { + fprintf(stdout, "-x must not be less than 0.\n"); + success = FALSE; + } + if (args->y < 0) { + fprintf(stdout, "-y must not be less than 0.\n"); + success = FALSE; + } + if (args->width < 0) { + fprintf(stdout, "--width must be larger than 0.\n"); + success = FALSE; + } + if (args->height < 0) { + fprintf(stdout, "--height must be larger than 0.\n"); + success = FALSE; + } + if (args->fps <= 0) { + fprintf(stdout, "--fps must be larger than 0.\n"); + success = FALSE; + } + if (args->v_quality < 0 || args->v_quality > 63) { + fprintf(stdout, "--v_quality must be within the inclusive range [0-63].\n"); + success = FALSE; + } + if (args->v_bitrate < 45000 || args->v_quality > 2000000) { + fprintf(stdout, "--v_bitrate must be within the inclusive range [45000-2000000].\n"); + success = FALSE; + } + if (args->frequency <= 0) { + fprintf(stdout, "--frequency must be larger than 0.\n"); + success = FALSE; + } + if (args->channels <= 0) { + fprintf(stdout, "--channels must be larger than 0.\n"); + success = FALSE; + } + if (args->buffsize <= 0) { + fprintf(stdout, "--buffer-size must be larger than 0.\n"); + success = FALSE; + } + if (args->jack_ringbuffer_secs <= 0) { + fprintf(stdout, "--jack-buffer-size must be larger than 0.\n"); + success = FALSE; + } + + return success; +} + +static void rmdPrintAndExit(poptContext con, + enum poptCallbackReason reason, + const struct poptOption *opt, + const char *arg, + const void *data) +{ + if (strcmp(opt->longName, "version") == 0) { + fprintf(stderr,"recordMyDesktop v%s\n\n",VERSION); + } + else if (strcmp(opt->longName, "help") == 0) { + poptPrintHelp(con, stdout, 0); + fprintf(stdout, + "\n" + "\tIf no other options are specified, filename can be given without the -o switch.\n" + "\n" + "\n"); + } + else if (strcmp(opt->longName, "print-config") == 0) { + fprintf(stdout, + "\n" + "recordMyDesktop was compiled with the following options:\n" + "\n" + "Jack:\t\t\t" RMD_LIBJACK_STATUS "\n" + "Default Audio Backend:\t" RMD_LIBASOUND_STATUS "\n" + "\n" + "\n"); + } + + exit(0); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |