int main (int argc, char * argv[]) { OGGZ * reader, * writer; unsigned char data_buf[DATA_BUF_LEN]; long n; INFO ("Testing override of IO seeking"); writer = oggz_new (OGGZ_WRITE); if (writer == NULL) FAIL("newly created OGGZ writer == NULL"); serialno = oggz_serialno_new (writer); if (oggz_write_set_hungry_callback (writer, hungry, 1, NULL) == -1) FAIL("Could not set hungry callback"); reader = oggz_new (OGGZ_READ); if (reader == NULL) FAIL("newly created OGGZ reader == NULL"); oggz_io_set_read (reader, my_io_read, data_buf); oggz_io_set_seek (reader, my_io_seek, data_buf); oggz_io_set_tell (reader, my_io_tell, data_buf); oggz_set_read_callback (reader, -1, read_packet, NULL); n = oggz_write_output (writer, data_buf, DATA_BUF_LEN); if (n >= DATA_BUF_LEN) FAIL("Too much data generated by writer"); offset_end = n; oggz_read (reader, n); if (read_called == 0) FAIL("Read method ignored"); if (oggz_seek (reader, 0, SEEK_SET) != 0) FAIL("Seek failure"); read_called = 0; oggz_read (reader, n); if (read_called == 0) FAIL("Read method ignored after seeking"); if (oggz_close (reader) != 0) FAIL("Could not close OGGZ reader"); if (oggz_close (writer) != 0) FAIL("Could not close OGGZ writer"); exit (0); }
void ogv_demuxer_init() { appState = STATE_BEGIN; bufferQueue = bq_init(); oggz = oggz_new(OGGZ_READ | OGGZ_AUTO); oggz_set_read_callback(oggz, -1, readPacketCallback, NULL); oggz_io_set_read(oggz, readCallback, bufferQueue); oggz_io_set_seek(oggz, seekCallback, bufferQueue); oggz_io_set_tell(oggz, tellCallback, bufferQueue); skeleton = oggskel_new(); }
int main (int argc, char ** argv) { FILE * f; OGGZ * oggz; long n; ogg_int64_t units; if (argc < 2) { printf ("usage: %s filename\n", argv[0]); } if ((f = fopen ((char *)argv[1], "rb")) == NULL) { printf ("unable to open file %s\n", argv[1]); exit (1); } if ((oggz = oggz_new (OGGZ_READ | OGGZ_AUTO)) == NULL) { printf ("unable to create oggz\n"); exit (1); } oggz_io_set_read (oggz, my_io_read, f); oggz_io_set_seek (oggz, my_io_seek, f); oggz_io_set_tell (oggz, my_io_tell, f); oggz_set_read_callback (oggz, -1, read_packet, NULL); while ((n = oggz_read (oggz, 1024)) > 0); units = oggz_tell_units (oggz); printf ("Total length: %" PRId64 " ms\n", units); oggz_seek_units (oggz, units/2, SEEK_SET); printf ("seeked to byte offset %" PRId64 "\n", oggz_tell (oggz)); while ((n = oggz_read (oggz, 1024)) > 0); oggz_close (oggz); 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; }