Package: espeak-ng / 1.49.0+dfsg-11

big-endian Patch series | download
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);