FS-12008: special case G722 - fix rate passed to switch_core_codec_init()
This commit is contained in:
parent
a4c5802372
commit
797216fcc0
|
@ -614,14 +614,18 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_reset(switch_codec_t *codec)
|
||||||
SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec,
|
SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec,
|
||||||
const switch_codec_settings_t *codec_settings, switch_memory_pool_t *pool)
|
const switch_codec_settings_t *codec_settings, switch_memory_pool_t *pool)
|
||||||
{
|
{
|
||||||
|
uint32_t codec_rate;
|
||||||
switch_assert(codec != NULL);
|
switch_assert(codec != NULL);
|
||||||
switch_assert(new_codec != NULL);
|
switch_assert(new_codec != NULL);
|
||||||
|
|
||||||
|
codec_rate = !strcasecmp(codec->implementation->iananame, "g722")
|
||||||
|
? codec->implementation->samples_per_second : codec->implementation->actual_samples_per_second;
|
||||||
|
|
||||||
return switch_core_codec_init(new_codec,
|
return switch_core_codec_init(new_codec,
|
||||||
codec->implementation->iananame,
|
codec->implementation->iananame,
|
||||||
codec->implementation->modname,
|
codec->implementation->modname,
|
||||||
codec->fmtp_in,
|
codec->fmtp_in,
|
||||||
codec->implementation->actual_samples_per_second,
|
codec_rate,
|
||||||
codec->implementation->microseconds_per_packet / 1000,
|
codec->implementation->microseconds_per_packet / 1000,
|
||||||
codec->implementation->number_of_channels,
|
codec->implementation->number_of_channels,
|
||||||
codec->flags,
|
codec->flags,
|
||||||
|
|
|
@ -8,6 +8,9 @@
|
||||||
<load module="mod_console"/>
|
<load module="mod_console"/>
|
||||||
<load module="mod_loopback"/>
|
<load module="mod_loopback"/>
|
||||||
<load module="mod_opus"/>
|
<load module="mod_opus"/>
|
||||||
|
<load module="mod_spandsp"/>
|
||||||
|
<load module="mod_amr"/>
|
||||||
|
<load module="mod_amrwb"/>
|
||||||
</modules>
|
</modules>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ FST_CORE_BEGIN("./conf")
|
||||||
FST_SETUP_BEGIN()
|
FST_SETUP_BEGIN()
|
||||||
{
|
{
|
||||||
fst_requires_module("mod_opus");
|
fst_requires_module("mod_opus");
|
||||||
|
fst_requires_module("mod_spandsp");
|
||||||
}
|
}
|
||||||
FST_SETUP_END()
|
FST_SETUP_END()
|
||||||
|
|
||||||
|
@ -101,6 +102,20 @@ FST_CORE_BEGIN("./conf")
|
||||||
switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL);
|
switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL);
|
||||||
fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second);
|
fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second);
|
||||||
fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second);
|
fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second);
|
||||||
|
|
||||||
|
status = switch_core_codec_init(&orig_codec,
|
||||||
|
"G722",
|
||||||
|
"mod_spandsp",
|
||||||
|
NULL,
|
||||||
|
8000,
|
||||||
|
20,
|
||||||
|
1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
|
||||||
|
&codec_settings, fst_pool);
|
||||||
|
fst_check(status == SWITCH_STATUS_SUCCESS);
|
||||||
|
|
||||||
|
switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL);
|
||||||
|
fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second);
|
||||||
|
fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second);
|
||||||
|
|
||||||
}
|
}
|
||||||
FST_TEST_END()
|
FST_TEST_END()
|
||||||
|
|
Loading…
Reference in New Issue