Правильный способ использования const, static const или глобальных переменных в алгоритме TI XDAIS - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь сделать кодек melpe, совместимый с XDAIS.Но я не совсем понимаю, как правильно это сделать.

ссылка на кодек melpe: https://github.com/gegel/pairphone/tree/master/melpe (спасибо gegel за предоставленную реализацию)

В настоящее время я делал эту процедуру дляКодек G711 (который является чрезвычайно простым кодеком), но теперь для кодека melpe, я не знаю, что делать с константными и статическими константными переменными.например в classify.c:

const int16_t enlpf_coef[EN_FILTER_ORDER] = {   /* Q14 */
    /* the coefs of the filter (NOT h) */
    6764, 4336, -274, -2536, -1491,
    24, -228, -1370, -1502, -480,
    383, 390, 57, -18, 104,
    132, 51
};

const int16_t enhpf_coef[EN_FILTER_ORDER] = {   /* Q14 */
    /* the coefs of the filter (NOT h) */
    7783, -5211, 439, 1707, -483,
    -978, 564, 630, -861, 214,
    205, -86, -82, 43, 26,
    -18, 2
};

Читая о XDAIS, я нашел следующие заметки:

  • Алгоритмы никогда сами выделяют память, а не запрашивают память у приложения.
  • Следуя той же процедуре, что и в http://processors.wiki.ti.com/index.php/Porting_GPP_code_to_DSP_and_Codec_Engine, сначала я должен скомпилировать этот кодек в библиотеку, а затем использовать его в функциях-оболочках XDAIS (например, методах управления и управления)
  • в примере FIR-фильтра, предоставленного TI, нет ни const, ни глобальной переменной, которая должна быть сохранена.

Q1 - Если я правильно понимаю, алгоритмы никогда не должны использовать глобальные переменные в своей реализации.Я прав?

Q2 - А как насчет локальных переменных, определенных в функциях IAlg?Что мешает алгоритмам определять слишком много локальных переменных, поскольку при запросе памяти из приложения алгоритмы ничего не упоминают о том, сколько памяти им нужно для своих локальных переменных.и где эти переменные хранятся в памяти?

Q3 - Если Q1 верен, как мне обращаться с этими глобальными постоянными переменными в XDAIS?Где именно я должен их разместить?

Q4 - В чем разница между запросом чистых данных из приложения и определением переменных, которые нам нужны локально?так как чистая память тоже неинициализирована.

Заранее спасибо

...