コード例 #1
0
ファイル: lavplay.c プロジェクト: zyh329/mjpeg-1
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;
}
コード例 #2
0
ファイル: veejay.c プロジェクト: d-j-a-y/veejay-dyne-outdated
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;
}