Initial draft API
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Sat, 22 Apr 2017 18:08:10 +0000 (14:08 -0400)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Sat, 22 Apr 2017 18:08:10 +0000 (14:08 -0400)
include/opusenc.h [new file with mode: 0644]

diff --git a/include/opusenc.h b/include/opusenc.h
new file mode 100644 (file)
index 0000000..f3c495d
--- /dev/null
@@ -0,0 +1,56 @@
+
+
+#if !defined(_opusenc_h)
+# define _opusenc_h (1)
+
+
+# if defined(__cplusplus)
+extern "C" {
+# endif
+
+typedef struct {
+  ope_write_func write;
+  ope_close_func close;
+} OpusEncCallbacks;
+
+/* Opaque encoder struct. */
+typedef struct OggOpusEnc OggOpusEnc;
+
+/* Opaque header struct. */
+typedef struct OggOpusComments OggOpusComments;
+
+/* Create a new OggOpus file. */
+OggOpusEnc *ope_create_file(const char *path, int rate, int channels, int family, int *error);
+
+/* Create a new OggOpus file (callback-based). */
+OggOpusEnc *ope_create_callbacks(OpusEncCallbacks *callbacks, void *user_data, int rate, int channels, int family, int *error);
+
+/* Add/encode any number of float samples to the file. */
+int ope_write_float(OggOpusEnc *enc, float *pcm, int samples_per_channel);
+
+/* Add/encode any number of int16 samples to the file. */
+int ope_write_int(OggOpusEnc *enc, opus_int16 *pcm, int samples_per_channel);
+
+/* Close/finalize the stream. */
+int ope_free(OggOpusEnc *enc);
+
+/* Ends the stream and create a new stream within the same file. */
+int ope_chain_current(OggOpusEnc *enc);
+
+/* Ends the stream and create a new file. */
+int ope_chain_new_file(OggOpusEnc *enc, const char *path);
+
+/* Ends the stream and create a new file (callback-based). */
+int ope_chain_new_callbacks(OggOpusEnc *enc, void *user_data);
+
+/* Goes straight to the libopus ctl() functions. */
+int ope_encoder_ctl(OggOpusEnc *enc, int request, ...);
+
+/* ctl()-type call for the OggOpus layer. */
+int ope_set_params(OggOpusEnc *enc, int request, ...);
+
+# if defined(__cplusplus)
+}
+# endif
+
+#endif