[ogg-dev] Using ogg

Neil Leathers
Sun, 27 Apr 2008 22:45:52 -0000

I'm try to use libogg and wanted to confirm I'm reading the
documentation correctly. Is the following the (psuedo code) loop to follow:

#define BUF_SIZE 4096

ogg_sync_state the_ogg_sync_state;
ogg_page the_ogg_page;
char* buffer;
size_t bytes_actually_read;

<<open data source>>

ogg_sync_init(&the_ogg_sync_state);

<<while there is more data...>> {
                while (ogg_sync_pageout(&the_ogg_sync_state,
&the_ogg_page) != 1) {
                buffer = ogg_sync_buffer(&the_ogg_sync_state, BUF_SIZE);

                bytes_actually_read = fread(buffer, 1, BUF_SIZE, source);

                if (ogg_sync_wrote(&the_ogg_sync_state, bytes_actually_read)
== -1 ) {
                        <<return error>>
                }
        }

        send_to_my_decoder( the_ogg_page.body, the_ogg_page.body_len );
}

ogg_sync_destroy( &the_ogg_sync_state );

In the function "send_to_my_decoder" I just check to see if the body
data is the format I am interested in and skip it if it isn't my format.

Neil Leathers