Commit a323f1f5 authored by sagnowski's avatar sagnowski
Browse files

Port some formatting and documentation changes that were omitted in port 171 of float MR 1527

Not all changes from the original MR were ported, which makes porting following MRs more
difficult than it should be.

This commit ports some of the missing changes in preparation for work on port 391: #2102

Original float MR:
ivas-codec-pc/ivas-codec!1527

Incomplete port to ivas-float-update:
!1978
parent 7e946ced
Loading
Loading
Loading
Loading
+176 −128
Original line number Diff line number Diff line
@@ -33,18 +33,21 @@
#ifndef ISAR_PROT_H
#define ISAR_PROT_H


#include "isar_stat.h"


#include <stdint.h>
#include "options.h"
#include "ivas_error.h"
#include "lib_isar_post_rend.h"


/* clang-format off */
/*----------------------------------------------------------------------------------*
 * General ISAR prototypes
 *----------------------------------------------------------------------------------*/

ivas_error isar_splitBinPreRendOpen(
    ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData
    ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend,      /* i/o: binaural pre-renderer handle            */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
    ,
    const int32_t output_Fs
@@ -52,58 +55,70 @@ ivas_error isar_splitBinPreRendOpen(
);

ivas_error split_renderer_open_lc3plus(
    SPLIT_REND_WRAPPER *hSplitRendWrapper,
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
    const int32_t OutSampleRate,
    const IVAS_RENDER_FRAMESIZE ivas_frame_size );
    SPLIT_REND_WRAPPER *hSplitRendWrapper,                      /* i/o: Split renderer pre-renderer handle      */
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,        /* i  : Split renderer pre-renderer config      */
    const int32_t output_Fs,                                    /* i  : output sampling rate                    */
    const IVAS_RENDER_FRAMESIZE ivas_frame_size                 /* i  : IVAS frame size                         */
);

void isar_splitBinPreRendClose(
    ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend );
    ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend       /* i/o: binaural pre-renderer handle            */
);

void lc3plusTimeAlignCldfbPoseCorr(
    SPLIT_REND_WRAPPER *hSplitBin,
    float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] );
    SPLIT_REND_WRAPPER *hSplitBin,                              /* i/o: Split renderer pre-renderer handle      */
    float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: Binaural signals, real part      */
    float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]  /* i/o: Binaural signals, imag. part     */
);

ivas_error splitRendLc3plusEncodeAndWrite(
    SPLIT_REND_WRAPPER *hSplitBin,
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t available_bits,
    float *in[] );
    SPLIT_REND_WRAPPER *hSplitBin,                              /* i/o: Split renderer pre-renderer handle      */
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    const int32_t available_bits,                               /* i  : available bit-budget                    */
    float *in[]                                                 /* i/o: PCM in/out buffer                       */
);

/*! r: parameter value  */
int32_t ISAR_SPLIT_REND_BITStream_read_int32(
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t bits );
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    const int32_t bits                                          /* i  : number of bits to be read               */
);

void ISAR_SPLIT_REND_BITStream_write_int32(
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t val,
    const int32_t bits );
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    const int32_t val,                                          /* i  : parameter value                         */
    const int32_t bits                                          /* i  : number of bits to be written            */
);

ivas_error isar_splitBinLCLDEncOpen(
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc,
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc,        /* o  : ISAR LCLD encoder handle                */
    const int32_t iSampleRate,
    const int16_t iChannels,
    const int32_t iDataRate,
    const int16_t iNumBlocks,
    const int16_t iNumIterations );
    const int16_t iNumIterations 
);

ivas_error isar_splitBinRendPLCOpen(
    ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC,
    const int16_t iNumSubSets );
    ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC,                 /* i/o: ISAR PLC handle                         */
    const int16_t iNumSubSets 
);

void isar_splitBinRendPLCClose(
    ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC );
    ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC                  /* i/o: ISAR PLC handle                         */
);

