Jereon - small bug in the new freedv_codecrx() function
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 25 Feb 2016 19:44:12 +0000 (19:44 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 25 Feb 2016 19:44:12 +0000 (19:44 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2709 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/freedv_api.c

index d11564672c1577ecd6ab81812e9c06863b077796..46bb466a4e88f9021b007513474f69d67c222471 100644 (file)
@@ -1187,12 +1187,13 @@ int freedv_codecrx(struct freedv *f, unsigned char *packed_codec_bits, short dem
     }
 #endif
 
-    if (valid == 0) {
-        int bytes_per_frame;
-        bytes_per_frame = (f->n_codec_bits + 7) / 8;
+    if (valid == 1) {
+        int bits_per_codec_frame = codec2_bits_per_frame(f->codec2);
+        int bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8;
+        int codec_frames = f->n_codec_bits / bits_per_codec_frame;
 
-        memcpy(packed_codec_bits, f->packed_codec_bits, bytes_per_frame);
-       ret = bytes_per_frame;
+        memcpy(packed_codec_bits, f->packed_codec_bits, bytes_per_codec_frame * codec_frames);
+       ret = bytes_per_codec_frame * codec_frames;
     }
     
     return ret;