1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
Index: espeak-ng-1.49.0+dfsg/src/libespeak-ng/spect.c
===================================================================
--- espeak-ng-1.49.0+dfsg.orig/src/libespeak-ng/spect.c
+++ espeak-ng-1.49.0+dfsg/src/libespeak-ng/spect.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <endian.h>
#include <espeak-ng/espeak_ng.h>
#include <espeak-ng/speak_lib.h>
@@ -151,6 +152,9 @@ static espeak_ng_STATUS LoadFrame(SpectF
fread(&frame->nx, sizeof(short), 1, stream);
fread(&frame->markers, sizeof(short), 1, stream);
fread(&frame->amp_adjust, sizeof(short), 1, stream);
+ frame->nx = le16toh(frame->nx);
+ frame->markers = le16toh(frame->markers);
+ frame->amp_adjust = le16toh(frame->amp_adjust);
if (file_format_type == 2) {
fread(&ix, sizeof(short), 1, stream); // spare
@@ -164,6 +168,12 @@ static espeak_ng_STATUS LoadFrame(SpectF
fread(&frame->peaks[ix].pkheight, sizeof(short), 1, stream);
fread(&frame->peaks[ix].pkwidth, sizeof(short), 1, stream);
fread(&frame->peaks[ix].pkright, sizeof(short), 1, stream);
+ frame->formants[ix].freq = le16toh(frame->formants[ix].freq);
+ frame->formants[ix].bandw = le16toh(frame->formants[ix].bandw);
+ frame->peaks[ix].pkfreq = le16toh(frame->peaks[ix].pkfreq);
+ frame->peaks[ix].pkheight = le16toh(frame->peaks[ix].pkheight);
+ frame->peaks[ix].pkwidth = le16toh(frame->peaks[ix].pkwidth);
+ frame->peaks[ix].pkright = le16toh(frame->peaks[ix].pkright);
if (frame->peaks[ix].pkheight > 0)
frame->keyframe = 1;
@@ -171,12 +181,18 @@ static espeak_ng_STATUS LoadFrame(SpectF
fread(&frame->peaks[ix].klt_bw, sizeof(short), 1, stream);
fread(&frame->peaks[ix].klt_ap, sizeof(short), 1, stream);
fread(&frame->peaks[ix].klt_bp, sizeof(short), 1, stream);
+ frame->peaks[ix].klt_bw = le16toh(frame->peaks[ix].klt_bw);
+ frame->peaks[ix].klt_ap = le16toh(frame->peaks[ix].klt_ap);
+ frame->peaks[ix].klt_bp = le16toh(frame->peaks[ix].klt_bp);
}
}
if (file_format_type > 0) {
for (ix = 0; ix < N_KLATTP2; ix++)
+ {
fread(frame->klatt_param + ix, sizeof(short), 1, stream);
+ frame->klatt_param[ix] = le16toh(frame->klatt_param[ix]);
+ }
}
spect_data = malloc(sizeof(USHORT) * frame->nx);
@@ -187,6 +203,7 @@ static espeak_ng_STATUS LoadFrame(SpectF
frame->max_y = 0;
for (ix = 0; ix < frame->nx; ix++) {
fread(&x, sizeof(short), 1, stream);
+ x = le16toh(x);
spect_data[ix] = x;
if (x > frame->max_y) frame->max_y = x;
}
@@ -288,7 +305,9 @@ espeak_ng_STATUS LoadSpectSeq(SpectSeq *
}
fread(&id1, sizeof(uint32_t), 1, stream);
+ id1 = le32toh(id1);
fread(&id2, sizeof(uint32_t), 1, stream);
+ id2 = le32toh(id2);
if ((id1 == FILEID1_SPECTSEQ) && (id2 == FILEID2_SPECTSEQ))
spect->file_format = 0; // eSpeak formants
@@ -303,6 +322,7 @@ espeak_ng_STATUS LoadSpectSeq(SpectSeq *
}
fread(&name_len, sizeof(uint32_t), 1, stream);
+ name_len = le32toh(name_len);
if (name_len > 0) {
if ((spect->name = (char *)malloc(name_len)) == NULL) {
fclose(stream);
@@ -316,6 +336,10 @@ espeak_ng_STATUS LoadSpectSeq(SpectSeq *
fread(&spect->amplitude, sizeof(short), 1, stream);
fread(&spect->max_y, sizeof(short), 1, stream);
fread(&temp, sizeof(short), 1, stream); // unused
+ n = le16toh(n);
+ spect->amplitude = le16toh(spect->amplitude);
+ spect->max_y = le16toh(spect->max_y);
+ temp = le16toh(temp);
if (n == 0) {
fclose(stream);
|