Commit 4765e6c6 authored by vaclav's avatar vaclav
Browse files

fix apa_exec_ivas_fx()

parent 74098777
Loading
Loading
Loading
Loading
Loading
+108 −108
Original line number Diff line number Diff line
@@ -204,19 +204,6 @@ Word32 calculate_cpe_brate_MASA_ISM_fx(
    const Word16 nchan_ism                                      /* i  : number of objects                       */
);

Word16 ivas_jbm_dec_get_num_tc_channels_fx(
    Decoder_Struct *st_ivas                                     /* i  : IVAS decoder handle                     */
);

ivas_error ivas_jbm_dec_tc_buffer_open_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    const TC_BUFFER_MODE tc_buffer_mode,                        /* i  : buffer mode                             */
    const Word16 nchan_transport_jbm,                           /* i  : number of real transport channels       */
    const Word16 nchan_transport_internal,                      /* i  : number of totally buffered channels     */
    const Word16 nchan_full,                                    /* i  : number of channels to fully store       */
    const Word16 n_samples_granularity                          /* i  : granularity of the renderer/buffer      */
);

void ivas_dct_windowing_fx(
    const Word16 fade_len,        /*Q0*/
    const Word16 full_len,        /*Q0*/
@@ -947,15 +934,6 @@ void update_last_metadata_fx(
    const Word16 updt_flag[]                                    /* i  : last metadata update flag                   */
);

ivas_error ivas_jbm_dec_tc_buffer_reconfigure_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    const TC_BUFFER_MODE tc_buffer_mode,                        /* i  : new buffer mode                             */
    const Word16 nchan_transport_jbm,                           /* i  : new number of real transport channels       */
    const Word16 nchan_transport_internal,                      /* i  : new number of totally buffered channels     */
    const Word16 nchan_full,                                    /* i  : new number of channels to fully store       */
    const Word16 n_samples_granularity                          /* i  : new granularity of the renderer/buffer      */
);

