libv4l: x86_64 asm fixes and hide non public symbols
authorhans@localhost.localdomain <hans@localhost.localdomain>
Tue, 26 Aug 2008 14:37:38 +0000 (16:37 +0200)
committerhans@localhost.localdomain <hans@localhost.localdomain>
Tue, 26 Aug 2008 14:37:38 +0000 (16:37 +0200)
From: Gregor Jasny <gjasny@web.de>

* Hide non public symbols (Gregor Jasny)
* Fix and enable x86_64 asm jpeg decompress helper functions (Gregor Jasny)

Priority: normal

Signed-off-by: Gregor Jasny <gjasny@web.de>
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
lib/ChangeLog
lib/include/libv4l1.h
lib/include/libv4l2.h
lib/include/libv4lconvert.h
lib/libv4l1/Makefile
lib/libv4l1/v4l1compat.c
lib/libv4l2/Makefile
lib/libv4l2/log.c
lib/libv4l2/v4l2convert.c
lib/libv4lconvert/Makefile
lib/libv4lconvert/jidctflt.c

index 47815d3..d3d4174 100644 (file)
@@ -6,6 +6,8 @@ libv4l-0.4.1
 * Add support to libv4lconvert for rotating images 90 (for Pixart 7302 cams)
   or 180 (Philips SPC200NC / Philips SPC300NC) degrees
 * Add support for Pixart custom JPEG format
+* Hide non public symbols (Gregor Jasny)
+* Fix and enable x86_64 asm jpeg decompress helper functions (Gregor Jasny)
 
 libv4l-0.4.0
 ------------
index 9036ae8..c878cc1 100644 (file)
@@ -26,9 +26,15 @@ extern "C" {
 #include <stdio.h>
 #include <unistd.h>
 
+#if __GNUC__ >= 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
 /* Point this to a FILE opened for writing when you want to log error and
    status messages to a file, when NULL errors will get send to stderr */
-extern FILE *v4l1_log_file;
+LIBV4L_PUBLIC extern FILE *v4l1_log_file;
 
 /* Just like your regular open/close/etc, except that when opening a v4l2
    capture only device, full v4l1 emulation is done including emulating the
@@ -51,14 +57,14 @@ extern FILE *v4l1_log_file;
    capture formats, like hw specific bayer compression methods).
 */
 
-int v4l1_open (const char *file, int oflag, ...);
-int v4l1_close(int fd);
-int v4l1_dup(int fd);
-int v4l1_ioctl (int fd, unsigned long int request, ...);
-ssize_t v4l1_read (int fd, void* buffer, size_t n);
-void *v4l1_mmap(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC int v4l1_open (const char *file, int oflag, ...);
+LIBV4L_PUBLIC int v4l1_close(int fd);
+LIBV4L_PUBLIC int v4l1_dup(int fd);
+LIBV4L_PUBLIC int v4l1_ioctl (int fd, unsigned long int request, ...);
+LIBV4L_PUBLIC ssize_t v4l1_read (int fd, void* buffer, size_t n);
+LIBV4L_PUBLIC void *v4l1_mmap(void *start, size_t length, int prot, int flags, int fd,
   __off64_t offset);
-int v4l1_munmap(void *_start, size_t length);
+LIBV4L_PUBLIC int v4l1_munmap(void *_start, size_t length);
 
 #ifdef __cplusplus
 }
index 63529cf..b05b57c 100644 (file)
 extern "C" {
 #endif /* __cplusplus */
 
+#if __GNUC__ >= 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
 /* Point this to a FILE opened for writing when you want to log error and
    status messages to a file, when NULL errors will get send to stderr */
-extern FILE *v4l2_log_file;
+LIBV4L_PUBLIC extern FILE *v4l2_log_file;
 
 /* Just like your regular open/close/etc, except that format conversion is
    done if necessary when capturing. That is if you (try to) set a capture
@@ -52,14 +58,14 @@ extern FILE *v4l2_log_file;
    fail.
 */
 
-int v4l2_open (const char *file, int oflag, ...);
-int v4l2_close(int fd);
-int v4l2_dup(int fd);
-int v4l2_ioctl (int fd, unsigned long int request, ...);
-ssize_t v4l2_read (int fd, void* buffer, size_t n);
-void *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC int v4l2_open (const char *file, int oflag, ...);
+LIBV4L_PUBLIC int v4l2_close(int fd);
+LIBV4L_PUBLIC int v4l2_dup(int fd);
+LIBV4L_PUBLIC int v4l2_ioctl (int fd, unsigned long int request, ...);
+LIBV4L_PUBLIC ssize_t v4l2_read (int fd, void* buffer, size_t n);
+LIBV4L_PUBLIC void *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd,
   __off64_t offset);
-int v4l2_munmap(void *_start, size_t length);
+LIBV4L_PUBLIC int v4l2_munmap(void *_start, size_t length);
 
 
 /* Misc utility functions */
@@ -70,12 +76,12 @@ int v4l2_munmap(void *_start, size_t length);
 
    Normally returns 0, even if the cid did not exist or was locked, returns
    non 0 when an other error occured. */
-int v4l2_set_control(int fd, int cid, int value);
+LIBV4L_PUBLIC int v4l2_set_control(int fd, int cid, int value);
 
 /* This function returns a value of 0 - 65535, scaled to from the actual range
    of the given v4l control id. when the cid does not exist, could not be
    accessed for some reason, or some error occured 0 is returned. */
-int v4l2_get_control(int fd, int cid);
+LIBV4L_PUBLIC int v4l2_get_control(int fd, int cid);
 
 
 /* "low level" access functions, these functions allow somewhat lower level
@@ -95,7 +101,7 @@ int v4l2_get_control(int fd, int cid);
 
    Returns fd on success, -1 if the fd is not suitable for use through libv4l2
    (note the fd is left open in this case). */
-int v4l2_fd_open(int fd, int v4l2_flags);
+LIBV4L_PUBLIC int v4l2_fd_open(int fd, int v4l2_flags);
 
 #ifdef __cplusplus
 }
