Hi,
There is a bug in the shuffle of ogg123 which was here at least until the
CVS version of 3 days ago. Here's our fix: (it seems to be not perfectly
equiprobable but at least fixes the old one which sometimes gives two
times the same song and never the other song)
-=-=--
--- vorbis-tools-1.0beta3/ogg123/ogg123.c.pix Sat Nov 4 01:23:21 2000
+++ vorbis-tools-1.0beta3/ogg123/ogg123.c Thu Dec 7 13:13:36 2000
@@ -324,12 +324,20 @@
if (param.shuffle)
{
- int i=optind, j=0;
- for (i = optind; i < argc; i++)
+ int i;
+ int nb = argc - optind;
+ int *p = alloca(sizeof(int) * nb);
+ for (i = 0; i < nb; i++) p[i] = i;
+
+ srand (time (NULL));
+ for (i = 1; i < nb; i++)
{
- srand (time (NULL));
- j = (int) ((float) (argc - optind) * rand () / (RAND_MAX + 1.0));
- param.read_file = argv[j+optind];
+ int j = i * ((float) rand() / RAND_MAX);
+ int temp = p[j]; p[j] = p[i]; p[i] = temp;
+ }
+ for (i = 0; i < nb; i++)
+ {
+ param.read_file = argv[p[i]+optind];
play_file ();
}
}
-=-=--
--
Guillaume Cottenceau - http://us.mandrakesoft.com/~gc/
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to
'vorbis-dev-request@xiph.org'
containing only the word 'unsubscribe' in the body. No subject is
needed.
Unsubscribe messages sent to the list will be ignored/filtered.
On 11 Dec 2000, Guillaume Cottenceau wrote:> > There is a bug in the shuffle of ogg123 which was here at least until the > CVS version of 3 days ago. Here's our fix: (it seems to be not perfectly > equiprobable but at least fixes the old one which sometimes gives two > times the same song and never the other song)...> + int j = i * ((float) rand() / RAND_MAX); > + int temp = p[j]; p[j] = p[i]; p[i] = temp;Actually, in that first line, I think you want "j = (i + 1) * ...". Otherwise, for example, the last song will NEVER be the last command line argument. And you may want to divide by RAND_MAX + 1, not plain RAND_MAX. - Spanky --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.