ivas_error ivas_dirac_allocate_parameters_fx(
    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom,       /* i/o: common data for spatial parametric rendering*/
    const Word16 params_flag                                    /* i  : set of parameters flag                      */
@@ -999,21 +977,6 @@ Word16 IGF_MapBitRateToIndex(
    const Word16 rf_mode                                        /* i  :  flag to signal the RF mode                 */
);

#ifdef NONBE_1303_REND_GRANULARITY
Word16 ivas_jbm_dec_get_render_granularity_fx(
    const RENDERER_TYPE renderer_type,                          /* i  : renderer type                                               */
    const RENDERER_TYPE renderer_type_sec,                      /* i  : secondary renderer type                                     */
    const int32_t output_Fs                                     /* i  : sampling rate                                               */
);
#else
Word16 ivas_jbm_dec_get_render_granularity(
    const RENDERER_TYPE rendererType,                           /* i  : renderer type                               */
    const IVAS_FORMAT ivas_format,                              /* i  : ivas format                                 */
    const MC_MODE mc_mode,                                      /* i  : MC mode                                     */
    const Word32 output_Fs                                      /* i  : sampling rate                               */
); 
#endif

void stereo_dft_config_fx(
    STEREO_DFT_CONFIG_DATA_HANDLE hConfig,                      /* o  : DFT stereo configuration                    */
    const Word32 brate,                                         /* i  : IVAS/CPE/nominal total bitrate              */
@@ -1095,12 +1058,6 @@ void ivas_ism_render_sf_fx(
    const Word16 n_samples_to_render                            /* i  : output frame length per channel             */
);

void ivas_jbm_dec_get_adapted_linear_interpolator_fx(
    const Word16 default_interp_length,                         /* i  : default length of the (full-frame) interpolator */
    const Word16 interp_length,                                 /* i  : length of the interpolator to be created        */
    Word16 *interpolator_fx                                     /* o  : the interpolator                                */
);

void ivas_omasa_separate_object_render_jbm_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    const UWord16 nSamplesRendered,                             /* i  : number of samples rendered              */
@@ -2576,14 +2533,6 @@ void ivas_omasa_dirac_rend_jbm_fx(
    Word32 *output_fx[]                                         /* o  : rendered time signal                    */
);

ivas_error ivas_jbm_dec_render_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const UWord16 nSamplesAsked,                                /* i  : number of samples wanted                                    */
    UWord16 *nSamplesRendered,                                  /* o  : number of samples rendered                                  */
    UWord16 *nSamplesAvailableNext,                             /* o  : number of samples still available in the rendering pipeline */
    Word16 *data                                                /* o  : output synthesis signal                                      */
);

void ivas_sba_zero_vert_comp_fx(
    Word32 *sba_data[],                                         /* i  : SBA signals                             */
    const Word16 sba_order,                                     /* i  : SBA order                               */
@@ -4228,63 +4177,6 @@ Word64 var_32_fx(
    Word16 q                                                    /* q  : q-factor for the array                      */
);

ivas_error ivas_jbm_dec_tc_fx(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
#ifndef LIB_DEC_REVISION
    ,
    Word32 *data_fx 
#endif
);

ivas_error ivas_jbm_dec_flush_renderer_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    const Word16 tc_granularity_new,                            /* i  : new renderer granularity                    */
    const RENDERER_TYPE renderer_type_old,                      /* i  : old renderer type                           */
    const AUDIO_CONFIG intern_config_old,                       /* i  : old internal config                         */
    const IVAS_OUTPUT_SETUP_HANDLE hIntSetupOld,                /* i  : old internal output setup                   */
    const MC_MODE mc_mode_old,                                  /* i  : old MC mode                                 */
    const ISM_MODE ism_mode_old,                                /* i  : old ISM mode                                */
    UWord16 *nSamplesRendered,                                  /* o  : number of samples flushed                   */
    Word16 *data                                                /* o  : output synthesis signal                     */
);

void ivas_jbm_dec_feed_tc_to_renderer_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const Word16 nSamplesForRendering,                          /* i  : number of TC samples available for rendering                */
    Word16 *nSamplesResidual                                    /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
    #ifndef JBM_MEMORY_OPT
    ,
    Word32 *data_fx                                             /* i/o: transport channels/output synthesis signal                  */
#endif
);

void ivas_dec_prepare_renderer_fx(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                                      */
);

void ivas_jbm_dec_get_adapted_subframes(
    const Word16 nCldfbTs,                                      /* i  : number of time slots in the current frame                   */
    Word16 *subframe_nbslots,                                   /* i/o: subframe grid                                               */
    Word16 *nb_subframes                                        /* i/o: number of subframes in the frame                            */
);

void ivas_jbm_dec_get_md_map(
    const Word16 default_len,                                   /* i  : default frame length in metadata slots                      */
    const Word16 len,                                           /* i  : length of the modfied frames in metadata slots              */
    const Word16 subframe_len,                                  /* i  : default length of a subframe                                */
    const Word16 offset,                                        /* i  : current read offset into the md buffer                      */
    const Word16 buf_len,                                       /* i  : length of the metadata buffer                               */
    Word16 *map                                                 /* o  : metadata index map                                          */
);

void ivas_jbm_dec_get_md_map_even_spacing(
    const Word16 len,                                           /* i  : length of the modfied frames in metadata slots              */
    const Word16 subframe_len,                                  /* i  : default length of a subframe                                */
    const Word16 offset,                                        /* i  : current read offset into the md buffer                      */
    const Word16 buf_len,                                       /* i  : length of the metadata buffer                               */
    Word16 *map                                                 /* o  : metadata index map                                          */
);

