17 #if !defined(_opusfile_h)
18 # define _opusfile_h (1)
103 # if defined(__cplusplus)
109 # include <ogg/ogg.h>
110 # include <opus_multistream.h>
115 # if !defined(OP_GNUC_PREREQ)
116 # if defined(__GNUC__)&&defined(__GNUC_MINOR__)
117 # define OP_GNUC_PREREQ(_maj,_min) \
118 ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min))
120 # define OP_GNUC_PREREQ(_maj,_min) 0
124 # if OP_GNUC_PREREQ(4,0)
125 # pragma GCC visibility push(default)
133 typedef struct OggOpusFile OggOpusFile;
136 # if OP_GNUC_PREREQ(3,4)
137 # define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
139 # define OP_WARN_UNUSED_RESULT
141 # if OP_GNUC_PREREQ(3,4)
142 # define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x)))
144 # define OP_ARG_NONNULL(_x)
160 #define OP_FALSE (-1)
168 #define OP_EREAD (-128)
172 #define OP_EFAULT (-129)
175 #define OP_EIMPL (-130)
177 #define OP_EINVAL (-131)
182 #define OP_ENOTFORMAT (-132)
185 #define OP_EBADHEADER (-133)
187 #define OP_EVERSION (-134)
189 #define OP_ENOTAUDIO (-135)
193 #define OP_EBADPACKET (-136)
197 #define OP_EBADLINK (-137)
199 #define OP_ENOSEEK (-138)
201 #define OP_EBADTIMESTAMP (-139)
210 #define OPUS_CHANNEL_COUNT_MAX (255)
317 #define OP_PIC_FORMAT_UNKNOWN (-1)
319 #define OP_PIC_FORMAT_URL (0)
321 #define OP_PIC_FORMAT_JPEG (1)
323 #define OP_PIC_FORMAT_PNG (2)
325 #define OP_PIC_FORMAT_GIF (3)
428 const unsigned char *_data,
size_t _len) OP_ARG_NONNULL(2);
462 const unsigned char *_data,
size_t _len) OP_ARG_NONNULL(2);
491 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3);
504 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
520 const
unsigned char *_data,
int _len) OP_ARG_NONNULL(1);
538 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
548 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
556 int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
574 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
592 OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
625 int opus_tagncompare(const
char *_tag_name,
int _tag_len,const
char *_comment);
658 const
char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
693 #define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464)
694 #define OP_HTTP_PROXY_HOST_REQUEST (6528)
695 #define OP_HTTP_PROXY_PORT_REQUEST (6592)
696 #define OP_HTTP_PROXY_USER_REQUEST (6656)
697 #define OP_HTTP_PROXY_PASS_REQUEST (6720)
698 #define OP_GET_SERVER_INFO_REQUEST (6784)
700 #define OP_URL_OPT(_request) ((_request)+(char *)0)
704 #define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x))
705 #define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x)))
706 #define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x)))
771 #define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \
772 OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b)
782 #define OP_HTTP_PROXY_HOST(_host) \
783 OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host)
795 #define OP_HTTP_PROXY_PORT(_port) \
796 OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port)
808 #define OP_HTTP_PROXY_USER(_user) \
809 OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user)
821 #define OP_HTTP_PROXY_PASS(_pass) \
822 OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass)
842 #define OP_GET_SERVER_INFO(_info) \
843 OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info)
868 typedef int (*
op_read_func)(
void *_stream,
unsigned char *_ptr,
int _nbytes);
879 typedef int (*
op_seek_func)(
void *_stream,opus_int64 _offset,
int _whence);
933 const char *_path,
const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2)
950 int _fd,const
char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3);
972 const
char *_path,const
char *_mode,
void *_stream) OP_ARG_NONNULL(1)
973 OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4);
986 const
unsigned char *_data,
size_t _size) OP_ARG_NONNULL(1);
1012 const
char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
1034 const
char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
1080 const
unsigned char *_initial_data,
size_t _initial_bytes);
1091 OP_WARN_UNUSED_RESULT OggOpusFile *
op_open_file(const
char *_path,
int *_error)
1102 OP_WARN_UNUSED_RESULT OggOpusFile *
op_open_memory(const
unsigned char *_data,
1103 size_t _size,
int *_error);
1131 OP_WARN_UNUSED_RESULT OggOpusFile *
op_vopen_url(const
char *_url,
1132 int *_error,va_list _ap) OP_ARG_NONNULL(1);
1153 OP_WARN_UNUSED_RESULT OggOpusFile *
op_open_url(const
char *_url,
1154 int *_error,...) OP_ARG_NONNULL(1);
1235 size_t _initial_bytes,
int *_error) OP_ARG_NONNULL(2);
1247 OP_WARN_UNUSED_RESULT OggOpusFile *
op_test_file(const
char *_path,
int *_error)
1259 OP_WARN_UNUSED_RESULT OggOpusFile *
op_test_memory(const
unsigned char *_data,
1260 size_t _size,
int *_error);
1290 OP_WARN_UNUSED_RESULT OggOpusFile *
op_vtest_url(const
char *_url,
1291 int *_error,va_list _ap) OP_ARG_NONNULL(1);
1314 OP_WARN_UNUSED_RESULT OggOpusFile *
op_test_url(const
char *_url,
1315 int *_error,...) OP_ARG_NONNULL(1);
1382 size_t _initial_bytes,
int *_error) OP_ARG_NONNULL(2);
1414 void op_free(OggOpusFile *_of);
1451 int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1);
1461 int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1);
1476 opus_uint32
op_serialno(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1515 opus_int64
op_raw_total(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1533 ogg_int64_t
op_pcm_total(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1549 const
OpusHead *
op_head(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1567 const
OpusTags *
op_tags(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1606 opus_int32
op_bitrate(const OggOpusFile *_of,
int _li) OP_ARG_NONNULL(1);
1625 opus_int64
op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
1634 ogg_int64_t
op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
1680 int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1);
1696 int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1);
1744 #define OP_DEC_FORMAT_SHORT (7008)
1747 #define OP_DEC_FORMAT_FLOAT (7040)
1751 #define OP_DEC_USE_DEFAULT (6720)
1785 const ogg_packet *_op,
int _nsamples,
int _nchannels,
int _format,
int _li);
1814 #define OP_HEADER_GAIN (0)
1818 #define OP_ALBUM_GAIN (3007)
1822 #define OP_TRACK_GAIN (3008)
1826 #define OP_ABSOLUTE_GAIN (3009)
1846 int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1);
1940 OP_WARN_UNUSED_RESULT
int op_read(OggOpusFile *_of,
1941 opus_int16 *_pcm,
int _buf_size,
int *_li) OP_ARG_NONNULL(1);
2022 float *_pcm,
int _buf_size,
int *_li) OP_ARG_NONNULL(1);
2083 opus_int16 *_pcm,
int _buf_size) OP_ARG_NONNULL(1);
2144 float *_pcm,
int _buf_size) OP_ARG_NONNULL(1);
2149 # if OP_GNUC_PREREQ(4,0)
2150 # pragma GCC visibility pop
2153 # if defined(__cplusplus)