Отредактировал config.h и arch.h, так, что они совпадают для WIN и TMS версий.
Пробный frame объявлен так(на самом деле он больше, но для примера сгодится и так)
Код
const int input_table[160]={
0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,
0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0x0001,0x0000,0x0000,0x0001,0x0000,
0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0xFFFF,0x0000,
0x0001,0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0001,
0x0000,0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0xFFFF,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFFFF,
0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0xFFFF,0xFFFF,0x0000,0x0000,0x0001,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0xFFFF,0xFFFE,0xFFFE,0xFFFE,0xFFFE,
0xFFFE,0x0001,0x0001,0x0001,0xFFFF,0xFFFC,0xFFF3,0xFFEB,
0xFFE4,0xFFE5,0xFFEE,0xFFF7,0x0005,0x001E,0x001D,0x0006,
0xFFE7,0xFFB7,0xFF89,0xFF72,0xFF6C,0xFFA1,0x000E,0x0048,
0x0089,0x00BB,0x0021,0xFF4F,0xFEAC,0xFD77,0xFCA3,0xFC80,
0xFCB4,0xFDC4,0xFFEA,0x0332,0x05CC,0x069B,0x0802,0x0728};
0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,
0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0x0001,0x0000,0x0000,0x0001,0x0000,
0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0xFFFF,0x0000,
0x0001,0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0001,
0x0000,0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0xFFFF,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFFFF,
0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0xFFFF,0xFFFF,0x0000,0x0000,0x0001,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0xFFFF,0xFFFF,0xFFFE,0xFFFE,0xFFFE,0xFFFE,
0xFFFE,0x0001,0x0001,0x0001,0xFFFF,0xFFFC,0xFFF3,0xFFEB,
0xFFE4,0xFFE5,0xFFEE,0xFFF7,0x0005,0x001E,0x001D,0x0006,
0xFFE7,0xFFB7,0xFF89,0xFF72,0xFF6C,0xFFA1,0x000E,0x0048,
0x0089,0x00BB,0x0021,0xFF4F,0xFEAC,0xFD77,0xFCA3,0xFC80,
0xFCB4,0xFDC4,0xFFEA,0x0332,0x05CC,0x069B,0x0802,0x0728};
Далее, поскольку speex "портит" входной буфер, я объявил input_buf[160]
Код
extern const signed int input_table[];
signed int input_buf[160];
signed int input_buf[160];
Перед вызовом я заполняю input_buf и
Код
speex_encode_int(enc_state, &input_buf, &encBits);
Аналогично поступаю на WIN реализаци.
После вызова, я сначала сравнивал выход. Но потом я посмотрел на вход(он ведь портачит входной буфер) и там тоже оказываются разные значения. Т.е. внутри, получается, он поразному обрабатывает буфер! Почему??
К примеру WIN изменяет только значения с input_buf[150] до input_buf[159], на TI меняются со 115 до 159 плюс ещё вразнобой, значений 6-7...
Выходы, естественно тоже не соответствуют.
Что делать? Как такое может быть?
Пробывал как FIXED_POINT, так и FLOAT - результаты одинаковы.
Перед вызовом буферы одинаковы.
С памятью вроде всё ok - нигде не переполняется.
Оптимизации компилятора выкл.