void bitbudget_to_brate(
    const Word16 x[],                                           /* i  : bitbudgets                                  */
    Word32 y[],                                                 /* o  : bitrates                                    */
@@ -6273,14 +6165,122 @@ Word16 is_DTXrate(
 * JBM prototypes
 *----------------------------------------------------------------------------------*/

ivas_error ivas_jbm_dec_tc_fx(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
#ifndef LIB_DEC_REVISION
    ,
    Word32 *data_fx 
#endif
);

ivas_error ivas_jbm_dec_render_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const UWord16 nSamplesAsked,                                /* i  : number of samples wanted                                    */
    UWord16 *nSamplesRendered,                                  /* o  : number of samples rendered                                  */
    UWord16 *nSamplesAvailableNext,                             /* o  : number of samples still available in the rendering pipeline */
    Word16 *data                                                /* o  : output synthesis signal                                      */
);

ivas_error ivas_jbm_dec_flush_renderer_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    const Word16 tc_granularity_new,                            /* i  : new renderer granularity                    */
    const RENDERER_TYPE renderer_type_old,                      /* i  : old renderer type                           */
    const AUDIO_CONFIG intern_config_old,                       /* i  : old internal config                         */
    const IVAS_OUTPUT_SETUP_HANDLE hIntSetupOld,                /* i  : old internal output setup                   */
    const MC_MODE mc_mode_old,                                  /* i  : old MC mode                                 */
    const ISM_MODE ism_mode_old,                                /* i  : old ISM mode                                */
    UWord16 *nSamplesRendered,                                  /* o  : number of samples flushed                   */
    Word16 *data                                                /* o  : output synthesis signal                     */
);

void ivas_jbm_dec_feed_tc_to_renderer_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const Word16 nSamplesForRendering,                          /* i  : number of TC samples available for rendering                */
    Word16 *nSamplesResidual                                    /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
#ifndef JBM_MEMORY_OPT
    ,
    Word32 *data_fx                                             /* i/o: transport channels/output synthesis signal                  */
#endif
);

void ivas_dec_prepare_renderer_fx(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                                      */
);

ivas_error ivas_jbm_dec_set_discard_samples_fx(
    Decoder_Struct *st_ivas                                     /* i/o: main IVAS decoder structre                  */
);

void ivas_jbm_dec_get_adapted_linear_interpolator_fx(
    const Word16 default_interp_length,                         /* i  : default length of the (full-frame) interpolator */
    const Word16 interp_length,                                 /* i  : length of the interpolator to be created        */
    Word16 *interpolator_fx                                     /* o  : the interpolator                                */
);

void ivas_jbm_dec_get_adapted_subframes(
    const Word16 nCldfbTs,                                      /* i  : number of time slots in the current frame                   */
    Word16 *subframe_nbslots,                                   /* i/o: subframe grid                                               */
    Word16 *nb_subframes                                        /* i/o: number of subframes in the frame                            */
);

void ivas_jbm_dec_get_md_map(
    const Word16 default_len,                                   /* i  : default frame length in metadata slots                      */
    const Word16 len,                                           /* i  : length of the modfied frames in metadata slots              */
    const Word16 subframe_len,                                  /* i  : default length of a subframe                                */
    const Word16 offset,                                        /* i  : current read offset into the md buffer                      */
    const Word16 buf_len,                                       /* i  : length of the metadata buffer                               */
    Word16 *map                                                 /* o  : metadata index map                                          */
);

Word16 ivas_jbm_dec_get_num_tc_channels_fx(
    Decoder_Struct *st_ivas                                     /* i  : IVAS decoder handle                     */
);

void ivas_jbm_dec_get_md_map_even_spacing(
    const Word16 len,                                           /* i  : length of the modfied frames in metadata slots              */
    const Word16 subframe_len,                                  /* i  : default length of a subframe                                */
    const Word16 offset,                                        /* i  : current read offset into the md buffer                      */
    const Word16 buf_len,                                       /* i  : length of the metadata buffer                               */
    Word16 *map                                                 /* o  : metadata index map                                          */
);

TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode_fx(
    Decoder_Struct *st_ivas                                     /* i  : IVAS decoder handle                         */
);

#ifdef NONBE_1303_REND_GRANULARITY
Word16 ivas_jbm_dec_get_render_granularity_fx(
    const RENDERER_TYPE renderer_type,                          /* i  : renderer type                                               */
    const RENDERER_TYPE renderer_type_sec,                      /* i  : secondary renderer type                                     */
    const int32_t output_Fs                                     /* i  : sampling rate                                               */
);
#else
Word16 ivas_jbm_dec_get_render_granularity(
    const RENDERER_TYPE rendererType,                           /* i  : renderer type                               */
    const IVAS_FORMAT ivas_format,                              /* i  : ivas format                                 */
    const MC_MODE mc_mode,                                      /* i  : MC mode                                     */
    const Word32 output_Fs                                      /* i  : sampling rate                               */
); 
#endif

