]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Revert change to translate.c as it has caused an infinite loop to occur in circumstances.
authorMark Michelson <mmichelson@digium.com>
Fri, 17 Feb 2012 16:04:24 +0000 (16:04 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 17 Feb 2012 16:04:24 +0000 (16:04 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355721 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/translate.c

index 75ed9cf81f35227d5b9ae28cb1b156e7cdad6548..61b4a4686d83065aa83c0ba7eb053e896a00adcf 100644 (file)
@@ -517,9 +517,12 @@ static void rebuild_matrix(int samples)
                                        /* Is x->y->z a better choice than x->z?
                                         * There are three conditions for x->y->z to be a better choice than x->z
                                         * 1. if there is no step directly between x->z then x->y->z is the best and only current option.
-                                        * 2. if x->y->z results in a more optimal sample rate conversion. */
+                                        * 2. if x->y->z costs less and the sample rate conversion is no less optimal.
+                                        * 3. if x->y->z results in a more optimal sample rate conversion. */
                                        if (!tr_matrix[x][z].step) {
                                                better_choice = 1;
+                                       } else if ((newcost < tr_matrix[x][z].cost) && (new_rate_change <= tr_matrix[x][z].rate_change)) {
+                                               better_choice = 1;
                                        } else if (new_rate_change < tr_matrix[x][z].rate_change) {
                                                better_choice = 1;
                                        } else {