Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed exporting of symbols. #72

Merged
merged 2 commits into from
Jul 31, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ if test "x$GCC" = "xyes"; then
fi
changequote([,])dnl

gl_VISIBILITY
AM_CONDITIONAL([HAVE_VISIBILITY], [test "x$HAVE_VISIBILITY" != "x0"])

# Checks for header files.
AC_CHECK_HEADERS([stdint.h stdlib.h string.h malloc.h])
Expand Down
14 changes: 12 additions & 2 deletions libde265/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,19 @@ libde265_ladir = \
$(includedir)/libde265

libde265_la_CPPFLAGS =
libde265_la_CFLAGS = \
$(CFLAG_VISIBILITY) \
-DLIBDE265_EXPORTS
libde265_la_CXXFLAGS = \
$(CFLAG_VISIBILITY) \
-DLIBDE265_EXPORTS

libde265_la_LDFLAGS = -version-info $(LIBDE265_CURRENT):$(LIBDE265_REVISION):$(LIBDE265_AGE) \
-export-symbols-regex ^de265_
if HAVE_VISIBILITY
libde265_la_CFLAGS += -DHAVE_VISIBILITY
libde265_la_CXXFLAGS += -DHAVE_VISIBILITY
endif

libde265_la_LDFLAGS = -version-info $(LIBDE265_CURRENT):$(LIBDE265_REVISION):$(LIBDE265_AGE)
libde265_la_LIBADD = -lstdc++

