VBIDecoder::VBIDecoder() { char* errstr = 0; firstTimestamp.base = 0; currTimestamp.base = 0; decoder = vbi_decoder_new(); decoderTimestamp = 0.0; exporter = vbi_export_new("png", &errstr); if (!decoder || !exporter) { fflush(fplog); fprintf(stderr, "Cannot initialize libzvbi: %s\n", errstr); fflush(stderr); exit(1); } vbi_event_handler_add(decoder, -1, eventHandler, this); fileName = new char[strlen(prefix)+64]; *fileName = 0; fileIndex = 0; vbi_page page; textSize = sizeof(page.text)/sizeof(vbi_char)*4; textBuf = new char[textSize]; // Write the xml opening tags fprintf(fpxml, "<subpictures>\n<stream>\n"); checkPageSize = 1; memset(&lastPage, 0, sizeof(lastPage)); }
/** * init the component, this must be done first */ void txt_init_lib() { int error; txtdata = calloc(1, sizeof(*txtdata)); assert(txtdata != NULL); txtdata->m_decoder = vbi_decoder_new(); assert(txtdata->m_decoder != NULL); error = vbi_event_handler_add(txtdata->m_decoder, VBI_EVENT_TTX_PAGE, event_handler, NULL); txtdata->m_demuxer = vbi_dvb_pes_demux_new( NULL , NULL ); assert(txtdata->m_demuxer != NULL); }
int main (void) { char *errstr; vbi_bool success; setlocale (LC_ALL, ""); services = (VBI_SLICED_TELETEXT_B | VBI_SLICED_VPS | VBI_SLICED_CAPTION_525); cap = vbi_capture_v4l2_new ("/dev/vbi", /* buffers */ 5, &services, /* strict */ 0, &errstr, /* verbose */ FALSE); if (NULL == cap) { fprintf (stderr, "Cannot capture VBI data with V4L2 interface:\n" "%s\n", errstr); free (errstr); exit (EXIT_FAILURE); } dec = vbi_decoder_new (); assert (NULL != dec); success = vbi_event_handler_add (dec, (VBI_EVENT_NETWORK | VBI_EVENT_NETWORK_ID), handler, /* user_data */ NULL); assert (success); mainloop (); vbi_decoder_delete (dec); vbi_capture_delete (cap); exit (EXIT_SUCCESS); }
static void init_vbi_decoder (void) { vbi_bool success; vbi = vbi_decoder_new (); if (NULL == vbi) no_mem_exit (); if (have_option_default_cs) { vbi_teletext_set_default_region (vbi, option_default_cs); } success = vbi_event_handler_add (vbi, VBI_EVENT_TTX_PAGE, event_handler, /* user_data */ NULL); if (!success) no_mem_exit (); }
int main (int argc, char ** argv) { vbi_bool success; if (!init_window (argc, argv)) exit (EXIT_FAILURE); vbi = vbi_decoder_new (); assert (NULL != vbi); success = vbi_event_handler_add (vbi, VBI_EVENT_CAPTION, cc_handler, /* used_data */ NULL); assert (success); if (isatty (STDIN_FILENO)) { hello_world (); } else { struct stream *st; st = read_stream_new (/* filename: stdin */ NULL, FILE_FORMAT_SLICED, /* ts_pid */ 0, decode_frame); stream_loop (st); stream_delete (st); } printf ("Done.\n"); for (;;) xevent (33333); vbi_decoder_delete (vbi); exit (EXIT_SUCCESS); }
/** * @param vbi Initialized vbi decoding context. * @param handler Event handler function. * * @deprecated * This functions lacks a user_data parameter. * Use vbi_event_handler_register() in new code. */ void vbi_event_handler_remove(vbi_decoder *vbi, vbi_event_handler handler) { vbi_event_handler_add(vbi, 0, handler, NULL); }