changeset 24080:97a8394bec58

Replace dvdread bswap.h by something more sane for us.
author reimar
date Sun, 19 Aug 2007 09:07:56 +0000
parents f40ff9321699
children b3bc18ea5878
files dvdread/bswap.h dvdread/libdvdread_changes.diff
diffstat 2 files changed, 9 insertions(+), 211 deletions(-) [+]
line wrap: on
line diff
--- a/dvdread/bswap.h	Sun Aug 19 08:50:58 2007 +0000
+++ b/dvdread/bswap.h	Sun Aug 19 09:07:56 2007 +0000
@@ -1,168 +1,16 @@
-/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
-#ifndef BSWAP_H_INCLUDED
-#define BSWAP_H_INCLUDED
+#ifndef DVDREAD_BSWAP_H
+#define DVDREAD_BSWAP_H
+
+#include "../libavutil/bswap.h"
 
-/*
- * Copyright (C) 2000, 2001 Billy Biggs <vektor@dumbterm.net>,
- *                          Håkan Hjort <d95hjort@dtek.chalmers.se>
- *
- * Modified for use with MPlayer, changes contained in libdvdread_changes.diff.
- * detailed changelog at http://svn.mplayerhq.hu/mplayer/trunk/
- * $Id$
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#if defined(WORDS_BIGENDIAN)
-/* All bigendian systems are fine, just ignore the swaps. */  
-#define B2N_16(x) (void)(x)
-#define B2N_32(x) (void)(x)
-#define B2N_64(x) (void)(x)
-
-#else 
-
-/* For __FreeBSD_version */
-#if defined(HAVE_SYS_PARAM_H)
-#include <sys/param.h>
-#endif
-
-#if defined(__linux__)
-#include <byteswap.h>
+#ifdef WORDS_BIGENDIAN
+#define B2N_16(x)
+#define B2N_32(x)
+#define B2N_64(x)
+#else
 #define B2N_16(x) x = bswap_16(x)
 #define B2N_32(x) x = bswap_32(x)
 #define B2N_64(x) x = bswap_64(x)
-
-#elif defined(__NetBSD__)
-#include <sys/endian.h>
-#define B2N_16(x) BE16TOH(x)
-#define B2N_32(x) BE32TOH(x)
-#define B2N_64(x) BE64TOH(x)
-
-#elif defined(__OpenBSD__)
-#include <sys/endian.h>
-#define B2N_16(x) x = swap16(x)
-#define B2N_32(x) x = swap32(x)
-#define B2N_64(x) x = swap64(x)
-
-#elif defined(__FreeBSD__) && __FreeBSD_version >= 470000
-#include <sys/endian.h>
-#define B2N_16(x) x = be16toh(x)
-#define B2N_32(x) x = be32toh(x)
-#if __FreeBSD_version >= 500000
-#define B2N_64(x) x = be64toh(x)
-#else
-#define B2N_64(x)                               \
-  x = ((((x) & 0xff00000000000000) >> 56) |     \
-       (((x) & 0x00ff000000000000) >> 40) |     \
-       (((x) & 0x0000ff0000000000) >> 24) |     \
-       (((x) & 0x000000ff00000000) >>  8) |     \
-       (((x) & 0x00000000ff000000) <<  8) |     \
-       (((x) & 0x0000000000ff0000) << 24) |     \
-       (((x) & 0x000000000000ff00) << 40) |     \
-       (((x) & 0x00000000000000ff) << 56))
-#endif /* _FreeBSD_version >= 500000 */
-
-#elif defined(__DragonFly__)
-#include <sys/endian.h>
-#define B2N_16(x) x = be16toh(x)
-#define B2N_32(x) x = be32toh(x)
-#define B2N_64(x) x = be64toh(x)
-
-
-#elif defined(__APPLE__) || defined(__DARWIN__)
-#include <libkern/OSByteOrder.h>
-#define B2N_16(x) x = OSSwapBigToHostConstInt16(x)
-#define B2N_32(x) x = OSSwapBigToHostConstInt32(x)
-#define B2N_64(x) x = OSSwapBigToHostConstInt64(x)
-
-#elif defined(ARCH_X86)
-inline static unsigned short bswap_16(unsigned short x)
-{
-  __asm("xchgb %b0,%h0" :
-        "=q" (x)        :
-        "0" (x));
-    return x;
-}
-#define B2N_16(x) x = bswap_16(x)
-
-inline static unsigned int bswap_32(unsigned int x)
-{
- __asm(
-#if __CPU__ != 386
-      "bswap   %0":
-      "=r" (x)     :
-#else
-      "xchgb   %b0,%h0\n"
-      " rorl    $16,%0\n"
-      " xchgb   %b0,%h0":
-      "=q" (x)          :
-#endif
-      "0" (x));
-  return x;
-}
-#define B2N_32(x) x = bswap_32(x)
-
-inline static unsigned long long int bswap_64(unsigned long long int x)
-{
-  register union { __extension__ uint64_t __ll;
-          uint32_t __l[2]; } __x;
-  asm("xchgl    %0,%1":
-      "=r"(__x.__l[0]),"=r"(__x.__l[1]):
-      "0"(bswap_32((unsigned long)x)),"1"(bswap_32((unsigned long)(x>>32))));
-  return __x.__ll;
-}
-#define B2N_64(x) x = bswap_64(x)
-
-#else
-#if defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__BEOS__) || defined(__INTERIX) || defined(__CYGWIN__)
-/* These systems don't have swap macros */
-#else
-/* If there isn't a header provided with your system with this functionality
- * add the relevant || define( ) to the list above.
- */
-#warning "You should add endian swap macros for your system"
 #endif
 