ivas_error ivas_jbm_dec_tc_buffer_open_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    const TC_BUFFER_MODE tc_buffer_mode,                        /* i  : buffer mode                             */
    const Word16 nchan_transport_jbm,                           /* i  : number of real transport channels       */
    const Word16 nchan_transport_internal,                      /* i  : number of totally buffered channels     */
    const Word16 nchan_full,                                    /* i  : number of channels to fully store       */
    const Word16 n_samples_granularity                          /* i  : granularity of the renderer/buffer      */
);

ivas_error ivas_jbm_dec_tc_buffer_reconfigure_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                      */
    const TC_BUFFER_MODE tc_buffer_mode,                        /* i  : new buffer mode                             */
    const Word16 nchan_transport_jbm,                           /* i  : new number of real transport channels       */
    const Word16 nchan_transport_internal,                      /* i  : new number of totally buffered channels     */
    const Word16 nchan_full,                                    /* i  : new number of channels to fully store       */
    const Word16 n_samples_granularity                          /* i  : new granularity of the renderer/buffer      */
);

void ivas_jbm_dec_tc_buffer_close_fx(
    DECODER_TC_BUFFER_HANDLE *phTcBuffer                        /* i/o: TC buffer handle                            */
);
+3 −1
Original line number Diff line number Diff line
@@ -3434,12 +3434,14 @@ void ivas_destroy_dec_fx(
    /* Limiter struct */
    ivas_limiter_close_fx( &( st_ivas->hLimiter ) );

    /* Decoder configuration structure */
    IF( st_ivas->hDecoderConfig != NULL )
    {
        free( st_ivas->hDecoderConfig );
        st_ivas->hDecoderConfig = NULL;
    }

    /* JBM TC buffer structure */
    ivas_jbm_dec_tc_buffer_close_fx( &st_ivas->hTcBuffer );

    IF( st_ivas->hJbmMetadata != NULL )
+16 −0
Original line number Diff line number Diff line
@@ -912,7 +912,11 @@ UWord8 apa_exec_ivas_fx(
    Word16 Q_a_out;
    Word16 Q_a_out_init_old;

#ifdef JBM_MEMORY_OPT
    Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, l_in ) ), Q11 - Q16 - Q1 );
#else
    Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, APA_BUF_PER_CHANNEL ) ), Q11 - Q16 - Q1 );
#endif
    Q_a_out_init_old = Q_a_out; /* store the possible scaling of a_in, to be re-used in the next frame */
    move16();
    statsResetThreshold = 1637;
@@ -989,7 +993,11 @@ UWord8 apa_exec_ivas_fx(
        Scale_sig( ps->buf_out_fx, ps->buf_out_capacity, sub( Q_a_out, ps->Q_buf_out ) ); // Q_buf_out -> Q_a_out
        IF( EQ_32( ps->scale, 100 ) )
        {
#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
            {
                a_out[i] = a_in[i]; // Q11
                move32();
@@ -1001,7 +1009,11 @@ UWord8 apa_exec_ivas_fx(
        {
            Word16 *frm_in_ptr = &( frm_in[ps->l_frm] );

#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
            {
                a_tmp[i] = extract_h( L_shl( a_in[i], add( Q_a_out, Q5 ) ) ); // Q_a_out
                move16();
@@ -1051,7 +1063,11 @@ UWord8 apa_exec_ivas_fx(
                }
            }

#ifdef JBM_MEMORY_OPT
            FOR( i = 0; i < L_mult0( ps->num_channels, ps->l_frm ); i++ )
#else
            FOR( i = 0; i < ps->num_channels * APA_BUF_PER_CHANNEL; i++ )
#endif
            {
                a_out[i] = L_shl( a_tmp[i], sub( Q11, Q_a_out ) ); // Q0 -> Q11
                move32();