/* config.h.in.  Generated from configure.ac by autoheader.  */

/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD

/* Default audio sink */
#undef DEFAULT_AUDIOSINK

/* Default audio source */
#undef DEFAULT_AUDIOSRC

/* Default video sink */
#undef DEFAULT_VIDEOSINK

/* Default video source */
#undef DEFAULT_VIDEOSRC

/* Default visualizer */
#undef DEFAULT_VISUALIZER

/* Disable Orc */
#undef DISABLE_ORC

/* Define to 1 if translation of program messages to the user's native
   language is requested. */
#undef ENABLE_NLS

/* gettext package name */
#undef GETTEXT_PACKAGE

/* The GIO library directory. */
#undef GIO_LIBDIR

/* The GIO modules directory. */
#undef GIO_MODULE_DIR

/* GStreamer API Version */
#undef GST_API_VERSION

/* macro to use to show function name */
#undef GST_FUNCTION

/* Defined if gcov is enabled to force a rebuild due to config.h changing */
#undef GST_GCOV_ENABLED

/* Default errorlevel to use */
#undef GST_LEVEL_DEFAULT

/* GStreamer license */
#undef GST_LICENSE

/* package name in plugins */
#undef GST_PACKAGE_NAME

/* package origin */
#undef GST_PACKAGE_ORIGIN

/* GStreamer package release date/time for plugins as YYYY-MM-DD */
#undef GST_PACKAGE_RELEASE_DATETIME

/* Define if static plugins should be built */
#undef GST_PLUGIN_BUILD_STATIC

/* Define to enable a52dec (used by a52dec). */
#undef HAVE_A52DEC

/* Define to enable amrnb library (used by amrnb). */
#undef HAVE_AMRNB

/* Define to enable amrwb library (used by amrwbdec). */
#undef HAVE_AMRWB

/* Define to enable cdio library (used by cdio). */
#undef HAVE_CDIO

/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
   CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT

/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
   the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE

/* Define if the target CPU is an Alpha */
#undef HAVE_CPU_ALPHA

/* Define if the target CPU is an ARM */
#undef HAVE_CPU_ARM

/* Define if the target CPU is a CRIS */
#undef HAVE_CPU_CRIS

/* Define if the target CPU is a CRISv32 */
#undef HAVE_CPU_CRISV32

/* Define if the target CPU is a HPPA */
#undef HAVE_CPU_HPPA

/* Define if the target CPU is an x86 */
#undef HAVE_CPU_I386

/* Define if the target CPU is a IA64 */
#undef HAVE_CPU_IA64

/* Define if the target CPU is a M68K */
#undef HAVE_CPU_M68K

/* Define if the target CPU is a MIPS */
#undef HAVE_CPU_MIPS

/* Define if the target CPU is a PowerPC */
#undef HAVE_CPU_PPC

/* Define if the target CPU is a 64 bit PowerPC */
#undef HAVE_CPU_PPC64

/* Define if the target CPU is a S390 */
#undef HAVE_CPU_S390

/* Define if the target CPU is a SPARC */
#undef HAVE_CPU_SPARC

/* Define if the target CPU is a x86_64 */
#undef HAVE_CPU_X86_64

/* Define if the GNU dcgettext() function is already present or preinstalled.
   */
#undef HAVE_DCGETTEXT

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* define for working do while(0) macros */
#undef HAVE_DOWHILE_MACROS

/* Define to enable dvdread library (used by dvdreadsrc). */
#undef HAVE_DVDREAD

/* Define to enable building of experimental plug-ins. */
#undef HAVE_EXPERIMENTAL

/* Define to enable building of plug-ins with external deps. */
#undef HAVE_EXTERNAL

/* defined if the compiler implements __func__ */
#undef HAVE_FUNC

/* defined if the compiler implements __FUNCTION__ */
#undef HAVE_FUNCTION

/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT

/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define to enable lame mp3 encoder library (used by lame). */
#undef HAVE_LAME

/* Define to enable mad mp3 decoder (used by mad). */
#undef HAVE_MAD

/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define to enable mpeg2dec (used by mpeg2dec). */
#undef HAVE_MPEG2DEC

/* Defined for newer opencore-amrnb */
#undef HAVE_OPENCORE_AMRNB_0_1_3_OR_LATER

/* Defined for newer opencore-amrwb */
#undef HAVE_OPENCORE_AMRWB_0_1_3_OR_LATER

/* Use Orc */
#undef HAVE_ORC

/* defined if the compiler implements __PRETTY_FUNCTION__ */
#undef HAVE_PRETTY_FUNCTION

/* Define if RDTSC is available */
#undef HAVE_RDTSC

/* Define to enable libsidplay (used by sid). */
#undef HAVE_SIDPLAY

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to enable twolame (used by twolame). */
#undef HAVE_TWOLAME

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define if valgrind should be used */
#undef HAVE_VALGRIND

/* Define to 1 if you have the <winsock2.h> header file. */
#undef HAVE_WINSOCK2_H

/* Define to enable x264 plug-in (used by x264). */
#undef HAVE_X264

/* the host CPU */
#undef HOST_CPU

/* gettext locale dir */
#undef LOCALEDIR

/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#undef LT_OBJDIR

/* Name of package */
#undef PACKAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* directory where plugins are located */
#undef PLUGINDIR

/* The size of `char', as computed by sizeof. */
#undef SIZEOF_CHAR

/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT

/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG

/* The size of `short', as computed by sizeof. */
#undef SIZEOF_SHORT

/* The size of `void*', as computed by sizeof. */
#undef SIZEOF_VOIDP

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* the target CPU */
#undef TARGET_CPU

/* Version number of package */
#undef VERSION

/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
   significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
#  define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
#  undef WORDS_BIGENDIAN
# endif
#endif
