int main(int argc, char *argv[]) { char option[2]; int n; int err=0; if(!argc) usage(argv[0]); clone_args( argv, argc ); #if !GLIB_CHECK_VERSION(2,36,0) g_type_init(); #endif gtk_init( &argc, &argv ); // default host to connect to snprintf(hostname,sizeof(hostname), "127.0.0.1"); while( ( n = getopt( argc, argv, "s:h:p:tabnvLHfX:P:Vl:T:m:g:")) != EOF ) { sprintf(option, "%c", n ); err += set_option( option, optarg); if(err) usage(argv[0]); } if( optind > argc ) err ++; if( err ) usage(argv[0]); glade_init(); vj_mem_init(); vevo_strict_init(); find_user_themes(gveejay_theme); vj_gui_set_debug_level( verbosity , n_tracks,0,0); set_skin( selected_skin, gveejay_theme ); default_bank_values( &col, &row ); gui_load_theme(); register_signals(); vj_gui_init( skins[selected_skin].file, launcher, hostname, port_num, use_threads, load_midi, midi_file,beta,auto_connect); vj_gui_style_setup(); if( preview ) { veejay_msg(VEEJAY_MSG_INFO, "Starting with preview enabled"); gveejay_preview(preview); } if( launcher ) { reloaded_launcher( hostname, port_num ); } memset( &time_last_, 0, sizeof(struct timeval)); while(gveejay_running()) { if(gveejay_idle(NULL)==FALSE) break; while( gtk_events_pending() ) gtk_main_iteration(); } veejay_msg(VEEJAY_MSG_INFO, "See you!"); return 0; }
int main(int argc, char **argv) { video_playback_setup *settings; sigset_t allsignals; struct sigaction action; struct timespec req; int i; fflush(stdout); vj_mem_init(); vevo_strict_init(); info = veejay_malloc(); if (!info) { vj_mem_threaded_stop(); return 1; } settings = (video_playback_setup *) info->settings; if(!check_command_line_options(argc, argv)) { veejay_free(info); return 0; } if(info->dump) { veejay_set_colors(0); vj_event_init(NULL); vj_effect_initialize(720,576,0); vj_osc_allocate(VJ_PORT+2); vj_event_dump(); vj_effect_dump(); fprintf(stdout, "Environment variables:\n\tSDL_VIDEO_HWACCEL\t\tSet to 1 to use SDL video hardware accel (default=on)\n\tVEEJAY_PERFORMANCE\t\tSet to \"quality\" or \"fastest\" (default is fastest)\n\tVEEJAY_AUTO_SCALE_PIXELS\tSet to 1 to convert between CCIR 601 and JPEG automatically (default=dont care)\n\tVEEJAY_INTERPOLATE_CHROMA\tSet to 1 if you wish to interpolate every chroma sample when scaling (default=0)\n\tVEEJAY_CAPTURE_DRIVER\t\tSet to \"unicap\" or \"v4lutils\" (default=v4lutils)\n\tVEEJAY_SDL_KEY_REPEAT_INTERVAL\tinterval of key pressed to repeat while pressed down.\n\tVEEJAY_PLAYBACK_CACHE\t\tSample cache size in MB - by default, veejay takes 30 percent of total RAM\n\tVEEJAY_SDL_KEY_REPEAT_DELAY\tDelay key repeat in ms\n\tVEEJAY_FULLSCREEN\t\tStart in fullscreen (1) or windowed (0) mode\n\tVEEJAY_SCREEN_GEOMETRY\t\tSpecifiy a geometry for veejay to position the video window.\n\tVEEJAY_SCREEN_SIZE\t\tSize of video window, defaults to full screen size.\n\tVEEJAY_RUN_MODE\t\t\tRun in \"classic\" (352x288 Dummy) or default (720x576). \n"); fprintf(stdout, "\n\n\tExample for bash:\n\t\t\t$ export VEEJAY_AUTO_SCALE_PIXEL=1\n"); veejay_free(info); return 0; } if( vj_el_get_mem_size() == 0 ) prepare_cache_line( max_mem_, n_slots_ ); veejay_check_homedir( info ); sigsegfault_handler(); sigemptyset(&(settings->signal_set)); sigaddset(&(settings->signal_set), SIGINT); sigaddset(&(settings->signal_set), SIGPIPE); sigaddset(&(settings->signal_set), SIGILL); // sigaddset(&(settings->signal_set), SIGSEGV); sigaddset(&(settings->signal_set), SIGFPE ); sigaddset(&(settings->signal_set), SIGTERM ); sigaddset(&(settings->signal_set), SIGABRT); sigaddset(&(settings->signal_set), SIGPWR ); sigaddset(&(settings->signal_set), SIGQUIT ); sigfillset( &allsignals ); action.sa_handler = donothing; action.sa_mask = allsignals; action.sa_flags = SA_SIGINFO | SA_ONESHOT ; //SA_RESTART | SA_RESETHAND; signal( SIGPIPE, SIG_IGN ); for( i = 1; i < NSIG; i ++ ) if( sigismember( &(settings->signal_set), i )) sigaction( i, &action, 0 ); char *mem_func = get_memcpy_descr(); if(mem_func) { veejay_msg(VEEJAY_MSG_INFO, "Using SIMD %s", mem_func); free(mem_func); } info->use_keyb = use_keyb; info->use_mouse = use_mouse; info->show_cursor = show_cursor; if(veejay_init( info, default_geometry_x, default_geometry_y, NULL, live, ta )< 0) { veejay_msg(VEEJAY_MSG_ERROR, "Cannot start veejay"); return 0; } if(auto_loop) veejay_auto_loop(info); print_license(); veejay_init_msg_ring(); // rest of logging to screen if(!veejay_main(info)) { veejay_msg(VEEJAY_MSG_ERROR, "Cannot start main playback cycle"); veejay_free(info); return 1; } veejay_msg(VEEJAY_MSG_DEBUG, "Started playback"); int current_state = LAVPLAY_STATE_PLAYING; req.tv_sec = 0; req.tv_nsec = 4000 * 1000; while( 1 ) { //@ until your PC stops working clock_nanosleep( CLOCK_REALTIME, 0, &req, NULL ); current_state = veejay_get_state(info); if( current_state == LAVPLAY_STATE_STOP ) break; } veejay_busy(info); veejay_free(info); veejay_destroy_msg_ring(); veejay_msg(VEEJAY_MSG_INFO, "Thank you for using Veejay"); return 0; }