libogg documentation | libogg release 1.3.6 - 20250616

# ogg_stream_packetout

declared in "ogg/ogg.h";

This function assembles a data packet for output to the codec decoding engine. The data has already been submitted to the ogg_stream_state and broken into segments. Each successive call returns the next complete packet built from those segments.

In a typical decoding situation, this should be used after calling ogg_stream_pagein() to submit a page of data to the bitstream. If the function returns 0, more data is needed and another page should be submitted. A non-zero return value indicates successful return of a packet.

The op is filled in with pointers to memory managed by the stream state and is only valid until the next call. The client must copy the packet data if a longer lifetime is required.

    int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);

### Parameters

os
  Pointer to a previously declared ogg_stream_state struct. Before this function is called, an ogg_page should be submitted to the stream using ogg_stream_pagein().
op
  Pointer to the packet to be filled in with pointers to the new data. This will typically be submitted to a codec for decode after this function is called. The pointers are only valid until the next call on this stream state.

### Return Values

> - -1 if we are out of sync and there is a gap in the data. This is usually a recoverable error and subsequent calls to ogg_stream_packetout are likely to succeed. op has not been updated.
> - 0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred. op has not been updated.
> - 1 if a packet was assembled normally. op contains the next packet from the stream.

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