Byte-swap WAV data on big-endian targets

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6018 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2005-02-19 12:31:11 +00:00
parent 4d961f2128
commit 9828f08d9b

View file

@ -30,6 +30,7 @@ static struct plugin_api* rb;
/* Some standard functions and variables needed by Tremor */
int errno;
size_t strlen(const char *s) {
@ -92,6 +93,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
int current_section;
int eof;
static char pcmbuf[4096];
#if BYTE_ORDER == BIG_ENDIAN
int i;
char x;
#endif
file_info_struct file_info;
@ -139,6 +144,11 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
dprintf("Error decoding frame\n");
} else {
file_info.frames_decoded++;
#if BYTE_ORDER == BIG_ENDIAN
for (i=0;i<n;i+=2) {
x=pcmbuf[i]; pcmbuf[i]=pcmbuf[i+1]; pcmbuf[i+1]=x;
}
#endif
rb->write(file_info.outfile,pcmbuf,n);
file_info.current_sample+=(n/4);
}