summaryrefslogtreecommitdiff
path: root/modules/opus/encode.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/opus/encode.c')
-rw-r--r--modules/opus/encode.c49
1 files changed, 22 insertions, 27 deletions
diff --git a/modules/opus/encode.c b/modules/opus/encode.c
index 7450d92..7baf4f8 100644
--- a/modules/opus/encode.c
+++ b/modules/opus/encode.c
@@ -172,42 +172,37 @@ int opus_encode_update(struct auenc_state **aesp, const struct aucodec *ac,
int opus_encode_frm(struct auenc_state *aes, uint8_t *buf, size_t *len,
- const int16_t *sampv, size_t sampc)
+ int fmt, const void *sampv, size_t sampc)
{
opus_int32 n;
if (!aes || !buf || !len || !sampv)
return EINVAL;
- n = opus_encode(aes->enc, sampv, (int)(sampc/aes->ch),
- buf, (opus_int32)(*len));
- if (n < 0) {
- warning("opus: encode error: %s\n", opus_strerror((int)n));
- return EPROTO;
- }
-
- *len = n;
-
- return 0;
-}
+ switch (fmt) {
+ case AUFMT_S16LE:
+ n = opus_encode(aes->enc, sampv, (int)(sampc/aes->ch),
+ buf, (opus_int32)(*len));
+ if (n < 0) {
+ warning("opus: encode error: %s\n",
+ opus_strerror((int)n));
+ return EPROTO;
+ }
+ break;
+
+ case AUFMT_FLOAT:
+ n = opus_encode_float(aes->enc, sampv, (int)(sampc/aes->ch),
+ buf, (opus_int32)(*len));
+ if (n < 0) {
+ warning("opus: float encode error: %s\n",
+ opus_strerror((int)n));
+ return EPROTO;
+ }
+ break;
-int opus_encode_format_frm(struct auenc_state *aes, uint8_t *buf, size_t *len,
- int fmt, const void *sampv, size_t sampc)
-{
- opus_int32 n;
-
- if (!aes || !buf || !len || !sampv)
- return EINVAL;
-
- if (fmt != AUFMT_FLOAT)
+ default:
return ENOTSUP;
-
- n = opus_encode_float(aes->enc, sampv, (int)(sampc/aes->ch),
- buf, (opus_int32)(*len));
- if (n < 0) {
- warning("opus: encode error: %s\n", opus_strerror((int)n));
- return EPROTO;
}
*len = n;