int
main (int argc, char ** argv)
{
  OGGZ * oggz;
  OggzTable * tracks;
  long n;

  if (argc < 2) {
    printf ("usage: %s filename\n", argv[0]);
  }

  tracks = oggz_table_new ();

  if ((oggz = oggz_open ((char *)argv[1], OGGZ_READ | OGGZ_AUTO)) == NULL) {
    printf ("unable to open file %s\n", argv[1]);
    exit (1);
  }

  oggz_set_read_page (oggz, -1, read_page, tracks);

  while ((n = oggz_read (oggz, 1024)) > 0);

  oggz_close (oggz);

  oggz_table_delete (tracks);

  exit (0);
}
static OMX_ERRORTYPE
alloc_oggz (oggdmux_prc_t * ap_prc)
{
  assert (ap_prc);
  assert (!ap_prc->p_oggz_);

  /* Allocate the oggz object */
  tiz_check_null_ret_oom ((ap_prc->p_oggz_ = oggz_new (OGGZ_READ)));

  /* Allocate a table */
  tiz_check_null_ret_oom ((ap_prc->p_tracks_ = oggz_table_new ()));

  /* Set the io callbacks */
  on_oggz_error_ret_omx_oom (
    oggz_io_set_read (ap_prc->p_oggz_, og_io_read, ap_prc));
  on_oggz_error_ret_omx_oom (
    oggz_io_set_seek (ap_prc->p_oggz_, og_io_seek, ap_prc));
  on_oggz_error_ret_omx_oom (
    oggz_io_set_tell (ap_prc->p_oggz_, og_io_tell, ap_prc));

  return OMX_ErrorNone;
}