Update support for SILK format.

This commit adds scaffolding in order to support the SILK audio format
on calls. Roughly, this is what is added:

* Cached silk formats. One for each possible sample rate.
* ast_codec structures for each possible sample rate.
* RTP payload mappings for "SILK".

In addition, this change overhauls the res_format_attr_silk file in the
following ways:

* The "samplerate" attribute is scrapped. That's native to the format.
* There are far more checks to ensure that attributes have been
  allocated before attempting to reference them.
* We do not SDP fmtp lines for attributes set to 0.

These changes make way to be able to install a codec_silk module and
have it actually work. It also should allow for passthrough silk calls
in Asterisk.

Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e
This commit is contained in:
Mark Michelson
2016-06-30 15:58:53 -05:00
parent 3cf33dd4e7
commit 273052f404
5 changed files with 134 additions and 31 deletions

View File

@@ -2690,6 +2690,11 @@ int ast_rtp_engine_init(void)
/* Opus and VP8 */
set_next_mime_type(ast_format_opus, 0, "audio", "opus", 48000);
set_next_mime_type(ast_format_vp8, 0, "video", "VP8", 90000);
/* DA SILK */
set_next_mime_type(ast_format_silk8, 0, "audio", "silk", 8000);
set_next_mime_type(ast_format_silk12, 0, "audio", "silk", 12000);
set_next_mime_type(ast_format_silk16, 0, "audio", "silk", 16000);
set_next_mime_type(ast_format_silk24, 0, "audio", "silk", 24000);
/* Define the static rtp payload mappings */
add_static_payload(0, ast_format_ulaw, 0);
@@ -2743,6 +2748,11 @@ int ast_rtp_engine_init(void)
add_static_payload(100, ast_format_vp8, 0);
add_static_payload(107, ast_format_opus, 0);
add_static_payload(108, ast_format_silk8, 0);
add_static_payload(109, ast_format_silk12, 0);
add_static_payload(113, ast_format_silk16, 0);
add_static_payload(114, ast_format_silk24, 0);
return 0;
}