From: Pierre Ossman Date: Mon, 9 Jan 2006 11:54:49 +0000 (+0000) Subject: Make sure the data gets endianness conversion. X-Git-Tag: submit/2.0-panda/20130828.192557~2837^2~3^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a323571a4fae25602133cc87656706ada9c0112;p=profile%2Fivi%2Fpulseaudio-panda.git Make sure the data gets endianness conversion. git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/ossman@424 fefdeb5f-60dc-0310-8127-8f9354f1896f --- diff --git a/polyp/protocol-esound.c b/polyp/protocol-esound.c index 5705d3f..18ecb0a 100644 --- a/polyp/protocol-esound.c +++ b/polyp/protocol-esound.c @@ -239,11 +239,14 @@ static void* connection_write(struct connection *c, size_t length) { return (uint8_t*) c->write_data+i; } -static void format_esd2native(int format, struct pa_sample_spec *ss) { +static void format_esd2native(int format, int swap_bytes, struct pa_sample_spec *ss) { assert(ss); ss->channels = ((format & ESD_MASK_CHAN) == ESD_STEREO) ? 2 : 1; - ss->format = ((format & ESD_MASK_BITS) == ESD_BITS16) ? PA_SAMPLE_S16NE : PA_SAMPLE_U8; + if ((format & ESD_MASK_BITS) == ESD_BITS16) + ss->format = swap_bytes ? PA_SAMPLE_S16RE : PA_SAMPLE_S16NE; + else + ss->format = PA_SAMPLE_U8; } static int format_native2esd(struct pa_sample_spec *ss) { @@ -303,7 +306,7 @@ static int esd_proto_stream_play(struct connection *c, esd_proto_t request, cons rate = maybe_swap_endian_32(c->swap_byte_order, *((int*)data + 1)); ss.rate = rate; - format_esd2native(format, &ss); + format_esd2native(format, c->swap_byte_order, &ss); if (!pa_sample_spec_valid(&ss)) { pa_log(__FILE__": invalid sample specification\n"); @@ -359,7 +362,7 @@ static int esd_proto_stream_record(struct connection *c, esd_proto_t request, co rate = maybe_swap_endian_32(c->swap_byte_order, *((int*)data + 1)); ss.rate = rate; - format_esd2native(format, &ss); + format_esd2native(format, c->swap_byte_order, &ss); if (!pa_sample_spec_valid(&ss)) { pa_log(__FILE__": invalid sample specification.\n"); @@ -602,7 +605,7 @@ static int esd_proto_sample_cache(struct connection *c, esd_proto_t request, con rate = maybe_swap_endian_32(c->swap_byte_order, *((int*)data + 1)); ss.rate = rate; - format_esd2native(format, &ss); + format_esd2native(format, c->swap_byte_order, &ss); sc_length = (size_t) maybe_swap_endian_32(c->swap_byte_order, (*((int*)data + 2))); diff --git a/polyp/sample.h b/polyp/sample.h index 0494c7d..82c1461 100644 --- a/polyp/sample.h +++ b/polyp/sample.h @@ -51,11 +51,19 @@ enum pa_sample_format { #define PA_SAMPLE_S16NE PA_SAMPLE_S16BE /** 32 Bit IEEE floating point, native endian */ #define PA_SAMPLE_FLOAT32NE PA_SAMPLE_FLOAT32BE +/** Signed 16 Bit PCM reverse endian */ +#define PA_SAMPLE_S16RE PA_SAMPLE_S16LE +/** 32 Bit IEEE floating point, reverse endian */ +#define PA_SAMPLE_FLOAT32RE PA_SAMPLE_FLOAT32LE #else /** Signed 16 Bit PCM, native endian */ #define PA_SAMPLE_S16NE PA_SAMPLE_S16LE /** 32 Bit IEEE floating point, native endian */ #define PA_SAMPLE_FLOAT32NE PA_SAMPLE_FLOAT32LE +/** Signed 16 Bit PCM reverse endian */ +#define PA_SAMPLE_S16RE PA_SAMPLE_S16BE +/** 32 Bit IEEE floating point, reverse endian */ +#define PA_SAMPLE_FLOAT32RE PA_SAMPLE_FLOAT32BE #endif /** A Shortcut for PA_SAMPLE_FLOAT32NE */