... beginning of the chaining example code.
authorMonty <xiphmont@xiph.org>
Fri, 29 Oct 1999 10:23:25 +0000 (10:23 +0000)
committerMonty <xiphmont@xiph.org>
Fri, 29 Oct 1999 10:23:25 +0000 (10:23 +0000)
Monty

svn path=/trunk/vorbis/; revision=155

lib/chaining_example.c [new file with mode: 0644]

diff --git a/lib/chaining_example.c b/lib/chaining_example.c
new file mode 100644 (file)
index 0000000..0c1e95b
--- /dev/null
@@ -0,0 +1,49 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE.  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE.    *
+ * PLEASE READ THESE TERMS DISTRIBUTING.                            *
+ *                                                                  *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999             *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company       *
+ * http://www.xiph.org/                                             *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple example of opening/seeking chained bitstreams
+ author: Monty <xiphmont@mit.edu>
+ modifications by: Monty
+ last modification date: Oct 29 1999
+
+ ********************************************************************/
+
+
+#include <stdio.h>
+#include <math.h>
+#include "codec.h"
+
+/* A 'chained bitstream' is a Vorbis bitstream that contains more than
+   one logical bitstream arranged end to end (the only form of Ogg
+   multiplexing allowed in a Vorbis bitstream; grouping [parallel
+   multiplexing] is not allowed in Vorbis) */
+
+/* A Vorbis file can be played beginning to end (streamed) without
+   worrying ahead of time about chaining.  If we have the whole file,
+   however, and want random access (seeking/scrubbing) or desire to
+   know the total length/time of a file, we need to account for the
+   possibility of chaining. */
+
+/* We can handle things a number of ways; we can determine the entire
+   bitstream structure right off the bat, or piece it together later.
+   This example determines and caches structure for the entire
+   bitstream, but builds a virtual decoder on the fly when moving from
+   one link of the chain to another */
+
+/* There are also different ways to implement seeking.  Enough
+   information exists in an Ogg bitstream to seek to
+   sample-granularity positions in the output.  Or, one can seek by
+   picking some portion of the stream roughtly in the area we only
+   want course navigation through the stream.  This example implements
+   the latter. */
+