Fixing some bugs (still won't encode a file)
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Sun, 30 Apr 2017 04:14:49 +0000 (00:14 -0400)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Sun, 30 Apr 2017 04:14:49 +0000 (00:14 -0400)
examples/opusenc_example.c
src/opusenc.c

index 8a22c30..c49e2a0 100644 (file)
@@ -1,6 +1,8 @@
 #include <stdio.h>
 #include "opusenc.h"
 
+#define READ_SIZE 256
+
 int main(int argc, char **argv) {
   FILE *fin;
   OggOpusEnc *enc;
@@ -21,6 +23,13 @@ int main(int argc, char **argv) {
   }
   ope_add_comment(enc, "ARTIST", "Someone");
   ope_add_comment(enc, "TITLE", "Some track");
+  while (1) {
+    short buf[2*READ_SIZE];
+    int ret = fread(buf, 2*sizeof(short), READ_SIZE, fin);
+    if (ret > 0) {
+      ope_write(enc, buf, ret);
+    } else break;
+  }
   ope_close_and_free(enc);
   return 0;
 }
index 98b8c2d..eb5801e 100644 (file)
@@ -180,7 +180,7 @@ OggOpusEnc *ope_create_callbacks(const OpusEncCallbacks *callbacks, void *user_d
   {
     opus_int32 tmp;
     int ret;
-    ret = opus_multistream_encoder_ctl(enc->st, OPUS_GET_LOOKAHEAD(&tmp));
+    ret = opus_multistream_encoder_ctl(st, OPUS_GET_LOOKAHEAD(&tmp));
     if (ret == OPUS_OK) enc->curr_granule = -tmp;
     else enc->curr_granule = 0;
   }
@@ -195,6 +195,7 @@ OggOpusEnc *ope_create_callbacks(const OpusEncCallbacks *callbacks, void *user_d
   enc->st = st;
   enc->callbacks = *callbacks;
   enc->user_data = user_data;
+  if (error) *error = OPUS_OK;
   return enc;
 fail:
   if (enc) {
@@ -263,7 +264,7 @@ static void encode_buffer(OggOpusEnc *enc) {
     nbBytes = opus_multistream_encode_float(enc->st, &enc->buffer[enc->channels*enc->buffer_start],
         enc->buffer_end-enc->buffer_start, packet, MAX_PACKET_SIZE);
     /* FIXME: How do we handle failure here. */
-    assert(nbBytes < 0);
+    assert(nbBytes > 0);
     enc->curr_granule += enc->frame_size;
     op.packet=packet;
     op.bytes=nbBytes;