to start only after a few seconds.
- fix osx_writer hangs
- simplified dccp code (thanks to Gerrit Renker)
+ - the compress filter works also on big endian systems (ppc)
-----------------------------------------
0.2.15 (2007-02-16) "inductive resonance"
goto out;
for (i = 0; i < padd->frame_info.samples; i++) {
short *s = (short *)outbuffer;
- fn->buf[fn->loaded++] = s[i] & 0xff;
- fn->buf[fn->loaded++] = (s[i] >> 8) & 0xff;
+ write_int16_host_endian(fn->buf + fn->loaded, s[i]);
+ fn->loaded += 2;
}
success:
ret = consumed;
OSTYPE="`$UNAMEPATH -s`"
AC_MSG_RESULT("$OSTYPE")
+AC_C_BIGENDIAN()
+
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
*/
void *(*parse_config)(int argc, char **argv);
};
+
+
+static inline void write_int16_host_endian(char *buf, int16_t val)
+{
+#ifdef WORDS_BIGENDIAN
+ *buf = val >> 8;
+ *(buf + 1) = val & 0xff;
+#else
+ *buf = val & 0xff;
+ *(buf + 1) = val >> 8;
+#endif
+}
+
+
/** \cond */
extern struct filter filters[];
#define DECLARE_EXTERN_FILTER_INIT(name) \
AACDEC_FILTER \
OGGDEC_FILTER \
{ .name = NULL } };
+
+
mad_synth_frame(&pmd->synth, &pmd->frame);
for (i = 0; i < pmd->synth.pcm.length; i++) {
- /* output format: unsigned 16 bit little endian */
signed short s = MAD_TO_SHORT(pmd->synth.pcm.samples[0][i]);
- fn->buf[fn->loaded++] = s & 0xff;
- fn->buf[fn->loaded++] = s >> 8;
+ write_int16_host_endian(fn->buf + fn->loaded, s);
+ fn->loaded += 2;
if (MAD_NCHANNELS(&pmd->frame.header) == 2) { /* stereo */
s = MAD_TO_SHORT(pmd->synth.pcm.samples[1][i]);
- fn->buf[fn->loaded++] = s & 0xff;
- fn->buf[fn->loaded++] = s >> 8;
+ write_int16_host_endian(fn->buf + fn->loaded, s);
+ fn->loaded += 2;
}
if (fn->loaded != fn->bufsize) /* output buffer not full */
continue;
/** \cond some internal constants */
#define BITS 16
+#ifdef WORDS_BIGENDIAN
+#define ENDIAN 1
+#else
#define ENDIAN 0
+#endif
#define SIGN 1
/** \endcond */
b->size = size;
}
dest = b->buffer;
- while (size--) {
- char *tmp = (char *)source;
- char c = *tmp;
- *tmp = *(tmp + 1);
- *(tmp + 1) = c;
- /* *dest++ = ((*source++) + 32768) / 65536.0; */
+ while (size--)
*dest++ = (*source++) / 32768.0;
- }
b->ptr = b->buffer;
b->remaining = b->size;
}