Commit fd74b55c authored by reutelhuber's avatar reutelhuber
Browse files

fix USAN error in IGF arithmetic decoder

parent 15499265
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@
#define FIX_957_REMOVE_PANNING_DEAD_CODE                /* VA: Remove obsolete non-diegetic panning related code. */
#define FIX_956_DECODER_COMMAND_LINE_FIX                /* VA: Output correct error message when the decoder command-line has too many mandatory arguments. */
#define FIX_955_FASTCONV_REND_IN_ISM                    /* VA: put FastConv rendering call under DEBUGGING */
#define FIX_969_USAN_IGF_ARITH                          /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */

/* #################### End BE switches ################################## */

lib_dec/igf_scf_dec.c

100644 → 100755
+10 −0
Original line number Diff line number Diff line
@@ -211,7 +211,12 @@ static void decode_sfe_vector(
       |    c b
       |      e  --> t
    */
#ifdef FIX_969_USAN_IGF_ARITH
    int16_t pred;
    uint16_t pred_tmp;
#else
    uint16_t pred;
#endif
    int16_t f, ctx, ctx_f, ctx_t;

    for ( f = 0; f < length; f++ )
@@ -221,7 +226,12 @@ static void decode_sfe_vector(
            if ( f == 0 )
            {
                /* decode one of the IGF_SYMBOLS_IN_TABLE == 27 alphabet symbols using the new raw AC function */
#ifdef FIX_969_USAN_IGF_ARITH
                ari_decode_14bits_s27_ext( st, &pred_tmp, &hPrivateData->acState, hPrivateData->cf_se00 );
                pred = (int16_t) pred_tmp;
#else
                ari_decode_14bits_s27_ext( st, &pred, &hPrivateData->acState, hPrivateData->cf_se00 );
#endif
                x[f] = pred << 2;
                x[f] += arith_decode_bits( &hPrivateData->acState, st, 2 ); /* LSBs as 2 bit raw */
            }