Commit e56a7052 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

implement new command line switch for discrete coding of objects

parent 2674f05c
Loading
Loading
Loading
Loading
+27 −11
Original line number Diff line number Diff line
@@ -58,8 +58,7 @@ static
#define DEFAULT_FIXED_SID_RATE 8 /* DTX SID rate */

/* Additional config info for each input format */
typedef union _EncInputFormatConfig
{
typedef union _EncInputFormatConfig {
    /* MONO details */
    bool stereoToMonoDownmix;

@@ -131,6 +130,9 @@ typedef struct
    const char *ca_config_file;
    bool mimeOutput;
    IVAS_ENC_COMPLEXITY_LEVEL complexityLevel;
#ifdef NONBE_FIX_ISM_XOVER_BR
    bool lbr_disc_obj;
#endif
#ifdef DEBUGGING
    IVAS_ENC_FORCED_MODE forcedMode;
    const char *forcedModeFile;
@@ -431,7 +433,13 @@ int main(
            }
            break;
        case IVAS_ENC_INPUT_SBA_ISM:
            if ( ( error = IVAS_ENC_ConfigureForSBAObjects( hIvasEnc, arg.inputFs, totalBitrate, bandwidth, arg.dtxConfig, arg.inputFormatConfig.sba_ism.numObjects, arg.inputFormatConfig.sba_ism.order, arg.inputFormatConfig.sba_ism.isPlanar, arg.pca ) ) != IVAS_ERR_OK )
            if ( ( error = IVAS_ENC_ConfigureForSBAObjects( hIvasEnc, arg.inputFs, totalBitrate, bandwidth, arg.dtxConfig, arg.inputFormatConfig.sba_ism.numObjects, arg.inputFormatConfig.sba_ism.order, arg.inputFormatConfig.sba_ism.isPlanar, arg.pca 
#ifdef NONBE_FIX_ISM_XOVER_BR
				,
				arg.lbr_disc_obj
#endif
			
			) ) != IVAS_ERR_OK )
            {
                fprintf( stderr, "\nIVAS_ENC_ConfigureForSBAObjects failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) );
                exit( -1 );
@@ -1183,6 +1191,14 @@ static bool parseCmdlIVAS_enc(
            }
        }

#ifdef NONBE_FIX_ISM_XOVER_BR
        else if ( strcmp( argv_to_upper, "-LBR_DISC_OBJ" ) )
		{
            arg->lbr_disc_obj = true;
			fprintf( stdout, "Encoding objects separately\n" );
			++i;
        }
#endif
        /*-----------------------------------------------------------------*
		* MIME output file format
        *-----------------------------------------------------------------*/
+4 −2
Original line number Diff line number Diff line
@@ -3018,7 +3018,8 @@ void ivas_mct_core_enc(
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
#ifdef NONBE_FIX_ISM_XOVER_BR
    ,
    const int16_t nchan_ism                                     /* i  : number of input ISM's           */
    const int16_t nchan_ism,                                    /* i  : number of input ISM's           */
    const int16_t lbr_disc_obj                                  /* i : flag to enable discrete objects ats bitrates < 256 kbps */
#endif
);

@@ -5626,7 +5627,8 @@ void ivas_osba_data_close(
#ifdef NONBE_FIX_ISM_XOVER_BR
int16_t ivas_osba_ism_mode_select(
    const int32_t ivas_total_brate,                             /* i  : IVAS total bitrate      */
    const int16_t nchan_ism                                     /* i  : number of input ISM's   */
    const int16_t nchan_ism,                                    /* i  : number of input ISM's   */
    const int16_t lbr_disc_obj                                  /* i  : flag to enable discrete objects at BRs lower than 256 kbps */
);
#endif

+1 −1
Original line number Diff line number Diff line
@@ -675,7 +675,7 @@ ivas_error ivas_init_encoder(
        st_ivas->ism_mode = ISM_MODE_NONE;

#ifdef NONBE_FIX_ISM_XOVER_BR
        if ( ivas_osba_ism_mode_select( ivas_total_brate, st_ivas->hEncoderConfig->nchan_ism ) )
        if ( ivas_osba_ism_mode_select( ivas_total_brate, st_ivas->hEncoderConfig->nchan_ism, st_ivas->hEncoderConfig->lbr_disc_obj ) )
#else
        if ( ivas_total_brate >= IVAS_256k )
#endif
+3 −2
Original line number Diff line number Diff line
@@ -193,7 +193,8 @@ void ivas_mct_core_enc(
    const int16_t sba_order              /* i  : Ambisonic (SBA) order           */
#ifdef NONBE_FIX_ISM_XOVER_BR
    ,
    const int16_t nchan_ism /* i  : number of input ISM's           */
    const int16_t nchan_ism,             /* i  : number of input ISM's           */
    const int16_t lbr_disc_obj           /* i : flag to enable discrete objects ats bitrates < 256 kbps */
#endif
)
{
@@ -502,7 +503,7 @@ void ivas_mct_core_enc(
        nAvailBits -= IVAS_FORMAT_SIGNALING_NBITS_EXTENDED;
        nAvailBits -= SBA_ORDER_BITS + SBA_PLANAR_BITS;
#ifdef NONBE_FIX_ISM_XOVER_BR
        if ( ivas_format == SBA_ISM_FORMAT && ( ivas_osba_ism_mode_select( ivas_total_brate, nchan_ism ) || ivas_total_brate < IVAS_24k4 ) )
        if ( ivas_format == SBA_ISM_FORMAT && ( ivas_osba_ism_mode_select( ivas_total_brate, nchan_ism, lbr_disc_obj ) || ivas_total_brate < IVAS_24k4 ) )
#else
        if ( ivas_format == SBA_ISM_FORMAT && nChannels > 4 )
#endif
+2 −1
Original line number Diff line number Diff line
@@ -251,7 +251,8 @@ ivas_error ivas_mct_enc(
    ivas_mct_core_enc( ivas_format, hMCT, st_ivas->hCPE, hMCT->nchan_out_woLFE, ivas_total_brate, switch_bw, ( ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) ? (int16_t) st_ivas->hLFE->lfe_bits : 0, st_ivas->hEncoderConfig->sba_order
#ifdef NONBE_FIX_ISM_XOVER_BR
                       ,
                       st_ivas->hEncoderConfig->nchan_ism
                       st_ivas->hEncoderConfig->nchan_ism,
                       st_ivas->hEncoderConfig->lbr_disc_obj
#endif
    );

Loading