diff --git a/daemon/audio_player.c b/daemon/audio_player.c index e012c79b2..988c13a68 100644 --- a/daemon/audio_player.c +++ b/daemon/audio_player.c @@ -72,7 +72,7 @@ bool audio_player_setup(struct call_media *m, const rtp_payload_type *dst_pt, // TODO: shortcut this to avoid the detour of avframe -> avpacket -> avframe (all in s16) rtp_payload_type src_pt = { .payload_type = -1, - .encoding = STR_CONST("PCM-S16LE"), // XXX support flp + .encoding = STR_CONST("X-L16"), // XXX support flp .channels = dst_pt->channels, .clock_rate = clockrate, .ptime = ptime_ms, diff --git a/daemon/t38.c b/daemon/t38.c index 9811905b2..c44478637 100644 --- a/daemon/t38.c +++ b/daemon/t38.c @@ -400,7 +400,7 @@ int t38_gateway_pair(struct call_media *t38_media, struct call_media *pcm_media, tg->options = opts; tg->pcm_pt.payload_type = -1; - tg->pcm_pt.encoding = STR("PCM-S16LE"); + tg->pcm_pt.encoding = STR("X-L16"); tg->pcm_pt.encoding_with_params = tg->pcm_pt.encoding; tg->pcm_pt.clock_rate = 8000; tg->pcm_pt.channels = 1; diff --git a/lib/codeclib.c b/lib/codeclib.c index 880b0ea47..3e2dca36e 100644 --- a/lib/codeclib.c +++ b/lib/codeclib.c @@ -771,14 +771,95 @@ static struct codec_def_s __codec_defs[] = { .format_cmp = format_cmp_ignore, .codec_type = &codec_type_cn, }, + { + .rtpname = "G726-16", + .avcodec_id = AV_CODEC_ID_ADPCM_G726, + .default_clockrate = 8000, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .default_bitrate = 16000, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + .dtx_methods = { + [DTX_SILENCE] = &dtx_method_silence, + [DTX_CN] = &dtx_method_cn, + }, + }, + { + .rtpname = "G726-24", + .avcodec_id = AV_CODEC_ID_ADPCM_G726, + .default_clockrate = 8000, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .default_bitrate = 24000, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + .dtx_methods = { + [DTX_SILENCE] = &dtx_method_silence, + [DTX_CN] = &dtx_method_cn, + }, + }, + { + .rtpname = "G726-32", + .avcodec_id = AV_CODEC_ID_ADPCM_G726, + .default_clockrate = 8000, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .default_bitrate = 32000, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + .dtx_methods = { + [DTX_SILENCE] = &dtx_method_silence, + [DTX_CN] = &dtx_method_cn, + }, + }, + { + .rtpname = "G726-40", + .avcodec_id = AV_CODEC_ID_ADPCM_G726, + .default_clockrate = 8000, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .default_bitrate = 40000, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + .dtx_methods = { + [DTX_SILENCE] = &dtx_method_silence, + [DTX_CN] = &dtx_method_cn, + }, + }, + { + .rtpname = "L16", + .avcodec_id = AV_CODEC_ID_PCM_S16BE, + .default_clockrate = 44100, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .bits_per_sample = 16, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + }, + { + .rtpname = "X-L16", + .avcodec_id = AV_CODEC_ID_PCM_S16LE, + .default_clockrate = 44100, + .default_channels = 1, + .default_ptime = 20, + .minimum_ptime = 20, + .bits_per_sample = 16, + .packetizer = packetizer_passthrough, + .media_type = MT_AUDIO, + .codec_type = &codec_type_avcodec, + }, // for file reading and writing - { - .rtpname = "PCM-S16LE", - .avcodec_id = AV_CODEC_ID_PCM_S16LE, - .packetizer = packetizer_passthrough, - .media_type = MT_AUDIO, - .codec_type = &codec_type_avcodec, - }, { .rtpname = "PCM-U8", .avcodec_id = AV_CODEC_ID_PCM_U8, diff --git a/recording-daemon/output.c b/recording-daemon/output.c index 1f4b7f658..8f9843a0f 100644 --- a/recording-daemon/output.c +++ b/recording-daemon/output.c @@ -432,7 +432,7 @@ void output_init(const char *format) { str codec; if (!strcmp(format, "wav")) { - codec = STR("PCM-S16LE"); + codec = STR("X-L16"); output_file_format = "wav"; } else if (!strcmp(format, "mp3")) { diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index 33c5a6368..42fe56f78 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -84,6 +84,68 @@ sub stun_succ { +new_call; + +offer('L16 default', { codec => { transcode => ['L16/44100'] } }, < { transcode => ['L16/16000'] } }, <