diff --git a/main/format_cap.c b/main/format_cap.c index 1725e386288b91bfd034e8afe05aaceddd013e04..4739efa0a7296cddd1450709b5583ad184d88e4e 100644 --- a/main/format_cap.c +++ b/main/format_cap.c @@ -264,7 +264,10 @@ int ast_format_cap_append_by_type(struct ast_format_cap *cap, enum ast_media_typ continue; } - format = ast_format_create(codec); + format = ast_format_cache_get(codec->name); + if (!format || (codec != ast_format_get_codec(format))) { + format = ast_format_create(codec); + } ao2_ref(codec, -1); if (!format) {