diff --git a/apps/decoder.c b/apps/decoder.c index 22dc235fff728ec606d58391b20e72d04e625efc..616b36e37e768c8b712013a48ec6dab492622b43 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -109,6 +109,9 @@ typedef struct float no_diegetic_pan; bool renderConfigEnabled; char *renderConfigFilename; +#ifdef COMPLEXITY_LEVEL_INDICATION + IVAS_DEC_COMPLEXITY_LEVEL complexityLevel; +#endif #ifdef DEBUGGING IVAS_DEC_FORCED_REND_MODE forcedRendMode; @@ -757,6 +760,9 @@ static bool parseCmdlIVAS_dec( arg->quietModeEnabled = false; arg->delayCompensationEnabled = true; arg->voipMode = false; +#ifdef COMPLEXITY_LEVEL_INDICATION + arg->complexityLevel = IVAS_DEC_COMPLEXITY_LEVEL_THREE; +#endif arg->enableHeadRotation = false; arg->headrotTrajFileName = NULL; @@ -1051,6 +1057,25 @@ static bool parseCmdlIVAS_dec( } i++; } +#ifdef COMPLEXITY_LEVEL_INDICATION + else if ( strcmp( argv_to_upper, "-LEVEL" ) == 0 ) + { + int16_t level; + + ++i; + level = (int16_t) atoi( argv[i++] ); + if ( level < IVAS_DEC_COMPLEXITY_LEVEL_ONE || level > IVAS_DEC_COMPLEXITY_LEVEL_THREE ) + { + fprintf( stdout, "Invalid complexity level specified.\n" ); + usage_dec(); + return false; + } + else if ( level == IVAS_DEC_COMPLEXITY_LEVEL_ONE || level == IVAS_DEC_COMPLEXITY_LEVEL_TWO ) + { + fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); + } + } +#endif /*-----------------------------------------------------------------* * Option not recognized @@ -1202,6 +1227,10 @@ static void usage_dec( void ) fprintf( stdout, " containing FEC pattern (short values of 0 (good) or 1 (bad))\n" ); fprintf( stdout, " default is OFF, if this option is not used\n" ); fprintf( stdout, "-force R : Force specific binaural rendering mode, R = (TDREND, CLDFBREND),\n" ); +#ifdef COMPLEXITY_LEVEL_INDICATION + fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); + fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); +#endif #endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK diff --git a/apps/encoder.c b/apps/encoder.c index 7f6d6baa30cd993bb1ab57849fcdbc78b027b1ec..a23970a27071d0604fba171cc5c6345c93793c03 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -111,6 +111,9 @@ typedef struct IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig; const char *ca_config_file; bool mimeOutput; +#ifdef COMPLEXITY_LEVEL_INDICATION + IVAS_ENC_COMPLEXITY_LEVEL complexityLevel; +#endif #ifdef DEBUGGING IVAS_ENC_FORCED_MODE forcedMode; @@ -878,6 +881,9 @@ static void initArgStruct( EncArguments *arg ) arg->ca_config_file = NULL; arg->mimeOutput = false; arg->ism_extended_metadata = false; +#ifdef COMPLEXITY_LEVEL_INDICATION + arg->complexityLevel = IVAS_ENC_COMPLEXITY_LEVEL_THREE; +#endif #ifdef DEBUGGING arg->forcedMode = IVAS_ENC_FORCE_UNFORCED; @@ -1190,6 +1196,32 @@ static bool parseCmdlIVAS_enc( ++i; } + +#ifdef COMPLEXITY_LEVEL_INDICATION + /*-----------------------------------------------------------------* + * Complexity Level + *-----------------------------------------------------------------*/ + + /* actual parsing of level will be implemented after characterization */ + else if ( strcmp( argv_to_upper, "-LEVEL" ) == 0 ) + { + int16_t level; + + ++i; + level = (int16_t) atoi( argv[i++] ); + if ( level < IVAS_ENC_COMPLEXITY_LEVEL_ONE || level > IVAS_ENC_COMPLEXITY_LEVEL_THREE ) + { + fprintf( stdout, "Invalid complexity level specified.\n" ); + usage_enc(); + return false; + } + else if ( level == IVAS_ENC_COMPLEXITY_LEVEL_ONE || level == IVAS_ENC_COMPLEXITY_LEVEL_TWO ) + { + fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); + } + } +#endif + /*-----------------------------------------------------------------* * IVAS Formats *-----------------------------------------------------------------*/ @@ -1697,6 +1729,8 @@ static void usage_enc( void ) fprintf( stdout, " default output bitstream file format is G.192\n" ); fprintf( stdout, "-bypass mode : SBA PCA by-pass, mode = (1, 2), 1 = PCA off, 2 = signal adaptive, default is 1\n" ); + fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); + fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); #ifdef DEBUGGING fprintf( stdout, "-force T : Force specific mode, T = (speech, music, ACELP, GSC, TCX, HQ),\n" ); fprintf( stdout, " alternatively, T can be a text file where each line contains \"nb_frames T\"\n" ); diff --git a/lib_com/options.h b/lib_com/options.h index 62717d9ad7558429dbb9be162d2fa9d07794bc47..e68aca0ef1b9d22f274a6307a416732398b1f9bd 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -214,6 +214,8 @@ //#define HODIRAC_READ_PARAMS #endif +#define COMPLEXITY_LEVEL_INDICATION + /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index 17af564295cca7d3e47b3affc9f5df7ec90d6fa4..f220184ca15496960251a936468eb5c6eb960ce2 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -77,6 +77,15 @@ typedef enum IVAS_DEC_INPUT_FORMAT_RTPDUMP_HF = 4, /* RTP payload: only Header-Full format without zero padding for size collision avoidance */ } IVAS_DEC_INPUT_FORMAT; +#ifdef COMPLEXITY_LEVEL_INDICATION +typedef enum _IVAS_DEC_COMPLEXITY_LEVEL +{ + IVAS_DEC_COMPLEXITY_LEVEL_ONE = 1, + IVAS_DEC_COMPLEXITY_LEVEL_TWO = 2, + IVAS_DEC_COMPLEXITY_LEVEL_THREE = 3 +} IVAS_DEC_COMPLEXITY_LEVEL; +#endif + #ifdef DEBUGGING typedef enum _IVAS_DEC_FORCED_REND_MODE { diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 349c41ebef721a1b65be35235e7a17e63a1de4e4..3a6a619f7368b2db1398edd65f3d5cb4f12d3a57 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -94,6 +94,15 @@ typedef enum _IVAS_ENC_MASA_VARIANT IVAS_ENC_MASA_UNDEFINED = 0xffff } IVAS_ENC_MASA_VARIANT; +#ifdef COMPLEXITY_LEVEL_INDICATION +typedef enum _IVAS_ENC_COMPLEXITY_LEVEL +{ + IVAS_ENC_COMPLEXITY_LEVEL_ONE = 1, + IVAS_ENC_COMPLEXITY_LEVEL_TWO = 2, + IVAS_ENC_COMPLEXITY_LEVEL_THREE = 3 +} IVAS_ENC_COMPLEXITY_LEVEL; +#endif + #ifdef DEBUGGING typedef enum _IVAS_ENC_STEREO_MODE {