Index: trunk/include/mpcdec/config_types.h.in
===================================================================
--- trunk/include/mpcdec/config_types.h.in	(revision 4)
+++ trunk/include/mpcdec/config_types.h.in	(revision 6)
Index: trunk/include/mpcdec/decoder.h
===================================================================
--- trunk/include/mpcdec/decoder.h	(revision 4)
+++ trunk/include/mpcdec/decoder.h	(revision 6)
Index: trunk/include/mpcdec/huffman.h
===================================================================
--- trunk/include/mpcdec/huffman.h	(revision 4)
+++ trunk/include/mpcdec/huffman.h	(revision 6)
Index: trunk/include/mpcdec/internal.h
===================================================================
--- trunk/include/mpcdec/internal.h	(revision 4)
+++ trunk/include/mpcdec/internal.h	(revision 6)
@@ -47,8 +47,6 @@
 static __inline
 mpc_uint32_t swap32(mpc_uint32_t val) {
-    const unsigned char* src = (const unsigned char*)&val;
-    return 
-        (mpc_uint32_t)src[0] | 
-        ((mpc_uint32_t)src[1] << 8) | ((mpc_uint32_t)src[2] << 16) | ((mpc_uint32_t)src[3] << 24);
+    return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) |
+            ((val & 0x0000ff00) <<  8) | ((val & 0x000000ff) << 24));
 }
 
Index: trunk/include/mpcdec/math.h
===================================================================
--- trunk/include/mpcdec/math.h	(revision 4)
+++ trunk/include/mpcdec/math.h	(revision 6)
Index: trunk/include/mpcdec/mpcdec.h
===================================================================
--- trunk/include/mpcdec/mpcdec.h	(revision 4)
+++ trunk/include/mpcdec/mpcdec.h	(revision 6)
@@ -101,4 +101,6 @@
 mpc_bool_t mpc_decoder_initialize(mpc_decoder *d, mpc_streaminfo *si);
 
+void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si);
+
 /// Sets decoder sample scaling factor.  All decoded samples will be multiplied
 /// by this factor.
@@ -120,4 +122,10 @@
     mpc_uint32_t *vbr_update_bits);
 
+mpc_uint32_t mpc_decoder_decode_frame(
+    mpc_decoder *d,
+    mpc_uint32_t *in_buffer,
+    mpc_uint32_t in_len,
+    MPC_SAMPLE_FORMAT *out_buffer);
+
 /// Seeks to the specified sample in the source stream.
 mpc_bool_t mpc_decoder_seek_sample(mpc_decoder *d, mpc_int64_t destsample);
Index: trunk/include/mpcdec/reader.h
===================================================================
--- trunk/include/mpcdec/reader.h	(revision 4)
+++ trunk/include/mpcdec/reader.h	(revision 6)
Index: trunk/include/mpcdec/requant.h
===================================================================
--- trunk/include/mpcdec/requant.h	(revision 4)
+++ trunk/include/mpcdec/requant.h	(revision 6)
Index: trunk/include/mpcdec/streaminfo.h
===================================================================
--- trunk/include/mpcdec/streaminfo.h	(revision 4)
+++ trunk/include/mpcdec/streaminfo.h	(revision 6)
