Fix for FS-9313

This commit is contained in:
Christian Hoene 2016-06-30 14:04:25 +02:00
parent 1448ada505
commit cf6107963c
1 changed files with 7 additions and 4 deletions

View File

@ -244,11 +244,14 @@ static switch_status_t switch_opus_fmtp_parse(const char *fmtp, switch_codec_fmt
if (!strcasecmp(data, "stereo")) {
codec_settings->stereo = atoi(arg);
codec_fmtp->stereo = codec_settings->stereo;
if(codec_settings->stereo)
codec_fmtp->stereo = 1;
}
if (!strcasecmp(data, "sprop-stereo")) {
codec_settings->sprop_stereo = atoi(arg);
if(codec_settings->sprop_stereo)
codec_fmtp->stereo = 1;
}
if (!strcasecmp(data, "maxaveragebitrate")) {
@ -629,7 +632,7 @@ static switch_status_t switch_opus_init(switch_codec_t *codec, switch_codec_flag
}
}
context->decoder_object = opus_decoder_create(dec_samplerate, (!context->codec_settings.sprop_stereo ? codec->implementation->number_of_channels : 2), &err);
context->decoder_object = opus_decoder_create(dec_samplerate, codec->implementation->number_of_channels, &err);
switch_set_flag(codec, SWITCH_CODEC_FLAG_HAS_PLC);
@ -727,7 +730,7 @@ static switch_status_t switch_opus_decode(switch_codec_t *codec,
return SWITCH_STATUS_FALSE;
}
frame_samples = *decoded_data_len / 2 / (!context->codec_settings.sprop_stereo ? codec->implementation->number_of_channels : 2);
frame_samples = *decoded_data_len / 2 / codec->implementation->number_of_channels);
frame_size = frame_samples - (frame_samples % (codec->implementation->actual_samples_per_second / 400));
if (*flag & SFF_PLC) {
@ -828,7 +831,7 @@ static switch_status_t switch_opus_decode(switch_codec_t *codec,
return SWITCH_STATUS_GENERR;
}
*decoded_data_len = samples * 2 * (!context->codec_settings.sprop_stereo ? codec->implementation->number_of_channels : 2);
*decoded_data_len = samples * 2 * codec->implementation->number_of_channels;
return SWITCH_STATUS_SUCCESS;
}