opusfile
0.1
Stand-alone decoder library for .opus files.
|
Data Structures | |
struct | OpusHead |
Ogg Opus bitstream information. More... | |
struct | OpusTags |
The metadata from an Ogg Opus stream. More... |
Macros | |
#define | OPUS_CHANNEL_COUNT_MAX (255) |
The maximum number of channels in an Ogg Opus stream. |
Functions for manipulating header data | |
These functions manipulate the OpusHead and OpusTags structures, which describe the audio parameters and tag-value metadata, respectively. These can be used to query the headers returned by | |
OP_WARN_UNUSED_RESULT int | opus_head_parse (OpusHead *_head, const unsigned char *_data, size_t _len) OP_ARG_NONNULL(2) |
Parses the contents of the ID header packet of an Ogg Opus stream. | |
ogg_int64_t | opus_granule_sample (const OpusHead *_head, ogg_int64_t _gp) OP_ARG_NONNULL(1) |
Converts a granule position to a sample offset for a given Ogg Opus stream. | |
OP_WARN_UNUSED_RESULT int | opus_tags_parse (OpusTags *_tags, const unsigned char *_data, size_t _len) OP_ARG_NONNULL(2) |
Parses the contents of the 'comment' header packet of an Ogg Opus stream. | |
void | opus_tags_init (OpusTags *_tags) OP_ARG_NONNULL(1) |
Initializes an OpusTags structure. | |
int | opus_tags_add (OpusTags *_tags, const char *_tag, const char *_value) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) |
Add a (tag, value) pair to an initialized OpusTags structure. | |
int | opus_tags_add_comment (OpusTags *_tags, const char *_comment) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) |
Add a comment to an initialized OpusTags structure. | |
const char * | opus_tags_query (const OpusTags *_tags, const char *_tag, int _count) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) |
Look up a comment value by its tag. | |
int | opus_tags_query_count (const OpusTags *_tags, const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) |
Look up the number of instances of a tag. | |
void | opus_tags_clear (OpusTags *_tags) OP_ARG_NONNULL(1) |
Clears the OpusTags structure. |
#define OPUS_CHANNEL_COUNT_MAX (255) |
The maximum number of channels in an Ogg Opus stream.
OP_WARN_UNUSED_RESULT int opus_head_parse | ( | OpusHead * | _head, |
const unsigned char * | _data, | ||
size_t | _len | ||
) |
Parses the contents of the ID header packet of an Ogg Opus stream.
[out] | _head | Returns the contents of the parsed packet. The contents of this structure are untouched on error. This may be NULL to merely test the header for validity. |
[in] | _data | The contents of the ID header packet. |
_len | The number of bytes of data in the ID header packet. |
OP_ENOTFORMAT | If the data does not start with the "OpusHead" string. |
OP_EVERSION | If the version field signaled a version this library does not know how to parse. |
OP_EIMPL | If the channel mapping family was 255, which general purpose players should not attempt to play. |
OP_EBADHEADER | If the contents of the packet otherwise violate the Ogg Opus specification:
|
ogg_int64_t opus_granule_sample | ( | const OpusHead * | _head, |
ogg_int64_t | _gp | ||
) |
Converts a granule position to a sample offset for a given Ogg Opus stream.
The sample offset is simply _gp-_head->pre_skip
. Granule position values smaller than OpusHead::pre_skip correspond to audio that should never be played, and thus have no associated sample offset. This function returns -1 for such values. This function also correctly handles extremely large granule positions, which may have wrapped around to a negative number when stored in a signed ogg_int64_t value.
_head | The OpusHead information from the ID header of the stream. |
_gp | The granule position to convert. |
OP_WARN_UNUSED_RESULT int opus_tags_parse | ( | OpusTags * | _tags, |
const unsigned char * | _data, | ||
size_t | _len | ||
) |
Parses the contents of the 'comment' header packet of an Ogg Opus stream.
[out] | _tags | An uninitialized OpusTags structure. This returns the contents of the parsed packet. The contents of this structure are untouched on error. This may be NULL to merely test the header for validity. |
[in] | _data | The contents of the 'comment' header packet. |
_len | The number of bytes of data in the 'info' header packet. |
0 | Success. |
OP_ENOTFORMAT | If the data does not start with the "OpusTags" string. |
OP_EBADHEADER | If the contents of the packet otherwise violate the Ogg Opus specification. |
OP_EFAULT | If there wasn't enough memory to store the tags. |
void opus_tags_init | ( | OpusTags * | _tags | ) |
int opus_tags_add | ( | OpusTags * | _tags, |
const char * | _tag, | ||
const char * | _value | ||
) |
Add a (tag, value) pair to an initialized OpusTags structure.
_tags | The OpusTags structure to add the (tag, value) pair to. |
_tag | A NUL-terminated, case-insensitive, ASCII string containing the tag to add (without an '=' character). |
_value | A NUL-terminated UTF-8 containing the corresponding value. |
OP_EFAULT | An internal memory allocation failed. |
int opus_tags_add_comment | ( | OpusTags * | _tags, |
const char * | _comment | ||
) |
Add a comment to an initialized OpusTags structure.
_tags | The OpusTags structure to add the comment to. |
_comment | A NUL-terminated UTF-8 string containing the comment in "TAG=value" form. |
OP_EFAULT | An internal memory allocation failed. |
const char* opus_tags_query | ( | const OpusTags * | _tags, |
const char * | _tag, | ||
int | _count | ||
) |
Look up a comment value by its tag.
_tags | An initialized OpusTags structure. |
_tag | The tag to look up. |
_count | The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use opus_tags_query_count() to get the legal range for the _count parameter. |
NULL | If no matching tag is found. |
int opus_tags_query_count | ( | const OpusTags * | _tags, |
const char * | _tag | ||
) |
Look up the number of instances of a tag.
Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to opus_tags_query() to retrieve all the values for that tag in order.
_tags | An initialized OpusTags structure. |
_tag | The tag to look up. |