/* ------------------------------------------------------------- // ------ MAIN - replace this by your own aplication! // ------------------------------------------------------------- */ int main(int argn, char *argv[]) { int multipnm=1; job_t job; JOB = &job; setvbuf(stdout, (char *) NULL, _IONBF, 0); /* not buffered */ while (multipnm==1) { job_init(&job); process_arguments(&job, argn, argv); mark_start(&job); multipnm = read_picture(&job); /* separation of main and rest for using as lib this will be changed later => introduction of set_option() for better communication to the engine */ if (multipnm<0) break; /* read error */ /* call main loop */ pgm2asc(&job); mark_end(&job); print_output(&job); job_free(&job); } return 0; }
/* ------------------------------------------------------------- // ------ MAIN - replace this by your own aplication! // ------------------------------------------------------------- */ int main(int argn, char *argv[]) { int multipnm=1; job_t job1, *job; /* fixme, dont want global variables for lib */ job=OCR_JOB=&job1; setvbuf(stdout, (char *) NULL, _IONBF, 0); /* not buffered */ job_init(job); /* init cfg and db */ process_arguments(job, argn, argv); /* load character data base (JS1002: now outside pgm2asc) */ if ( job->cfg.mode & 2 ) /* check for db-option flag */ load_db(job); /* load_db uses readpnm() and would conflict with multi images */ while (multipnm==1) { /* multi-image loop */ job_init_image(job); /* single image */ mark_start(job); multipnm = read_picture(job); /* separation of main and rest for using as lib this will be changed later => introduction of set_option() for better communication to the engine */ if (multipnm<0) break; /* read error */ /* call main loop */ pgm2asc(job); mark_end(job); print_output(job); job_free_image(job); } return ((multipnm<0)?multipnm:0); /* -1=255 on error, 0 ok */ }
char* gocr_main(job_t* job) { int multipnm=1; char* output; setvbuf(stdout, (char *) NULL, _IONBF, 0); /* not buffered */ /* load character data base (JS1002: now outside pgm2asc) */ if ( job->cfg.mode & 2 ) /* check for db-option flag */ load_db(job); /* load_db uses readpnm() and would conflict with multi images */ while (multipnm==1) { /* multi-image loop */ job_init_image(job); /* single image */ mark_start(job); multipnm = read_picture(job); /* separation of main and rest for using as lib this will be changed later => introduction of set_option() for better communication to the engine */ if (multipnm<0) break; /* read error */ /* call main loop */ pgm2asc(job); mark_end(job); output = print_output(job); job_free_image(job); } // return ((multipnm<0)?multipnm:0); /* -1=255 on error, 0 ok */ return output; }
// card number passed as void * (using cast) static void * sdi_monitor(void *arg) { long card = (long)arg; sv_handle *sv = a_sv[card]; sv_fifo *poutput; sv_info status_info; sv_storageinfo storage_info; printf("card = %ld\n", card); SV_CHECK( sv_status( sv, &status_info) ); SV_CHECK( sv_storage_status(sv, 0, NULL, &storage_info, sizeof(storage_info), 0) ); SV_CHECK( sv_fifo_init( sv, &poutput, // FIFO handle FALSE, // bInput (FALSE for playback) TRUE, // bShared (TRUE for input/output share memory) TRUE, // bDMA FALSE, // reserved 0) ); // nFrames (0 means use maximum) SV_CHECK( sv_fifo_start(sv, poutput) ); // Loop forever reading frames and displaying. // This will not use 99% CPU since sv_fifo_getbuffer() will block // until a hardware buffer frame is available. int last_res = -1; while (1) { int res; if ((res = read_picture(card, sv, poutput)) != SV_OK) { // Display error only when things change if (res != last_res) { fprintf(stderr, "card %ld: failed to capture video: (%d) %s\n", card, res, res == SV_ERROR_INPUT_VIDEO_NOSIGNAL ? "INPUT_VIDEO_NOSIGNAL" : sv_geterrortext(res)); // reset FIFO if error indicates FIFO problem if (res == SV_ERROR_FIFO_PUTBUFFER) { fprintf(stderr, "SV_ERROR_FIFO_PUTBUFFER: restarting fifo\n"); SV_CHECK( sv_fifo_reset(sv, poutput) ); SV_CHECK( sv_fifo_start(sv, poutput) ); } } last_res = res; usleep( 2 * 1000 * 1000); // 2 second poll continue; } // Only display OK message once if (res != last_res && res == SV_OK) { fprintf(stderr, "card %ld: Video signal OK\n", card); } last_res = res; } return NULL; }