File libdv-endian.patch of Package libdv
--- libdv-1.0.0.orig/libdv/bitstream.h
+++ libdv-1.0.0/libdv/bitstream.h
@@ -42,16 +42,6 @@
extern "C" {
#endif
-//My new and improved vego-matic endian swapping routine
-//(stolen from the kernel)
-#if (BYTE_ORDER == BIG_ENDIAN)
-#define swab32(x) (x)
-#else // LITTLE_ENDIAN
-# define swab32(x)\
-((((uint8_t*)&x)[0] << 24) | (((uint8_t*)&x)[1] << 16) | \
- (((uint8_t*)&x)[2] << 8) | (((uint8_t*)&x)[3]))
-#endif // LITTLE_ENDIAN
-
bitstream_t *_dv_bitstream_init();
void _dv_bitstream_set_fill_func(bitstream_t *bs,uint32_t (*next_function) (uint8_t **,void *),void *priv);
void _dv_bitstream_next_buffer(bitstream_t * bs);
@@ -66,7 +56,7 @@ static void bitstream_next_word(bitstrea
if ((bs->buflen - bs->bufoffset) >=4 ) {
bs->next_word = *(uint32_t *)(bs->buf + bs->bufoffset);
- bs->next_word = swab32(bs->next_word);
+ bs->next_word = htobe32(bs->next_word);
bs->next_bits = 32;
// fprintf(stderr,"next_word is %08x at %d\n",bs->next_word,bs->bufoffset);
bs->bufoffset += 4;
@@ -195,10 +185,10 @@ static inline void bitstream_flush_large
static inline void bitstream_seek_set(bitstream_t *bs, uint32_t offset) {
bs->bufoffset = ((offset & (~0x1f)) >> 5) << 2;
bs->current_word = *(uint32_t *)(bs->buf + bs->bufoffset);
- bs->current_word = swab32(bs->current_word);
+ bs->current_word = htobe32(bs->current_word);
bs->bufoffset += 4;
bs->next_word = *(uint32_t *)(bs->buf + bs->bufoffset);
- bs->next_word = swab32(bs->next_word);
+ bs->next_word = htobe32(bs->next_word);
bs->bufoffset += 4;
bs->bits_left = 32 - (offset & 0x1f);
bs->next_bits = 32;
--- libdv-1.0.0.orig/libdv/YUY2.c
+++ libdv-1.0.0/libdv/YUY2.c
@@ -275,7 +275,7 @@ dv_mb420_YUY2 (dv_macroblock_t *mb, uint
cb_frame++;
cr_frame++;
-#if (BYTE_ORDER == LITTLE_ENDIAN)
+#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
*pwyuv0++ = ylut[CLAMP(*(Ytmp0 + 0), -256, 511)];
*pwyuv0++ = cb;
*pwyuv0++ = ylut[CLAMP(*(Ytmp0 + 1), -256, 511)];
--- libdv-1.0.0.orig/libdv/dv_types.h
+++ libdv-1.0.0/libdv/dv_types.h
@@ -253,11 +253,13 @@ typedef struct {
counter examples. If we do find out there is one, we'll have to
fix it... */
-#if (BYTE_ORDER == LITTLE_ENDIAN)
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define LITTLE_ENDIAN_BITFIELD
-#else
+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define BIG_ENDIAN_BITFIELD
-#endif /* (BYTE_ORDER == LITTLE_ENDIAN) */
+#else
+#error "cannot determine endianness"
+#endif
typedef struct {
#if defined(LITTLE_ENDIAN_BITFIELD)