Commit f15676dd authored by vaclav's avatar vaclav
Browse files

Merge remote-tracking branch 'remotes/origin/main' into 851-api-public-constants-review

parents ad1378f7 911a29a5
Loading
Loading
Loading
Loading
Loading
+320 −76

File changed.

Preview size limit exceeded, changes collapsed.

+83 −0
Original line number Diff line number Diff line
@@ -187,7 +187,11 @@ typedef struct
    bool lfeCustomRoutingEnabled;
    char inLfePanningMatrixFile[RENDERER_MAX_CLI_ARG_LENGTH];
    float syncMdDelay;
#ifdef NONBE_UNIFIED_DECODING_PATHS
    IVAS_RENDER_FRAMESIZE render_framesize;
#else
    bool framing_5ms;
#endif
    uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS];
    uint16_t acousticEnvironmentId;
} CmdlnArgs;
@@ -219,6 +223,9 @@ typedef enum
#endif
    CmdLnOptionId_referenceVectorFile,
    CmdLnOptionId_exteriorOrientationFile,
#ifdef NONBE_UNIFIED_DECODING_PATHS
    CmdLnOptionId_framing,
#endif
    CmdLnOptionId_framing5ms,
    CmdLnOptionId_syncMdDelay,
    CmdLnOptionId_directivityPatternId,
@@ -368,6 +375,14 @@ static const CmdLnParser_Option cliOptions[] = {
        .matchShort = "exof",
        .description = "External orientation trajectory file for simulation of external orientations",
    },
#ifdef NONBE_UNIFIED_DECODING_PATHS
    {
        .id = CmdLnOptionId_framing,
        .match = "framing",
        .matchShort = "fr",
        .description = "Set Render audio framing.",
    },
#endif
    {
        .id = CmdLnOptionId_framing5ms,
        .match = "framing_5ms",
@@ -999,9 +1014,17 @@ int main(
#ifdef SPLIT_REND_WITH_HEAD_ROT
    }
#endif
#ifdef NONBE_UNIFIED_DECODING_PATHS
    const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) );
#else
    const int16_t frameSize_smpls = (int16_t) ( ( args.framing_5ms ? 5 : 20 ) * args.sampleRate / 1000 );
#endif

#ifdef NONBE_UNIFIED_DECODING_PATHS
    if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK )
#else
    if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain, ( args.framing_5ms ) ? 1 : 4 ) ) != IVAS_ERR_OK )
#endif
    {
        fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) );
        exit( -1 );