-/* This is a slow but portable implementation, it has multiple evaluation 
- * problems so beware.
- * Old FreeBSD's and Solaris don't have <byteswap.h> or any other such 
- * functionality! 
- */
-
-#define B2N_16(x)                               \
-  x = ((((x) & 0xff00) >> 8) |                  \
-       (((x) & 0x00ff) << 8))
-#define B2N_32(x)                               \
-  x = ((((x) & 0xff000000) >> 24) |             \
-       (((x) & 0x00ff0000) >>  8) |             \
-       (((x) & 0x0000ff00) <<  8) |             \
-       (((x) & 0x000000ff) << 24))
-#define B2N_64(x)                               \
-  x = ((((x) & 0xff00000000000000) >> 56) |     \
-       (((x) & 0x00ff000000000000) >> 40) |     \
-       (((x) & 0x0000ff0000000000) >> 24) |     \
-       (((x) & 0x000000ff00000000) >>  8) |     \
-       (((x) & 0x00000000ff000000) <<  8) |     \
-       (((x) & 0x0000000000ff0000) << 24) |     \
-       (((x) & 0x000000000000ff00) << 40) |     \
-       (((x) & 0x00000000000000ff) << 56))
-
-
-
 #endif
-
-#endif /* WORDS_BIGENDIAN */
-
-#endif /* BSWAP_H_INCLUDED */
--- a/dvdread/libdvdread_changes.diff	Sun Aug 19 08:50:58 2007 +0000
+++ b/dvdread/libdvdread_changes.diff	Sun Aug 19 09:07:56 2007 +0000
@@ -1,53 +1,3 @@
---- dvdread.orig/bswap.h	2007-08-16 09:18:58.000000000 +0200
-+++ dvdread/bswap.h	2007-08-16 09:19:02.000000000 +0200
-@@ -83,8 +87,46 @@
- #define B2N_32(x) x = OSSwapBigToHostConstInt32(x)
- #define B2N_64(x) x = OSSwapBigToHostConstInt64(x)
- 
-+#elif defined(ARCH_X86)
-+inline static unsigned short bswap_16(unsigned short x)
-+{
-+  __asm("xchgb %b0,%h0" :
-+        "=q" (x)        :
-+        "0" (x));
-+    return x;
-+}
-+#define B2N_16(x) x = bswap_16(x)
-+
-+inline static unsigned int bswap_32(unsigned int x)
-+{
-+ __asm(
-+#if __CPU__ != 386
-+      "bswap   %0":
-+      "=r" (x)     :
- #else
--#if defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__BEOS__) || defined(__INTERIX)
-+      "xchgb   %b0,%h0\n"
-+      " rorl    $16,%0\n"
-+      " xchgb   %b0,%h0":
-+      "=q" (x)          :
-+#endif
-+      "0" (x));
-+  return x;
-+}
-+#define B2N_32(x) x = bswap_32(x)
-+
-+inline static unsigned long long int bswap_64(unsigned long long int x)
-+{
-+  register union { __extension__ uint64_t __ll;
-+          uint32_t __l[2]; } __x;
-+  asm("xchgl    %0,%1":
-+      "=r"(__x.__l[0]),"=r"(__x.__l[1]):
-+      "0"(bswap_32((unsigned long)x)),"1"(bswap_32((unsigned long)(x>>32))));
-+  return __x.__ll;
-+}
-+#define B2N_64(x) x = bswap_64(x)
-+
-+#else
-+#if defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__BEOS__) || defined(__INTERIX) || defined(__CYGWIN__)
- /* These systems don't have swap macros */
- #else
- /* If there isn't a header provided with your system with this functionality
 --- dvdread.orig/dvd_reader.c	2007-08-06 13:34:37.000000000 +0200
 +++ dvdread/dvd_reader.c	2007-08-06 13:35:19.000000000 +0200
 @@ -39,9 +43,11 @@