--- codecs/codec_opus_open_source.c 2017-10-09 13:57:20.000000000 +0200 +++ codecs/codec_opus_open_source.c (working copy) @@ -132,15 +132,12 @@ static int opus_encoder_construct(struct - if (sampling_rate <= 8000 || maxplayrate <= 8000) { - status = opus_encoder_ctl(opvt->opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND)); - } else if (sampling_rate <= 12000 || maxplayrate <= 12000) { - status = opus_encoder_ctl(opvt->opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_MEDIUMBAND)); - } else if (sampling_rate <= 16000 || maxplayrate <= 16000) { - status = opus_encoder_ctl(opvt->opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_WIDEBAND)); - } else if (sampling_rate <= 24000 || maxplayrate <= 24000) { - status = opus_encoder_ctl(opvt->opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_SUPERWIDEBAND)); - } /* else we use the default: OPUS_BANDWIDTH_FULLBAND */ - - if (0 < bitrate && bitrate != 510000) { - status = opus_encoder_ctl(opvt->opus, OPUS_SET_BITRATE(bitrate)); - } /* else we use the default: OPUS_AUTO */ +#define MODE_SILK_ONLY 1000 +#define MODE_HYBRID 1001 +#define MODE_CELT_ONLY 1002 +#define OPUS_SET_FORCE_MODE_REQUEST 11002 +#define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x) + + status = opus_encoder_ctl(opvt->opus, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_WIDEBAND)); + status = opus_encoder_ctl(opvt->opus, OPUS_SET_LSB_DEPTH(16)); + status = opus_encoder_ctl(opvt->opus, OPUS_SET_FORCE_MODE(MODE_SILK_ONLY)); + status = opus_encoder_ctl(opvt->opus, OPUS_SET_VBR(vbr)); @@ -808,12 +805,4 @@ static int unload_module(void) - res = ast_unregister_translator(&opustolin); - res |= ast_unregister_translator(&lintoopus); - res |= ast_unregister_translator(&opustolin12); - res |= ast_unregister_translator(&lin12toopus); - res |= ast_unregister_translator(&opustolin16); + res = ast_unregister_translator(&opustolin16); res |= ast_unregister_translator(&lin16toopus); - res |= ast_unregister_translator(&opustolin24); - res |= ast_unregister_translator(&lin24toopus); - res |= ast_unregister_translator(&opustolin48); - res |= ast_unregister_translator(&lin48toopus); @@ -832,12 +821,4 @@ static int load_module(void) - res = ast_register_translator(&opustolin); - res |= ast_register_translator(&lintoopus); - res |= ast_register_translator(&opustolin12); - res |= ast_register_translator(&lin12toopus); - res |= ast_register_translator(&opustolin16); + res = ast_register_translator(&opustolin16); res |= ast_register_translator(&lin16toopus); - res |= ast_register_translator(&opustolin24); - res |= ast_register_translator(&lin24toopus); - res |= ast_register_translator(&opustolin48); - res |= ast_register_translator(&lin48toopus);