-#define GST_WRITE_UINT32_LE(data, num) do { \
- _GST_PUT (data, 0, 32, 0, num); \
- _GST_PUT (data, 1, 32, 8, num); \
- _GST_PUT (data, 2, 32, 16, num); \
- _GST_PUT (data, 3, 32, 24, num); \
+#if GST_HAVE_UNALIGNED_ACCESS
+# if (G_BYTE_ORDER == G_BIG_ENDIAN)
+# define GST_WRITE_UINT32_BE(data,val) _GST_FAST_WRITE(32,data,val)
+# define GST_WRITE_UINT32_LE(data,val) _GST_FAST_WRITE_SWAP(32,data,val)
+# else
+# define GST_WRITE_UINT32_BE(data,val) _GST_FAST_WRITE_SWAP(32,data,val)
+# define GST_WRITE_UINT32_LE(data,val) _GST_FAST_WRITE(32,data,val)
+# endif
+#else
+#define GST_WRITE_UINT32_BE(data,val) do { \
+ gpointer __put_data = data; \
+ guint32 __put_val = val; \
+ _GST_PUT (__put_data, 0, 32, 24, __put_val); \
+ _GST_PUT (__put_data, 1, 32, 16, __put_val); \
+ _GST_PUT (__put_data, 2, 32, 8, __put_val); \
+ _GST_PUT (__put_data, 3, 32, 0, __put_val); \
+ } while (0)
+
+#define GST_WRITE_UINT32_LE(data,val) do { \
+ gpointer __put_data = data; \
+ guint32 __put_val = val; \
+ _GST_PUT (__put_data, 0, 32, 0, __put_val); \
+ _GST_PUT (__put_data, 1, 32, 8, __put_val); \
+ _GST_PUT (__put_data, 2, 32, 16, __put_val); \
+ _GST_PUT (__put_data, 3, 32, 24, __put_val); \