libde265_la_SOURCES = \
Expand Down
6 changes: 6 additions & 0 deletions libde265/de265.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ extern "C" {
#else
#define LIBDE265_API __declspec(dllimport)
#endif
#elif HAVE_VISIBILITY
#ifdef LIBDE265_EXPORTS
#define LIBDE265_API __attribute__((__visibility__("default")))
#else
#define LIBDE265_API
#endif
#else
#define LIBDE265_API
#endif
Expand Down
24 changes: 12 additions & 12 deletions libde265/visualize.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ void writeFrame_Y(de265_image* img,const char* filename)
int x0 = ctbX*ctb_size;
int y0 = ctbY*ctb_size;


uint8_t *src = ctx->img->get_image_plane_at_pos(0,x0,y0);

printf("%s %d %d\n",filename,x0,y0);
Expand Down Expand Up @@ -91,7 +91,7 @@ void draw_block_boundary(const de265_image* srcimg,
for (int i=0;i<vBlkSize;i++)
{
int yi = y + i;

if (yi < srcimg->sps.pic_height_in_luma_samples) {
set_pixel(img,x,yi,stride,color,pixelSize);
}
Expand All @@ -100,7 +100,7 @@ void draw_block_boundary(const de265_image* srcimg,
for (int i=0;i<hBlkSize;i++)
{
int xi = x + i;

if (xi < srcimg->sps.pic_width_in_luma_samples) {
set_pixel(img,xi,y,stride,color,pixelSize);
}
Expand Down Expand Up @@ -419,42 +419,42 @@ void draw_tree_grid(const de265_image* srcimg, uint8_t* img, int stride,
}


void draw_CB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
LIBDE265_API void draw_CB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
{
draw_tree_grid(img,dst,stride,color,pixelSize, Partitioning_CB);
}

void draw_TB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
LIBDE265_API void draw_TB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
{
draw_tree_grid(img,dst,stride,color,pixelSize, Partitioning_TB);
}

void draw_PB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
LIBDE265_API void draw_PB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
{
draw_tree_grid(img,dst,stride,color,pixelSize, Partitioning_PB);
}

void draw_intra_pred_modes(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
LIBDE265_API void draw_intra_pred_modes(const de265_image* img, uint8_t* dst, int stride, uint32_t color,int pixelSize)
{
draw_tree_grid(img,dst,stride,color,pixelSize, IntraPredMode);
}

void draw_PB_pred_modes(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
LIBDE265_API void draw_PB_pred_modes(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
{
draw_tree_grid(img,dst,stride,0,pixelSize, PBPredMode);
}

void draw_QuantPY(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
LIBDE265_API void draw_QuantPY(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
{
draw_tree_grid(img,dst,stride,0,pixelSize, QuantP_Y);
}

void draw_Motion(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
LIBDE265_API void draw_Motion(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
{
draw_tree_grid(img,dst,stride,0,pixelSize, PBMotionVectors);
}

void draw_Slices(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
LIBDE265_API void draw_Slices(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
{
// --- mark first CTB in slice (red - independent / green - dependent) ---

Expand Down Expand Up @@ -534,7 +534,7 @@ void draw_Slices(const de265_image* img, uint8_t* dst, int stride, int pixelSize

}

void draw_Tiles(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
LIBDE265_API void draw_Tiles(const de265_image* img, uint8_t* dst, int stride, int pixelSize)
{
const uint32_t color = 0xffff00;

Expand Down
29 changes: 20 additions & 9 deletions libde265/visualize.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,30 @@
#ifndef DE265_VISUALIZE_H
#define DE265_VISUALIZE_H

#include "libde265/de265.h"
#include "libde265/image.h"


void write_picture_to_file(const de265_image* img, const char* filename);

void draw_CB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
void draw_TB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
void draw_PB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
void draw_PB_pred_modes(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
void draw_intra_pred_modes(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
void draw_QuantPY(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
void draw_Motion(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
void draw_Slices(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
void draw_Tiles(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
#ifdef __cplusplus
extern "C" {
#endif

// TODO: these should either move to "sherlock265", or be part of the
// "official" public API
LIBDE265_API void draw_CB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
LIBDE265_API void draw_TB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
LIBDE265_API void draw_PB_grid(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
LIBDE265_API void draw_PB_pred_modes(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
LIBDE265_API void draw_intra_pred_modes(const de265_image* img, uint8_t* dst, int stride, uint32_t value, int pixelSize);
LIBDE265_API void draw_QuantPY(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
LIBDE265_API void draw_Motion(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
LIBDE265_API void draw_Slices(const de265_image* img, uint8_t* dst, int stride, int pixelSize);
LIBDE265_API void draw_Tiles(const de265_image* img, uint8_t* dst, int stride, int pixelSize);

#ifdef __cplusplus
}
#endif

#endif
11 changes: 9 additions & 2 deletions libde265/x86/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
noinst_LTLIBRARIES = libde265_x86.la libde265_x86_sse.la

libde265_x86_la_CXXFLAGS = -I..
libde265_x86_la_CXXFLAGS = -I.. $(CFLAG_VISIBILITY)
libde265_x86_la_SOURCES = sse.cc sse.h
libde265_x86_la_LIBADD = libde265_x86_sse.la

if HAVE_VISIBILITY
libde265_x86_la_CXXFLAGS += -DHAVE_VISIBILITY
endif


# SSE4 specific functions

libde265_x86_sse_la_CXXFLAGS = -msse4.1 -I..
libde265_x86_sse_la_CXXFLAGS = -msse4.1 -I.. $(CFLAG_VISIBILITY)
libde265_x86_sse_la_SOURCES = sse-motion.cc sse-motion.h sse-dct.h sse-dct.cc

if HAVE_VISIBILITY
libde265_x86_sse_la_CXXFLAGS += -DHAVE_VISIBILITY
endif

52 changes: 52 additions & 0 deletions m4/visibility.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# visibility.m4 serial 1 (gettext-0.15)
dnl Copyright (C) 2005 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

dnl From Bruno Haible.

dnl Tests whether the compiler supports the command-line option
dnl -fvisibility=hidden and the function and variable attributes
dnl __attribute__((__visibility__("hidden"))) and
dnl __attribute__((__visibility__("default"))).
dnl Does *not* test for __visibility__("protected") - which has tricky
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
dnl MacOS X.
dnl Does *not* test for __visibility__("internal") - which has processor
dnl dependent semantics.
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
dnl "really only recommended for legacy code".
dnl Set the variable CFLAG_VISIBILITY.
dnl Defines and sets the variable HAVE_VISIBILITY.

AC_DEFUN([gl_VISIBILITY],
[
AC_REQUIRE([AC_PROG_CC])
CFLAG_VISIBILITY=
HAVE_VISIBILITY=0
if test -n "$GCC"; then
AC_MSG_CHECKING([for simple visibility declarations])
AC_CACHE_VAL(gl_cv_cc_visibility, [
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
AC_TRY_COMPILE(
[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
extern __attribute__((__visibility__("default"))) int exportedvar;
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
[],
gl_cv_cc_visibility=yes,
gl_cv_cc_visibility=no)
CFLAGS="$gl_save_CFLAGS"])
AC_MSG_RESULT([$gl_cv_cc_visibility])
if test $gl_cv_cc_visibility = yes; then
CFLAG_VISIBILITY="-fvisibility=hidden"
HAVE_VISIBILITY=1
fi
fi
AC_SUBST([CFLAG_VISIBILITY])
AC_SUBST([HAVE_VISIBILITY])
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
])