index f102858..87e41ce 100644 (file)
 extern "C" {
 #endif /* __cplusplus */
 
+#if __GNUC__ >= 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
 struct v4lconvert_data;
 
-struct v4lconvert_data *v4lconvert_create(int fd);
-void v4lconvert_destroy(struct v4lconvert_data *data);
+LIBV4L_PUBLIC struct v4lconvert_data *v4lconvert_create(int fd);
+LIBV4L_PUBLIC void v4lconvert_destroy(struct v4lconvert_data *data);
 
 /* With regards to dest_fmt just like VIDIOC_TRY_FMT, except that the try
    format will succeed and return the requested V4L2_PIX_FMT_foo in dest_fmt if
    the cam has a format from which v4lconvert can convert to dest_fmt.
    The real format to which the cam should be set is returned through src_fmt
    when not NULL. */
-int v4lconvert_try_format(struct v4lconvert_data *data,
+LIBV4L_PUBLIC int v4lconvert_try_format(struct v4lconvert_data *data,
   struct v4l2_format *dest_fmt, /* in / out */
   struct v4l2_format *src_fmt /* out */
 );
 
 /* Just like VIDIOC_ENUM_FMT, except that the emulated formats are added at
    the end of the list */
-int v4lconvert_enum_fmt(struct v4lconvert_data *data, struct v4l2_fmtdesc *fmt);
+LIBV4L_PUBLIC int v4lconvert_enum_fmt(struct v4lconvert_data *data, struct v4l2_fmtdesc *fmt);
 
 /* Is conversion necessary or can the app use the data directly? */
-int v4lconvert_needs_conversion(struct v4lconvert_data *data,
+LIBV4L_PUBLIC int v4lconvert_needs_conversion(struct v4lconvert_data *data,
   const struct v4l2_format *src_fmt,   /* in */
   const struct v4l2_format *dest_fmt); /* in */
 
 /* return value of -1 on error, otherwise the amount of bytes written to
    dest */
-int v4lconvert_convert(struct v4lconvert_data *data,
+LIBV4L_PUBLIC int v4lconvert_convert(struct v4lconvert_data *data,
   const struct v4l2_format *src_fmt,  /* in */
   const struct v4l2_format *dest_fmt, /* in */
   unsigned char *src, int src_size, unsigned char *dest, int dest_size);
 
 /* get a string describing the last error*/
-const char *v4lconvert_get_error_message(struct v4lconvert_data *data);
+LIBV4L_PUBLIC const char *v4lconvert_get_error_message(struct v4lconvert_data *data);
 
 #ifdef __cplusplus
 }
index 769811a..d12e747 100644 (file)
@@ -1,4 +1,4 @@
-override CPPFLAGS += -I../include -I../../../../linux/include
+override CPPFLAGS += -I../include -I../../../../linux/include -fvisibility=hidden
 
 CFLAGS := -g -O1
 CFLAGS += -Wall -Wno-unused -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
index 8edc9f9..e4293d2 100644 (file)
 #error open/read/mmap is a prepocessor macro !!
 #endif
 
-int open (const char *file, int oflag, ...)
+#if __GNUC__ >= 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
+LIBV4L_PUBLIC int open (const char *file, int oflag, ...)
 {
   int fd;
 
@@ -55,7 +61,7 @@ int open (const char *file, int oflag, ...)
   return fd;
 }
 
-int open64 (const char *file, int oflag, ...)
+LIBV4L_PUBLIC int open64 (const char *file, int oflag, ...)
 {
   int fd;
 
@@ -76,16 +82,16 @@ int open64 (const char *file, int oflag, ...)
   return fd;
 }
 
-int close(int fd) {
+LIBV4L_PUBLIC int close(int fd) {
   return v4l1_close(fd);
 }
 
-int dup(int fd)
+LIBV4L_PUBLIC int dup(int fd)
 {
   return v4l1_dup(fd);
 }
 
-int ioctl (int fd, unsigned long int request, ...)
+LIBV4L_PUBLIC int ioctl (int fd, unsigned long int request, ...)
 {
   void *arg;
   va_list ap;
@@ -97,24 +103,25 @@ int ioctl (int fd, unsigned long int request, ...)
   return v4l1_ioctl (fd, request, arg);
 }
 
-ssize_t read(int fd, void* buffer, size_t n)
+LIBV4L_PUBLIC ssize_t read(int fd, void* buffer, size_t n)
 {
   return v4l1_read (fd, buffer, n);
 }
 
-void *mmap(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC void *mmap(void *start, size_t length, int prot, int flags, int fd,
   __off_t offset)
 {
   return v4l1_mmap(start, length, prot, flags, fd, offset);
 }
 
-void *mmap64(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
   __off64_t offset)
 {
   return v4l1_mmap(start, length, prot, flags, fd, offset);
 }
 
-int munmap(void *start, size_t length)
+LIBV4L_PUBLIC int munmap(void *start, size_t length)
 {
   return v4l1_munmap(start, length);
 }
+
index 63c2283..5ed3593 100644 (file)
@@ -1,4 +1,4 @@
-override CPPFLAGS += -I../include -I../../../../linux/include
+override CPPFLAGS += -I../include -I../../../../linux/include -fvisibility=hidden
 
 CFLAGS := -g -O1
 CFLAGS += -Wall -Wno-unused -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
index 414634b..6237d55 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/types.h>
 /* end broken header workaround includes */
 #include <linux/videodev2.h>
+#include "libv4l2.h"
 #include "libv4l2-priv.h"
 
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
index 9420e68..e8756f3 100644 (file)
 #error open/read/mmap is a prepocessor macro !!
 #endif
 
-int open (const char *file, int oflag, ...)
+#if __GNUC__ >= 4
+#define LIBV4L_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define LIBV4L_PUBLIC
+#endif
+
+LIBV4L_PUBLIC int open (const char *file, int oflag, ...)
 {
   int fd;
   struct v4l2_capability cap;
@@ -86,7 +92,7 @@ int open (const char *file, int oflag, ...)
   return fd;
 }
 
-int open64(const char *file, int oflag, ...)
+LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
 {
   int fd;
 
@@ -109,17 +115,17 @@ int open64(const char *file, int oflag, ...)
   return fd;
 }
 
-int close(int fd)
+LIBV4L_PUBLIC int close(int fd)
 {
   return v4l2_close(fd);
 }
 
-int dup(int fd)
+LIBV4L_PUBLIC int dup(int fd)
 {
   return v4l2_dup(fd);
 }
 
-int ioctl (int fd, unsigned long int request, ...)
+LIBV4L_PUBLIC int ioctl (int fd, unsigned long int request, ...)
 {
   void *arg;
   va_list ap;
@@ -131,24 +137,25 @@ int ioctl (int fd, unsigned long int request, ...)
   return v4l2_ioctl (fd, request, arg);
 }
 
-ssize_t read (int fd, void* buffer, size_t n)
+LIBV4L_PUBLIC ssize_t read (int fd, void* buffer, size_t n)
 {
   return v4l2_read (fd, buffer, n);
 }
 
-void *mmap(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC void *mmap(void *start, size_t length, int prot, int flags, int fd,
   __off_t offset)
 {
   return v4l2_mmap(start, length, prot, flags, fd, offset);
 }
 
-void *mmap64(void *start, size_t length, int prot, int flags, int fd,
+LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
   __off64_t offset)
 {
   return v4l2_mmap(start, length, prot, flags, fd, offset);
 }
 
-int munmap(void *start, size_t length)
+LIBV4L_PUBLIC int munmap(void *start, size_t length)
 {
   return v4l2_munmap(start, length);
 }
+
index 3b8a597..7981944 100644 (file)
@@ -1,4 +1,4 @@
-override CPPFLAGS += -I../include -I../../../../linux/include
+override CPPFLAGS += -I../include -I../../../../linux/include -fvisibility=hidden
 
 CFLAGS := -g -O1
 CFLAGS += -Wall -Wno-unused -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
index ba70309..532abc7 100644 (file)
@@ -80,7 +80,7 @@
 
 #define DEQUANTIZE(coef,quantval)  (((FAST_FLOAT) (coef)) * (quantval))
 
-#if defined(__GNUC__) && (defined(__i686__)) // || defined(__x86_64__))
+#if defined(__GNUC__) && (defined(__i686__) || defined(__x86_64__))
 
 static inline unsigned char descale_and_clamp(int x, int shift)
 {
@@ -92,7 +92,7 @@ static inline unsigned char descale_and_clamp(int x, int shift)
       "\tcmpl %4,%1\n"
       "\tcmovg %4,%1\n"
       : "=r"(x)
-      : "0"(x), "Ic"((unsigned char)shift), "ir"(1UL<<(shift-1)), "r" (0xff), "r" (0)
+      : "0"(x), "Ic"((unsigned char)shift), "ir"(1U<<(shift-1)), "r" (0xff), "r" (0)
       );
   return x;
 }