volsung@asu.edu
2000-Aug-12 20:53 UTC
[vorbis-dev] libao patch: Minor clean up / Byte-order proposal
Here is a patch to fix the compiler warnings I mentioned earlier. I've removed the byte-order changes that don't make sense. (Thanks Michael for pointing out the error!) As for the byte-order changes, since some output modules don't have the option to set the sample byte-order, I would like to standardize libao and ogg123 on native byte-order. Will this break the ao_wav.c patches you just submitted, Michael? If there aren't any objections, I'll send the patch to fix the byte-order problem on Monday. --- Stan Seibert Index: vorbis-tools/libao/ao_alsa.c ==================================================================RCS file: /usr/local/cvsroot/vorbis/vorbis-tools/libao/ao_alsa.c,v retrieving revision 1.1 diff -u -r1.1 ao_alsa.c --- vorbis-tools/libao/ao_alsa.c 2000/07/22 01:57:05 1.1 +++ vorbis-tools/libao/ao_alsa.c 2000/08/13 00:30:01 @@ -38,7 +38,7 @@ typedef struct ao_alsa_internal_s { snd_pcm_t *pcm_handle; - void *buf; + char *buf; int buf_size; int buf_end; int card; @@ -191,9 +191,9 @@ ao_alsa_play (ao_internal_t *state, void* output_samples, uint_32 num_bytes) { ao_alsa_internal_t *s = (ao_alsa_internal_t *) state; - snd_pcm_t *pcm_handle = s->pcm_handle; int packed = 0; int copy_len; + char *samples = (char *) output_samples; while (packed < num_bytes) { @@ -203,9 +203,7 @@ else copy_len = s->buf_size-s->buf_end; - memcpy(s->buf + s->buf_end, - output_samples + packed, - copy_len); + memcpy(s->buf + s->buf_end, samples + packed, copy_len); packed += copy_len; s->buf_end += copy_len; Index: vorbis-tools/libao/ao_null.c ==================================================================RCS file: /usr/local/cvsroot/vorbis/vorbis-tools/libao/ao_null.c,v retrieving revision 1.1 diff -u -r1.1 ao_null.c --- vorbis-tools/libao/ao_null.c 2000/07/22 01:57:05 1.1 +++ vorbis-tools/libao/ao_null.c 2000/08/13 00:30:01 @@ -59,7 +59,7 @@ static void ao_null_close (ao_internal_t *state) { - fprintf(stderr, "ao_null: %d bytes sent to null device.\n", + fprintf(stderr, "ao_null: %ld bytes sent to null device.\n", ((ao_null_internal_t *) state)->byte_counter); } Index: vorbis-tools/libao/audio_out.c ==================================================================RCS file: /usr/local/cvsroot/vorbis/vorbis-tools/libao/audio_out.c,v retrieving revision 1.1 diff -u -r1.1 audio_out.c --- vorbis-tools/libao/audio_out.c 2000/07/22 01:57:05 1.1 +++ vorbis-tools/libao/audio_out.c 2000/08/13 00:30:01 @@ -109,10 +109,6 @@ -/* --- Device Table --- */ - - - /* --- Driver Functions --- */ /* This should have been set by the Makefile */ @@ -169,7 +165,6 @@ ao_functions_t *funcs; ao_internal_t *state; ao_device_t *device; - int dev_id; if (ao_check_driver_id(driver_id)) { @@ -209,37 +204,28 @@ char *copy; char *value_ptr; char *colon; - ao_option_t *op; - int fail = 0; - - copy = strdup(op_str); - - colon = strchr(copy, ':'); - if (colon == NULL) - fail = 1; - else - { - value_ptr = colon + 1; - *colon = 0x00; // Null terminate the key part - - // Allocate the option structure - op = malloc(sizeof(ao_option_t)); - if (op == NULL) - fail = 1; - else - { - op->key = strdup(copy); - op->value = strdup(value_ptr); - op->next = NULL; - } - } - - free(copy); - - if (fail) - return NULL; - else - return op; + ao_option_t *op = NULL; + + copy = strdup(op_str); + + colon = strchr(copy, ':'); + if (colon != NULL) + { + value_ptr = colon + 1; + *colon = 0x00; // Null terminate the key part + + // Allocate the option structure + op = malloc(sizeof(ao_option_t)); + if (op != NULL) + { + op->key = strdup(copy); + op->value = strdup(value_ptr); + op->next = NULL; + } + } + + free(copy); + return op; } --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/
Michael Smith
2000-Aug-12 22:54 UTC
[vorbis-dev] libao patch: Minor clean up / Byte-order proposal
At 08:53 PM 8/12/00 -0700, you wrote:>Here is a patch to fix the compiler warnings I mentioned earlier. I've >removed the byte-order changes that don't make sense. (Thanks Michael for >pointing out the error!) > >As for the byte-order changes, since some output modules don't have theoption>to set the sample byte-order, I would like to standardize libao and ogg123 on >native byte-order. Will this break the ao_wav.c patches you just submitted, >Michael?This will break the wav output (but not have any effect on the changes I made recently - that was just a rewrite of the header code) - wav files are little endian, always. Either the data should be sent little endian, or the wav output should be changed to convert to little endian. I'm not sure what the right way to go here is - have everything sent to libao host-endian, then converted as needed? Or should we have the application call a libao function to find out what endianness it should be producing? There are probably other solutions that I haven't thought of. Michael --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/