@@ -1496,7 +1519,11 @@ int main(
    {
        int16_t num_in_channels;
        num_in_channels = inBuffer.config.numChannels;
#ifdef NONBE_UNIFIED_DECODING_PATHS
        const bool isCurrentFrameMultipleOf20ms = frame % ( 4 / args.render_framesize ) == 0;
#else
        const bool isCurrentFrameMultipleOf20ms = !args.framing_5ms || frame % 4 == 0;
#endif

#ifdef SPLIT_REND_WITH_HEAD_ROT
        numSamplesRead = 0;
@@ -1548,7 +1575,11 @@ int main(
#endif

        int16_t num_subframes, sf_idx;
#ifdef NONBE_UNIFIED_DECODING_PATHS
        num_subframes = (int16_t) args.render_framesize;
#else
        num_subframes = ( args.framing_5ms ) ? 1 : IVAS_MAX_PARAM_SPATIAL_SUBFRAMES;
#endif

        if ( isCurrentFrameMultipleOf20ms )
        {
@@ -2336,6 +2367,39 @@ static bool parseDiegeticPan(
    return true;
}


#ifdef NONBE_UNIFIED_DECODING_PATHS
static bool parseRenderFramesize(
    char *value,
    IVAS_RENDER_FRAMESIZE *render_framesize )
{
    int32_t tmp;

    *render_framesize = IVAS_RENDER_FRAMESIZE_UNKNOWN;
    if ( !is_digits_only( value ) )
    {
        return false;
    }
    tmp = (int32_t) strtol( value, NULL, 0 );
    switch ( (int16_t) tmp )
    {
        case 5:
            *render_framesize = IVAS_RENDER_FRAMESIZE_5MS;
            break;
        case 10:
            *render_framesize = IVAS_RENDER_FRAMESIZE_10MS;
            break;
        case 20:
            *render_framesize = IVAS_RENDER_FRAMESIZE_20MS;
            break;
        default:
            return false;
    }

    return true;
}
#endif

static bool parseOrientationTracking(
    char *value,
    int8_t *orientation_tracking )
@@ -2633,7 +2697,11 @@ static CmdlnArgs defaultArgs(

    args.lfeCustomRoutingEnabled = false;
    clearString( args.inLfePanningMatrixFile );
#ifdef NONBE_UNIFIED_DECODING_PATHS
    args.render_framesize = IVAS_RENDER_FRAMESIZE_20MS;
#else
    args.framing_5ms = false;
#endif
    args.syncMdDelay = 0;

    for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i )
@@ -2795,9 +2863,24 @@ static void parseOption(
                exit( -1 );
            }
            break;
#ifdef NONBE_UNIFIED_DECODING_PATHS
        case CmdLnOptionId_framing:
            assert( numOptionValues == 1 );
            if ( !parseRenderFramesize( optionValues[0], &args->render_framesize ) )
            {
                fprintf( stderr, "Unknown or invalid option for LFE position: %s\n", optionValues[0] );
                exit( -1 );
            }

            break;
#endif
        case CmdLnOptionId_framing5ms:
            assert( numOptionValues == 0 );
#ifdef NONBE_UNIFIED_DECODING_PATHS
            args->render_framesize = IVAS_RENDER_FRAMESIZE_5MS;
#else
            args->framing_5ms = true;
#endif
            fprintf( stderr, "Warning: this is a placeholder for 5ms framing.\n" );
            break;
        case CmdLnOptionId_directivityPatternId:
+11 −0
Original line number Diff line number Diff line
@@ -147,6 +147,17 @@ typedef enum

} IVAS_HEAD_ORIENT_TRK_T;

#ifdef NONBE_UNIFIED_DECODING_PATHS
typedef enum
{
    IVAS_RENDER_FRAMESIZE_UNKNOWN = 0,
    IVAS_RENDER_FRAMESIZE_5MS = 1,
    IVAS_RENDER_FRAMESIZE_10MS = 2,
    IVAS_RENDER_FRAMESIZE_20MS = 4

} IVAS_RENDER_FRAMESIZE;
#endif

typedef struct ivas_masa_metadata_frame_struct *IVAS_MASA_METADATA_HANDLE;
typedef struct ivas_masa_decoder_ext_out_meta_struct *IVAS_MASA_DECODER_EXT_OUT_META_HANDLE;

+3 −22
Original line number Diff line number Diff line
@@ -181,13 +181,7 @@ typedef enum
#define MAX_JBM_L_FRAME48k                      1920
#define MAX_JBM_L_FRAME_NS                      40000000L
#define MAX_SPAR_INTERNAL_CHANNELS              IVAS_SPAR_MAX_CH
#ifdef JBM_FOR_OSBA
#define MAX_CLDFB_DIGEST_CHANNELS               (FOA_CHANNELS + MAX_NUM_OBJECTS)
#else
#define MAX_CLDFB_DIGEST_CHANNELS               4
#endif

#define MASA_JBM_RINGBUFFER_FRAMES              3

typedef enum
{
@@ -196,6 +190,7 @@ typedef enum
    TC_BUFFER_MODE_BUFFER
} TC_BUFFER_MODE;


/*----------------------------------------------------------------------------------*
 * IVAS Bitrates
 *----------------------------------------------------------------------------------*/
@@ -1219,11 +1214,12 @@ enum
#define MASA_STEREO_MIN_BITRATE                 IVAS_24k4
#define MAXIMUM_OMASA_FREQ_BANDS                8                           /* Corresponds to maximum number of coding bands at 32 kbps */
#define OMASA_STEREO_SW_CNT_MAX                 100

#define MASA_BIT_REDUCT_PARAM                   10
#define MASA_MAXIMUM_TWO_DIR_BANDS              24
#define NBITS_HR_COH                            4

#define MASA_JBM_RINGBUFFER_FRAMES              3

typedef enum
{
    MASA_STEREO_NOT_DEFINED,
@@ -1492,9 +1488,7 @@ typedef enum
    PITCH_ONLY,
    ANY_ROLL,
    PRED_ONLY,
#ifdef SPLIT_REND_PRED_QUANT_63_PNTS
    PRED_ROLL_ONLY,
#endif
    COM_GAIN_ONLY,
    LR_GAIN_ONLY
} IVAS_SPLIT_REND_POSE_TYPE;
@@ -1566,18 +1560,10 @@ typedef enum
#define COMPLEX_MD_BAND_THRESH                  MAX_SPLIT_REND_MD_BANDS
#define COMPLEX_MD_BAND_THRESH_LOW              5

#ifndef SPLIT_REND_PRED_QUANT_63_PNTS
#define IVAS_SPLIT_REND_NUM_QUANT_STRATS        3
#else
#define IVAS_SPLIT_REND_NUM_QUANT_STRATS        4
#endif
#ifdef SPLIT_REND_PRED_QUANT_63_PNTS
#define IVAS_SPLIT_REND_PRED_63QUANT_PNTS       63
#define IVAS_SPLIT_REND_PRED_31QUANT_PNTS       31
#define IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS    31
#else
#define IVAS_SPLIT_REND_PRED_QUANT_PNTS         31
#endif
#define IVAS_SPLIT_REND_D_QUANT_PNTS            15
#define IVAS_SPLIT_REND_PRED_MIN_VAL            -1.4f
#define IVAS_SPLIT_REND_PRED_MAX_VAL            1.4f
@@ -1588,17 +1574,12 @@ typedef enum
#define IVAS_SPLIT_REND_D_MIN_VAL               0.0f
#define IVAS_SPLIT_REND_D_MAX_VAL               1.0f

#ifdef SPLIT_REND_PRED_QUANT_63_PNTS
#define IVAS_SPLIT_REND_PRED_ROLL_Q_STEP        (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ))
#define IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP     (( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) 
#define IVAS_SPLIT_REND_PRED31_Q_STEP           (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 ))
#define IVAS_SPLIT_REND_PRED31_1BYQ_STEP        (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) 
#define IVAS_SPLIT_REND_PRED63_Q_STEP           (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_63QUANT_PNTS - 1 ))
#define IVAS_SPLIT_REND_PRED63_1BYQ_STEP        (( IVAS_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) 
#else
#define IVAS_SPLIT_REND_PRED_Q_STEP             (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 ))
#define IVAS_SPLIT_REND_PRED_1BYQ_STEP          (( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) 
#endif

#define IVAS_SPLIT_REND_D_Q_STEP                (( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL ) / ( IVAS_SPLIT_REND_D_QUANT_PNTS - 1 ))
#define IVAS_SPLIT_REND_D_1BYQ_STEP             (( IVAS_SPLIT_REND_D_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL )) 
+0 −4
Original line number Diff line number Diff line
@@ -65,9 +65,7 @@ typedef enum
    IVAS_ERR_INVALID_FEC_CONFIG,
    IVAS_ERR_INVALID_FEC_OFFSET,
    IVAS_ERR_INVALID_INPUT_BUFFER_SIZE,
#ifdef FIX_847_OUTPUT_PCM_BUFFER
    IVAS_ERR_INVALID_OUTPUT_BUFFER_SIZE,
#endif
    IVAS_ERR_DTX_NOT_SUPPORTED,
    IVAS_ERR_UNEXPECTED_NULL_POINTER,
    IVAS_ERR_METADATA_NOT_EXPECTED,
@@ -217,10 +215,8 @@ static inline const char *ivas_error_to_string( ivas_error error_code )
            return "Invalid FEC offset";
        case IVAS_ERR_INVALID_INPUT_BUFFER_SIZE:
            return "Invalid input buffer size";
#ifdef FIX_847_OUTPUT_PCM_BUFFER
        case IVAS_ERR_INVALID_OUTPUT_BUFFER_SIZE:
            return "Invalid output buffer size";
#endif
        case IVAS_ERR_DTX_NOT_SUPPORTED:
            return "DTX is not supported in this IVAS format and element mode";
        case IVAS_ERR_UNEXPECTED_NULL_POINTER:
Loading