int main(int argc, char **argv) { char buffer[256]; /* Output Version information - Used by xlav to check for * consistency. */ printf( LAVPLAY_VSTR "\n" ); fflush(stdout); printf( "lavtools version " VERSION "\n" ); fcntl(0, F_SETFL, O_NONBLOCK); signal(SIGINT,SigHandler); info = lavplay_malloc(); if (!info) return 1; check_command_line_options(argc, argv); info->output_statistics = stats; info->msg_callback = input; info->state_changed = state_changed; if (!lavplay_main(info)) return 1; if (!lavplay_set_frame(info, skip_seconds * info->editlist->video_norm=='p'?25:30)) return 1; if (!lavplay_set_speed(info, 1)) return 1; /* okay, now wait until we get command-line input and ROCK! */ while (!exit_flag) { if (read(0, buffer, 255) > 0) process_input(buffer); else usleep(10000); } lavplay_busy(info); /* wait for all the nice goodies to shut down */ lavplay_free(info); fprintf(stderr, "\n"); 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; }