libogg documentation | libogg release 1.3.5 - 20210603

# ogg_stream_state

declared in "ogg/ogg.h"

The ogg_stream_state struct tracks the current encode/decode state of the current logical bitstream.

    typedef struct {
      unsigned char   *body_data;    /* bytes from packet bodies */
      long    body_storage;          /* storage elements allocated */
      long    body_fill;             /* elements stored; fill mark */
      long    body_returned;         /* elements of fill returned */

      int     *lacing_vals;      /* The values that will go to the segment table */
      ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
                                    this way, but it is simple coupled to the
                                    lacing fifo */
      long    lacing_storage;
      long    lacing_fill;
      long    lacing_packet;
      long    lacing_returned;

      unsigned char    header[282];      /* working space for header encode */
      int              header_fill;

      int     e_o_s;          /* set when we have buffered the last packet in the
                                 logical bitstream */
      int     b_o_s;          /* set after we've written the initial page
                                 of a logical bitstream */
      long    serialno;
      long    pageno;
      ogg_int64_t  packetno;  /* sequence number for decode; the framing
                                 knows where there's a hole in the data,
                                 but we need coupling so that the codec
                                 (which is in a separate abstraction
                                 layer) also knows about the gap */
      ogg_int64_t   granulepos;

    } ogg_stream_state;

### Relevant Struct Members

body_data
  Pointer to data from packet bodies.
body_storage
  Storage allocated for bodies in bytes (filled or unfilled).
body_fill
  Amount of storage filled with stored packet bodies.
body_returned
  Number of elements returned from storage.
lacing_vals
  String of lacing values for the packet segments within the current page. Each value is a byte, indicating packet segment length.
granule_vals
  Pointer to the lacing values for the packet segments within the current page.
lacing_storage
  Total amount of storage (in bytes) allocated for storing lacing values.
lacing_fill
  Fill marker for the current vs. total allocated storage of lacing values for the page.
lacing_packet
  Lacing value for current packet segment.
lacing_returned
  Number of lacing values returned from lacing_storage.
header
  Temporary storage for page header during encode process, while the header is being created.
header_fill
  Fill marker for header storage allocation. Used during the header creation process.
e_o_s
  Marker set when the last packet of the logical bitstream has been buffered.
b_o_s
  Marker set after we have written the first page in the logical bitstream.
serialno
  Serial number of this logical bitstream.
pageno
  Number of the current page within the stream.
packetno
  Number of the current packet.
granulepos
  Exact position of decoding/encoding process.

copyright © 2000-2021 Xiph.Org Foundation | Ogg Container Format
libogg documentation | libogg release 1.3.5 - 20210603