FreeCalypso > hg > gsm-codec-lib
diff libtwamr/dhf_check.c @ 355:9beb01439a90
libtwamr: implement DHF check function
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 05 May 2024 21:59:18 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtwamr/dhf_check.c Sun May 05 21:59:18 2024 +0000 @@ -0,0 +1,42 @@ +/* + * This module implements the DHF checking function. + */ + +#include <stdint.h> +#include <string.h> +#include "tw_amr.h" +#include "typedef.h" +#include "namespace.h" +#include "bitno.h" + +static const Word16 * const dhf_per_mode[8] = { + amr_dhf_mr475, + amr_dhf_mr515, + amr_dhf_mr59, + amr_dhf_mr67, + amr_dhf_mr74, + amr_dhf_mr795, + amr_dhf_mr102, + amr_dhf_mr122 +}; + +int amr_check_dhf(const struct amr_param_frame *frame, int first_sub_only) +{ + const Word16 *table; + Word16 nparam; + + if (frame->type != RX_SPEECH_GOOD) + return 0; + if ((frame->mode & 0x87) == 0x87) + table = amr_dhf_gsmefr; + else + table = dhf_per_mode[frame->mode & 7]; + if (first_sub_only) + nparam = prmnofsf[frame->mode & 7]; + else + nparam = prmno[frame->mode & 7]; + if (memcmp(frame->param, table, nparam * sizeof(int16_t))) + return 0; + else + return 1; +}