ivas_error isar_splitBinLCLDDecOpen(
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec,
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec,        /* i/o: ISAR LCLD decoder handle                */
    const int32_t iSampleRate,
    const int16_t iChannels,
    const int16_t iNumBlocks,
    const int16_t iNumIterations );
    const int16_t iNumIterations 
);

void isar_splitBinLCLDDecClose(
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec );
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec         /* o  : ISAR LCLD decoder handle                */
);

void isar_splitBinRendPLCsaveState(
    ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC,
@@ -111,7 +126,8 @@ void isar_splitBinRendPLCsaveState(
    float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    const int16_t num_chs,
    const int16_t iNumBlocks,
    const int16_t iNumIterations );
    const int16_t iNumIterations 
);

void isar_splitBinRendPLC_xf(
    ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC,
@@ -121,7 +137,8 @@ void isar_splitBinRendPLC_xf(
    const int16_t iNumBlocks,
    const int16_t iNumIterations,
    int32_t **ppiDecodingFailed,
    int32_t **ppiDecodingFailedPrev );
    int32_t **ppiDecodingFailedPrev 
);

void isar_splitBinRendPLC(
    ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC,
@@ -130,7 +147,8 @@ void isar_splitBinRendPLC(
    const int16_t num_chs,
    const int16_t iNumBlocks,
    const int16_t iNumIterations,
    int32_t **ppiDecodingFailed );
    int32_t **ppiDecodingFailed 
);

#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
void isar_log_cldfb2wav_data(
@@ -142,51 +160,61 @@ void isar_log_cldfb2wav_data(
    const int32_t output_Fs,
    const int16_t start_slot_idx,
    const int16_t md_band_idx,
    const char *filename );
#endif
    const char *filename 
);

#endif
void isar_splitBinLCLDDecProcess(
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec,
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    float Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    float Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    const int16_t bfi );
    ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec,         /* i/o: ISAR LCLD decoder handle                */
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    float Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i  : Binaural signals, real part        */
    float Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i  : Binaural signals, imag. part       */
    const int16_t bfi                                           /* i  : BFI flag                                */
);

void set_fix_rotation_mat(
    float fix_pos_rot_mat[][BINAURAL_CHANNELS][BINAURAL_CHANNELS],
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData );
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
);

void isar_splitBinLCLDEncClose(
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc );
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc         /* i/o: ISAR LCLD encoder handle                */
);

void isar_splitBinLCLDEncProcess(
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc,
    ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc,         /* i/o: ISAR LCLD encoder handle                */
    float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    const int32_t available_bits,
    ISAR_SPLIT_REND_BITS_HANDLE pBits );
    ISAR_SPLIT_REND_BITS_HANDLE pBits                           /* i/o: ISAR bits handle                        */
);

void set_pose_types(
    ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1],
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData );
    ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1],/* o  : ISAR pose type                          */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
);

void isar_split_rend_init_huff_cfg(
    ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg );
    ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg 
);

ivas_error isar_splitBinPostRendOpen(
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    const int32_t output_Fs );
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend,    /* i/o: binaural post-renderer handle           */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,                /* i/o: pose correction data handle             */
    const int32_t output_Fs                                     /* i  : output sampling rate                    */
);

void isar_splitBinPostRendClose(
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend );
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend     /* i/o: binaural post-renderer handle           */
);

void isar_SplitRenderer_getdiagdiff(
    int16_t in_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS],
    int16_t out_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS],
    const int16_t sign,
    const int16_t min_val,
    const int16_t max_val );
    const int16_t max_val
);

void isar_split_rend_get_quant_params(
    const int16_t num_md_bands,
@@ -200,16 +228,16 @@ void isar_split_rend_get_quant_params(
    int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
    int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS],
    const int16_t ro_flag,
    int16_t *num_quant_strats );
    int16_t *num_quant_strats
);

void isar_splitBinPostRendMdDec(
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend,
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend,     /* i/o: binaural post-renderer handle           */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend
#else
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData
    ,
    BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend             /* i/o: binaural pre-renderer handle            */
#endif
);

