libavcodec/opus_silk.c:1084: error: Buffer Overrun L2
  Offset: [0, 16] Size: 16 by call to `silk_stabilize_lsf`.

libavcodec/opus_silk.c:1019:1: Array declaration
1017. }
1018. 
1019. static inline void silk_decode_lpc(SilkContext *s, SilkFrame *frame,
      ^
1020.                                    OpusRangeCoder *rc,
1021.                                    float lpc_leadin[16], float lpc[16],

libavcodec/opus_silk.c:1084:5: Call
1082. 
1083.     /* stabilize the NLSF coefficients */
1084.     silk_stabilize_lsf(nlsf, order, s->wb ? silk_lsf_min_spacing_wb :
          ^
1085.                                             silk_lsf_min_spacing_nbmb);
1086. 

libavcodec/opus_silk.c:788:1: <Offset trace>
786. };
787. 
788. static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
     ^
789. {
790.     int pass, i;

libavcodec/opus_silk.c:788:1: Parameter `order`
  786. };
  787. 
  788. static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
       ^
  789. {
  790.     int pass, i;

libavcodec/opus_silk.c:788:1: <Length trace>
786. };
787. 
788. static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
     ^
789. {
790.     int pass, i;

libavcodec/opus_silk.c:788:1: Parameter `*nlsf`
  786. };
  787. 
  788. static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
       ^
  789. {
  790.     int pass, i;

libavcodec/opus_silk.c:795:37: Array access: Offset: [0, 16] Size: 16 by call to `silk_stabilize_lsf` 
  793.         for (i = 0; i < order+1; i++) {
  794.             int low  = i != 0     ? nlsf[i-1] : 0;
  795.             int high = i != order ? nlsf[i]   : 32768;
                                           ^
  796.             int diff = (high - low) - (min_delta[i]);
  797. 

static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])
{
    int pass, i;
    for (pass = 0; pass < 20; pass++) {
        int k, min_diff = 0;
        for (i = 0; i < order+1; i++) {
            int low  = i != 0     ? nlsf[i-1] : 0;
            int high = i != order ? nlsf[i]   : 32768;
            int diff = (high - low) - (min_delta[i]);
            if (diff < min_diff) {
                min_diff = diff;
                k = i;
                if (pass == 20)
                    break;
            }
        }
        if (min_diff == 0)
            return;
        if (k == 0) {
            nlsf[0] = min_delta[0];
        } else if (k == order) {
            nlsf[order-1] = 32768 - min_delta[order];
        } else {
            int min_center = 0, max_center = 32768, center_val;
            for (i = 0; i < k; i++)
                min_center += min_delta[i];
            min_center += min_delta[k] >> 1;
            for (i = order; i > k; i--)
                max_center -= min_delta[k];
            max_center -= min_delta[k] >> 1;
            center_val = nlsf[k - 1] + nlsf[k];
            center_val = (center_val >> 1) + (center_val & 1);
            center_val = FFMIN(max_center, FFMAX(min_center, center_val));
            nlsf[k - 1] = center_val - (min_delta[k] >> 1);
            nlsf[k]     = nlsf[k - 1] + min_delta[k];
        }
    }
    for (i = 1; i < order; i++) {
        int j, value = nlsf[i];
        for (j = i - 1; j >= 0 && nlsf[j] > value; j--)
            nlsf[j + 1] = nlsf[j];
        nlsf[j + 1] = value;
    }
    if (nlsf[0] < min_delta[0])
        nlsf[0] = min_delta[0];
    for (i = 1; i < order; i++)
        if (nlsf[i] < nlsf[i - 1] + min_delta[i])
            nlsf[i] = nlsf[i - 1] + min_delta[i];
    if (nlsf[order-1] > 32768 - min_delta[order])
        nlsf[order-1] = 32768 - min_delta[order];
    for (i = order-2; i >= 0; i--)
        if (nlsf[i] > nlsf[i + 1] - min_delta[i+1])
            nlsf[i] = nlsf[i + 1] - min_delta[i+1];
    return;
}
['static inline void silk_decode_lpc(SilkContext *s, SilkFrame *frame,\n                                   OpusRangeCoder *rc,\n                                   float lpc_leadin[16], float lpc[16],\n                                   int *lpc_order, int *has_lpc_leadin, int voiced)\n{\n    int i;\n    int order;\n    int8_t  lsf_i1, lsf_i2[16];\n    int16_t lsf_res[16];\n    int16_t nlsf[16];\n    *lpc_order = order = s->wb ? 16 : 10;\n    lsf_i1 = opus_rc_getsymbol(rc, silk_model_lsf_s1[s->wb][voiced]);\n    for (i = 0; i < order; i++) {\n        int index = s->wb ? silk_lsf_s2_model_sel_wb  [lsf_i1][i] :\n                            silk_lsf_s2_model_sel_nbmb[lsf_i1][i];\n        lsf_i2[i] = opus_rc_getsymbol(rc, silk_model_lsf_s2[index]) - 4;\n        if (lsf_i2[i] == -4)\n            lsf_i2[i] -= opus_rc_getsymbol(rc, silk_model_lsf_s2_ext);\n        else if (lsf_i2[i] == 4)\n            lsf_i2[i] += opus_rc_getsymbol(rc, silk_model_lsf_s2_ext);\n    }\n    for (i = order - 1; i >= 0; i--) {\n        int qstep = s->wb ? 9830 : 11796;\n        lsf_res[i] = lsf_i2[i] * 1024;\n        if (lsf_i2[i] < 0)      lsf_res[i] += 102;\n        else if (lsf_i2[i] > 0) lsf_res[i] -= 102;\n        lsf_res[i] = (lsf_res[i] * qstep) >> 16;\n        if (i + 1 < order) {\n            int weight = s->wb ? silk_lsf_pred_weights_wb  [silk_lsf_weight_sel_wb  [lsf_i1][i]][i] :\n                                 silk_lsf_pred_weights_nbmb[silk_lsf_weight_sel_nbmb[lsf_i1][i]][i];\n            lsf_res[i] += (lsf_res[i+1] * weight) >> 8;\n        }\n    }\n    for (i = 0; i < order; i++) {\n        const uint8_t * codebook = s->wb ? silk_lsf_codebook_wb  [lsf_i1] :\n                                           silk_lsf_codebook_nbmb[lsf_i1];\n        int cur, prev, next, weight_sq, weight, ipart, fpart, y, value;\n        cur = codebook[i];\n        prev = i ? codebook[i - 1] : 0;\n        next = i + 1 < order ? codebook[i + 1] : 256;\n        weight_sq = (1024 / (cur - prev) + 1024 / (next - cur)) << 16;\n        ipart = opus_ilog(weight_sq);\n        fpart = (weight_sq >> (ipart-8)) & 127;\n        y = ((ipart & 1) ? 32768 : 46214) >> ((32 - ipart)>>1);\n        weight = y + ((213 * fpart * y) >> 16);\n        value = cur * 128 + (lsf_res[i] * 16384) / weight;\n        nlsf[i] = av_clip(value, 0, 32767);\n    }\n    silk_stabilize_lsf(nlsf, order, s->wb ? silk_lsf_min_spacing_wb :\n                                            silk_lsf_min_spacing_nbmb);\n    *has_lpc_leadin = 0;\n    if (s->subframes == 4) {\n        int offset = opus_rc_getsymbol(rc, silk_model_lsf_interpolation_offset);\n        if (offset != 4 && frame->coded) {\n            *has_lpc_leadin = 1;\n            if (offset != 0) {\n                int16_t nlsf_leadin[16];\n                for (i = 0; i < order; i++)\n                    nlsf_leadin[i] = frame->nlsf[i] +\n                        ((nlsf[i] - frame->nlsf[i]) * offset >> 2);\n                silk_lsf2lpc(nlsf_leadin, lpc_leadin, order);\n            } else\n                memcpy(lpc_leadin, frame->lpc, 16 * sizeof(float));\n        } else\n            offset = 4;\n        s->nlsf_interp_factor = offset;\n        silk_lsf2lpc(nlsf, lpc, order);\n    } else {\n        s->nlsf_interp_factor = 4;\n        silk_lsf2lpc(nlsf, lpc, order);\n    }\n    memcpy(frame->nlsf, nlsf, order * sizeof(nlsf[0]));\n    memcpy(frame->lpc,  lpc,  order * sizeof(lpc[0]));\n}', 'static inline void silk_stabilize_lsf(int16_t nlsf[16], int order, const uint16_t min_delta[17])\n{\n    int pass, i;\n    for (pass = 0; pass < 20; pass++) {\n        int k, min_diff = 0;\n        for (i = 0; i < order+1; i++) {\n            int low  = i != 0     ? nlsf[i-1] : 0;\n            int high = i != order ? nlsf[i]   : 32768;\n            int diff = (high - low) - (min_delta[i]);\n            if (diff < min_diff) {\n                min_diff = diff;\n                k = i;\n                if (pass == 20)\n                    break;\n            }\n        }\n        if (min_diff == 0)\n            return;\n        if (k == 0) {\n            nlsf[0] = min_delta[0];\n        } else if (k == order) {\n            nlsf[order-1] = 32768 - min_delta[order];\n        } else {\n            int min_center = 0, max_center = 32768, center_val;\n            for (i = 0; i < k; i++)\n                min_center += min_delta[i];\n            min_center += min_delta[k] >> 1;\n            for (i = order; i > k; i--)\n                max_center -= min_delta[k];\n            max_center -= min_delta[k] >> 1;\n            center_val = nlsf[k - 1] + nlsf[k];\n            center_val = (center_val >> 1) + (center_val & 1);\n            center_val = FFMIN(max_center, FFMAX(min_center, center_val));\n            nlsf[k - 1] = center_val - (min_delta[k] >> 1);\n            nlsf[k]     = nlsf[k - 1] + min_delta[k];\n        }\n    }\n    for (i = 1; i < order; i++) {\n        int j, value = nlsf[i];\n        for (j = i - 1; j >= 0 && nlsf[j] > value; j--)\n            nlsf[j + 1] = nlsf[j];\n        nlsf[j + 1] = value;\n    }\n    if (nlsf[0] < min_delta[0])\n        nlsf[0] = min_delta[0];\n    for (i = 1; i < order; i++)\n        if (nlsf[i] < nlsf[i - 1] + min_delta[i])\n            nlsf[i] = nlsf[i - 1] + min_delta[i];\n    if (nlsf[order-1] > 32768 - min_delta[order])\n        nlsf[order-1] = 32768 - min_delta[order];\n    for (i = order-2; i >= 0; i--)\n        if (nlsf[i] > nlsf[i + 1] - min_delta[i+1])\n            nlsf[i] = nlsf[i + 1] - min_delta[i+1];\n    return;\n}']