}
if (ast_format_cmp(&frame->subclass.format, &in_translate->format) == AST_FORMAT_CMP_NOT_EQUAL) {
+ struct ast_trans_pvt *new_trans;
+
+ new_trans = ast_translator_build_path(ast_format_set(&tmp_fmt, slin_id, 0), &frame->subclass.format);
+ if (!new_trans) {
+ return NULL;
+ }
+
if (in_translate->trans_pvt) {
ast_translator_free_path(in_translate->trans_pvt);
}
- if (!(in_translate->trans_pvt = ast_translator_build_path(ast_format_set(&tmp_fmt, slin_id, 0), &frame->subclass.format))) {
- return NULL;
- }
+ in_translate->trans_pvt = new_trans;
+
ast_format_copy(&in_translate->format, &frame->subclass.format);
}
if (!(new_frame = ast_translate(in_translate->trans_pvt, frame, 0))) {