@@ -226,88 +254,103 @@ void isar_mat_mult_2by2_complex(
    float in_re2[2][2],
    float in_im2[2][2],
    float out_re2[2][2],
    float out_im2[2][2] );
    float out_im2[2][2] 
);

void isar_rend_CldfbSplitPostRendProcess(
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend,     /* i/o: binaural post-renderer handle           */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,                /* i/o: pose correction data handle             */
    const IVAS_QUATERNION QuaternionPost,
    float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
    float Cldfb_ImagBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
    float output[][L_FRAME48k],
    const int16_t cldfb_in_flag );
    const int16_t cldfb_in_flag 
);

void isar_rend_CldfbSplitPreRendProcess(
    const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend,
    const IVAS_QUATERNION headPosition,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t target_md_bits,
    const int16_t low_res_pre_rend_rot,
    const int16_t ro_md_flag );
    const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i  : binaural pre-renderer handle            */
    const IVAS_QUATERNION headPosition,                         /* i  : head rotation QUATERNION                */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,                /* i/o: pose correction data handle             */
    float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i  : Binaural signals, real part      */
    float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i  : Binaural signals, imag. part     */
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    const int32_t target_md_bits,                               /* i  : ISAR MD bitrate                         */
    const int16_t low_res_pre_rend_rot,                         /* i  : low time resolution pre-renderer flag   */
    const int16_t ro_md_flag                                    /* i  : real only metadata for yaw flag         */
);

ivas_error isar_renderMultiTDBinToSplitBinaural(
    SPLIT_REND_WRAPPER *hSplitBin,
    const IVAS_QUATERNION headPosition,
    const int32_t SplitRendBitRate,
    const int16_t isar_frame_size_ms,
    const int16_t codec_frame_size_ms,
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int16_t max_bands,
    float *in[],
    const int16_t low_res_pre_rend_rot,
    const int16_t pcm_out_flag,
    const int16_t ro_md_flag );
    SPLIT_REND_WRAPPER *hSplitBin,                              /* i/o: Split renderer pre-renderer handle      */
    const IVAS_QUATERNION headPosition,                         /* i  : head rotation QUATERNION                */
    const int32_t SplitRendBitRate,                             /* i  : ISAR bitrate                            */
    const int16_t isar_frame_size_ms,                           /* i  : ISAR bit stream frame size in ms        */
    const int16_t codec_frame_size_ms,                          /* i  : ISAR frame length in ms                 */
    ISAR_SPLIT_REND_BITS_HANDLE pBits,                          /* i/o: ISAR bits handle                        */
    const int16_t max_bands,                                    /* i  : CLDFB bands                             */
    float *in[],                                                /* i/o: PCM in/out buffer                       */
    const int16_t low_res_pre_rend_rot,                         /* i  : low time resolution pre-renderer flag   */
    const int16_t pcm_out_flag,                                 /* i  : flag to indicate PCM output             */
    const int16_t ro_md_flag                                    /* i  : real only metadata for yaw flag         */
);

void isar_init_multi_bin_pose_data(
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData );
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
);

void isar_renderSplitGetMultiBinPoseData(
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    const ISAR_SPLIT_REND_ROT_AXIS rot_axis );
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,      /* i  : Split renderer pre-renderer config      */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,                /* i/o: pose correction data handle             */
    const ISAR_SPLIT_REND_ROT_AXIS rot_axis                     /* i  : external control for rotation axis for split rendering */
);

int16_t isar_renderSplitGetRot_axisNumBits(
    const int16_t dof );
    const int16_t dof 
);

ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode(
    const int16_t dof,
    const int16_t code );
    const int16_t code 
);

int16_t isar_renderSplitGetCodeFromRot_axis(
    const int16_t dof,
    const ISAR_SPLIT_REND_ROT_AXIS rot_axis,
    int16_t *num_bits );
    int16_t *num_bits 
);

void isar_init_split_post_rend_handles(
    ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper );
    ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper             /* i/o: Split renderer post-renderer handle     */
);

