diff options
author | enselic <enselic@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2008-09-13 20:03:27 +0000 |
---|---|---|
committer | enselic <enselic@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2008-09-13 20:03:27 +0000 |
commit | 700ec4aebc1ea833b2f7b50bff3aba119913b355 (patch) | |
tree | c8e2a1b518e88ccbac861cf75dabeb16a3cbf19f /recordmydesktop | |
parent | f36073005abb2c474569ca3370d767b4d9142f69 (diff) |
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.
git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@538 f606c939-3180-4ac9-a4b8-4b8779d57d0a
Diffstat (limited to 'recordmydesktop')
62 files changed, 1615 insertions, 661 deletions
diff --git a/recordmydesktop/include/Makefile.am b/recordmydesktop/include/Makefile.am index 1884a45..f675c80 100644 --- a/recordmydesktop/include/Makefile.am +++ b/recordmydesktop/include/Makefile.am @@ -1 +1 @@ -noinst_HEADERS= recordmydesktop.h rmdfunc.h rmdtypes.h rmdmacro.h skeleton.h +noinst_HEADERS = recordmydesktop.h rmdtypes.h rmdmacro.h skeleton.h diff --git a/recordmydesktop/include/recordmydesktop.h b/recordmydesktop/include/recordmydesktop.h index b0d0063..3ee6e83 100644 --- a/recordmydesktop/include/recordmydesktop.h +++ b/recordmydesktop/include/recordmydesktop.h @@ -43,7 +43,6 @@ u_int32_t *yblocks, *vblocks; #include "rmdmacro.h" -#include "rmdfunc.h" diff --git a/recordmydesktop/include/rmdfunc.h b/recordmydesktop/include/rmdfunc.h deleted file mode 100644 index 88d6c69..0000000 --- a/recordmydesktop/include/rmdfunc.h +++ /dev/null @@ -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 johnvarouhakis@gmail.com * -******************************************************************************/ - - -#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 - - - - - - diff --git a/recordmydesktop/src/Makefile.am b/recordmydesktop/src/Makefile.am index 55f7566..4c80b7c 100644 --- a/recordmydesktop/src/Makefile.am +++ b/recordmydesktop/src/Makefile.am @@ -2,44 +2,71 @@ bin_PROGRAMS = recordmydesktop 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 diff --git a/recordmydesktop/src/cache_audio.c b/recordmydesktop/src/cache_audio.c index 27a8141..3322567 100644 --- a/recordmydesktop/src/cache_audio.c +++ b/recordmydesktop/src/cache_audio.c @@ -24,8 +24,9 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - +#include "cache_audio.h" #include "recordmydesktop.h" +#include "rmd_jack.h" void *CacheSoundBuffer(ProgData *pdata){ diff --git a/recordmydesktop/src/cache_audio.h b/recordmydesktop/src/cache_audio.h new file mode 100644 index 0000000..3c2a3ce --- /dev/null +++ b/recordmydesktop/src/cache_audio.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/cache_frame.c b/recordmydesktop/src/cache_frame.c index faf2394..c00d314 100644 --- a/recordmydesktop/src/cache_frame.c +++ b/recordmydesktop/src/cache_frame.c @@ -26,7 +26,9 @@ #include <signal.h> +#include "cache_frame.h" #include "recordmydesktop.h" +#include "rmd_cache.h" //minimize hard disk access diff --git a/recordmydesktop/src/cache_frame.h b/recordmydesktop/src/cache_frame.h new file mode 100644 index 0000000..adf698c --- /dev/null +++ b/recordmydesktop/src/cache_frame.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/capture_sound.c b/recordmydesktop/src/capture_sound.c index d32715e..37a5c18 100644 --- a/recordmydesktop/src/capture_sound.c +++ b/recordmydesktop/src/capture_sound.c @@ -24,8 +24,13 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ +#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){ diff --git a/recordmydesktop/src/capture_sound.h b/recordmydesktop/src/capture_sound.h new file mode 100644 index 0000000..c2b6d18 --- /dev/null +++ b/recordmydesktop/src/capture_sound.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/encode_cache.c b/recordmydesktop/src/encode_cache.c index 1907d98..01a7968 100644 --- a/recordmydesktop/src/encode_cache.c +++ b/recordmydesktop/src/encode_cache.c @@ -24,7 +24,10 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - +#include "encode_cache.h" +#include "flush_to_ogg.h" +#include "init_encoder.h" +#include "load_cache.h" #include "recordmydesktop.h" diff --git a/recordmydesktop/src/encode_cache.h b/recordmydesktop/src/encode_cache.h new file mode 100644 index 0000000..661b00b --- /dev/null +++ b/recordmydesktop/src/encode_cache.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/encode_image_buffer.c b/recordmydesktop/src/encode_image_buffer.c index 1242071..5b3f84d 100644 --- a/recordmydesktop/src/encode_image_buffer.c +++ b/recordmydesktop/src/encode_image_buffer.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "encode_image_buffer.h" void *EncodeImageBuffer(ProgData *pdata){ @@ -90,4 +90,3 @@ void SyncEncodeImageBuffer(ProgData *pdata){ } } } - diff --git a/recordmydesktop/src/encode_image_buffer.h b/recordmydesktop/src/encode_image_buffer.h new file mode 100644 index 0000000..e5bb51f --- /dev/null +++ b/recordmydesktop/src/encode_image_buffer.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/encode_sound_buffer.c b/recordmydesktop/src/encode_sound_buffer.c index 919b649..018de63 100644 --- a/recordmydesktop/src/encode_sound_buffer.c +++ b/recordmydesktop/src/encode_sound_buffer.c @@ -24,8 +24,9 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - +#include "encode_sound_buffer.h" #include "recordmydesktop.h" +#include "rmd_jack.h" void *EncodeSoundBuffer(ProgData *pdata){ diff --git a/recordmydesktop/src/encode_sound_buffer.h b/recordmydesktop/src/encode_sound_buffer.h new file mode 100644 index 0000000..1757240 --- /dev/null +++ b/recordmydesktop/src/encode_sound_buffer.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/flush_to_ogg.c b/recordmydesktop/src/flush_to_ogg.c index 8827503..7b32346 100644 --- a/recordmydesktop/src/flush_to_ogg.c +++ b/recordmydesktop/src/flush_to_ogg.c @@ -24,8 +24,12 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ +#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 diff --git a/recordmydesktop/src/flush_to_ogg.h b/recordmydesktop/src/flush_to_ogg.h new file mode 100644 index 0000000..d7a2fcd --- /dev/null +++ b/recordmydesktop/src/flush_to_ogg.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/get_frame.c b/recordmydesktop/src/get_frame.c index c732002..1de3c0e 100644 --- a/recordmydesktop/src/get_frame.c +++ b/recordmydesktop/src/get_frame.c @@ -24,9 +24,14 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - +#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" diff --git a/recordmydesktop/src/get_frame.h b/recordmydesktop/src/get_frame.h new file mode 100644 index 0000000..9c4c6d0 --- /dev/null +++ b/recordmydesktop/src/get_frame.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/getzpixmap.c b/recordmydesktop/src/getzpixmap.c index 742ffb8..d4a7809 100644 --- a/recordmydesktop/src/getzpixmap.c +++ b/recordmydesktop/src/getzpixmap.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "getzpixmap.h" int GetZPixmap(Display *dpy, diff --git a/recordmydesktop/src/getzpixmap.h b/recordmydesktop/src/getzpixmap.h new file mode 100644 index 0000000..68242b0 --- /dev/null +++ b/recordmydesktop/src/getzpixmap.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/init_encoder.c b/recordmydesktop/src/init_encoder.c index c5da4d5..ad3f608 100644 --- a/recordmydesktop/src/init_encoder.c +++ b/recordmydesktop/src/init_encoder.c @@ -27,6 +27,7 @@ #include <string.h> +#include "init_encoder.h" #include "recordmydesktop.h" #include "skeleton.h" diff --git a/recordmydesktop/src/init_encoder.h b/recordmydesktop/src/init_encoder.h new file mode 100644 index 0000000..42ebaa8 --- /dev/null +++ b/recordmydesktop/src/init_encoder.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#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 diff --git a/recordmydesktop/src/initialize_data.c b/recordmydesktop/src/initialize_data.c index 2b2bb6e..3ac5c77 100644 --- a/recordmydesktop/src/initialize_data.c +++ b/recordmydesktop/src/initialize_data.c @@ -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 diff --git a/recordmydesktop/src/load_cache.c b/recordmydesktop/src/load_cache.c index afd1570..82db79f 100644 --- a/recordmydesktop/src/load_cache.c +++ b/recordmydesktop/src/load_cache.c @@ -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 diff --git a/recordmydesktop/src/load_cache.h b/recordmydesktop/src/load_cache.h new file mode 100644 index 0000000..fca0cbb --- /dev/null +++ b/recordmydesktop/src/load_cache.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef LOAD_CACHE +#define LOAD_CACHE 1 + +#include "rmdtypes.h" + + +/** +* Cache loading and processing thread +* +* \param pdata ProgData struct containing all program data +* +*/ +void *LoadCache(ProgData *pdata); + + +#endif diff --git a/recordmydesktop/src/make_dummy_pointer.c b/recordmydesktop/src/make_dummy_pointer.c index 033e112..bbad17a 100644 --- a/recordmydesktop/src/make_dummy_pointer.c +++ b/recordmydesktop/src/make_dummy_pointer.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "make_dummy_pointer.h" unsigned char *MakeDummyPointer(DisplaySpecs *specs, diff --git a/recordmydesktop/src/make_dummy_pointer.h b/recordmydesktop/src/make_dummy_pointer.h new file mode 100644 index 0000000..391416b --- /dev/null +++ b/recordmydesktop/src/make_dummy_pointer.h @@ -0,0 +1,58 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef MAKE_DUMMY_POINTER_H +#define MAKE_DUMMY_POINTER_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/opendev.c b/recordmydesktop/src/opendev.c index 7ea7f9d..a3ef1cd 100644 --- a/recordmydesktop/src/opendev.c +++ b/recordmydesktop/src/opendev.c @@ -44,6 +44,8 @@ #include <sys/soundcard.h> #endif +#include "opendev.h" + #ifdef HAVE_LIBASOUND snd_pcm_t *OpenDev( const char *pcm_dev, diff --git a/recordmydesktop/src/opendev.h b/recordmydesktop/src/opendev.h new file mode 100644 index 0000000..c6ac144 --- /dev/null +++ b/recordmydesktop/src/opendev.h @@ -0,0 +1,84 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef OPENDEV_H +#define OPENDEV_H 1 + +#include "rmdtypes.h" + + +#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 + + +#endif diff --git a/recordmydesktop/src/parseargs.c b/recordmydesktop/src/parseargs.c index b6f38f3..12fb52e 100644 --- a/recordmydesktop/src/parseargs.c +++ b/recordmydesktop/src/parseargs.c @@ -26,6 +26,7 @@ #include "recordmydesktop.h" +#include "rmd_rescue.h" static void PrintConfig(void) { diff --git a/recordmydesktop/src/poll_events.c b/recordmydesktop/src/poll_events.c index c8263df..88c3f3c 100644 --- a/recordmydesktop/src/poll_events.c +++ b/recordmydesktop/src/poll_events.c @@ -36,10 +36,11 @@ #include <signal.h> #include <pthread.h> -#include "rmdfunc.h" -#include "rmdtypes.h" -#include "rmdmacro.h" +#include "poll_events.h" #include "rectinsert.h" +#include "rmd_frame.h" +#include "rmdmacro.h" +#include "rmdtypes.h" #define CLIP_EVENT_AREA(e,brwin,wgeom){\ diff --git a/recordmydesktop/src/poll_events.h b/recordmydesktop/src/poll_events.h new file mode 100644 index 0000000..6195237 --- /dev/null +++ b/recordmydesktop/src/poll_events.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef POLL_EVENTS_H +#define POLL_EVENTS_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/queryextensions.c b/recordmydesktop/src/queryextensions.c index a733f34..dfc7120 100644 --- a/recordmydesktop/src/queryextensions.c +++ b/recordmydesktop/src/queryextensions.c @@ -24,10 +24,10 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include <X11/extensions/shape.h> #include "recordmydesktop.h" +#include "queryextensions.h" void QueryExtensions(Display *dpy, diff --git a/recordmydesktop/src/queryextensions.h b/recordmydesktop/src/queryextensions.h new file mode 100644 index 0000000..bde9abd --- /dev/null +++ b/recordmydesktop/src/queryextensions.h @@ -0,0 +1,53 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef QUERYEXTENSIONS_H +#define QUERYEXTENSIONS_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/recordmydesktop.c b/recordmydesktop/src/recordmydesktop.c index 53f776b..622a75e 100644 --- a/recordmydesktop/src/recordmydesktop.c +++ b/recordmydesktop/src/recordmydesktop.c @@ -24,10 +24,17 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" #include "initialize_data.h" +#include "rmd_error.h" #include "parseargs.h" +#include "setbrwindow.h" +#include "wm_check.h" +#include "queryextensions.h" +#include "shortcuts.h" +#include "rmdthreads.h" +#include "rmd_cache.h" +#include "encode_cache.h" int main(int argc,char **argv){ diff --git a/recordmydesktop/src/rectinsert.h b/recordmydesktop/src/rectinsert.h index 013eb12..414f01f 100644 --- a/recordmydesktop/src/rectinsert.h +++ b/recordmydesktop/src/rectinsert.h @@ -45,5 +45,11 @@ */ int RectInsert(RectArea **root, WGeometry *wgeom); +/** +* Clean up a list of areas marked for update. +* \param root Root entry of the list +*/ +void ClearList(RectArea **root); + #endif diff --git a/recordmydesktop/src/rmd_cache.c b/recordmydesktop/src/rmd_cache.c index 823b08b..1d05e67 100644 --- a/recordmydesktop/src/rmd_cache.c +++ b/recordmydesktop/src/rmd_cache.c @@ -24,8 +24,9 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "rmd_cache.h" +#include "specsfile.h" /** diff --git a/recordmydesktop/src/rmd_cache.h b/recordmydesktop/src/rmd_cache.h new file mode 100644 index 0000000..4ddb5e9 --- /dev/null +++ b/recordmydesktop/src/rmd_cache.h @@ -0,0 +1,89 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_CACHE_H +#define RMD_CACHE_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/rmd_error.c b/recordmydesktop/src/rmd_error.c index 4c0a449..7d27d02 100644 --- a/recordmydesktop/src/rmd_error.c +++ b/recordmydesktop/src/rmd_error.c @@ -34,7 +34,7 @@ #include <X11/Xlib.h> #include <X11/Xlibint.h> -#include "rmdfunc.h" +#include "rmd_error.h" int rmdErrorHandler( Display *dpy, XErrorEvent *e ) diff --git a/recordmydesktop/src/rmd_error.h b/recordmydesktop/src/rmd_error.h new file mode 100644 index 0000000..82529c7 --- /dev/null +++ b/recordmydesktop/src/rmd_error.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_ERROR_H +#define RMD_ERROR_H 1 + +#include "rmdtypes.h" + + +/* + * 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); + + +#endif diff --git a/recordmydesktop/src/rmd_frame.c b/recordmydesktop/src/rmd_frame.c index 206e2ee..cc58d54 100644 --- a/recordmydesktop/src/rmd_frame.c +++ b/recordmydesktop/src/rmd_frame.c @@ -29,9 +29,13 @@ #include <X11/Xlib.h> #include <X11/extensions/shape.h> +#include "rmd_frame.h" + + #define BORDER_WIDTH 6 #define OUTLINE_WIDTH 1 + void rmdDrawFrame(Display *dpy, int screen, Window win, diff --git a/recordmydesktop/src/rmd_frame.h b/recordmydesktop/src/rmd_frame.h new file mode 100644 index 0000000..9d46662 --- /dev/null +++ b/recordmydesktop/src/rmd_frame.h @@ -0,0 +1,101 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_FRAME_H +#define RMD_FRAME_H 1 + +#include "rmdtypes.h" + + +/* + * 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); + + +#endif diff --git a/recordmydesktop/src/rmd_jack.c b/recordmydesktop/src/rmd_jack.c index 6e5544e..edc7076 100644 --- a/recordmydesktop/src/rmd_jack.c +++ b/recordmydesktop/src/rmd_jack.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "rmd_jack.h" #ifdef HAVE_JACK_H diff --git a/recordmydesktop/src/rmd_jack.h b/recordmydesktop/src/rmd_jack.h new file mode 100644 index 0000000..96492b0 --- /dev/null +++ b/recordmydesktop/src/rmd_jack.h @@ -0,0 +1,63 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_JACK_H +#define RMD_JACK_H 1 + +#include "rmdtypes.h" + + +#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 + + +#endif diff --git a/recordmydesktop/src/rmd_rescue.c b/recordmydesktop/src/rmd_rescue.c index b4624fd..6f907d3 100644 --- a/recordmydesktop/src/rmd_rescue.c +++ b/recordmydesktop/src/rmd_rescue.c @@ -24,9 +24,12 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ -#include "recordmydesktop.h" +#include "encode_cache.h" #include "initialize_data.h" +#include "recordmydesktop.h" #include "register_callbacks.h" +#include "rmd_rescue.h" +#include "specsfile.h" int rmdRescue(const char *path){ diff --git a/recordmydesktop/src/rmd_rescue.h b/recordmydesktop/src/rmd_rescue.h new file mode 100644 index 0000000..2fbf2da --- /dev/null +++ b/recordmydesktop/src/rmd_rescue.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_RESCUE_H +#define RMD_RESCUE_H 1 + +/* + * 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 diff --git a/recordmydesktop/src/rmd_timer.c b/recordmydesktop/src/rmd_timer.c index 28929ab..edc6f3e 100644 --- a/recordmydesktop/src/rmd_timer.c +++ b/recordmydesktop/src/rmd_timer.c @@ -33,6 +33,7 @@ #include <stdlib.h> #include "recordmydesktop.h" +#include "rmd_timer.h" void *rmdTimer(ProgData *pdata){ diff --git a/recordmydesktop/src/rmd_timer.h b/recordmydesktop/src/rmd_timer.h new file mode 100644 index 0000000..28b9898 --- /dev/null +++ b/recordmydesktop/src/rmd_timer.h @@ -0,0 +1,44 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMD_TIMER_H +#define RMD_TIMER_H 1 + +#include "rmdtypes.h" + + +/** +* Loop ,signal timer cond var,sleep-\ +* ^ | +* |________________________________/ +* +* +* \param pdata ProgData struct containing all program data +*/ +void *rmdTimer(ProgData *pdata); + + +#endif diff --git a/recordmydesktop/src/rmdthreads.c b/recordmydesktop/src/rmdthreads.c index 705c383..d70e3b4 100644 --- a/recordmydesktop/src/rmdthreads.c +++ b/recordmydesktop/src/rmdthreads.c @@ -33,9 +33,18 @@ #include <pthread.h> #include <unistd.h> -#include "rmdfunc.h" -#include "rmdtypes.h" +#include "cache_audio.h" +#include "cache_frame.h" +#include "capture_sound.h" +#include "encode_image_buffer.h" +#include "encode_sound_buffer.h" +#include "flush_to_ogg.h" +#include "get_frame.h" #include "register_callbacks.h" +#include "rmd_jack.h" +#include "rmd_timer.h" +#include "rmdthreads.h" +#include "rmdtypes.h" void rmdThreads(ProgData *pdata){ diff --git a/recordmydesktop/src/rmdthreads.h b/recordmydesktop/src/rmdthreads.h new file mode 100644 index 0000000..c832c1c --- /dev/null +++ b/recordmydesktop/src/rmdthreads.h @@ -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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef RMDTHREADS_H +#define RMDTHREADS_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/setbrwindow.c b/recordmydesktop/src/setbrwindow.c index 2d1f453..ce82ddd 100644 --- a/recordmydesktop/src/setbrwindow.c +++ b/recordmydesktop/src/setbrwindow.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "setbrwindow.h" /** diff --git a/recordmydesktop/src/setbrwindow.h b/recordmydesktop/src/setbrwindow.h new file mode 100644 index 0000000..0ed9c93 --- /dev/null +++ b/recordmydesktop/src/setbrwindow.h @@ -0,0 +1,53 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef SETBRWINDOW_H +#define SETBRWINDOW_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/shortcuts.c b/recordmydesktop/src/shortcuts.c index 9b4779a..215ff16 100644 --- a/recordmydesktop/src/shortcuts.c +++ b/recordmydesktop/src/shortcuts.c @@ -37,6 +37,7 @@ #include <X11/keysym.h> #include "rmdtypes.h" +#include "shortcuts.h" int RegisterShortcut(Display *dpy, Window root, diff --git a/recordmydesktop/src/shortcuts.h b/recordmydesktop/src/shortcuts.h new file mode 100644 index 0000000..ea93ba2 --- /dev/null +++ b/recordmydesktop/src/shortcuts.h @@ -0,0 +1,57 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef SHORTCUTS_H +#define CHORTCUTS_H 1 + +#include "rmdtypes.h" + + +/* + * 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); + + +#endif diff --git a/recordmydesktop/src/specsfile.c b/recordmydesktop/src/specsfile.c index bc61ea4..d22d2b3 100644 --- a/recordmydesktop/src/specsfile.c +++ b/recordmydesktop/src/specsfile.c @@ -33,6 +33,7 @@ #include <stdio.h> #include "rmdtypes.h" +#include "specsfile.h" int WriteSpecsFile(ProgData *pdata){ diff --git a/recordmydesktop/src/specsfile.h b/recordmydesktop/src/specsfile.h new file mode 100644 index 0000000..eed0942 --- /dev/null +++ b/recordmydesktop/src/specsfile.h @@ -0,0 +1,59 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef SPECSFILE_H +#define SPECSFILE_H 1 + +#include "rmdtypes.h" + + +/* + * 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); + + +#endif diff --git a/recordmydesktop/src/update_image.c b/recordmydesktop/src/update_image.c index 7a09920..efbe5a8 100644 --- a/recordmydesktop/src/update_image.c +++ b/recordmydesktop/src/update_image.c @@ -24,8 +24,9 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - +#include "getzpixmap.h" #include "recordmydesktop.h" +#include "update_image.h" #include "yuv_utils.h" diff --git a/recordmydesktop/src/update_image.h b/recordmydesktop/src/update_image.h new file mode 100644 index 0000000..7c67e25 --- /dev/null +++ b/recordmydesktop/src/update_image.h @@ -0,0 +1,70 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef UPDATE_IMAGE_H +#define UPDATE_IMAGE_H 1 + +#include "rmdtypes.h" + + +/** +* 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); + + +#endif diff --git a/recordmydesktop/src/wm_check.c b/recordmydesktop/src/wm_check.c index eea614b..555d960 100644 --- a/recordmydesktop/src/wm_check.c +++ b/recordmydesktop/src/wm_check.c @@ -24,8 +24,8 @@ * For further information contact me at johnvarouhakis@gmail.com * ******************************************************************************/ - #include "recordmydesktop.h" +#include "wm_check.h" char *rmdWMCheck(Display *dpy,Window root){ diff --git a/recordmydesktop/src/wm_check.h b/recordmydesktop/src/wm_check.h new file mode 100644 index 0000000..1867dc2 --- /dev/null +++ b/recordmydesktop/src/wm_check.h @@ -0,0 +1,45 @@ +/****************************************************************************** +* 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 johnvarouhakis@gmail.com * +******************************************************************************/ + +#ifndef WM_CHECK_H +#define WM_CHECK_H 1 + +#include "rmdtypes.h" + + +/** +*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); + + +#endif |