diff --git a/src/libespeak-ng/spect.c b/src/libespeak-ng/spect.c index 117b57a1..4ea7160b 100644 --- a/src/libespeak-ng/spect.c +++ b/src/libespeak-ng/spect.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -151,6 +152,9 @@ static espeak_ng_STATUS LoadFrame(SpectFrame *frame, FILE *stream, int file_form 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(SpectFrame *frame, FILE *stream, int file_form 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(SpectFrame *frame, FILE *stream, int file_form 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(SpectFrame *frame, FILE *stream, int file_form 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 *spect, const char *filename) } 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 *spect, const char *filename) } 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 *spect, const char *filename) 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);