void isar_set_split_rend_ht_setup(
    SPLIT_REND_WRAPPER *hSplitrend,
    IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES],
    float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] );

    SPLIT_REND_WRAPPER *hSplitrend,                             /* i/o: Split renderer pre-renderer handle      */
    IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES],   /* i/o: External orientation in quaternions     */
    float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3]               /* o  : real-space rotation matrix              */
);

int32_t isar_get_lc3plus_bitrate(
    const int32_t SplitRendBitRate,
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode,
    const int32_t nChannels,
    const int32_t codecFrameDurationUs );
    const int32_t SplitRendBitRate,                             /* i  : ISAR bitrate                            */
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode, /* i  : ISAR pose correction mode            */
    const int32_t nChannels,                                    /* i  : number of channels                      */
    const int32_t lc3plus_frame_duration_us                     /* i  : ISAR frame length in us                 */
);

ivas_error isar_split_rend_validate_config(
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,
    const int16_t pcm_out_flag );
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig,        /* i  : Split renderer pre-renderer config      */
    const int16_t pcm_out_flag                                  /* i  : flag to indicate PCM output             */
);

/*! r: LCLD codec bitrate */
int32_t isar_get_lcld_bitrate(
    const int32_t SplitRendBitRate,
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode );

    const int32_t SplitRendBitRate,                             /* i  : ISAR bitrate                            */
    const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode /* i  : ISAR pose correction mode             */
);

/*! r: ISAR MD bitrate */
int32_t isar_get_split_rend_md_target_brate(
    const int32_t SplitRendBitRate,
    const int16_t pcm_out_flag );
    const int32_t SplitRendBitRate,                             /* i  : ISAR bitrate                            */
    const int16_t pcm_out_flag                                  /* i  : flag to indicate PCM output             */
);

ivas_error isar_framesize_to_ms(
    const IVAS_RENDER_FRAMESIZE frame_size,                     /* i  : frame size enum                         */
@@ -316,32 +359,37 @@ ivas_error isar_framesize_to_ms(

ivas_error isar_split_rend_choose_default_codec(
    ISAR_SPLIT_REND_CODEC *pCodec,                              /* i/o: pointer to codec setting                */
    int16_t *pIsar_frame_size_ms,  /* i/o: pointer to isar frame size setting      */
    int16_t *pIsar_frame_size_ms,                               /* i/o: pointer to ISAR frame size setting      */
    int16_t *pCodec_frame_size_ms,                              /* i/o: pointer to codec frame size setting     */
    const int16_t cldfb_in_flag,                                /* i  : flag indicating rendering in TD         */
    const int16_t pcm_out_flag,                                 /* i  : flag to indicate PCM output             */
    const int16_t num_subframes                                 /* i  : number of subframes                     */
);

void ISAR_SPLIT_REND_BITStream_init(
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t buf_len_bytes,
    uint8_t *pbuf );

void isar_renderSplitUpdateNoCorrectionPoseData(
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData );
    const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config,      /* i  : Split renderer pre-renderer config      */
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData                 /* i/o: pose correction data handle             */
);

int32_t get_bit(
    const int32_t state,
    const int32_t bit_id );
    const int32_t bit_id 
);

/*! r: ISAR audio type */
ISAR_POST_REND_AudioConfigType isar_getAudioConfigType(
    const IVAS_AUDIO_CONFIG config );
    const IVAS_AUDIO_CONFIG config                              /* i  : audio configuration                     */
);

void isar_init_split_rend_handles(
    SPLIT_REND_WRAPPER *hSplitRendWrapper );
    SPLIT_REND_WRAPPER *hSplitRendWrapper                       /* i/o: Split renderer pre-renderer handle      */
);

void ISAR_SPLIT_REND_BITStream_init(
    ISAR_SPLIT_REND_BITS_HANDLE pBits,
    const int32_t buf_len_bytes,
    uint8_t *pbuf
);

/* clang-format on */