diff options
Diffstat (limited to 'recordmydesktop/src/rmd_initialize_data.c')
| -rw-r--r-- | recordmydesktop/src/rmd_initialize_data.c | 252 | 
1 files changed, 0 insertions, 252 deletions
diff --git a/recordmydesktop/src/rmd_initialize_data.c b/recordmydesktop/src/rmd_initialize_data.c deleted file mode 100644 index 0f0a073..0000000 --- a/recordmydesktop/src/rmd_initialize_data.c +++ /dev/null @@ -1,252 +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            * -******************************************************************************/ - -#include "config.h" -#include "rmd_initialize_data.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 rmdFixBufferSize(snd_pcm_uframes_t *buffsize) { -	snd_pcm_uframes_t buffsize_t = *buffsize, -#else -static void rmdFixBufferSize(u_int32_t *buffsize) { -	u_int32_t buffsize_t = *buffsize, -#endif -	buffsize_ret = 1; - -	while (buffsize_t > 1) { -		buffsize_t >>= 1; -		buffsize_ret <<= 1; -	} -	fprintf(stderr,	"Buffer size adjusted to %d from %d frames.\n", -			(int)buffsize_ret, (int)*buffsize); -} - -int rmdInitializeData(ProgData *pdata, EncData *enc_data, CacheData *cache_data) { -	fprintf(stderr, "Initializing...\n"); - -	rmdMakeMatrices(); -	if (pdata->args.have_dummy_cursor) { -		pdata->dummy_pointer = rmdMakeDummyPointer(	pdata->dpy, -								&pdata->specs, -								16, -								pdata->args.cursor_color, -								0, -								&pdata->npxl); -		pdata->dummy_p_size = 16; -	} else -		pdata->dummy_p_size = 0; - -	pthread_mutex_init(&pdata->sound_buffer_mutex, NULL); -	pthread_mutex_init(&pdata->img_buff_ready_mutex, NULL); -	pthread_mutex_init(&pdata->theora_lib_mutex, NULL); -	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(&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); -	pthread_cond_init(&pdata->sound_data_read, NULL); -	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; -	pdata->rect_root		= NULL; -	pdata->avd			= 0; -	pdata->sound_buffer		= NULL; -	pdata->running			= TRUE; -	pdata->paused			= FALSE; -	pdata->aborted			= FALSE; -	pdata->pause_state_changed	= FALSE; -	pdata->frames_total		= 0; -	pdata->frames_lost		= 0; -	pdata->capture_frameno		= 0; -	pdata->time_frameno		= 0; - -	if (!pdata->args.nosound) { -		if (!pdata->args.use_jack) { -			rmdFixBufferSize(&pdata->args.buffsize); -#ifdef HAVE_LIBASOUND -			pdata->sound_handle=rmdOpenDev(	pdata->args.device, -							&pdata->args.channels, -							&pdata->args.frequency, -							&pdata->args.buffsize, -							&pdata->periodsize, -							&pdata->periodtime, -							&pdata->hard_pause); - -			pdata->sound_framesize=(snd_pcm_format_width(SND_PCM_FORMAT_S16_LE) / 8 * -						pdata->args.channels); - -			if (pdata->sound_handle == NULL) { -#else -				pdata->sound_handle = rmdOpenDev(	pdata->args.device, -									pdata->args.channels, -									pdata->args.frequency); - -				pdata->periodtime =	(1000000 * pdata->args.buffsize) / -							((pdata->args.channels<<1) * pdata->args.frequency); -			//when using OSS periodsize serves as an alias of buffsize -			pdata->periodsize = pdata->args.buffsize; -			pdata->sound_framesize = pdata->args.channels<<1; -			if (pdata->sound_handle<0) { -#endif -				fprintf(stderr,	"Error while opening/configuring soundcard %s\n" -						"Try running with the --no-sound or specify a " -						"correct device.\n", -						pdata->args.device); -				return 3; -			} -		} else { -#ifdef HAVE_LIBJACK -			int jack_error = 0; -			pdata->jdata->port_names = pdata->args.jack_port_names; -			pdata->jdata->nports = pdata->args.jack_nports; -			pdata->jdata->ringbuffer_secs = pdata->args.jack_ringbuffer_secs; -			pdata->jdata->sound_buffer_mutex = &pdata->sound_buffer_mutex; -			pdata->jdata->sound_data_read = &pdata->sound_data_read; -			pdata->jdata->capture_started = 0; - -			if ((jack_error = rmdStartJackClient(pdata->jdata))!=0) -				return jack_error; - -			pdata->args.buffsize = pdata->jdata->buffersize; -			pdata->periodsize = pdata->args.buffsize; -			pdata->args.frequency = pdata->jdata->frequency; -			pdata->args.channels = pdata->jdata->nports; -			pdata->periodtime =	1000000 * pdata->args.buffsize / -						pdata->args.frequency; -			pdata->sound_framesize =	sizeof(jack_default_audio_sample_t) * -							pdata->jdata->nports; -#else -			fprintf(stderr, "Should not be here!\n"); -			exit(-1); -#endif -		} -	} - -	if (pdata->args.encOnTheFly) -		rmdInitEncoder(pdata, enc_data, 0); -	else -		rmdInitCacheData(pdata, enc_data, cache_data); - -	for (int i = 0; i < pdata->enc_data->yuv.y_width * pdata->enc_data->yuv.y_height; i++) -		pdata->enc_data->yuv.y[i] = 0; - -	for (int i = 0; i < pdata->enc_data->yuv.uv_width * pdata->enc_data->yuv.uv_height; i++) -		pdata->enc_data->yuv.v[i] = pdata->enc_data->yuv.u[i] = 127; - -	yblocks = malloc((pdata->enc_data->yuv.y_width / Y_UNIT_WIDTH) * -				(pdata->enc_data->yuv.y_height / Y_UNIT_WIDTH)); -	ublocks = malloc((pdata->enc_data->yuv.y_width / Y_UNIT_WIDTH) * -				(pdata->enc_data->yuv.y_height / Y_UNIT_WIDTH)); -	vblocks = malloc((pdata->enc_data->yuv.y_width / Y_UNIT_WIDTH) * -				(pdata->enc_data->yuv.y_height / Y_UNIT_WIDTH)); - -	pdata->frametime = 1000000 / pdata->args.fps; - -	return 0; - -} - -void rmdSetupDefaultArgs(ProgArgs *args) { -	args->delay			= 0; -	args->windowid			= 0; -	args->x				= 0; -	args->y				= 0; -	args->width			= 0; -	args->height			= 0; -	args->rescue_path		= NULL; -	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->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			= 0; -	args->v_quality			= 63; -	args->s_quality			= 10; - -	if (getenv("DISPLAY") != NULL) { -		args->display = malloc(strlen(getenv("DISPLAY")) + 1); -		strcpy(args->display, getenv("DISPLAY")); -	} else { -		args->display = NULL; -	} - -	memset(args->jack_port_names, 0, sizeof(args->jack_port_names)); - -	args->device = malloc(strlen(DEFAULT_AUDIO_DEVICE) + 1); -	strcpy(args->device, DEFAULT_AUDIO_DEVICE); - -	args->workdir = malloc(5); -	strcpy(args->workdir, "/tmp"); - -	args->pause_shortcut = malloc(15); -	strcpy(args->pause_shortcut, "Control+Mod1+p"); - -	args->stop_shortcut = malloc(15); -	strcpy(args->stop_shortcut, "Control+Mod1+s"); - -	args->filename = malloc(8); -	strcpy(args->filename, "out.ogv"); -} - -void rmdCleanUp(void) { -	free(yblocks); -	free(ublocks); -	free(vblocks); -}  | 
