- libdv-endian.patch : Fix endiannnes tests to rely on the compiler instead on the precence of C library definitions This is more important for dv_types.h public header because BYTE_ORDER is only defined when USE_MISC is. - libdv-visibility.patch: Export only the public API (dv.h) private symbols are now hidden so the unprefixed ones do not name-clash with other components of the system. OBS-URL: https://build.opensuse.org/request/show/283057 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/libdv?expand=0&rev=17
72 lines
2.5 KiB
Diff
72 lines
2.5 KiB
Diff
--- 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)
|