static int h263_clone(const struct ast_format *src, struct ast_format *dst) { struct h263_attr *original = ast_format_get_attribute_data(src); struct h263_attr *attr = ast_calloc(1, sizeof(*attr)); if (!attr) { return -1; } if (original) { *attr = *original; } ast_format_set_attribute_data(dst, attr); return 0; }
static int silk_clone(const struct ast_format *src, struct ast_format *dst) { struct silk_attr *original = ast_format_get_attribute_data(src); struct silk_attr *attr = ast_malloc(sizeof(*attr)); if (!attr) { return -1; } if (original) { *attr = *original; } else { attr_init(attr); } ast_format_set_attribute_data(dst, attr); return 0; }
static int ilbc_clone(const struct ast_format *src, struct ast_format *dst) { struct ilbc_attr *original = ast_format_get_attribute_data(src); struct ilbc_attr *attr = ast_malloc(sizeof(*attr)); if (!attr) { return -1; } if (original) { *attr = *original; } else { *attr = default_ilbc_attr; } ast_format_set_attribute_data(dst, attr); return 0; }