xjadeo-0.7.6/0000755000175000017500000000000012200730321007765 500000000000000xjadeo-0.7.6/INSTALL0000644000175000017500000002203011436273050010746 00000000000000Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the `--target=TYPE' option to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. xjadeo-0.7.6/configure.ac0000644000175000017500000006103012200730014012172 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(xjadeo.c) AC_CONFIG_SRCDIR(src/xjadeo/xjadeo.c) AC_CANONICAL_HOST AC_CANONICAL_TARGET VERSION_MAJOR=0 VERSION_MINOR=7 VERSION_SUB=6 dnl Every other copy of the package version number gets its value from here AM_INIT_AUTOMAKE(xjadeo, [${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_SUB}]) #AC_REVISION([$Id: configure.ac $]) dnl create a config.h file (Automake will add -DHAVE_CONFIG_H) AM_CONFIG_HEADER(config.h) AC_ARG_ENABLE(xv, AC_HELP_STRING([--disable-xv], [Disable Xvideo extension ])) #AC_ARG_ENABLE(imlib, AC_HELP_STRING([--disable-imlib], [Disable use of imlib for display])) AC_ARG_ENABLE(imlib2, AC_HELP_STRING([--disable-imlib2], [Disable use of imlib2 for display])) AC_ARG_ENABLE(sdl, AC_HELP_STRING([--disable-sdl], [Disable use of SDL display])) AC_ARG_ENABLE(ft, AC_HELP_STRING([--disable-ft], [Disable freetype On-Screen.Display support])) AC_ARG_ENABLE(qtgui, AC_HELP_STRING([--enable-qtgui],[Build the Qt GUI controller])) AC_ARG_ENABLE(contrib, AC_HELP_STRING([--enable-contrib], [Compile and install code in contrib folder])) AC_ARG_ENABLE(lash, AC_HELP_STRING([--enable-lash],[enable LASH support (deprecated)])) AC_ARG_ENABLE(timescale, AC_HELP_STRING([--disable-timescale],[disable time-mapping/loop-playback support])) AC_ARG_ENABLE(framecrop, AC_HELP_STRING([--enable-framecrop],[hardcoded frame cropping - DO NOT USE])) AC_ARG_ENABLE(tiff, AC_HELP_STRING([--disable-tiff],[disable libtiff support (affects only contrib/tsmm/)])) AC_ARG_ENABLE(mq, AC_HELP_STRING([--disable-mq],[disable POSIX message-queue remote control])) AC_ARG_ENABLE(jacksession, AC_HELP_STRING([--disable-jacksession],[disable JACK-Session support])) AC_ARG_ENABLE(ipc, AC_HELP_STRING([--disable-ipc],[disable IPC message-queue remote control])) AC_ARG_ENABLE(osc, AC_HELP_STRING([--disable-osc],[disable OSC remote support])) AC_ARG_ENABLE(midi, AC_HELP_STRING([--disable-midi],[Do not build any of the MIDI drivers])) AC_ARG_ENABLE(ltc, AC_HELP_STRING([--disable-ltc],[disable LTC sync support])) AC_ARG_ENABLE(portmidi, AC_HELP_STRING([--disable-portmidi],[disable portmidi support])) AC_ARG_ENABLE(alsamidi, AC_HELP_STRING([--disable-alsamidi],[disable alsamidi support])) AC_ARG_WITH(fontfile, AS_HELP_STRING([--with-fontfile=file.ttf], [specify a path to a truetype font file to be used as default OSD font.]), fontfile="$withval", fontfile="") AC_ARG_WITH(portmidisrc, AS_HELP_STRING([--with-portmidisrc], [statically link against portmidi]), portmidisrc="$withval", portmidisrc="") AC_ARG_WITH(freetypesrc, AS_HELP_STRING([--with-freetypesrc], [statically link against freetype]), freetypesrc="$withval", freetypesrc="") AC_ARG_WITH(liblosrc, AS_HELP_STRING([--with-liblosrc], [statically link against liblo]), liblosrc="$withval", liblosrc="") AC_ARG_WITH(ffmpegprefix, AS_HELP_STRING([--with-ffmpegprefix], [override pkg-config - specify prefix to ffmpeg installation]), ffmpegprefix="$withval", ffmpegprefix="") AC_ARG_WITH(ffmpegsrc, AS_HELP_STRING([--with-ffmpegsrc], [location of ffmpeg source, use to statically link against ffmpeg]), ffmpegsrc="$withval", ffmpegsrc="") AC_ARG_WITH(ffmpegldadd, AS_HELP_STRING([--with-ffmpegldadd], [ld options for static ffmpeg eg. "-lmp3lame -ldts -lfaac -logg -lxvidcore"]), ffmpegldadd="$withval", ffmpegldadd="") AC_ARG_WITH(qt4prefix, AS_HELP_STRING([--with-qt4prefix], [prefix for Qt4 installation, e.g. "/usr/lib/qt4"]), qt4prefix="$withval", qt4prefix="") LIBPREF=lib LIBSUF=.a case $target_os in *darwin*) AC_MSG_NOTICE([TARGET: OSX]) PM_OS=mac AC_DEFINE([HAVE_MACOSX], [], [use macintosh native display]) HAVE_MACOSX=1 LDFLAGS="$LDFLAGS -lz -lbz2 -framework Carbon -framework Quicktime" dnl 2006/11/13 : 32 bit RGBA is known not to work on OSX ffmpeg+imlib2 dnl IMLIB2RGBA ;; *linux*) AC_MSG_NOTICE([TARGET: LINUX]) PM_OS="linux"; AC_DEFINE([IMLIB2RGBA], [], [use native RGB32 ffmpeg -> imlib.]) ;; *mingw32*|*win*) AC_MSG_NOTICE([TARGET: WINDOWS]) PM_OS=win AC_DEFINE([HAVE_WINDOWS], [], [windows SDL version]) HAVE_WINDOWS=1 IMLIB_LIBS="-lws2_32" # LDFLAGS are before object files. -pragmatically re-used IMLIB_LIBS LIBSUF=.dll ;; *) AC_MSG_WARN([*** unknown target OS ***]) ;; esac AC_SUBST(VERSION) ISODATE=`date +%Y-%m-%d` AC_SUBST(ISODATE) dnl Checks for programs. AC_PROG_INSTALL #AC_PROG_CC AM_PROG_CC_C_O # TODO: check for xsltproc, xmllint and # automatically build documentation... #AC_C_VOLATILE AC_C_CONST AC_C_BIGENDIAN dnl Checks for header files. AC_HEADER_STDC #AC_HEADER_TIME AC_CHECK_SIZEOF(float) AC_CHECK_SIZEOF(double) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(unsigned long) AC_CHECK_HEADERS(time.h string.h) dnl Checks for libraries. AH_TEMPLATE([HAVE_LIBXV], [Define as 1 if you have the Xv library (-lXv)]) #AH_TEMPLATE([HAVE_IMLIB], [Define as 1 if you have imlib]) AH_TEMPLATE([HAVE_IMLIB2], [Define as 1 if you have imlib2]) AH_TEMPLATE([HAVE_MIDI], [Define as 1 if to enable MIDI in general]) AH_TEMPLATE([HAVE_PORTMIDI], [Define as 1 if to enable the portmidi driver]) AH_TEMPLATE([HAVE_JACKMIDI], [Define as 1 to enable JACK-MIDI]) AH_TEMPLATE([ALSA_SEQ_MIDI], [Define as 1 to enable ALSA sequencer midi]) AH_TEMPLATE([ALSA_RAW_MIDI], [Define as 1 to enable ALSA-raw midi driver]) AH_TEMPLATE([JACK_SESSION], [Define as 1 to enable JACK Session support]) AH_TEMPLATE([HAVE_LTCSMPTE], [Define as 1 if you have ltcsmpte.sf.net ]) AH_TEMPLATE([HAVE_LTC], [Define as 1 if you have libltc - http://github.com/x42/libltc ]) AH_TEMPLATE([HAVE_LASH], [Define as 1 if you have lash]) AH_TEMPLATE([HAVE_XPM], [Define as 1 if you have libXpm]) AH_TEMPLATE([HAVE_SDL], [Define as 1 if you have the SDL toolkit]) AH_TEMPLATE([HAVE_MQ], [Define as 1 if you have POSIX message queues (libc, librt)]) AH_TEMPLATE([HAVE_IPCMSG], [Define as 1 if you have IPC message queues (system-V)]) AH_TEMPLATE([HAVE_LIBLO], [Define as 1 if you have the loblo OSC library]) AH_TEMPLATE([HAVE_TIFF], [Define as 1 if you have libtiff (contrib/tsmm)]) AH_TEMPLATE([TTFFONTFILE], [absolute path to truetype default OSD font file]) AH_TEMPLATE([CFG_WARN_ONLY], [errors in the resource config file only result in a warning message instead of forcing xjadeo to exit.]) AH_TEMPLATE([DND], [enable xjadeo x11 drag and drop]) AH_TEMPLATE([COLOREQ], [enable XV and imlib2 color equalizer]) AH_TEMPLATE([TIMEMAP], [enable dynamic time scaling]) AH_TEMPLATE([CROPIMG], [enable frame cropping]) AH_TEMPLATE([DRAW_CROSS], [paint a X on screen when unable to decode or display a frame.]) AH_TEMPLATE([HAVE_JACK_VIDEO], [experimental code to use jack_video, jack-svn >= r591]) AH_TEMPLATE([NEW_JACK_LATENCY_API], [use new JACK latency API]) AH_TEMPLATE([HAVE_SWSCALE], [Define as 1 if you have ffmpeg with swscale support]) AH_TEMPLATE([OLD_FFMPEG], [Define as 1 if you older versions of ffmpeg that provide all include headers in one folder. ]) AC_DEFINE(CFG_WARN_ONLY) AC_DEFINE(DND) AC_DEFINE(DRAW_CROSS) AC_DEFINE(COLOREQ) AC_HEADER_MAJOR AC_FUNC_ALLOCA AC_STRUCT_TM #AC_STRUCT_ST_BLOCKS #AC_FUNC_CLOSEDIR_VOID #AC_CHECK_FUNCS(mkfifo) #AC_CHECK_FUNC(mknod) if test "x$enable_timescale" != "xno"; then AC_DEFINE(TIMEMAP) fi if test "x$enable_framecrop" == "xyes"; then AC_DEFINE(CROPIMG) fi # FIXME - needed fi. on osx LIBS="$LIBS -L/usr/X11R6/lib" #X_LIBS="-L/usr/X11R6/lib/" PKG_CHECK_MODULES(JACK, jack, , [AC_MSG_ERROR(*** You need the JACK audio development kit (jackaudio.org). ***)]) AC_SUBST(JACK_CFLAGS) AC_SUBST(JACK_LIBS) if test "x$enable_jacksession" != "xno"; then AC_CHECK_HEADERS([jack/session.h] , AC_DEFINE(JACK_SESSION) JACK_SESSION=1) fi AC_SEARCH_LIBS(jack_port_get_latency_range, jack, AC_DEFINE(NEW_JACK_LATENCY_API) NEW_JACK_LATENCY_API=1 ) MQ_LIBS="" if test "x$enable_mq" != "xno"; then AC_SEARCH_LIBS( mq_open, rt, AC_DEFINE(HAVE_MQ) MQ_LIBS="-lrt -lpthread" HAVE_MQ=1 ) fi AC_SUBST(MQ_LIBS) AC_DEFINE(MQLEN, 512, [ max length of a remote control line. ]) dnl prefer POSIX RT mqueue over IPC.. if test "x$enable_ipc" != "xno"; then if test -z "$HAVE_MQ"; then AC_CHECK_HEADERS([sys/ipc.h sys/msg.h] , AC_DEFINE(HAVE_IPCMSG) HAVE_IPCMSG=1 ) fi fi if test "x$enable_xv" != "xno"; then dnl for this to work properly X11/Xlib.h needs to be included for the check. dnl '-' as INCLUDE path simply checks if the header file is present dnl FIXME; add a proper INCLUDE path to AC_CHECK_HEADERS dnl AC_CHECK_HEADERS([X11/extensions/Xvlib.h X11/extensions/XShm.h], , [AC_MSG_ERROR(*** X11: You need to install the X11 development package. ***)], -) AC_CHECK_LIB(Xv, XvQueryAdaptors, [AC_DEFINE(HAVE_LIBXV) AC_SUBST(XV_LIBS) AC_SUBST(XV_CFLAGS) XV_LIBS="-lXv" HAVE_LIBXV=1 ], [AC_MSG_ERROR([Could not find XVideo Lib (libXv)])], $X_LIBS) fi dnl remove this if IFF you want to build an X11 version for OSX AS_IF([test -z "$HAVE_MACOSX$HAVE_WINDOWS"], [ AC_CHECK_HEADERS([X11/Xlib.h], , [AC_MSG_ERROR(*** X11: You need to install the X11 development package. ***)]) AC_CHECK_LIB([X11], [XOpenDisplay], [XV_LIBS="$XV_LIBS -lXext"], AC_MSG_ERROR([*** X11: You need to install the X11 development package: libx11-dev ***])) PKG_CHECK_MODULES(Xpm, xpm, [ AC_DEFINE(HAVE_XPM) HAVE_XPM=1 ], [AC_MSG_ERROR(*** X11: You need to install the libxpm development package. ***)]) #AC_SEARCH_LIBS( XpmCreatePixmapFromData, Xpm, AC_DEFINE(HAVE_XPM) XPM_LIBS="-lXpm" HAVE_XPM=1 ) ]) AS_IF([test "x$enable_osc" != "xno"], [ if test -n "$liblosrc"; then AC_CHECK_FILES([$liblosrc/src/.libs/liblo.a $liblosrc/lo/lo.h],[AC_DEFINE(HAVE_LIBLO) HAVE_LIBLO=1 LIBLO_CFLAGS="-I$liblosrc/lo" LIBLO_LIBS="$liblosrc/src/.libs/liblo.a" ]) else PKG_CHECK_MODULES(LIBLO, liblo, [ AC_DEFINE(HAVE_LIBLO) HAVE_LIBLO=1 ], [ NULL=0] ) fi ]) AC_SUBST(LIBLO_CFLAGS) AC_SUBST(LIBLO_LIBS) AS_IF([test "x$enable_sdl" != "xno"], [ PKG_CHECK_MODULES(SDL, sdl, [ AC_DEFINE(HAVE_SDL) HAVE_SDL=1 ], [ NULL=1]) ]) AC_SUBST(SDL_LIBS) AC_SUBST(SDL_CFLAGS) dnl ---------------------------------------------- dnl midi lib detection dnl ---------------------------------------------- if test "x$enable_midi" != "xno"; then MIDI_CFLAGS="" MIDI_CFLAGS="" if test "x$enable_portmidi" != "xno" -a -z "$portmidisrc" ; then AC_CHECK_HEADERS(portmidi.h porttime.h , [FOUND_H_PORTMIDI=yes]) AC_CHECK_LIB([portmidi], [Pm_CountDevices], [FOUND_L_PORTMIDI=yes]) fi if test "x$FOUND_H_PORTMIDI$FOUND_L_PORTMIDI" = "xyesyes"; then MIDI_LIBS="-lportmidi" if test "$PM_OS" != "mac"; then MIDI_LIBS="${MIDI_LIBS} -lporttime" fi fi if test "x$enable_portmidi" != "xno" -a -n "$portmidisrc" -a -n "$PM_OS"; then AC_CHECK_FILES([$portmidisrc/porttime/porttime.h $portmidisrc/pm_common/portmidi.h],[FOUND_H_PORTMIDI=yes]) dnl ppc-portmidi : cc -dynamiclib pm_mac/*.o porttime/*.o -flat_namespace -undefined suppress -o portmidi.dylib AC_CHECK_FILES([$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF],[FOUND_L_PORTMIDI=yes MIDI_LIBS="$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF"]) AC_CHECK_FILES([$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF],[FOUND_L_PORTMIDI=yes MIDI_LIBS="$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF"]) if test $PM_OS = "mac" ; then MIDI_LIBS="$MIDI_LIBS -framework CoreMIDI -framework CoreFoundation -framework CoreAudio"; fi MIDI_CFLAGS="-I$portmidisrc/porttime/ -I$portmidisrc/pm_common/" fi if test "x$JACKMIDI" != "xno"; then AC_CHECK_HEADERS(jack/midiport.h, [FOUND_H_JACKMIDI=yes]) fi if test "x$enable_alsamidi" != "xno"; then AC_CHECK_HEADERS(alsa/asoundlib.h, [FOUND_H_ALSAMIDI=yes]) AC_CHECK_HEADERS(pthread.h, [FOUND_H_PTHREAD=yes]) AC_CHECK_LIB([asound], [snd_rawmidi_open], [FOUND_L_ALSAMIDI=yes]) fi if test "x$FOUND_H_ALSAMIDI$FOUND_L_ALSAMIDI$FOUND_H_PTHREAD" = "xyesyesyes"; then AC_DEFINE(ALSA_SEQ_MIDI) AC_DEFINE(ALSA_RAW_MIDI) AC_DEFINE(HAVE_MIDI) HAVE_MIDI=1 ALSA_SEQ_MIDI=1 ALSA_RAW_MIDI=1 MIDI_LIBS="$MIDI_LIBS -lasound -lpthread" fi if test "x$FOUND_H_PORTMIDI$FOUND_L_PORTMIDI" = "xyesyes"; then AC_DEFINE(HAVE_MIDI) AC_DEFINE(HAVE_PORTMIDI) HAVE_MIDI=1 HAVE_PORTMIDI=1 dnl LIBS have been set above fi if test "x$FOUND_H_JACKMIDI" = "xyes"; then AC_DEFINE(HAVE_MIDI) AC_DEFINE(HAVE_JACKMIDI) HAVE_MIDI=1 HAVE_JACKMIDI=1 dnl no extra libs are needed (jack is already required) fi fi AC_SUBST(MIDI_LIBS) AC_SUBST(MIDI_CFLAGS) dnl ---------------------------------------------- dnl Check for ffmpeg: avformat/avcodec dnl ---------------------------------------------- AS_IF([test -z "$ffmpegprefix" -a -z "$ffmpegsrc"], [ PKG_CHECK_MODULES(FFMPEG, libavformat libavcodec libavutil, HAVE_FFMPEG=yes, AC_MSG_WARN([ Could not find ffmpeg package. please set PKG_CONFIG_PATH to where FFMPEG installed its pkg files. ])) ]) if test -n "$ffmpegsrc" ; then AC_CHECK_FILES([$ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF $ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF],[ FFMPEG_LIBS="$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF $ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF $ffmpegsrc/libavutil/${LIBPREF}avutil$LIBSUF $ffmpegsrc/libavdevice/${LIBPREF}avdevice$LIBSUF -lz $ffmpegldadd" HAVE_FFMPEG=yes FFMPEG_INCDIR="$ffmpegsrc" FFMPEG_CFLAGS="-I$FFMPEG_INCDIR -I$FFMPEG_INCDIR/libavcodec -I$FFMPEG_INCDIR/libavformat -I$FFMPEG_INCDIR/libavutil" AC_MSG_NOTICE([located a ffmpeg installation without pkg-information.]) ]) elif test -n "$ffmpegprefix" ; then FFMPEG_LIBS="-L$ffmpegprefix/lib -lavcodec -lavutil -lavformat" FFMPEG_INCDIR="$ffmpegprefix/include" FFMPEG_CFLAGS="-I$FFMPEG_INCDIR" #default FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/libavcodec -I$FFMPEG_INCDIR/libavformat -I$FFMPEG_INCDIR/libavutil" # new FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/ffmpeg/" # old FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/ffmpeg/libavcodec -I$FFMPEG_INCDIR/ffmpeg/libavformat -I$FFMPEG_INCDIR/ffmpeg/libavutil" # even older HAVE_FFMPEG=yes AC_MSG_NOTICE([located a ffmpeg installation without pkg-information.]) fi if test "x$HAVE_FFMPEG" != "xyes"; then AC_MSG_ERROR([ libavcodec, libavformat and libavutil from ffmpeg are required. If you are sure that ffmpeg is installed, point configure to your local copy with f.i. ./configure --with-ffmpegprefix=/usr/local/ or ./configure --with-ffmpegsrc=/usr/local/src/ffmpeg/ ]) fi ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $FFMPEG_CFLAGS" dnl backwards compat AC_CHECK_HEADERS([ffmpeg/avcodec.h], [AC_DEFINE(OLD_FFMPEG) OLD_FFMPEG=1;]) dnl check for libswscale (required for ffmpeg > 0.49) if test -n "$ffmpegsrc"; then AC_CHECK_HEADERS($ffmpegsrc/libswscale/swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS $ffmpegsrc/libswscale/${LIBPREF}swscale$LIBSUF"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/libswscale"]) elif test -n "$ffmpegprefix"; then AC_CHECK_HEADERS($ffmpegprefix/include/libswscale/swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/libswscale/"]) # new AC_CHECK_HEADERS($ffmpegprefix/include/ffmpeg/libswscale/swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/ffmpeg/"]) # old AC_CHECK_HEADERS($ffmpegprefix/include/ffmpeg/swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/ffmpeg/libswscale/"]) # older elif test -n "$OLD_FFMPEG"; then AC_CHECK_HEADERS(swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"]) else PKG_CHECK_MODULES(SWSCALE, libswscale, [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS $SWSCALE_LIBS"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS $SWSCALE_CFLAGS"]) if test -z "$HAVE_SWSCALE";then AC_CHECK_HEADERS(libswscale/swscale.h , [AC_DEFINE(HAVE_SWSCALE) HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale";]) fi fi CFLAGS="$ac_save_CFLAGS" dnl phew, done with ffmpeg. AC_SUBST(FFMPEG_CFLAGS) AC_SUBST(FFMPEG_LIBS) dnl ---------------------------------------------- dnl Check for freetype dnl ---------------------------------------------- FREETYPE_LIBS= FREETYPE_CFLAGS= FOUND_H_FREETYPE= FOUND_L_FREETYPE= if test -n "$freetypesrc" ; then AC_CHECK_FILES([$freetypesrc/include/ft2build.h],[FOUND_H_FREETYPE=yes]) AC_CHECK_FILES([$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF],[FOUND_L_FREETYPE=yes]) fi if test "x$FOUND_H_FREETYPE$FOUND_L_FREETYPE" = "xyesyes" ; then FREETYPE_CFLAGS="-I$freetypesrc/include/" FREETYPE_LIBS="$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF" else PKG_CHECK_MODULES(FREETYPE, freetype2, [freetype_pkgconfig=yes], [freetype_pkgconfig=no]) if test "x$freetype_pkgconfig" = "xyes"; then if test ! "x$enable_ft" = "xno"; then AC_DEFINE(HAVE_FREETYPE_H, 1, [Have FreeType2 include files]) AC_DEFINE(HAVE_FT, 1, [Use freetype for OSD]) HAVE_FT=1 else FREETYPE_LIBS= FREETYPE_CFLAGS= fi else AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) if test "x$FREETYPE_CONFIG" != "xno" -a ! "x$enable_ft" = "xno"; then FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` FREETYPE_LIBS=`$FREETYPE_CONFIG --libs` AC_DEFINE(HAVE_FREETYPE_H, 1, [Have FreeType2 include files]) AC_DEFINE(HAVE_FT, 1, [Use freetype for OSD]) HAVE_FT=1 fi fi fi #if test -z "$fontfile" ; then # TODO try some arch-typical font files here ? # PPC: "/usr/X11R6/lib/X11/fonts/TTF/luxisb.ttf" # Debian: "/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf" #fi if test -n "$fontfile" ; then # I'm not sure if this is the proper way to escape a #define string. # AC_DEFINE(TTFFONTFILE, "\"$fontfile\"") - no # FREETYPE_CFLAGS="$FREETYPE_CFLAGS -DTTFFONTFILE=\\\"$fontfile\\\"" - maybe dnl hack alert - we 'should' use our own .h file for this dnl this might not work with some autoconf's echo "#define TTFFONTFILE \"$fontfile\"" >> confdefs.h fi AC_SUBST(FREETYPE_CFLAGS) AC_SUBST(FREETYPE_LIBS) dnl ---------------------------------------------- dnl PKG checks - video display libraries dnl ---------------------------------------------- #if test "x${enable_imlib}" != "xno"; then # PKG_CHECK_MODULES(IMLIB,imlib, [ AC_DEFINE(HAVE_IMLIB) HAVE_IMLIB=1 ], [ NULL=0 ]) #fi AC_SUBST(IMLIB_CFLAGS) AC_SUBST(IMLIB_LIBS) AS_IF([test "x${enable_imlib2}" != "xno"], [ PKG_CHECK_MODULES(IMLIB2, imlib2 >= 1.3.0, [ AC_DEFINE(HAVE_IMLIB2) HAVE_IMLIB2=1 ], [ NULL=0 ]) ]) AC_SUBST(IMLIB2_CFLAGS) AC_SUBST(IMLIB2_LIBS) dnl ---------------------------------------------- dnl http://lash.nongnu.org dnl ---------------------------------------------- AS_IF([test "x$enable_lash" == "xyes"], [ PKG_CHECK_MODULES(LASH, lash-1.0 >= 0.4.0, LASH_FOUND="yes", [ NULL=0 ]) if test "x$LASH_FOUND" = "xyes"; then AC_DEFINE(HAVE_LASH) HAVE_LASH=1; #LASH_VERSION=$( pkg-config --modversion lash-1.0 ) #AC_DEFINE_UNQUOTED(LASH_VERSION, "$LASH_VERSION", [The version of lash we're compiling against]) fi ]) AC_SUBST(LASH_CFLAGS) AC_SUBST(LASH_LIBS) dnl ---------------------------------------------- dnl https://github.com/x42/libltc dnl ---------------------------------------------- AS_IF([ test "x$enable_ltc" != "xno"], [ PKG_CHECK_MODULES(LTC, ltc, [ AC_DEFINE(HAVE_LTC) HAVE_LTC=1 ], [ NULL=0] ) ]) AC_SUBST(LTC_CFLAGS) AC_SUBST(LTC_LIBS) dnl ---------------------------------------------- dnl http://ltcsmpte.sf.net -- deprecated dnl ---------------------------------------------- AS_IF([ test "x$enable_ltc" != "xno" -a -z "$HAVE_LTC" ], [ PKG_CHECK_MODULES(LTCSMPTE, ltcsmpte, [ AC_DEFINE(HAVE_LTCSMPTE) HAVE_LTCSMPTE=1 ], [ NULL=0] ) ]) AC_SUBST(LTCSMPTE_CFLAGS) AC_SUBST(LTCSMPTE_LIBS) dnl ---------------------------------------------- dnl contrib/tsmm dnl ---------------------------------------------- AS_IF([test "x${enable_contrib}" != "xno"], [ AC_CHECK_HEADERS(tiffio.h, [FOUND_H_TIFF=yes]) AC_CHECK_LIB([tiff], [TIFFOpen], [FOUND_L_TIFF=yes]) if test "x$FOUND_H_TIFF$FOUND_L_TIFF" = "xyesyes"; then AC_DEFINE(HAVE_TIFF) HAVE_TIFF=1 TIFF_LIBS="-ltiff" TIFF_CFLAGS="" else PKG_CHECK_MODULES(TIFF,tiff, [ AC_DEFINE(HAVE_TIFF) HAVE_TIFF=1 ], [ NULL=0 ]) fi ]) AC_SUBST(TIFF_CFLAGS) AC_SUBST(TIFF_LIBS) dnl ---------------------------------------------- dnl Qt GUI stuff dnl ---------------------------------------------- if test "$enable_qtgui" = "yes"; then if test "x$qt4prefix" = "x"; then qt4prefix=$($PKG_CONFIG --variable=prefix QtGui) fi # Check for Qt qmake utility. AC_PATH_PROG(ac_qmake, qmake, [no], $qt4prefix/bin) AC_PATH_PROG(ac_lrelease, lrelease, [no], $qt4prefix/bin) if test "x$ac_qmake" = "xno" -o "x$ac_lrelease" = "xno" ; then AC_MSG_ERROR([qmake not found: please install the Qt4 development package of your distribution. Try setting the --with-qt4config parameter; or use --disable-qtgui to compile xjadeo.]) fi HAVE_QT4=1 if test -n "$HAVE_WINDOWS"; then ac_qmake_args="-spec win32-x-g++ -config release" fi AC_SUBST(ac_qmake) AC_SUBST(ac_qmake_args) AC_SUBST(ac_lrelease) ac_qtgui_dir="qt-gui" XJINFO_BIN="xjinfo" AC_CONFIG_FILES(src/qt-gui/Makefile src/qt-gui/qjadeo.pro) else ac_qtgui_dir="" XJINFO_BIN="" fi AC_SUBST(ac_qtgui_dir) AC_SUBST(XJINFO_BIN) dnl ---------- End of Qt GUI stuff --------------- ac_contrib_dir="" if test "x$enable_contrib" = "xyes"; then ac_contrib_dir="contrib/cli-remote/" if test -n "$HAVE_TIFF"; then ac_contrib_dir="$ac_contrib_dir contrib/tsmm" fi fi AC_SUBST(ac_contrib_dir) if test "x$enable_contrib" = "xyes"; then AC_CONFIG_FILES([contrib/cli-remote/Makefile]) if test -n "$HAVE_TIFF"; then AC_CONFIG_FILES([contrib/tsmm/Makefile]) fi fi AC_CONFIG_FILES([Makefile src/Makefile src/xjadeo/Makefile xjadeo.lsm]) AC_OUTPUT MIDIREPORT="" if test -n "$HAVE_PORTMIDI"; then MIDIREPORT="${MIDIREPORT}portmidi "; fi if test -n "$HAVE_JACKMIDI"; then MIDIREPORT="${MIDIREPORT}jack-midi "; fi if test -n "$ALSA_SEQ_MIDI"; then MIDIREPORT="${MIDIREPORT}alsa-seq "; fi if test -n "$ALSA_RAW_MIDI"; then MIDIREPORT="${MIDIREPORT}alsa-RAW "; fi if test -z "$HAVE_MIDI"; then MIDIREPORT="${MIDIREPORT}disabled."; fi if test -n "$HAVE_MQ"; then RCTLREPORT="POSIX-MQ"; elif test -n "$HAVE_IPCMSG"; then RCTLREPORT="IPC-MSG"; else RCTLREPORT="not avail."; fi if test -z "$HAVE_FT"; then OSDREPORT="disabled" else OSDREPORT=" - freetype: yes - default font: " if test -n "$fontfile" ; then OSDREPORT="${OSDREPORT}$fontfile"; else OSDREPORT="${OSDREPORT}-" fi fi if test -n "$HAVE_SWSCALE"; then FFSWREPORT="swscale"; else FFSWREPORT="img_convert"; fi CONTREPORT="no" if test "x$enable_contrib" = "xyes"; then CONTREPORT="yes libtiff (xjtsmm): "; if test -n "$HAVE_TIFF"; then CONTREPORT="${CONTREPORT}yes"; else CONTREPORT="${CONTREPORT}not avail."; fi fi if test -n "$HAVE_LIBXV"; then RPT_LIBXV="yes"; else RPT_LIBXV="not avail."; fi if test -n "$HAVE_IMLIB2"; then RPT_IMLIB2="yes"; else RPT_IMLIB2="not avail."; fi if test -n "$HAVE_MACOSX"; then RPT_MACOSX="yes"; else RPT_MACOSX="not avail."; fi if test -n "$HAVE_SDL"; then RPT_SDL="yes"; else RPT_SDL="not avail."; fi if test -n "$HAVE_LASH"; then RPT_LASH="yes"; else RPT_LASH="not avail."; fi if test -n "$HAVE_LIBLO"; then RPT_LIBLO="yes"; else RPT_LIBLO="not avail."; fi if test -n "$HAVE_QT4"; then RPT_QT4="yes"; else RPT_QT4="no"; fi if test -n "$HAVE_MACOSX"; then RPT_QT4="${RPT_QT4} (OSX-built-in)"; fi if test -n "$JACK_SESSION"; then RPT_JACKSESSION="yes"; else RPT_JACKSESSION="not avail."; fi if test -n "$HAVE_LTC"; then RPT_LTC="yes"; elif test -n "$HAVE_LTCSMPTE"; then RPT_LTC="yes, libltcsmpte -- deprecated, use https://github.com/x42/libltc"; else RPT_LTC="not avail."; fi AC_MSG_NOTICE([ ------------------------------------------------------------------------ $PACKAGE $VERSION - Configuration Report ------------------------------------------------------------------------ prefix: $prefix exec-prefix: $exec_prefix install path: $bindir System wide config: $sysconfdir/xjadeorc Video Displays - libxv: $RPT_LIBXV - libx11/imlib2: $RPT_IMLIB2 - mac/osx: $RPT_MACOSX - SDL: $RPT_SDL Sync: - JACK-transport: yes - LTC: $RPT_LTC - MIDI: $MIDIREPORT JACK-session: $RPT_JACKSESSION ffmpeg-scaling: $FFSWREPORT remote control: $RCTLREPORT OSC remote control: $RPT_LIBLO LASH: $RPT_LASH On-screen-display: $OSDREPORT GUI (qjadeo): $RPT_QT4 build contrib/*: $CONTREPORT ]) if test "x$enable_contrib" = "xyes"; then AC_MSG_NOTICE([ Note for Packagers: --enable-contrib does not make a difference when packaging all Programs in contrib are noinst targets. They are intended for advanced users, developers or testing only. ]) fi AC_MSG_NOTICE([ type "make" followed my "make install" as root. ]) xjadeo-0.7.6/TODO0000644000175000017500000000525211436325750010421 00000000000000TODO ------------- * fix maintainer-clean: removes icons ?! * XV + ffmpeg pixel aspect ratio. * complete contrib/tsmm and perform tests. * mq: - FIX multiple remote clients one xjadeo -> who gets the replies ? - multi drop queues and mq_notify() - multiple instances - named message queues + list of avail queues. - queue length and timeouts.. * ratain aspect ratio - letterbox option for imlib (+ SDL? ) - cache imlib2 letterbox border - revisit window hinting + aspect ratio resize * qjadeo - nicely parse xjinfo output. - allow to specify offset + "seek to" either as frame-integer or SMPTE string. * XV/X11 brightness/contrast control - LASH save - remote commands - restore prev/system settings on exit. * opt. cache cont. images from last keyframe. (backwards play) * ffmpeg packet queues (#) * testsuite for quality assurance and benchmarks. * remote commands to query mouse, fullscreen and on_top mode * map key bindings (cfg file -> to remote commands) and print help OSD -make key events generate remote-replies (notify GUI of changes) * xjadeorc man page * bring SDL up to scratch - should behave as X11 + SDL-SWSURFACE * decode DnD UTF8 etc. MIDI: - alsamidi - catch port re-assignments and remember em ? don't clash with check with lash+qjackctl ! TODO - next major version: ------------------------------------------------ * exact sync decode one frame ahead and use Xv/Xext -> VSYNC raster interrupt to trigger double buffer flip * option: don't poll for jack-time but register as jack-audio client -> jack will call xjadeo in a RT callback. * option: modularize time-sync + video-source (send time information via message queues) * dig into ffmpeg. * vacuum the code and clean the bath tub. * translations and internationalization ?! TODO - legacy and low priority issues / ideas --------------------------------------------- - read image sequences (eg. sgi) and playlists (vob) DISPLAY: - SDL RGB SWSURFACE (new videomode) - speed up YUV trancoding - have ffmpeg decode directly to shared-mem... - remember and set window position when (re-)creating window. - put xjadeo-session name in window title ? add some info and markups to the title (on top, offset, smpte) - freetype font config. outline font? color, xposition, size,.. MIDI: - portmidi: error handling (portmidi aborts on error) - jack midi REMOTE: - keyboard events. (-> generate remote msgs) - notify key event ?? (have client handle keystrokes on the xjadeo window) internal (default) key press handler if no-bidir remote ctrl. map key event to command OTHER: - check cpu load - dynamically increase delay if above threshold. xjadeo-0.7.6/Makefile.am0000644000175000017500000000230711464664425011771 00000000000000AC_AUX_DIR = m4 AC_MACRO_DIR = m4 SUBDIRS = src @ac_contrib_dir@ man_MANS = doc/xjadeo.1 doc/qjadeo.1 doc/xjremote.1 doc/xjinfo.1 EXTRA_DIST= \ xjadeo.lsm.in doc/xjadeo.png \ doc/xjadeo.xml doc/favicon.ico doc/Makefile doc/html.xsl doc/man.xsl \ doc/xjadeo.1 doc/qjadeo.1 doc/xjremote.1 doc/xjinfo.1\ src/xjadeo/icons/xjadeo-color.xpm \ src/xjadeo/icons/xjadeo.bitmap src/xjadeo/icons/xjadeo_mask.xbm\ src/xjadeo/icons/splash.bitmap src/xjadeo/icons/splash_mask.xbm\ src/xjadeo/icons/brightness.bitmap src/xjadeo/icons/brightness_mask.xbm\ src/xjadeo/icons/contrast.bitmap src/xjadeo/icons/contrast_mask.xbm\ src/xjadeo/icons/gamma.bitmap src/xjadeo/icons/gamma_mask.xbm\ src/xjadeo/icons/hue.bitmap src/xjadeo/icons/hue_mask.xbm\ src/xjadeo/icons/saturation.bitmap src/xjadeo/icons/saturation_mask.xbm\ src/xjadeo/avinfo.dtd \ doc/xjadeorc \ contrib/cli-remote/jadeo.c \ contrib/cli-remote/Makefile.am \ contrib/cli-remote/README \ contrib/xjadeo-example.avi \ contrib/xjadeo-example.avi \ contrib/encode.sh \ contrib/README MAINTAINERCLEANFILES = \ Makefile.in \ aclocal.m4 \ compile \ config.guess \ config.h.in \ config.sub \ configure \ depcomp \ install-sh \ Makefile.in \ missing xjadeo-0.7.6/compile0000755000175000017500000000727111437010433011300 00000000000000#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2009-10-06.20; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software # Foundation, Inc. # Written by Tom Tromey . # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xjadeo-0.7.6/contrib/0000755000175000017500000000000012200730320011424 500000000000000xjadeo-0.7.6/contrib/xjadeo-example.avi0000644000175000017500000002161011436273050014764 00000000000000RIFF#AVI LISThdrlavih8 xLISTstrlstrh8vidsMJPG xstrfDDxMJPGLIST$INFOISFTMEncoder dev-CVS--4.0.2JUNK[= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer junk data! =][= MPlayer jLISTXmovi00dc Lavc50.0.0 CS=ITU601C   "")  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzx" ?j(e~ wXZ ŭů+7O*?ҬUk{osKG^([Tuתj(_[/EGe"JV'Uz#‚OS[UzOb|7BRR+*۟Z>bĿTQE|I}uEP=\t![U^ WϗhU{XJ ·HEWĭת:~f5Q_#_^W*|No[OAXm!k?_yM0m _KQK?7pnhDTQE|I}uEP=\t![U^ WϗohUkYJ "Q_^[UQE~^?x~Ey^O?9osHGU?b5p/&oE/?ҥWU?|?]({]?5ak?۟B:)(+/ q?ЪJU?-/OEj()nQַ^1}l~*XUs =Mm!^ _ϘohTR*Z_{_sKGS"+N(9wXZe~8nZڬZOb|7B\*VWV?|?袊GZzƢ+_v^+?bW۟B:(+5X{/q7O*)-E/?ҽ¯KQE'QP?\t![U^ Wϗoh^Sy-/OEz()nQַ^1}l~z/ȯ??ҫՉ9osHGU?b5p/&oE/?ҥWU?|?](]?5ak?۟B:)(+/ q?ЪJU?-/OEz()nQַ^1}l~z/ȯ?5^O?W۟B:(+5X{/q7O*)-E/?ҽ¯)KQE'I(-;,?-s?_kBV.+nk5p8OLU{YJu[׼R_IjWcRR__WWUJ_kBV)knOS^ /j9-E/?ҽU?|5/ WX00dc Lavc50.0.0 CS=ITU601C   "")  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzx" ?j(e~ wXZ ŭů+7O*?ҬUk{osKG^([Tuתj(_[/EGe"JV'Uz#‚OS[UzOb|7BRR+*۟Z>bĿTQE|I}uEP=\t![U^ WϗhU{XJ ·HEWĭת:~f5Q_#_^W*|No[OAXm!k?_yM0m _KQK?7pnhDTQE|I}uEP=\t![U^ WϗohUkYJ "Q_^[UQE~^?x~Ey^O?9osHGU?b5p/&oE/?ҥWU?|?]({]?5ak?۟B:)(+/ q?ЪJU?-/OEj()nQַ^1}l~*XUs =Mm!^ _ϘohTR*Z_{_sKGS"+N(9wXZe~8nZڬZOb|7B\*VWV?|?袊GZzƢ+_v^+?bW۟B:(+5X{/q7O*)-E/?ҽ¯KQE'QP?\t![U^ Wϗoh^Sy-/OEz()nQַ^1}l~z/ȯ??ҫՉ9osHGU?b5p/&oE/?ҥWU?|?](]?5ak?۟B:)(+/ q?ЪJU?-/OEz()nQַ^1}l~z/ȯ?5^O?W۟B:(+5X{/q7O*)-E/?ҽ¯)KQE'I(-;,?-s?_kBV.+nk5p8OLU{YJu[׼R_IjWcRR__WWUJ_kBV)knOS^ /j9-E/?ҽU?|5/ WXidx1 00dc 00dc xjadeo-0.7.6/contrib/encode.sh0000755000175000017500000000505711436325750013170 00000000000000#!/bin/bash # # (C) 2005 robin@gareus.org # # distribute in terms of GPL # # simple script that loops through available mencoder # codecs and checks if xjadeo supports playback # # TODO: # * also loop through transcode export codecs. # * allow ./encoder.sh [] [mencoder options] # * unhardcode example file path. # * default to mpeg4 instead of mjpeg ? # function check_execs { if [ -z "$XJADEO" ]; then if [ -x ../src/xjadeo/xjadeo ]; then XJADEO=../src/xjadeo/xjadeo else XJADEO=$(which xjadeo) fi fi MENCODER=$(which mencoder) if [ -z "$MENCODER" -o -z "$XJADEO" ]; then echo "xjadeo or mencoder executable not found" fi echo "using $XJADEO" if [ -f ./xjadeo-example.avi ]; then EXAMPLE=./xjadeo-example.avi else EXAMPLE=/usr/share/doc/xjadeo/contrib/xjadeo-example.avi fi } function usage { echo "$0 []" echo " if no file is specified, a sample video provided with the source is used." } function cleanup { echo rm $OUTPUTFILE exit } function supported { echo -n "supported" if [ -z "$USE" ]; then USE=$codec; fi; } if [ "$1" = "-h" ]; then usage; exit; fi check_execs; INPUTFILE=$1 if [ -z "$1" ]; then INPUTFILE=$EXAMPLE; fi if [ ! -f $INPUTFILE ]; then echo "file not found: '$INPUTFILE'"; exit; fi OUTPUTFILE=`mktemp -t jadeo.XXXXXX` || exit USE="" trap cleanup 15 9 1 2 OPTS_GEN="-nosound -endpos 1" OPTS_SCALE="-vf scale=160:120" OPTS_CODEC="-ovc lavc -lavcopts keyint=1" #EXTRA_OPTS="-idx vbitrate=800 gray" VCODECS="mjpeg ljpeg dvvideo flv ffv1 mpeg4 h261 h263 h263p msmpeg4 msmpeg4v2 wmv1 wmv2 rv10 mpeg1video mpeg2video huffyuv ffvhuff asv1 asv2 svq1 snow" for codec in $VCODECS; do echo -n "trying codec: $codec - " $MENCODER $OPTS_GEN $OPTS_CODEC \ -lavcopts vcodec=$codec $OPTS_SCALE \ $INPUTFILE -o $OUTPUTFILE &>/dev/null $XJADEO -q -t $OUTPUTFILE &>/dev/null \ && supported \ || echo -n "not supported" echo; done if [ -n "$USE" ]; then echo echo "suggesting the use of $USE." echo "encode the File with:" echo " mencoder -nosound -vf scale=160:120 -ovc lavc \\" echo " -lavcopts keyint=1 -lavcopts vcodec=$USE \\" echo " $INPUTFILE -o output-file.avi" echo echo "adjust '-vf scale=width:height' " echo "adjust input-file: (here: $INPUTFILE) " echo "or remove the option to use size of source file or mencoder default" echo "see 'man mencoder' for more advanced options" else echo "Could not find a suitable codec." echo "check xjadeo installation." echo "print out 'man mencoder' or use transcode." fi cleanup xjadeo-0.7.6/contrib/tsmm/0000755000175000017500000000000012200730321012405 500000000000000xjadeo-0.7.6/contrib/tsmm/Makefile.am0000644000175000017500000000061711467217014014402 00000000000000noinst_PROGRAMS=xjtsmm xjtsmm_SOURCES = tsmm.c ../../aclocal.m4 ../../config.h ../../src/xjadeo/smpte.c ../../src/xjadeo/freetype.c xjtsmm_CFLAGS = -Wall -g -O3 -I../../src/xjadeo/ $(TIFF_CFLAGS) @FREETYPE_CFLAGS@ $(LASH_CFLAGS) xjtsmm_LDADD = $(TIFF_LIBS) @FREETYPE_LIBS@ -lm MAINTAINERCLEANFILES = Makefile.in # TODO: properly install perl-script this when it's completed EXTRA_DIST=tsmm.pl xjadeo-0.7.6/contrib/tsmm/README0000644000175000017500000000065711436325750013235 00000000000000** PRE_RELEASE ** xjtsmm uses xjadeo's OSD code and libtiff to generate image sequences with SMPTE and frame-number rendered on the frames. This tool is intended to verify xjadeo's seeking accurancy and check framerate converions... maybe later it can be used with xjadeo to render this information on existing video material. This was more fun than reading imagemagick's manual... -- robin Fri, 01 Dec 2006 21:09:28 +0100 xjadeo-0.7.6/contrib/tsmm/tsmm.pl0000755000175000017500000000542712133274344013672 00000000000000#!/usr/bin/perl $FPS="25"; #$FPS="29.97"; #$FPS="30"; #$FPS="24"; #$FPS="23.976"; #$FPS="24.976"; if ($#ARGV == 0) { $FPS=$ARGV[0]; } $DURATION="10:10:10"; #$VCODEC="theora"; # ffmpeg2theora #$VCODEC="libtheora"; #$VCODEC="mpeg4"; $VCODEC="mjpeg"; #$VCODEC="msmpeg4v2"; #$VCODEC="libx264"; #$OUTFILE="/tmp/tsmm-$FPS.ogv"; $OUTFILE="/tmp/tsmm-$FPS.avi"; #$OUTFILE="/tmp/tsmm-$FPS.mov"; $TEMP=`mktemp -d -t xjtsmm.XXXXXXXXXX` || die; chomp $TEMP; #$TEMP="/tmp/xjtsmm.BwZhRX5448"; # TODO trap sigint -> clean up # sub catch_zap { # die; # } # $SIG{HUP} = \&catch_hup; # $SIG{INT} = \&catch_zap; # #$SIG{QUIT} = \&catch_zap; # $SIG{KILL} = \&catch_zap; # $SIG{TERM} = \&catch_zap; # print "output file: $OUTFILE - codec: $VCODEC\n"; if (1) { print "1) generating tif images in folder $TEMP\n"; @args = ("./xjtsmm", "$TEMP", "$FPS", "$DURATION"); system(@args); if ($? != 0) { die "failed to execute: $!\n"; } } my @files; if (0) { # required for mencoder print "\n2) encoding tif -> jpg\n"; opendir(DIR,$TEMP); @files = grep { /\.tif$/ } readdir (DIR); closedir(DIR); $i=0; if ($#files > 0) { printf("frames left to convert: %i\n",$#files); foreach (@files) { my $frame = $_; printf ("%02.2f%% %s \r", ($i*100.0/$#files) , $frame); system("convert $TEMP/$frame $TEMP/$frame.jpg"); if ($? != 0) { die "failed to execute: $!\n"; } unlink ("$TEMP/$frame"); $i++; } } $SUFFIX=".tif.jpg"; $DELSFX=".jpg"; } else { print "\n2) skipped converting to jpg.\n"; opendir(DIR,$TEMP); @files = grep { /\.tif$/ } readdir (DIR); closedir(DIR); $SUFFIX=".tif"; $DELSFX=""; } if ("$FPS" eq "29.97") { $FPS="30000/1001"; print "using 30000/1001 for 29.97\n"; } if ("$FPS" eq "23.976") { $FPS="24000/1001"; print "using 24000/1001 for 23.976\n"; } if ("$FPS" eq "24.976") { $FPS="25000/1001"; print "using 25000/1001 for 24.976\n"; } if ("$FPS" eq "24.975") { $FPS="25000/1001"; print "using 25000/1001 for 24.975\n"; } if ("$FPS" eq "59.94") { $FPS="60000/1001"; print "using 60000/1001 for 59.94\n"; } print "\n3) encoding jpg -> $OUTFILE\n"; my @args; if ($VCODEC eq "theora") { @args = ("ffmpeg2theora", "$TEMP/frame_%7d$SUFFIX", "--inputfps", "$FPS", "-F", "$FPS", "-o","$OUTFILE"); } elsif ($VCODEC eq "libx264") { @args = ("ffmpeg", "-r", "$FPS", "-i", "$TEMP/frame_%7d$SUFFIX", "-r", "$FPS", "-vcodec", "libx264", "-vpre", "hq", "-y", "$OUTFILE"); } else { @args = ("ffmpeg", "-r", "$FPS", "-i", "$TEMP/frame_%7d$SUFFIX", "-r", "$FPS", "-vcodec", "$VCODEC", "-y", "$OUTFILE"); # @args = ("mencoder", "mf://$TEMP/*$SUFFIX", "-mf","fps=$FPS", "-mf", "type=jpg", "-o","$OUTFILE", "-ovc","lavc", "-lavcopts","vcodec=$VCODEC"); } system(@args); if (1) { print "cleaning up $TEMP\n"; foreach (@files) { unlink ("$TEMP/$_$DELSFX"); } rmdir $TEMP } system("ls -l $OUTFILE"); xjadeo-0.7.6/contrib/tsmm/Makefile.in0000644000175000017500000004724012200730266014411 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = xjtsmm$(EXEEXT) subdir = contrib/tsmm DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_xjtsmm_OBJECTS = xjtsmm-tsmm.$(OBJEXT) xjtsmm-smpte.$(OBJEXT) \ xjtsmm-freetype.$(OBJEXT) xjtsmm_OBJECTS = $(am_xjtsmm_OBJECTS) am__DEPENDENCIES_1 = xjtsmm_DEPENDENCIES = $(am__DEPENDENCIES_1) xjtsmm_LINK = $(CCLD) $(xjtsmm_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(xjtsmm_SOURCES) DIST_SOURCES = $(xjtsmm_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ xjtsmm_SOURCES = tsmm.c ../../aclocal.m4 ../../config.h ../../src/xjadeo/smpte.c ../../src/xjadeo/freetype.c xjtsmm_CFLAGS = -Wall -g -O3 -I../../src/xjadeo/ $(TIFF_CFLAGS) @FREETYPE_CFLAGS@ $(LASH_CFLAGS) xjtsmm_LDADD = $(TIFF_LIBS) @FREETYPE_LIBS@ -lm MAINTAINERCLEANFILES = Makefile.in # TODO: properly install perl-script this when it's completed EXTRA_DIST = tsmm.pl all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/tsmm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/tsmm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) xjtsmm$(EXEEXT): $(xjtsmm_OBJECTS) $(xjtsmm_DEPENDENCIES) $(EXTRA_xjtsmm_DEPENDENCIES) @rm -f xjtsmm$(EXEEXT) $(xjtsmm_LINK) $(xjtsmm_OBJECTS) $(xjtsmm_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjtsmm-freetype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjtsmm-smpte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjtsmm-tsmm.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` xjtsmm-tsmm.o: tsmm.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-tsmm.o -MD -MP -MF $(DEPDIR)/xjtsmm-tsmm.Tpo -c -o xjtsmm-tsmm.o `test -f 'tsmm.c' || echo '$(srcdir)/'`tsmm.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-tsmm.Tpo $(DEPDIR)/xjtsmm-tsmm.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tsmm.c' object='xjtsmm-tsmm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-tsmm.o `test -f 'tsmm.c' || echo '$(srcdir)/'`tsmm.c xjtsmm-tsmm.obj: tsmm.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-tsmm.obj -MD -MP -MF $(DEPDIR)/xjtsmm-tsmm.Tpo -c -o xjtsmm-tsmm.obj `if test -f 'tsmm.c'; then $(CYGPATH_W) 'tsmm.c'; else $(CYGPATH_W) '$(srcdir)/tsmm.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-tsmm.Tpo $(DEPDIR)/xjtsmm-tsmm.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tsmm.c' object='xjtsmm-tsmm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-tsmm.obj `if test -f 'tsmm.c'; then $(CYGPATH_W) 'tsmm.c'; else $(CYGPATH_W) '$(srcdir)/tsmm.c'; fi` xjtsmm-smpte.o: ../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-smpte.o -MD -MP -MF $(DEPDIR)/xjtsmm-smpte.Tpo -c -o xjtsmm-smpte.o `test -f '../../src/xjadeo/smpte.c' || echo '$(srcdir)/'`../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-smpte.Tpo $(DEPDIR)/xjtsmm-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/smpte.c' object='xjtsmm-smpte.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-smpte.o `test -f '../../src/xjadeo/smpte.c' || echo '$(srcdir)/'`../../src/xjadeo/smpte.c xjtsmm-smpte.obj: ../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-smpte.obj -MD -MP -MF $(DEPDIR)/xjtsmm-smpte.Tpo -c -o xjtsmm-smpte.obj `if test -f '../../src/xjadeo/smpte.c'; then $(CYGPATH_W) '../../src/xjadeo/smpte.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/smpte.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-smpte.Tpo $(DEPDIR)/xjtsmm-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/smpte.c' object='xjtsmm-smpte.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-smpte.obj `if test -f '../../src/xjadeo/smpte.c'; then $(CYGPATH_W) '../../src/xjadeo/smpte.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/smpte.c'; fi` xjtsmm-freetype.o: ../../src/xjadeo/freetype.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-freetype.o -MD -MP -MF $(DEPDIR)/xjtsmm-freetype.Tpo -c -o xjtsmm-freetype.o `test -f '../../src/xjadeo/freetype.c' || echo '$(srcdir)/'`../../src/xjadeo/freetype.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-freetype.Tpo $(DEPDIR)/xjtsmm-freetype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/freetype.c' object='xjtsmm-freetype.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-freetype.o `test -f '../../src/xjadeo/freetype.c' || echo '$(srcdir)/'`../../src/xjadeo/freetype.c xjtsmm-freetype.obj: ../../src/xjadeo/freetype.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -MT xjtsmm-freetype.obj -MD -MP -MF $(DEPDIR)/xjtsmm-freetype.Tpo -c -o xjtsmm-freetype.obj `if test -f '../../src/xjadeo/freetype.c'; then $(CYGPATH_W) '../../src/xjadeo/freetype.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/freetype.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjtsmm-freetype.Tpo $(DEPDIR)/xjtsmm-freetype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/freetype.c' object='xjtsmm-freetype.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjtsmm_CFLAGS) $(CFLAGS) -c -o xjtsmm-freetype.obj `if test -f '../../src/xjadeo/freetype.c'; then $(CYGPATH_W) '../../src/xjadeo/freetype.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/freetype.c'; fi` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/contrib/tsmm/tsmm.c0000644000175000017500000001760212133274332013471 00000000000000/* tsmm - time stamp movie maker * * (c) 2006 * Robin Gareus * * 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, 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. * */ #define _GNU_SOURCE #include #include #include #include #include #include #include #define MIN(A,B) (((A)<(B)) ? (A) : (B)) char *program_name; /* hardcoded settings */ int want_quiet = 0; int want_verbose = 0; int want_debug = 0; int want_dropframes =0; // _force_ drop-frame TC default: 0 int have_dropframes =0; // use drop-frame-timecode (use with 30000.0/1001.0 fps) #ifdef HAVE_MIDI int midi_clkconvert =0; /* --midifps [0:MTC|1:VIDEO|2:RESAMPLE] */ #endif int want_autodrop =1; /* --nodropframes -n (hidden option) */ double framerate = 25; //#define OSD_fontfile "/home/rgareus/.fonts/DroidSansMono.ttf" #define OSD_fontfile FONT_FILE extern unsigned char ST_image[][ST_WIDTH]; extern int ST_rightend; int OSD_mode = 0; #define ST_BG ((OSD_mode&OSD_BOX)?0:1) typedef struct { char *text; int xpos; int yperc; } text_element; static void usage (int status) { printf ("%s - render time-code on tiff frames\n", program_name); printf ("usage: %s [fps] [duration] [height]\n", program_name); printf ("" "\n xjtsmm generates a tiff image-sequence (16:9)" "\n with the frame number and SMPTE rendered on a black background." "\n use with .../xjadeo/trunk/contrib/tsmm/tsmm.pl" "\n to generate a video-file from the image-sequence." "\n default is 25fps and a duration of 2:10:15" "\n example:" "\n mkdir /tmp/sequence/ " "\n %s /tmp/sequence/" "\n", program_name); exit (status); } void set_positions(int *xalign, int *yalign, int w, int h, int xpos, int yperc) { if (xalign) { if (xpos == OSD_LEFT) *xalign=ST_PADDING; // left else if (xpos == OSD_RIGHT) *xalign=w-ST_PADDING-ST_rightend; // right else *xalign=(w-ST_rightend)/2; // center } if (yalign) { int fh = MIN(ST_HEIGHT, h/15); *yalign= (h - fh) * yperc /100.0; } // if (xalign && yalign) printf ("DEBUG: x:%i y:%i\n",*xalign,*yalign); } int render_frame (char *filename, int w, int h, text_element *te) { TIFF *out; uint32 rps; uint16 bps, spp ; uint32 imageStripsize; int nos; //< number of strips int i,ii; tdata_t buf; tstrip_t strip; int xalign, yalign; if (!te) return(1); out = TIFFOpen(filename, "w"); if (!out ) { printf("could not open output file\n"); return 1; } rps=w; spp=3; bps=8; /* Magical stuff to create the image */ TIFFSetField(out, TIFFTAG_IMAGEWIDTH, w); TIFFSetField(out, TIFFTAG_IMAGELENGTH, h); TIFFSetField(out, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, bps); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, spp); TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rps); imageStripsize = TIFFStripSize (out); nos = w*h*spp/imageStripsize; strip = 0; if (nos != 1) { printf("image size needs to be mult. of 8, or image is too large.\n"); return (1); } if (want_verbose) { printf ("myInfo: w:%u h:%u bps:%u spp:%u rps:%u\n",w,h,bps,spp,rps); printf ("extInfo: nos:%u strip-size:%u\n",nos,imageStripsize); } buf = _TIFFmalloc(imageStripsize); memset(buf,0,imageStripsize); ii=0; const int fh = MIN(ST_HEIGHT, h/15); const int fo = ST_HEIGHT - fh; while (te[ii].text) { int x,y; if (want_verbose) printf("rendering text: %s\n",te[ii].text); if ( render_font(OSD_fontfile, te[ii].text, h/15) ) return(1); set_positions(&xalign, &yalign, w, h, te[ii].xpos, te[ii].yperc); for (x=0; x= ST_BG) { i= spp* ((x+xalign)+w*(y+yalign)); ((uint8*)buf)[i+0] = ST_image[y+fo][x]; ((uint8*)buf)[i+1] = ST_image[y+fo][x]; ((uint8*)buf)[i+2] = ST_image[y+fo][x]; } } } ii++; } TIFFWriteEncodedStrip(out, strip, buf, imageStripsize); _TIFFfree(buf); TIFFClose(out); return(0); } int test_dir(char *d) { struct stat s; int result= stat(d, &s); if (result != 0) return 1; /* stat() failed */ if (!S_ISDIR(s.st_mode)) return 1; /* is not a directory file */ if (s.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) return 0; /* is writeable */ return 1; } #define MAX_PATH 1024 int main (int argc, char **argv) { char filename[MAX_PATH]; char *filepath = NULL; text_element *te = calloc(5,sizeof(text_element)); int i; int err = 0; int last_frame=150; int w=640; int h=360; program_name=argv[0]; if (argc<2) usage(1); if (argc>1) filepath=argv[1]; if (argc>2) { framerate=atof(argv[2]); if (framerate == 25) want_dropframes =0; else if (framerate == 29.97) want_dropframes=1; else if (framerate == 24) want_dropframes=0; else if (framerate == 30) want_dropframes=0; else { printf("\nWARNING: untested video framerate!\n\n"); } } if (argc>3) { last_frame=smptestring_to_frame(argv[3]); } else { last_frame=smptestring_to_frame("2:10:15"); } if (argc>4) { h = atoi(argv[4]); w = h * 16 / 9; if (w < 352 || w > 2048) { printf("\nWARNING: untested video geometry!\n\n"); } } if (argc>5) usage(1); if (test_dir(filepath)) { printf("directory %s does not exist\n",filepath); return(1); } printf("writing %s/frame_%07i.tif -> %s/frame_%07i.tif\n",filepath,0,filepath,last_frame); printf("waiting 3 sec. press CTRL-C to interrupt.\n"); fflush(stdout); sleep(3); te[0].xpos=OSD_CENTER; te[0].yperc=5; te[1].xpos=OSD_CENTER; te[1].yperc=98; // first frame snprintf(filename,MAX_PATH,"%s/frame_%07i.tif",filepath,0); asprintf(&(te[0].text),"Frame: %i",0); te[1].text=calloc(48,sizeof(char)); frame_to_smptestring(te[1].text,0); te[2].text=calloc(48,sizeof(char)); sprintf(te[2].text,"Duration: "); frame_to_smptestring(te[2].text+10,last_frame); te[2].xpos=OSD_CENTER; te[2].yperc=30; asprintf(&(te[3].text),"FPS: %g",framerate); te[3].xpos=OSD_CENTER; te[3].yperc=70; render_frame(filename,w,h,te); free(te[2].text); te[2].text=NULL; free(te[3].text); te[3].text=NULL; for (i=1;i' messages to stdout. It is a crude way to forward sync information from one host to another. I've been using a small script 'rjadeo.sh' to start a xjadeo on a local display of the remote-host: rjadeo.sh: (on remote host) --------8<------- #!/bin/sh export DISPLAY=:0 exec ~/xjadeo $@ &>/dev/null -------->8------- ./xjadeo-rcli | ssh ~/bin/rjadeo.sh -R This does not require the remote hosts to run a jackd, but gets you a monitor screen in sync with your local jack transport or MTC. With TCP or even SSL overhead, the latency is unpredictable, but even on a cheap system acceptable: playing at 25 fps, I got less than one video frame skew when transmitting to 2 remote hosts simulaneously on a local 11Mbit/s wireless! However if you want to have an accurate synchronization use netjack.sf.net to sync transport of the jackd's via UDP. ### jadeo.c: this is a proof of concept code. much of the code is hardcoded. edit jadeo.c for your needs.. * it outputs some hardcoded remote-commands to initialize the xjadeo * connect to local jackd or MIDI TC source. and generate 'seek ' messages if the frame changes. * read from and echo lines to . allows to insert custom remote commands. ### using the 'seek' remote command to play a movie is not an intended feature of xjadeo! Neither is the concept of passing sync info like this. However it may come in handy.. xjadeo-0.7.6/contrib/cli-remote/Makefile.in0000644000175000017500000005344412200730266015474 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = jadeo-rcli$(EXEEXT) subdir = contrib/cli-remote DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_jadeo_rcli_OBJECTS = jadeo_rcli-jadeo.$(OBJEXT) \ jadeo_rcli-jack.$(OBJEXT) jadeo_rcli-midi.$(OBJEXT) \ jadeo_rcli-smpte.$(OBJEXT) jadeo_rcli_OBJECTS = $(am_jadeo_rcli_OBJECTS) am__DEPENDENCIES_1 = jadeo_rcli_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) jadeo_rcli_LINK = $(CCLD) $(jadeo_rcli_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(jadeo_rcli_SOURCES) DIST_SOURCES = $(jadeo_rcli_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ jadeo_rcli_SOURCES = jadeo.c ../../aclocal.m4 ../../config.h ../../src/xjadeo/jack.c ../../src/xjadeo/midi.c ../../src/xjadeo/smpte.c jadeo_rcli_CFLAGS = -Wall -g -O3 -I../../src/xjadeo/ $(LASH_CFLAGS) jadeo_rcli_LDADD = -ljack $(MIDI_LIBS) $(LASH_LIBS) -lm MAINTAINERCLEANFILES = Makefile.in all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/cli-remote/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/cli-remote/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) jadeo-rcli$(EXEEXT): $(jadeo_rcli_OBJECTS) $(jadeo_rcli_DEPENDENCIES) $(EXTRA_jadeo_rcli_DEPENDENCIES) @rm -f jadeo-rcli$(EXEEXT) $(jadeo_rcli_LINK) $(jadeo_rcli_OBJECTS) $(jadeo_rcli_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jadeo_rcli-jack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jadeo_rcli-jadeo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jadeo_rcli-midi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jadeo_rcli-smpte.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` jadeo_rcli-jadeo.o: jadeo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-jadeo.o -MD -MP -MF $(DEPDIR)/jadeo_rcli-jadeo.Tpo -c -o jadeo_rcli-jadeo.o `test -f 'jadeo.c' || echo '$(srcdir)/'`jadeo.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-jadeo.Tpo $(DEPDIR)/jadeo_rcli-jadeo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jadeo.c' object='jadeo_rcli-jadeo.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-jadeo.o `test -f 'jadeo.c' || echo '$(srcdir)/'`jadeo.c jadeo_rcli-jadeo.obj: jadeo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-jadeo.obj -MD -MP -MF $(DEPDIR)/jadeo_rcli-jadeo.Tpo -c -o jadeo_rcli-jadeo.obj `if test -f 'jadeo.c'; then $(CYGPATH_W) 'jadeo.c'; else $(CYGPATH_W) '$(srcdir)/jadeo.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-jadeo.Tpo $(DEPDIR)/jadeo_rcli-jadeo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jadeo.c' object='jadeo_rcli-jadeo.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-jadeo.obj `if test -f 'jadeo.c'; then $(CYGPATH_W) 'jadeo.c'; else $(CYGPATH_W) '$(srcdir)/jadeo.c'; fi` jadeo_rcli-jack.o: ../../src/xjadeo/jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-jack.o -MD -MP -MF $(DEPDIR)/jadeo_rcli-jack.Tpo -c -o jadeo_rcli-jack.o `test -f '../../src/xjadeo/jack.c' || echo '$(srcdir)/'`../../src/xjadeo/jack.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-jack.Tpo $(DEPDIR)/jadeo_rcli-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/jack.c' object='jadeo_rcli-jack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-jack.o `test -f '../../src/xjadeo/jack.c' || echo '$(srcdir)/'`../../src/xjadeo/jack.c jadeo_rcli-jack.obj: ../../src/xjadeo/jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-jack.obj -MD -MP -MF $(DEPDIR)/jadeo_rcli-jack.Tpo -c -o jadeo_rcli-jack.obj `if test -f '../../src/xjadeo/jack.c'; then $(CYGPATH_W) '../../src/xjadeo/jack.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/jack.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-jack.Tpo $(DEPDIR)/jadeo_rcli-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/jack.c' object='jadeo_rcli-jack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-jack.obj `if test -f '../../src/xjadeo/jack.c'; then $(CYGPATH_W) '../../src/xjadeo/jack.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/jack.c'; fi` jadeo_rcli-midi.o: ../../src/xjadeo/midi.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-midi.o -MD -MP -MF $(DEPDIR)/jadeo_rcli-midi.Tpo -c -o jadeo_rcli-midi.o `test -f '../../src/xjadeo/midi.c' || echo '$(srcdir)/'`../../src/xjadeo/midi.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-midi.Tpo $(DEPDIR)/jadeo_rcli-midi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/midi.c' object='jadeo_rcli-midi.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-midi.o `test -f '../../src/xjadeo/midi.c' || echo '$(srcdir)/'`../../src/xjadeo/midi.c jadeo_rcli-midi.obj: ../../src/xjadeo/midi.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-midi.obj -MD -MP -MF $(DEPDIR)/jadeo_rcli-midi.Tpo -c -o jadeo_rcli-midi.obj `if test -f '../../src/xjadeo/midi.c'; then $(CYGPATH_W) '../../src/xjadeo/midi.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/midi.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-midi.Tpo $(DEPDIR)/jadeo_rcli-midi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/midi.c' object='jadeo_rcli-midi.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-midi.obj `if test -f '../../src/xjadeo/midi.c'; then $(CYGPATH_W) '../../src/xjadeo/midi.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/midi.c'; fi` jadeo_rcli-smpte.o: ../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-smpte.o -MD -MP -MF $(DEPDIR)/jadeo_rcli-smpte.Tpo -c -o jadeo_rcli-smpte.o `test -f '../../src/xjadeo/smpte.c' || echo '$(srcdir)/'`../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-smpte.Tpo $(DEPDIR)/jadeo_rcli-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/smpte.c' object='jadeo_rcli-smpte.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-smpte.o `test -f '../../src/xjadeo/smpte.c' || echo '$(srcdir)/'`../../src/xjadeo/smpte.c jadeo_rcli-smpte.obj: ../../src/xjadeo/smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -MT jadeo_rcli-smpte.obj -MD -MP -MF $(DEPDIR)/jadeo_rcli-smpte.Tpo -c -o jadeo_rcli-smpte.obj `if test -f '../../src/xjadeo/smpte.c'; then $(CYGPATH_W) '../../src/xjadeo/smpte.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/smpte.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/jadeo_rcli-smpte.Tpo $(DEPDIR)/jadeo_rcli-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../../src/xjadeo/smpte.c' object='jadeo_rcli-smpte.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jadeo_rcli_CFLAGS) $(CFLAGS) -c -o jadeo_rcli-smpte.obj `if test -f '../../src/xjadeo/smpte.c'; then $(CYGPATH_W) '../../src/xjadeo/smpte.c'; else $(CYGPATH_W) '$(srcdir)/../../src/xjadeo/smpte.c'; fi` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/contrib/cli-remote/jadeo.c0000644000175000017500000000743211607312104014646 00000000000000/* * xjadeo windowless remote-master * * 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, 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. * * (C) 2006 Robin Gareus * * This is a quick hack to generate xjadeo remote commands * to stdout. this version also reads from stdin and echos * commands to stdout. * * the default "remote command header" is hardcoded. * * * examples: * ./xjadeo-rcli | xjadeo -R &>/dev/null * ./xjadeo-rcli | rsh xjadeo -R * ./xjadeo-rcli | ssh <[user@]host> rjadeo.sh -R * */ #include #include #include #include #include double framerate; // = frames / duration; char *program_name; long frames = 25; double duration =1; /* hardcoded settings */ int want_quiet = 1; int want_verbose = 0; int want_debug = 0; #ifdef HAVE_MIDI int midi_clkconvert = 0; int midi_clkadj = 0; char *midiid = NULL; #endif int want_autodrop =1; /* --nodropframes -n (hidden option) */ int want_dropframes =0; /* --dropframes -N BEWARE! */ int have_dropframes =0; double delay = 0.04; // HERE: for MTC timeout only #ifdef HAVE_LASH lash_client_t *lash_client; #endif #ifdef JACK_SESSION // XXX jadeo does not actually support JACK-SESSION // but it uses xjadeo's jack.c char *jack_uuid = NULL; int loop_flag = 1; int interaction_override =0; #endif /* mode of operation */ int jack = 1; int readfromstdin = 1; // set to 0 or 1! void usage(int status) { printf("usage %s [fps-num:=25] [fps-den:=1]\n",program_name); exit(status); } int main (int argc, char **argv) { int run; char *filename = NULL; long frame, pframe; program_name = argv[0]; if (argc>3) usage(1); if (argc==3) { filename=argv[2]; frames=atol(argv[1]); } else if (argc>1) filename=argv[1]; if (frames < 1 || duration < 1) usage(1); if (!filename) usage(1); framerate = (double) frames / (double) duration; struct timeval tv; fd_set set; //TODO: trap some signals.. -> run=0; if (jack) { open_jack(); run= jack_connected(); } else{ #ifdef HAVE_MIDI midi_open(midiid); #endif run= midi_connected(); } printf ("jack disconnect\n"); printf ("load %s\n",filename); printf ("window mouse off\n"); printf ("window letterbox on\n"); printf ("window fullscreen on\n"); // printf ("window resize 880x545\n"); printf ("osd font /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf\n"); printf ("osd off\n"); printf ("osd smpte 100\n"); printf ("set fps %.0f\n",framerate); pframe=-1; while (run) { tv.tv_sec = 0; tv.tv_usec = 1000000/framerate; FD_ZERO(&set); if (readfromstdin) FD_SET(0, &set); if (select(0+readfromstdin, &set, NULL, NULL, &tv) ) if (readfromstdin) { size_t rv; char buf[BUFSIZ]; if ((rv=read(0,buf,BUFSIZ)) > 0) { if (!strncmp(buf,"exit",3)) { printf ("quit\n"); run=0; }else write(1,buf,rv); } } if (jack) frame= jack_poll_frame(); #ifdef HAVE_MIDI else frame= midi_poll_frame(); #else else exit (1); #endif if (pframe!=frame) printf ("seek %li\n",frame); pframe=frame; fflush(stdout); } if (jack) close_jack(); #ifdef HAVE_MIDI else midi_close(); #endif return (0); } int saveconfig (const char *filename) { return 0; } /* vim:set ts=8 sts=8 sw=8: */ xjadeo-0.7.6/contrib/README0000644000175000017500000000101411436325750012241 00000000000000Stuff that came to be while developing and playing with xjadeo. xjadeo-example.avi example video known to work with xjadeo. it's only one 160x120 frame displaying color-bars Motion JPEG AVI. no audio. encode.sh: tests various mencoder codecs re-encodes the example video and tries xjadeo -t outputs an example mencoder line cli-remote: command line interface - remote xjadeo. example code that generates xjadeo remote commands to be piped into a 'xjadeo -R' instance. jadio: experimental cli audio player xjadeo-0.7.6/ChangeLog0000644000175000017500000005026312200730121011463 000000000000002013-08-08 (0.7.6) Robin Gareus * fix DAR, SAR aspect ratio and odd-number of lines * detect jack-latency API independently from jack-sessio * fix some compiler warnings & work-around undocumented libav API change 2013-07-25 (0.7.5) Robin Gareus * fix UYVY422 colorspace (OSX default) stride * xjinfo - fix segfault if invalid file-name is given 2013-06-27 (0.7.4) Robin Gareus * fix for XVideo, YUV - force even number of pixels per line * OSX build w/header-pad for dynamic libs. 2013-06-16 (0.7.3) Robin Gareus * propagate unhandled keyboard events to remote ctrl * Add Czech translation by Pavel Fric * add missing remote.h source * fix windows installer * tentative seek-to-frame workarounds for OSX m4v. 2013-06-09 (0.7.2) Robin Gareus * rework X11 keyboard events (use xkeymap) * allow to forward keyboard events via remote-control * request settings-dump on exit (via remote-ctrl) 2013-05-31 (0.7.1) Robin Gareus * fix OSD font-spacing * add -T option to set OSD font * fix 32/64bit issue in xjinfo, allow to hardedn qjadeo * deprecated qjadeo GUI and xjinfo (use ffprobe instead) explicit --enable-qt-gui is requred to build either. * prepare moving repo & issue-tracker to github. * fix LTC jack-latency compensation * fix LTC 32 bit wrap-around (i386 only) * various build-system updates 2013-04-07 (0.7.0) Robin Gareus * fixes for clang/llvm compiler * SMPTE on-screen-display ignore offset * use libltc; deprecate libltcsmpte support * reset aspect-ratio when opening a new file * add /jadeo/cmd OSC command - full remote control * fix OSC concurrency problems. * graceful jack shutdown handling * reverse scroll-wheel zoom direction 2012-05-14 (0.6.4) Robin Gareus * pixel and display aspect ratio corrections done during rendering 2012-04-15 (0.6.3) Robin Gareus * update to new ffmpeg API * fixed some compiler warnings. 2011-09-26 (0.6.2) Robin Gareus * updated French translation Raphael Doursenaud) * fixed issue with remote-ctrl closing filedes on fork. 2011-07-13 (0.6.1) Robin Gareus * added qjadeo translations - thanks to Alexandre Prokoudine * JACK-Session support. * LTC+JACK - new jack latency API 2011-07-03 (0.6.0) Robin Gareus * Changes since 0.6.0-rc7: - fixed LTC parsing for other than 25fps - splash screen update (fixed duration) - added greek translation by Michales Michaloudes. - ffmpeg compat - build system updates (require libX, git version detection..) - version 0.6.0 * Changes since 0.4.X: - rewritten/updated manual - win32 support - qjadeo QT3 -> QT4 - added LTC sync source - disabled LASH (by default) soon to be removed in favor of JACK-Session - various autoconf updates - interaction overrides and remote-control features for ardour integration 2010-11-21 (0.6.0~rc7) Robin Gareus * release candidate v0.6 ... see git changelog 2010-11-12 (0.6.0~rc6) Robin Gareus * release candidate v0.6 ... see git changelog 2010-11-12 (0.6.0~rc5) Robin Gareus * release candidate v0.6 ... see git changelog 2010-11-11 (0.6.0~rc4) Robin Gareus * release candidate v0.6 ... see git changelog 2010-11-10 (0.6.0~rc3) Robin Gareus * release candidate v0.6 ... see git changelog 2010-11-10 (0.6.0~rc2) Robin Gareus * release candidate v0.6 ... see git changelog 2010-10-03 (0.6.0~rc1) Robin Gareus * release candidate v0.6 detailed changelog will be included here with 0.6.0 2010-10-01 (0.5.99) Robin Gareus * discard 0.5-branch (xj-five) opengl/vblank/shmem experiments 2010-08-03 (0.4.13) Robin Gareus * made portmidi optional - Thanks to Alex Stone. * added 'mididriver' config-file option * qjadeo - MTC menu: ALSA/JACK * qjadeo - added OSD box toggle * fixed remote-ctrl frame notification * use ffmpeg fps ratio calculation functions * fixed some spelling errors & text clarifications 2010-07-25 (0.4.12) Robin Gareus * allow to select midi-driver on runtime (JACK-MIDI, ALSA-sequencer, portmidi, ALSA-raw-midi). * fixed rounding error for non-integer framerates in the remote-ctrl SMPTE-text parser. (xjadeo+JACK or MTC is not affected; it's only relevant when useing 'seek ' instead of 'seek SMPTE' * fixed unresponsive "Preferences" Alert message (OSX) * added JACK-Midi to menu (OSX) 2010-07-15 (0.4.11) Robin Gareus * new defaults (update-fps = filefps, MTC-quater-frame: on) * added System-V IPC remote ctrl mode (for OSX) * add xjremote to OSX bundle * many small remote-ctl extensions for ardour3 integration * added JACK-MIDI for MTC 2010-05-23 (0.4.10) Robin Gareus * implemented file drop-frame timecode detection 2010-02-08 (0.4.9) Robin Gareus * re-implemented start-time parsing * re-added contrib folder to dist 2010-02-05 (0.4.8) Robin Gareus * fixed parsing video-start offset for m2v files 2009-04-04 (0.4.7) Robin Gareus * added basic OSC control support * cleaned up configure.ac - ffmpeg-header include files * framecropping (for sahra's installation) 2009-02-02 (0.4.6) Robin Gareus * updated URLs in doc * minor fixes for ffmpeg API changes 2008-07-28 (0.4.5) Robin Gareus * xjadeo now leaves XV-colorkey untouched. * changed include paths for ffmpeg. * fixed a compiler warnings for gcc-4.3.1 2008-04-01 (0.4.4) Robin Gareus * updates for ffmpeg-svn compat (ffmpeg-svn 12642,12665) 2008-03-20 (0.4.3) Robin Gareus * fixed backwards compat ffmpeg w/o swscale * fixed segfault using remote-mode w/o video-file (swscale) 2007-09-12 (0.4.2) Robin Gareus * added -s --fullscreen command line option * removed SDL video mode * obsoleted imlib1 * fixed automake variable substitution * added ffmpeg swscale support 2007-05-07 (0.4.1) Robin Gareus * default black-YUV frame * minor updates in the manual. * preparing for 0.5 development branch. * fixed contrib configure bug. 2007-02-23 (0.4.0) Robin Gareus * added call to jack_activate * fixed segfault when movie is smaller than splashscreen (neg. x-offset) * disabled splash-screen when it's larger than current movie anyway. * added POSIX sys includes * added -lavutil -lmp3lame to auto-detected ffmpeg configuration. * disabled PPC duration workaround (only ffmpeg-0.4.9 - LIBAVFORMAT_BUILD 4616) * merged-in French qjadeo translation - thanks to R. Doursenaud * fixed av_q2d for LIBAVFORMAT_BUILD <= 4623 2006-12-02 (0.4.0~rc3) Robin Gareus * fixed fontfile= config option * fixed build --enable-contrib --enable-midi=off 2006-12-01 (0.4.0~rc2) Robin Gareus * fixed version to comply with RPM '-' -> '.' -> 0.4.0.rc2 * added contrib/tsmm - time stamp movie maker * added autogen.sh to debian/rules 2006-11-30 (0.4.0~rc1) Robin Gareus * bump version to 0.4.0-rc1 2006-11-30 (0.3.29-3) Robin Gareus * qjadeo - round update fps * xjadeo remote commands - 'window size' -> 'window resize' - 'window fixaspect' -> RMB 2006-11-30 (0.3.29-2) Robin Gareus * debian control imlib2-dev -> libimlib2-dev * xjadeo new remote command - 'window mouse [on|off|toggle]' 2006-11-29 (0.3.29-1) Robin Gareus * updated xjinfo + dtd - rational values - added sample aspect ratio - updated information fields (title,author,..) - xml-version 0.2 2006-11-28 (0.3.29) Robin Gareus * qjadeo disable frame notification on disconnect, terminate xjadeo when disconnecting. * xjadeo remote commands: 'notify off' alias for 'notify disable' 'exit' - print warning that xjadeo is not xjremote * fixed contrib build * added xml-preamble and DOCTYPE to xjinfo 2006-11-27 (0.3.28) Robin Gareus * fixed typos * begin to clean up source tree for 0.4 * removed pts/dts calc for ffmpeg_seek LIBAVFORMAT_BUILD < 4617 * new seek code only for AVFORMAT_BUILD > 2629 * missing manual page xjinfo.1 2006-11-27 x42 *** CHANGELOG STYLE CHANGE *** git log is the preferred method. 2006-11-25 x42 - manual and xjadeorc typo - xjadeo usage() and cosmetic code changes - preliminary jack_position_t->audio_frames_per_video_frame support. 2006-11-24 x42 - splash screen + config option - '-A' --avverbose : print ffmpeg messages. - spec.in updated. - install icons and menu entry - mpeg dts/pts timestamps - --genpts, -P (ffmpeg option) - --ignorefileoffset, -I for splitted avi/vob files. * version v0.3.27 2006-11-22 x42 - XV (hardware) color eq - imlib2 (software) color eq - OSD improvements - changed qjadeo environement variable from XJADEO to XJREMOTE. - reduced xjremote timeout 5sec -> 0.5 sec - qjadeo extra mencoder options * version v0.3.26 2006-11-21 x42 - fixed xjremote, xjadeo path detection. - xjinfo version '-V' 2006-11-21 x42 - xjinfo - fixed BINDIR, SYSCFGFIR '/' suffix - qtjadeo file-info via xjinfo - version via svnversion - qjadeo icons + seek menu * version v0.3.24 2006-11-20 x42 - qt-gui removed debug, added QMessageBoxes, qjadeo preferences dialog update. - xjadeo: 'l' key to toggle letterbox - letterbox mode for imlib2 - xjadeo DnD fix * version v0.3.23 2006-11-19 x42 - qt-gui improvements (mencoder dialog, prefs) 2006-11-18 x42 - LASH remember window position - key bindings to scale video output 2006-11-17 x42 - change between all window modes: x11+imlib re-init/retain - added keystrokes to control OSD and offset * version v0.3.22 2006-11-16 x42 - properly convert escaped DnD text - portmidi quarter frames support 2006-11-15 x42 - SMPTE / MIDI TC drop frames code - alsa-midi: parse quarter frames (-C) - added midi options to cfgfile - removed command 'midi autoconnect' and added 'midi reconnect' - crudly convert '%20' to whitespaces when receiving drag data. - added '-P' --noping option to xjremote. 2006-11-14 rgareus - preparing for proper midi+smpte conversion. - added debian files to SVN. 2006-11-14 rgareus - qjadeo - sync-menu radio buttons - position slider (sync off mode) - query xjadeo settings (OSD, sync) on startup - renamed fullscreen -> maximize - xjadeo: get osdcfg, get syncsource remote commands - Xv letterbox (-b, --leterbox, "window letterbox [on|off]") - use file-fps as delay when (0 >= delay ) * version v0.3.21 2006-11-13 rgareus - fixed drag/drop accept area. - catch signals + clean up 2006-11-13 rgareus - `ffmpeg-config` and other configure.ac updates. - lash=[yes|no] and mq=[yes|no] config file options. - a little more documentation. * version v0.3.20 2006-11-12 rgareus - moved icons - completed lash support - unlink stale message queues - added x86_64*) ARCH=amd64 ;; (thanks to Detlef Reichelt & the PackMan-Team) - created xjremote man page. - message queues option becomes -Q - unlink option for xjremote 2006-11-11 rgareus - implemented message queues: xjremote! - 'remote=yes|no' config file option - -L, --nolash - more variables stored in lash config. - preliminary qjadeo patch -> xjremote. 2006-11-10 rgareus - icon - fixed qt BINDIR define (again) - prepared remote stdio replacement: mqueues prereq. for proper lash + gui 2006-11-09 rgareus - display_x11 cleanup part one. - docs description update - seek timeout. - re-indented sources (!) 2006-11-09 rgareus - on LASH resume -> ignore '-R' remote-mode - imlib2 - RGB24+RGBA32 - dropped gdk/gtk - revamped configure.ac - fixed continuous seeking (was in debug mode) 2006-11-07 rgareus - preliminary LASH support - so far only command line args. - preliminary Xv/x11 dnd 2006-11-06 rgareus - imlib2 support 2006-11-05 rgareus - added support for LIBAVCODEC_BUILD 4646 (ffmpeg-0.4.9-pre1) old seek code. 2006-11-04 rgareus - changed default seek behaviour to SEEK_ANY -k -> seek only to keyframes -K -> continuously decode all frames (starting @ keyframe) - config-file option seek=any|key|cont - removed hardcoded list of font files. 2006-10-28 rgareus - made -V a little more verbose. and -q a little more quiet :D 2006-10-28 rgareus - changed audioframe -> videoframe conversion back to floor() - updated framerate detection. - re-indented seek code. and changed -K, -k behaviour (no continuous seeks) - fixed ffmpeg packet allocation - XV-videomode only: - added always on top feature. ( '-a' ; press 'a' on widow ; no remote command for that yet) - added support to hide [mouse] cursor (press 'm' ) 2006-08-27 rgareus - added simple Extended Window Manager Hints(EWMH) fullscreen support for XV videomode. 2006-08-12 rgareus - av_q2d - fix to compile with older ffmpeg before LIBAVCODEC_BUILD 4753 2006-06-25 rgareus - updated debian-marillat to debian-multimedia in doc 2006-06-16 rgareus - updated contrib README and encode.sh 2006-06-13 rgareus - added jadio to contrib folder. 2006-06-12 rgareus - smpte support for non-integer fps - '-F ' allow to override fps info of file - '-K' -> 'old' seek to any frame mode - messed up avseek - added support for multi-packet frames. urgent TODO: remove all the nasty goto's from the initial example code :-X now that seeking is 'known to work' rewrite the whole darn thing and fix the dts/pts issues. This release is better than the version from June 06 as it fixes a possible endless (until EOF) frame seek issue... 2006-06-06 rgareus - when seeking to non key frames, the video can be decoded starting from the prev keyframe. - removed LIBAVCODEC < 4622 backwards seek compat. - new valid seekmodes (remote ctrl) are 'key', 'any' and 'continuous' (default). - OSD Frame is now the displayed frame, while the SMPTE still corresponds to jack time. - XV,SDL (YUV): added support for video image strides other than XV pitches. eg. if video width is not a multiple of 8 - prev. versions of xjadeo either crash, or display wrong colors... * version v0.3.13 2006-05-30 rgareus - proper YV12 and I420 support for XV. - SDL 1.2.9 or 1.1.6 2006-05-24 rgareus - added simple resource config parser. 2006-05-21 rgareus - minor fixes on the build environement for `make dist` (contrib, qt-gui sources, ..) - fixed some typos in yesterdays Makefile.am - never ending overkilling docbook * version v0.3.12 2006-05-20 rgareus - added docbook xslt and doc/Makefile... - work in progres on the manual. - changed Audioframe to videoframe, smpte converstion from floor to rint transport increments in steps of audiobuffer-size so we get proper results as audiobuffer-size != 1920 (48k->PAL) or 1601 (48k->NTSC) 2006-04-28 rgareus - fixed typo: since the 04/23 patches xjadeo was displaying the previous instead of the current frame! 2006-27-09 Luis Garrido - Added OSD font, frame and smpte commands to qjadeo menu. - OSD font is stored as a qjadeo preference. - Some docbook fixing. - Revamped qjadeo layout. 2006-04-23 rgareus - some remote function help typos - parsing videomode integer and text - notify [loop|frame] - more work in progress documentation. * version v0.3.11 2006-04-22 rgareus - added contrib folder - implememted 'list videomodes' - disabled 'get windowpos' - configure.ac: added contrib/cli-remote/Makefile to AC_CONFIG_FILES Note: contrib will not be built as it is not a subdir in Makefile.am - remote command return status now identifies physical units. added doc to the source: remote.c - changed return value of some xapi function. only MINOR numbers have been changed (rv: = MAJOR*100 + MINOR) * xjadeo v0.3.10 2006-04-17 rgareus - amidi seqencer instead of alsa rawmidi - remote cmd midi status fixed. - cmd arg. added "-x list" as alias for "-x -1" 2006-04-16 rgareus - configure.ac: --disable-portmidi -> 'force to' use alsamidi if avaliable - midi.c: added MTC sysex parser for alsamidi. - main.c: xjadeo new command line option -i , --info - xjadeo: fixed -t option. (exit instead of segfault when file not found :) * xjadeo v0.3.9 2006-04-11 rgareus many minor typos and fixes. fixed midi autodetection in configure.ac added alsa midi support as fallback if portmidi is not found * xjadeo v0.3.8 2006-04-11 rgareus * configure.ac: renamed options for consistancy. new defaults: autodetect all feat. only gtk is disabled by default added -DTTFFONTFILE comment. no configure option yet. * xjadeo: - --vo [|]. also swapped --vo option numbering.. for: - fallback video mode auto detection. - implemented rudimentary keyboard event support (for all display modes) - key quits xjadeo (all display modes) - --midifps [MTC|Video|resample] option and 'get/set midisync' remote cmd. - initialize midi just before event loop -> prevent midi buffer overflow - added alsamidi code. (works but not integrated in xjadeo & build system) - xapi 'get/set seekmode': seek to keyframes only. - minor fixes. 2006-04-09 Luis Garrido - configure.ac: fixed Qt autoconf test so Qt4 debug lib is not required. - src/qt-gui/Makefile.am: fixed typo. 2006-04-08 Luis Garrido - Fixed qjadeo makefile so the qt4 compilation keeps a backup of the qt3 version. 2006-04-08 Luis Garrido - Fixed broken autogen.sh (after removal of m4 subdir) - Fixed --disable-qtgui option. 2006-04-08 Luis Garrido - Autotoolification of qjadeo for Qt4. Now qjadeo takes the xjadeo binary from the environment variable XJADEO or from the install path. 2006-04-08 rgareus split xjadeo.c -> main.c remote.c - and loads of extern's :( xjadeo v0.3.7 2006-04-07 rgareus fixed b0rken XV (typo in display.c) added smpte parser and output (via remote and OSD) added MTC-fps to video-fps conversion code. 2006-04-07 rgareus splitted the display.c into sdl, gtk and X11 source files quick fixed configure.ac (qmake on debian) 2006-04-07 rgareus fixed HAVE_GTK and HAVE_SDL #defines in display.c 2006-04-06 Luis Garrido - Autotoolification of qjadeo for Qt3. Info taken from qjackctl and http://www.8ung.at/leising/autoconf/qt_qmake_autoconf_automake2.html 2006-04-06 Luis Garrido - Implementation of the maintainer-clean target. 2006-04-06 Luis Garrido - Reorganization of source tree. 2005-11-07 Luis Garrido - Fixed avseekflags for compatibility with LIBAVFORMAT_BUILD <= 4622. Thanks to Geoff Beasley for his cooperation. 2005-11-03 Luis Garrido - Edited NEWS, xjadeo.1, README 2005-11-03 rgareus - dynamic jack name. allowing multiple instances of xjadeo 2005-10-31 rgareus - added -o --offset time offset. in video-frames 2005-10-30 rgareus - new build environement, that checks dep. libraries. - parse command line options - fixes to work with newer Version of libffmpeg. * xjadeo v0.1.1 2005-02-02 luis * xjadeo v0.1.0 xjadeo-0.7.6/NEWS0000644000175000017500000001027111436325750010425 00000000000000------------------------------------------- 20061123 ------------------------------------------- I'm feeling lucky that I've able to spend my sparetime (and some more) on pushing xjadeo in the last two weeks! It's about time to refocus on using xjadeo, but there'll be ongoing low-pri development and support. Luis has put it quite well in saying: Ooooh, how has this baby grown up :_( 8-D check the TODO and doc/ for further information. the docbook is available online at http://xjadeo.sourceforge.net/doc/index.html#news ------------------------------------------- 20061106 ------------------------------------------- xjadeo has been working fine for personal usage over few month now, and though we lack time to clean up xjadeo, it's yet time for another release :) ------------------------------------------- 20060521 ------------------------------------------- xjadeo has been working fine for personal usage over a month now, and though we lack time to clean up xjadeo, it's yet time for another release. ------------------------------------------- 20060422 ------------------------------------------- after 2 months of xjadeo-0.3 rewrite, testing and using we find that the current xjadeo implements all features we expect from a simple video monitor :) New Features: * XV, SDL, gtk display backends. * remote control API allows to interact with a running instance of xjadeo. * (independant) QT Graphical User Interface * MIDI MTC can be used as alternate synchronization source. ------------------------------------------- 20051103 ------------------------------------------- Robin Gareus has jumped aboard and carried xjadeo from a quick hack for my personal usage to the level of a distributable beta package, throwing in some improvements on the way for good measure. Many kudos to him! The main problem people had so far to use xjadeo is to install the right set of libraries to build it. Ffmpeg is especially problematic, since it is under heavy development and is thus very unstable. Using only a minimal part of ffmpeg API, we had to make changes in xjadeo to accomodate three different changes in ffmpeg interface that broke xjadeo. WARNING! WARNING! WARNING! WARNING! WARNING! It is likely that ffmpeg will continue evolving in a non backwards compatible way, so bear in mind that updating ffmpeg may break xjadeo. xjadeo has been tested with the following versions of ffmpeg: - ffmpeg-0.4.9-0.20041110.0.1.rhfc3.ccrma.i386.rpm - ffmpeg-0.4.9-0.20050427.1.1.fc3.rpm It has been tested in debian distros as well. NEW FUNCTIONALITY - Resizing the window will resize the movie as well. (CAVEAT: resizing a video frame to make it fit the window is a cpu expensive operation. If you are not comfortable with the screen size of your movie it is more cpu efficient that you resize the file before loading it in xjadeo, via, e.g., 'mencoder'.) - Pressing Mouse button 1 - will resize the monitor window to the original movie size. - Mouse button 2 and 3 adjust the window to match the movie aspect ratio. - Scroll Wheel (button 4,5) stepwise decreases / increases the window size maintaining the original aspect ratio. Use your Window Manager kill button or CTRL-C to quit xjadeo. NEW OPTIONS xjadeo accepts the following options: -q, --quiet, --silent Inhibit usual output. -v, --verbose Print more information. -k, --keyframes Seek only to keyframes of the video. (improves performance but makes playing jerky or simply static if keyframes are not frequent ). -t, --try-codec Check if the given video file can be played by xjadeo. No window is opened in this mode. The program exits with code 1 if the file format is not supported. -f, --fps How often xjadeo updates the screen. The default is 10 fps (not the video file default)! -h, --help Shows a summary of the options. -V, --version Shows the version of the program. -o --offset Time offset in video-frames. There is a machine-dependent time lag between jack transport and video display. This option allows to compensate for it. NEW PACKAGING OPTIONS Configuration files for building RPM and DEB packages have been added. AUTHORS Luis Garrido , Robin Gareus xjadeo-0.7.6/README0000644000175000017500000000170312144466043010604 00000000000000xjadeo - jack video monitor =========================== xjadeo is a simple video player that gets sync from jack. Please refer to the documentation in the doc folder for any details, or visit http://xjadeo.sf.net/ Basic build instructions ------------------------ ```bash git clone git://github.com/x42/xjadeo.git ./autogen.sh ./configure make sudo make install ``` Build Dependencies ------------------ Development packages for the following software must be available to compile xjadeo: * ffmpeg (from ffmpeg.org) * jack-audio-connection-kit (jackaudio.org) * libX11, libxv recommended: * freetype2 (for on-screen display) * imlib2 (RGB display) * SDL (window build) * alsa (for alsa midi MTC support) * portmidi (alternate midi driver) * libltc (for LTC support) * liblo for OSC support deprecated: * QT3 or QT4 (for GUI) Copyright (C) 2005 - 2013 GPLv2 Luis Garrido Robin Gareus xjadeo-0.7.6/config.guess0000755000175000017500000012763711437010433012253 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2009-12-30' # This file 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: xjadeo-0.7.6/Makefile.in0000644000175000017500000007061512200730266011773 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/xjadeo.lsm.in $(top_srcdir)/configure AUTHORS \ COPYING ChangeLog INSTALL NEWS TODO compile config.guess \ config.sub depcomp install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = xjadeo.lsm CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AC_AUX_DIR = m4 AC_MACRO_DIR = m4 SUBDIRS = src @ac_contrib_dir@ man_MANS = doc/xjadeo.1 doc/qjadeo.1 doc/xjremote.1 doc/xjinfo.1 EXTRA_DIST = \ xjadeo.lsm.in doc/xjadeo.png \ doc/xjadeo.xml doc/favicon.ico doc/Makefile doc/html.xsl doc/man.xsl \ doc/xjadeo.1 doc/qjadeo.1 doc/xjremote.1 doc/xjinfo.1\ src/xjadeo/icons/xjadeo-color.xpm \ src/xjadeo/icons/xjadeo.bitmap src/xjadeo/icons/xjadeo_mask.xbm\ src/xjadeo/icons/splash.bitmap src/xjadeo/icons/splash_mask.xbm\ src/xjadeo/icons/brightness.bitmap src/xjadeo/icons/brightness_mask.xbm\ src/xjadeo/icons/contrast.bitmap src/xjadeo/icons/contrast_mask.xbm\ src/xjadeo/icons/gamma.bitmap src/xjadeo/icons/gamma_mask.xbm\ src/xjadeo/icons/hue.bitmap src/xjadeo/icons/hue_mask.xbm\ src/xjadeo/icons/saturation.bitmap src/xjadeo/icons/saturation_mask.xbm\ src/xjadeo/avinfo.dtd \ doc/xjadeorc \ contrib/cli-remote/jadeo.c \ contrib/cli-remote/Makefile.am \ contrib/cli-remote/README \ contrib/xjadeo-example.avi \ contrib/xjadeo-example.avi \ contrib/encode.sh \ contrib/README MAINTAINERCLEANFILES = \ Makefile.in \ aclocal.m4 \ compile \ config.guess \ config.h.in \ config.sub \ configure \ depcomp \ install-sh \ Makefile.in \ missing all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 xjadeo.lsm: $(top_builddir)/config.status $(srcdir)/xjadeo.lsm.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-man1: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(MANS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am uninstall-man \ uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/configure0000755000175000017500000104315412200730240011624 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="xjadeo.c" ac_unique_file="src/xjadeo/xjadeo.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS ac_contrib_dir XJINFO_BIN ac_qtgui_dir ac_qmake_args ac_lrelease ac_qmake TIFF_LIBS TIFF_CFLAGS LTCSMPTE_LIBS LTCSMPTE_CFLAGS LTC_LIBS LTC_CFLAGS LASH_LIBS LASH_CFLAGS IMLIB2_LIBS IMLIB2_CFLAGS IMLIB_LIBS IMLIB_CFLAGS FREETYPE_CONFIG FREETYPE_LIBS FREETYPE_CFLAGS SWSCALE_LIBS SWSCALE_CFLAGS FFMPEG_LIBS FFMPEG_CFLAGS MIDI_CFLAGS MIDI_LIBS SDL_LIBS SDL_CFLAGS LIBLO_LIBS LIBLO_CFLAGS Xpm_LIBS Xpm_CFLAGS XV_CFLAGS XV_LIBS MQ_LIBS JACK_LIBS JACK_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG ALLOCA EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC ISODATE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_xv enable_imlib2 enable_sdl enable_ft enable_qtgui enable_contrib enable_lash enable_timescale enable_framecrop enable_tiff enable_mq enable_jacksession enable_ipc enable_osc enable_midi enable_ltc enable_portmidi enable_alsamidi with_fontfile with_portmidisrc with_freetypesrc with_liblosrc with_ffmpegprefix with_ffmpegsrc with_ffmpegldadd with_qt4prefix enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR JACK_CFLAGS JACK_LIBS Xpm_CFLAGS Xpm_LIBS LIBLO_CFLAGS LIBLO_LIBS SDL_CFLAGS SDL_LIBS FFMPEG_CFLAGS FFMPEG_LIBS SWSCALE_CFLAGS SWSCALE_LIBS FREETYPE_CFLAGS FREETYPE_LIBS IMLIB2_CFLAGS IMLIB2_LIBS LASH_CFLAGS LASH_LIBS LTC_CFLAGS LTC_LIBS LTCSMPTE_CFLAGS LTCSMPTE_LIBS TIFF_CFLAGS TIFF_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-xv Disable Xvideo extension --disable-imlib2 Disable use of imlib2 for display --disable-sdl Disable use of SDL display --disable-ft Disable freetype On-Screen.Display support --enable-qtgui Build the Qt GUI controller --enable-contrib Compile and install code in contrib folder --enable-lash enable LASH support (deprecated) --disable-timescale disable time-mapping/loop-playback support --enable-framecrop hardcoded frame cropping - DO NOT USE --disable-tiff disable libtiff support (affects only contrib/tsmm/) --disable-mq disable POSIX message-queue remote control --disable-jacksession disable JACK-Session support --disable-ipc disable IPC message-queue remote control --disable-osc disable OSC remote support --disable-midi Do not build any of the MIDI drivers --disable-ltc disable LTC sync support --disable-portmidi disable portmidi support --disable-alsamidi disable alsamidi support --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-fontfile=file.ttf specify a path to a truetype font file to be used as default OSD font. --with-portmidisrc statically link against portmidi --with-freetypesrc statically link against freetype --with-liblosrc statically link against liblo --with-ffmpegprefix override pkg-config - specify prefix to ffmpeg installation --with-ffmpegsrc location of ffmpeg source, use to statically link against ffmpeg --with-ffmpegldadd ld options for static ffmpeg eg. "-lmp3lame -ldts -lfaac -logg -lxvidcore" --with-qt4prefix prefix for Qt4 installation, e.g. "/usr/lib/qt4" Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path JACK_CFLAGS C compiler flags for JACK, overriding pkg-config JACK_LIBS linker flags for JACK, overriding pkg-config Xpm_CFLAGS C compiler flags for Xpm, overriding pkg-config Xpm_LIBS linker flags for Xpm, overriding pkg-config LIBLO_CFLAGS C compiler flags for LIBLO, overriding pkg-config LIBLO_LIBS linker flags for LIBLO, overriding pkg-config SDL_CFLAGS C compiler flags for SDL, overriding pkg-config SDL_LIBS linker flags for SDL, overriding pkg-config FFMPEG_CFLAGS C compiler flags for FFMPEG, overriding pkg-config FFMPEG_LIBS linker flags for FFMPEG, overriding pkg-config SWSCALE_CFLAGS C compiler flags for SWSCALE, overriding pkg-config SWSCALE_LIBS linker flags for SWSCALE, overriding pkg-config FREETYPE_CFLAGS C compiler flags for FREETYPE, overriding pkg-config FREETYPE_LIBS linker flags for FREETYPE, overriding pkg-config IMLIB2_CFLAGS C compiler flags for IMLIB2, overriding pkg-config IMLIB2_LIBS linker flags for IMLIB2, overriding pkg-config LASH_CFLAGS C compiler flags for LASH, overriding pkg-config LASH_LIBS linker flags for LASH, overriding pkg-config LTC_CFLAGS C compiler flags for LTC, overriding pkg-config LTC_LIBS linker flags for LTC, overriding pkg-config LTCSMPTE_CFLAGS C compiler flags for LTCSMPTE, overriding pkg-config LTCSMPTE_LIBS linker flags for LTCSMPTE, overriding pkg-config TIFF_CFLAGS C compiler flags for TIFF, overriding pkg-config TIFF_LIBS linker flags for TIFF, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- VERSION_MAJOR=0 VERSION_MINOR=7 VERSION_SUB=6 am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=xjadeo VERSION=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_SUB} cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' #AC_REVISION([$Id: configure.ac $]) ac_config_headers="$ac_config_headers config.h" # Check whether --enable-xv was given. if test "${enable_xv+set}" = set; then : enableval=$enable_xv; fi #AC_ARG_ENABLE(imlib, AC_HELP_STRING([--disable-imlib], [Disable use of imlib for display])) # Check whether --enable-imlib2 was given. if test "${enable_imlib2+set}" = set; then : enableval=$enable_imlib2; fi # Check whether --enable-sdl was given. if test "${enable_sdl+set}" = set; then : enableval=$enable_sdl; fi # Check whether --enable-ft was given. if test "${enable_ft+set}" = set; then : enableval=$enable_ft; fi # Check whether --enable-qtgui was given. if test "${enable_qtgui+set}" = set; then : enableval=$enable_qtgui; fi # Check whether --enable-contrib was given. if test "${enable_contrib+set}" = set; then : enableval=$enable_contrib; fi # Check whether --enable-lash was given. if test "${enable_lash+set}" = set; then : enableval=$enable_lash; fi # Check whether --enable-timescale was given. if test "${enable_timescale+set}" = set; then : enableval=$enable_timescale; fi # Check whether --enable-framecrop was given. if test "${enable_framecrop+set}" = set; then : enableval=$enable_framecrop; fi # Check whether --enable-tiff was given. if test "${enable_tiff+set}" = set; then : enableval=$enable_tiff; fi # Check whether --enable-mq was given. if test "${enable_mq+set}" = set; then : enableval=$enable_mq; fi # Check whether --enable-jacksession was given. if test "${enable_jacksession+set}" = set; then : enableval=$enable_jacksession; fi # Check whether --enable-ipc was given. if test "${enable_ipc+set}" = set; then : enableval=$enable_ipc; fi # Check whether --enable-osc was given. if test "${enable_osc+set}" = set; then : enableval=$enable_osc; fi # Check whether --enable-midi was given. if test "${enable_midi+set}" = set; then : enableval=$enable_midi; fi # Check whether --enable-ltc was given. if test "${enable_ltc+set}" = set; then : enableval=$enable_ltc; fi # Check whether --enable-portmidi was given. if test "${enable_portmidi+set}" = set; then : enableval=$enable_portmidi; fi # Check whether --enable-alsamidi was given. if test "${enable_alsamidi+set}" = set; then : enableval=$enable_alsamidi; fi # Check whether --with-fontfile was given. if test "${with_fontfile+set}" = set; then : withval=$with_fontfile; fontfile="$withval" else fontfile="" fi # Check whether --with-portmidisrc was given. if test "${with_portmidisrc+set}" = set; then : withval=$with_portmidisrc; portmidisrc="$withval" else portmidisrc="" fi # Check whether --with-freetypesrc was given. if test "${with_freetypesrc+set}" = set; then : withval=$with_freetypesrc; freetypesrc="$withval" else freetypesrc="" fi # Check whether --with-liblosrc was given. if test "${with_liblosrc+set}" = set; then : withval=$with_liblosrc; liblosrc="$withval" else liblosrc="" fi # Check whether --with-ffmpegprefix was given. if test "${with_ffmpegprefix+set}" = set; then : withval=$with_ffmpegprefix; ffmpegprefix="$withval" else ffmpegprefix="" fi # Check whether --with-ffmpegsrc was given. if test "${with_ffmpegsrc+set}" = set; then : withval=$with_ffmpegsrc; ffmpegsrc="$withval" else ffmpegsrc="" fi # Check whether --with-ffmpegldadd was given. if test "${with_ffmpegldadd+set}" = set; then : withval=$with_ffmpegldadd; ffmpegldadd="$withval" else ffmpegldadd="" fi # Check whether --with-qt4prefix was given. if test "${with_qt4prefix+set}" = set; then : withval=$with_qt4prefix; qt4prefix="$withval" else qt4prefix="" fi LIBPREF=lib LIBSUF=.a case $target_os in *darwin*) { $as_echo "$as_me:${as_lineno-$LINENO}: TARGET: OSX" >&5 $as_echo "$as_me: TARGET: OSX" >&6;} PM_OS=mac $as_echo "#define HAVE_MACOSX /**/" >>confdefs.h HAVE_MACOSX=1 LDFLAGS="$LDFLAGS -lz -lbz2 -framework Carbon -framework Quicktime" ;; *linux*) { $as_echo "$as_me:${as_lineno-$LINENO}: TARGET: LINUX" >&5 $as_echo "$as_me: TARGET: LINUX" >&6;} PM_OS="linux"; $as_echo "#define IMLIB2RGBA /**/" >>confdefs.h ;; *mingw32*|*win*) { $as_echo "$as_me:${as_lineno-$LINENO}: TARGET: WINDOWS" >&5 $as_echo "$as_me: TARGET: WINDOWS" >&6;} PM_OS=win $as_echo "#define HAVE_WINDOWS /**/" >>confdefs.h HAVE_WINDOWS=1 IMLIB_LIBS="-lws2_32" # LDFLAGS are before object files. -pragmatically re-used IMLIB_LIBS LIBSUF=.dll ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** unknown target OS ***" >&5 $as_echo "$as_me: WARNING: *** unknown target OS ***" >&2;} ;; esac ISODATE=`date +%Y-%m-%d` #AC_PROG_CC DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi # TODO: check for xsltproc, xmllint and # automatically build documentation... #AC_C_VOLATILE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi #AC_HEADER_TIME # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 $as_echo_n "checking size of float... " >&6; } if ${ac_cv_sizeof_float+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : else if test "$ac_cv_type_float" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (float) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_float=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 $as_echo "$ac_cv_sizeof_float" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_FLOAT $ac_cv_sizeof_float _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 $as_echo_n "checking size of double... " >&6; } if ${ac_cv_sizeof_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : else if test "$ac_cv_type_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 $as_echo "$ac_cv_sizeof_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 $as_echo_n "checking size of unsigned long... " >&6; } if ${ac_cv_sizeof_unsigned_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : else if test "$ac_cv_type_unsigned_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (unsigned long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_unsigned_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 $as_echo "$ac_cv_sizeof_unsigned_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long _ACEOF for ac_header in time.h string.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done #AH_TEMPLATE([HAVE_IMLIB], [Define as 1 if you have imlib]) $as_echo "#define CFG_WARN_ONLY 1" >>confdefs.h $as_echo "#define DND 1" >>confdefs.h $as_echo "#define DRAW_CROSS 1" >>confdefs.h $as_echo "#define COLOREQ 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 $as_echo_n "checking whether sys/types.h defines makedev... " >&6; } if ${ac_cv_header_sys_types_h_makedev+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return makedev(0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_header_sys_types_h_makedev=yes else ac_cv_header_sys_types_h_makedev=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5 $as_echo "$ac_cv_header_sys_types_h_makedev" >&6; } if test $ac_cv_header_sys_types_h_makedev = no; then ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mkdev_h" = xyes; then : $as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h fi if test $ac_cv_header_sys_mkdev_h = no; then ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : $as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h fi fi fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } if ${ac_cv_working_alloca_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } if ${ac_cv_func_alloca_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ void *alloca (size_t); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then $as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext $as_echo "#define C_ALLOCA 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } if ${ac_cv_c_stack_direction+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi #AC_STRUCT_ST_BLOCKS #AC_FUNC_CLOSEDIR_VOID #AC_CHECK_FUNCS(mkfifo) #AC_CHECK_FUNC(mknod) if test "x$enable_timescale" != "xno"; then $as_echo "#define TIMEMAP 1" >>confdefs.h fi if test "x$enable_framecrop" == "xyes"; then $as_echo "#define CROPIMG 1" >>confdefs.h fi # FIXME - needed fi. on osx LIBS="$LIBS -L/usr/X11R6/lib" #X_LIBS="-L/usr/X11R6/lib/" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 $as_echo_n "checking for JACK... " >&6; } if test -n "$JACK_CFLAGS"; then pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$JACK_LIBS"; then pkg_cv_JACK_LIBS="$JACK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 ($PKG_CONFIG --exists --print-errors "jack") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack" 2>&1` else JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$JACK_PKG_ERRORS" >&5 as_fn_error $? "*** You need the JACK audio development kit (jackaudio.org). ***" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "*** You need the JACK audio development kit (jackaudio.org). ***" "$LINENO" 5 else JACK_CFLAGS=$pkg_cv_JACK_CFLAGS JACK_LIBS=$pkg_cv_JACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi if test "x$enable_jacksession" != "xno"; then for ac_header in jack/session.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define JACK_SESSION 1" >>confdefs.h JACK_SESSION=1 fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing jack_port_get_latency_range" >&5 $as_echo_n "checking for library containing jack_port_get_latency_range... " >&6; } if ${ac_cv_search_jack_port_get_latency_range+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char jack_port_get_latency_range (); int main () { return jack_port_get_latency_range (); ; return 0; } _ACEOF for ac_lib in '' jack; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_jack_port_get_latency_range=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_jack_port_get_latency_range+:} false; then : break fi done if ${ac_cv_search_jack_port_get_latency_range+:} false; then : else ac_cv_search_jack_port_get_latency_range=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_jack_port_get_latency_range" >&5 $as_echo "$ac_cv_search_jack_port_get_latency_range" >&6; } ac_res=$ac_cv_search_jack_port_get_latency_range if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define NEW_JACK_LATENCY_API 1" >>confdefs.h NEW_JACK_LATENCY_API=1 fi MQ_LIBS="" if test "x$enable_mq" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing mq_open" >&5 $as_echo_n "checking for library containing mq_open... " >&6; } if ${ac_cv_search_mq_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char mq_open (); int main () { return mq_open (); ; return 0; } _ACEOF for ac_lib in '' rt; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_mq_open=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_mq_open+:} false; then : break fi done if ${ac_cv_search_mq_open+:} false; then : else ac_cv_search_mq_open=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_mq_open" >&5 $as_echo "$ac_cv_search_mq_open" >&6; } ac_res=$ac_cv_search_mq_open if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define HAVE_MQ 1" >>confdefs.h MQ_LIBS="-lrt -lpthread" HAVE_MQ=1 fi fi $as_echo "#define MQLEN 512" >>confdefs.h if test "x$enable_ipc" != "xno"; then if test -z "$HAVE_MQ"; then for ac_header in sys/ipc.h sys/msg.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_IPCMSG 1" >>confdefs.h HAVE_IPCMSG=1 fi done fi fi if test "x$enable_xv" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XvQueryAdaptors in -lXv" >&5 $as_echo_n "checking for XvQueryAdaptors in -lXv... " >&6; } if ${ac_cv_lib_Xv_XvQueryAdaptors+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXv $X_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XvQueryAdaptors (); int main () { return XvQueryAdaptors (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_Xv_XvQueryAdaptors=yes else ac_cv_lib_Xv_XvQueryAdaptors=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xv_XvQueryAdaptors" >&5 $as_echo "$ac_cv_lib_Xv_XvQueryAdaptors" >&6; } if test "x$ac_cv_lib_Xv_XvQueryAdaptors" = xyes; then : $as_echo "#define HAVE_LIBXV 1" >>confdefs.h XV_LIBS="-lXv" HAVE_LIBXV=1 else as_fn_error $? "Could not find XVideo Lib (libXv)" "$LINENO" 5 fi fi if test -z "$HAVE_MACOSX$HAVE_WINDOWS"; then : for ac_header in X11/Xlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/Xlib.h" "ac_cv_header_X11_Xlib_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XLIB_H 1 _ACEOF else as_fn_error $? "*** X11: You need to install the X11 development package. ***" "$LINENO" 5 fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XOpenDisplay in -lX11" >&5 $as_echo_n "checking for XOpenDisplay in -lX11... " >&6; } if ${ac_cv_lib_X11_XOpenDisplay+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XOpenDisplay=yes else ac_cv_lib_X11_XOpenDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XOpenDisplay" >&5 $as_echo "$ac_cv_lib_X11_XOpenDisplay" >&6; } if test "x$ac_cv_lib_X11_XOpenDisplay" = xyes; then : XV_LIBS="$XV_LIBS -lXext" else as_fn_error $? "*** X11: You need to install the X11 development package: libx11-dev ***" "$LINENO" 5 fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xpm" >&5 $as_echo_n "checking for Xpm... " >&6; } if test -n "$Xpm_CFLAGS"; then pkg_cv_Xpm_CFLAGS="$Xpm_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 ($PKG_CONFIG --exists --print-errors "xpm") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_Xpm_CFLAGS=`$PKG_CONFIG --cflags "xpm" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$Xpm_LIBS"; then pkg_cv_Xpm_LIBS="$Xpm_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 ($PKG_CONFIG --exists --print-errors "xpm") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_Xpm_LIBS=`$PKG_CONFIG --libs "xpm" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then Xpm_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xpm" 2>&1` else Xpm_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xpm" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$Xpm_PKG_ERRORS" >&5 as_fn_error $? "*** X11: You need to install the libxpm development package. ***" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "*** X11: You need to install the libxpm development package. ***" "$LINENO" 5 else Xpm_CFLAGS=$pkg_cv_Xpm_CFLAGS Xpm_LIBS=$pkg_cv_Xpm_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_XPM 1" >>confdefs.h HAVE_XPM=1 fi #AC_SEARCH_LIBS( XpmCreatePixmapFromData, Xpm, AC_DEFINE(HAVE_XPM) XPM_LIBS="-lXpm" HAVE_XPM=1 ) fi if test "x$enable_osc" != "xno"; then : if test -n "$liblosrc"; then as_ac_File=`$as_echo "ac_cv_file_$liblosrc/src/.libs/liblo.a" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $liblosrc/src/.libs/liblo.a" >&5 $as_echo_n "checking for $liblosrc/src/.libs/liblo.a... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$liblosrc/src/.libs/liblo.a"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$liblosrc/src/.libs/liblo.a" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_LIBLO 1" >>confdefs.h HAVE_LIBLO=1 LIBLO_CFLAGS="-I$liblosrc/lo" LIBLO_LIBS="$liblosrc/src/.libs/liblo.a" fi as_ac_File=`$as_echo "ac_cv_file_$liblosrc/lo/lo.h" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $liblosrc/lo/lo.h" >&5 $as_echo_n "checking for $liblosrc/lo/lo.h... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$liblosrc/lo/lo.h"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$liblosrc/lo/lo.h" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_LIBLO 1" >>confdefs.h HAVE_LIBLO=1 LIBLO_CFLAGS="-I$liblosrc/lo" LIBLO_LIBS="$liblosrc/src/.libs/liblo.a" fi else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBLO" >&5 $as_echo_n "checking for LIBLO... " >&6; } if test -n "$LIBLO_CFLAGS"; then pkg_cv_LIBLO_CFLAGS="$LIBLO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblo\""; } >&5 ($PKG_CONFIG --exists --print-errors "liblo") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBLO_CFLAGS=`$PKG_CONFIG --cflags "liblo" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBLO_LIBS"; then pkg_cv_LIBLO_LIBS="$LIBLO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblo\""; } >&5 ($PKG_CONFIG --exists --print-errors "liblo") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBLO_LIBS=`$PKG_CONFIG --libs "liblo" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBLO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblo" 2>&1` else LIBLO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblo" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBLO_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else LIBLO_CFLAGS=$pkg_cv_LIBLO_CFLAGS LIBLO_LIBS=$pkg_cv_LIBLO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LIBLO 1" >>confdefs.h HAVE_LIBLO=1 fi fi fi if test "x$enable_sdl" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 $as_echo_n "checking for SDL... " >&6; } if test -n "$SDL_CFLAGS"; then pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SDL_LIBS"; then pkg_cv_SDL_LIBS="$SDL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_LIBS=`$PKG_CONFIG --libs "sdl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SDL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sdl" 2>&1` else SDL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sdl" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SDL_PKG_ERRORS" >&5 NULL=1 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=1 else SDL_CFLAGS=$pkg_cv_SDL_CFLAGS SDL_LIBS=$pkg_cv_SDL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_SDL 1" >>confdefs.h HAVE_SDL=1 fi fi if test "x$enable_midi" != "xno"; then MIDI_CFLAGS="" MIDI_CFLAGS="" if test "x$enable_portmidi" != "xno" -a -z "$portmidisrc" ; then for ac_header in portmidi.h porttime.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF FOUND_H_PORTMIDI=yes fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pm_CountDevices in -lportmidi" >&5 $as_echo_n "checking for Pm_CountDevices in -lportmidi... " >&6; } if ${ac_cv_lib_portmidi_Pm_CountDevices+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lportmidi $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Pm_CountDevices (); int main () { return Pm_CountDevices (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_portmidi_Pm_CountDevices=yes else ac_cv_lib_portmidi_Pm_CountDevices=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_portmidi_Pm_CountDevices" >&5 $as_echo "$ac_cv_lib_portmidi_Pm_CountDevices" >&6; } if test "x$ac_cv_lib_portmidi_Pm_CountDevices" = xyes; then : FOUND_L_PORTMIDI=yes fi fi if test "x$FOUND_H_PORTMIDI$FOUND_L_PORTMIDI" = "xyesyes"; then MIDI_LIBS="-lportmidi" if test "$PM_OS" != "mac"; then MIDI_LIBS="${MIDI_LIBS} -lporttime" fi fi if test "x$enable_portmidi" != "xno" -a -n "$portmidisrc" -a -n "$PM_OS"; then as_ac_File=`$as_echo "ac_cv_file_$portmidisrc/porttime/porttime.h" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $portmidisrc/porttime/porttime.h" >&5 $as_echo_n "checking for $portmidisrc/porttime/porttime.h... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$portmidisrc/porttime/porttime.h"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$portmidisrc/porttime/porttime.h" | $as_tr_cpp` 1 _ACEOF FOUND_H_PORTMIDI=yes fi as_ac_File=`$as_echo "ac_cv_file_$portmidisrc/pm_common/portmidi.h" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $portmidisrc/pm_common/portmidi.h" >&5 $as_echo_n "checking for $portmidisrc/pm_common/portmidi.h... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$portmidisrc/pm_common/portmidi.h"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$portmidisrc/pm_common/portmidi.h" | $as_tr_cpp` 1 _ACEOF FOUND_H_PORTMIDI=yes fi as_ac_File=`$as_echo "ac_cv_file_$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $portmidisrc/porttime/${LIBPREF}porttime$LIBSUF" >&5 $as_echo_n "checking for $portmidisrc/porttime/${LIBPREF}porttime$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF" | $as_tr_cpp` 1 _ACEOF FOUND_L_PORTMIDI=yes MIDI_LIBS="$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF" fi as_ac_File=`$as_echo "ac_cv_file_$portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF" >&5 $as_echo_n "checking for $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF" | $as_tr_cpp` 1 _ACEOF FOUND_L_PORTMIDI=yes MIDI_LIBS="$portmidisrc/porttime/${LIBPREF}porttime$LIBSUF $portmidisrc/pm_${PM_OS}/${LIBPREF}portmidi$LIBSUF" fi as_ac_File=`$as_echo "ac_cv_file_$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF" >&5 $as_echo_n "checking for $portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF" | $as_tr_cpp` 1 _ACEOF FOUND_L_PORTMIDI=yes MIDI_LIBS="$portmidisrc/pm_${PM_OS}/build/${LIBPREF}portmidi$LIBSUF" fi if test $PM_OS = "mac" ; then MIDI_LIBS="$MIDI_LIBS -framework CoreMIDI -framework CoreFoundation -framework CoreAudio"; fi MIDI_CFLAGS="-I$portmidisrc/porttime/ -I$portmidisrc/pm_common/" fi if test "x$JACKMIDI" != "xno"; then for ac_header in jack/midiport.h do : ac_fn_c_check_header_mongrel "$LINENO" "jack/midiport.h" "ac_cv_header_jack_midiport_h" "$ac_includes_default" if test "x$ac_cv_header_jack_midiport_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_JACK_MIDIPORT_H 1 _ACEOF FOUND_H_JACKMIDI=yes fi done fi if test "x$enable_alsamidi" != "xno"; then for ac_header in alsa/asoundlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "alsa/asoundlib.h" "ac_cv_header_alsa_asoundlib_h" "$ac_includes_default" if test "x$ac_cv_header_alsa_asoundlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ALSA_ASOUNDLIB_H 1 _ACEOF FOUND_H_ALSAMIDI=yes fi done for ac_header in pthread.h do : ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTHREAD_H 1 _ACEOF FOUND_H_PTHREAD=yes fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_rawmidi_open in -lasound" >&5 $as_echo_n "checking for snd_rawmidi_open in -lasound... " >&6; } if ${ac_cv_lib_asound_snd_rawmidi_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lasound $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char snd_rawmidi_open (); int main () { return snd_rawmidi_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_asound_snd_rawmidi_open=yes else ac_cv_lib_asound_snd_rawmidi_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_rawmidi_open" >&5 $as_echo "$ac_cv_lib_asound_snd_rawmidi_open" >&6; } if test "x$ac_cv_lib_asound_snd_rawmidi_open" = xyes; then : FOUND_L_ALSAMIDI=yes fi fi if test "x$FOUND_H_ALSAMIDI$FOUND_L_ALSAMIDI$FOUND_H_PTHREAD" = "xyesyesyes"; then $as_echo "#define ALSA_SEQ_MIDI 1" >>confdefs.h $as_echo "#define ALSA_RAW_MIDI 1" >>confdefs.h $as_echo "#define HAVE_MIDI 1" >>confdefs.h HAVE_MIDI=1 ALSA_SEQ_MIDI=1 ALSA_RAW_MIDI=1 MIDI_LIBS="$MIDI_LIBS -lasound -lpthread" fi if test "x$FOUND_H_PORTMIDI$FOUND_L_PORTMIDI" = "xyesyes"; then $as_echo "#define HAVE_MIDI 1" >>confdefs.h $as_echo "#define HAVE_PORTMIDI 1" >>confdefs.h HAVE_MIDI=1 HAVE_PORTMIDI=1 fi if test "x$FOUND_H_JACKMIDI" = "xyes"; then $as_echo "#define HAVE_MIDI 1" >>confdefs.h $as_echo "#define HAVE_JACKMIDI 1" >>confdefs.h HAVE_MIDI=1 HAVE_JACKMIDI=1 fi fi if test -z "$ffmpegprefix" -a -z "$ffmpegsrc"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 $as_echo_n "checking for FFMPEG... " >&6; } if test -n "$FFMPEG_CFLAGS"; then pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat libavcodec libavutil\""; } >&5 ($PKG_CONFIG --exists --print-errors "libavformat libavcodec libavutil") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavformat libavcodec libavutil" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FFMPEG_LIBS"; then pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat libavcodec libavutil\""; } >&5 ($PKG_CONFIG --exists --print-errors "libavformat libavcodec libavutil") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavformat libavcodec libavutil" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavformat libavcodec libavutil" 2>&1` else FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavformat libavcodec libavutil" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FFMPEG_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find ffmpeg package. please set PKG_CONFIG_PATH to where FFMPEG installed its pkg files. " >&5 $as_echo "$as_me: WARNING: Could not find ffmpeg package. please set PKG_CONFIG_PATH to where FFMPEG installed its pkg files. " >&2;} elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find ffmpeg package. please set PKG_CONFIG_PATH to where FFMPEG installed its pkg files. " >&5 $as_echo "$as_me: WARNING: Could not find ffmpeg package. please set PKG_CONFIG_PATH to where FFMPEG installed its pkg files. " >&2;} else FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_FFMPEG=yes fi fi if test -n "$ffmpegsrc" ; then as_ac_File=`$as_echo "ac_cv_file_$ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF" >&5 $as_echo_n "checking for $ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF" | $as_tr_cpp` 1 _ACEOF FFMPEG_LIBS="$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF $ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF $ffmpegsrc/libavutil/${LIBPREF}avutil$LIBSUF $ffmpegsrc/libavdevice/${LIBPREF}avdevice$LIBSUF -lz $ffmpegldadd" HAVE_FFMPEG=yes FFMPEG_INCDIR="$ffmpegsrc" FFMPEG_CFLAGS="-I$FFMPEG_INCDIR -I$FFMPEG_INCDIR/libavcodec -I$FFMPEG_INCDIR/libavformat -I$FFMPEG_INCDIR/libavutil" { $as_echo "$as_me:${as_lineno-$LINENO}: located a ffmpeg installation without pkg-information." >&5 $as_echo "$as_me: located a ffmpeg installation without pkg-information." >&6;} fi as_ac_File=`$as_echo "ac_cv_file_$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF" >&5 $as_echo_n "checking for $ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF" | $as_tr_cpp` 1 _ACEOF FFMPEG_LIBS="$ffmpegsrc/libavformat/${LIBPREF}avformat$LIBSUF $ffmpegsrc/libavcodec/${LIBPREF}avcodec$LIBSUF $ffmpegsrc/libavutil/${LIBPREF}avutil$LIBSUF $ffmpegsrc/libavdevice/${LIBPREF}avdevice$LIBSUF -lz $ffmpegldadd" HAVE_FFMPEG=yes FFMPEG_INCDIR="$ffmpegsrc" FFMPEG_CFLAGS="-I$FFMPEG_INCDIR -I$FFMPEG_INCDIR/libavcodec -I$FFMPEG_INCDIR/libavformat -I$FFMPEG_INCDIR/libavutil" { $as_echo "$as_me:${as_lineno-$LINENO}: located a ffmpeg installation without pkg-information." >&5 $as_echo "$as_me: located a ffmpeg installation without pkg-information." >&6;} fi elif test -n "$ffmpegprefix" ; then FFMPEG_LIBS="-L$ffmpegprefix/lib -lavcodec -lavutil -lavformat" FFMPEG_INCDIR="$ffmpegprefix/include" FFMPEG_CFLAGS="-I$FFMPEG_INCDIR" #default FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/libavcodec -I$FFMPEG_INCDIR/libavformat -I$FFMPEG_INCDIR/libavutil" # new FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/ffmpeg/" # old FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/ffmpeg/libavcodec -I$FFMPEG_INCDIR/ffmpeg/libavformat -I$FFMPEG_INCDIR/ffmpeg/libavutil" # even older HAVE_FFMPEG=yes { $as_echo "$as_me:${as_lineno-$LINENO}: located a ffmpeg installation without pkg-information." >&5 $as_echo "$as_me: located a ffmpeg installation without pkg-information." >&6;} fi if test "x$HAVE_FFMPEG" != "xyes"; then as_fn_error $? " libavcodec, libavformat and libavutil from ffmpeg are required. If you are sure that ffmpeg is installed, point configure to your local copy with f.i. ./configure --with-ffmpegprefix=/usr/local/ or ./configure --with-ffmpegsrc=/usr/local/src/ffmpeg/ " "$LINENO" 5 fi ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $FFMPEG_CFLAGS" for ac_header in ffmpeg/avcodec.h do : ac_fn_c_check_header_mongrel "$LINENO" "ffmpeg/avcodec.h" "ac_cv_header_ffmpeg_avcodec_h" "$ac_includes_default" if test "x$ac_cv_header_ffmpeg_avcodec_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FFMPEG_AVCODEC_H 1 _ACEOF $as_echo "#define OLD_FFMPEG 1" >>confdefs.h OLD_FFMPEG=1; fi done if test -n "$ffmpegsrc"; then for ac_header in $ffmpegsrc/libswscale/swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS $ffmpegsrc/libswscale/${LIBPREF}swscale$LIBSUF"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$FFMPEG_INCDIR/libswscale" fi done elif test -n "$ffmpegprefix"; then for ac_header in $ffmpegprefix/include/libswscale/swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/libswscale/" fi done # new for ac_header in $ffmpegprefix/include/ffmpeg/libswscale/swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/ffmpeg/" fi done # old for ac_header in $ffmpegprefix/include/ffmpeg/swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I$ffmpegprefix/include/ffmpeg/libswscale/" fi done # older elif test -n "$OLD_FFMPEG"; then for ac_header in swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale" fi done else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWSCALE" >&5 $as_echo_n "checking for SWSCALE... " >&6; } if test -n "$SWSCALE_CFLAGS"; then pkg_cv_SWSCALE_CFLAGS="$SWSCALE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libswscale\""; } >&5 ($PKG_CONFIG --exists --print-errors "libswscale") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SWSCALE_CFLAGS=`$PKG_CONFIG --cflags "libswscale" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SWSCALE_LIBS"; then pkg_cv_SWSCALE_LIBS="$SWSCALE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libswscale\""; } >&5 ($PKG_CONFIG --exists --print-errors "libswscale") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SWSCALE_LIBS=`$PKG_CONFIG --libs "libswscale" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SWSCALE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libswscale" 2>&1` else SWSCALE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libswscale" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SWSCALE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (libswscale) were not met: $SWSCALE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SWSCALE_CFLAGS and SWSCALE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables SWSCALE_CFLAGS and SWSCALE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else SWSCALE_CFLAGS=$pkg_cv_SWSCALE_CFLAGS SWSCALE_LIBS=$pkg_cv_SWSCALE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS $SWSCALE_LIBS"; FFMPEG_CFLAGS="$FFMPEG_CFLAGS $SWSCALE_CFLAGS" fi if test -z "$HAVE_SWSCALE";then for ac_header in libswscale/swscale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF $as_echo "#define HAVE_SWSCALE 1" >>confdefs.h HAVE_SWSCALE=1; FFMPEG_LIBS="$FFMPEG_LIBS -lswscale"; fi done fi fi CFLAGS="$ac_save_CFLAGS" FREETYPE_LIBS= FREETYPE_CFLAGS= FOUND_H_FREETYPE= FOUND_L_FREETYPE= if test -n "$freetypesrc" ; then as_ac_File=`$as_echo "ac_cv_file_$freetypesrc/include/ft2build.h" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $freetypesrc/include/ft2build.h" >&5 $as_echo_n "checking for $freetypesrc/include/ft2build.h... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$freetypesrc/include/ft2build.h"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$freetypesrc/include/ft2build.h" | $as_tr_cpp` 1 _ACEOF FOUND_H_FREETYPE=yes fi as_ac_File=`$as_echo "ac_cv_file_$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF" >&5 $as_echo_n "checking for $freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF... " >&6; } if eval \${$as_ac_File+:} false; then : $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi eval ac_res=\$$as_ac_File { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF" | $as_tr_cpp` 1 _ACEOF FOUND_L_FREETYPE=yes fi fi if test "x$FOUND_H_FREETYPE$FOUND_L_FREETYPE" = "xyesyes" ; then FREETYPE_CFLAGS="-I$freetypesrc/include/" FREETYPE_LIBS="$freetypesrc/objs/.libs/${LIBPREF}freetype$LIBSUF" else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FREETYPE" >&5 $as_echo_n "checking for FREETYPE... " >&6; } if test -n "$FREETYPE_CFLAGS"; then pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FREETYPE_LIBS"; then pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2" 2>&1` else FREETYPE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FREETYPE_PKG_ERRORS" >&5 freetype_pkgconfig=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } freetype_pkgconfig=no else FREETYPE_CFLAGS=$pkg_cv_FREETYPE_CFLAGS FREETYPE_LIBS=$pkg_cv_FREETYPE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } freetype_pkgconfig=yes fi if test "x$freetype_pkgconfig" = "xyes"; then if test ! "x$enable_ft" = "xno"; then $as_echo "#define HAVE_FREETYPE_H 1" >>confdefs.h $as_echo "#define HAVE_FT 1" >>confdefs.h HAVE_FT=1 else FREETYPE_LIBS= FREETYPE_CFLAGS= fi else # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_FREETYPE_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_FREETYPE_CONFIG" && ac_cv_path_FREETYPE_CONFIG="no" ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CONFIG" >&5 $as_echo "$FREETYPE_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$FREETYPE_CONFIG" != "xno" -a ! "x$enable_ft" = "xno"; then FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` FREETYPE_LIBS=`$FREETYPE_CONFIG --libs` $as_echo "#define HAVE_FREETYPE_H 1" >>confdefs.h $as_echo "#define HAVE_FT 1" >>confdefs.h HAVE_FT=1 fi fi fi #if test -z "$fontfile" ; then # TODO try some arch-typical font files here ? # PPC: "/usr/X11R6/lib/X11/fonts/TTF/luxisb.ttf" # Debian: "/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf" #fi if test -n "$fontfile" ; then # I'm not sure if this is the proper way to escape a #define string. # AC_DEFINE(TTFFONTFILE, "\"$fontfile\"") - no # FREETYPE_CFLAGS="$FREETYPE_CFLAGS -DTTFFONTFILE=\\\"$fontfile\\\"" - maybe echo "#define TTFFONTFILE \"$fontfile\"" >> confdefs.h fi #if test "x${enable_imlib}" != "xno"; then # PKG_CHECK_MODULES(IMLIB,imlib, [ AC_DEFINE(HAVE_IMLIB) HAVE_IMLIB=1 ], [ NULL=0 ]) #fi if test "x${enable_imlib2}" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMLIB2" >&5 $as_echo_n "checking for IMLIB2... " >&6; } if test -n "$IMLIB2_CFLAGS"; then pkg_cv_IMLIB2_CFLAGS="$IMLIB2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"imlib2 >= 1.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "imlib2 >= 1.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMLIB2_CFLAGS=`$PKG_CONFIG --cflags "imlib2 >= 1.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$IMLIB2_LIBS"; then pkg_cv_IMLIB2_LIBS="$IMLIB2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"imlib2 >= 1.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "imlib2 >= 1.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMLIB2_LIBS=`$PKG_CONFIG --libs "imlib2 >= 1.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then IMLIB2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "imlib2 >= 1.3.0" 2>&1` else IMLIB2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "imlib2 >= 1.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$IMLIB2_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else IMLIB2_CFLAGS=$pkg_cv_IMLIB2_CFLAGS IMLIB2_LIBS=$pkg_cv_IMLIB2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_IMLIB2 1" >>confdefs.h HAVE_IMLIB2=1 fi fi if test "x$enable_lash" == "xyes"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LASH" >&5 $as_echo_n "checking for LASH... " >&6; } if test -n "$LASH_CFLAGS"; then pkg_cv_LASH_CFLAGS="$LASH_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lash-1.0 >= 0.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "lash-1.0 >= 0.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LASH_CFLAGS=`$PKG_CONFIG --cflags "lash-1.0 >= 0.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LASH_LIBS"; then pkg_cv_LASH_LIBS="$LASH_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lash-1.0 >= 0.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "lash-1.0 >= 0.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LASH_LIBS=`$PKG_CONFIG --libs "lash-1.0 >= 0.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LASH_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lash-1.0 >= 0.4.0" 2>&1` else LASH_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lash-1.0 >= 0.4.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LASH_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else LASH_CFLAGS=$pkg_cv_LASH_CFLAGS LASH_LIBS=$pkg_cv_LASH_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } LASH_FOUND="yes" fi if test "x$LASH_FOUND" = "xyes"; then $as_echo "#define HAVE_LASH 1" >>confdefs.h HAVE_LASH=1; #LASH_VERSION=$( pkg-config --modversion lash-1.0 ) #AC_DEFINE_UNQUOTED(LASH_VERSION, "$LASH_VERSION", [The version of lash we're compiling against]) fi fi if test "x$enable_ltc" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LTC" >&5 $as_echo_n "checking for LTC... " >&6; } if test -n "$LTC_CFLAGS"; then pkg_cv_LTC_CFLAGS="$LTC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ltc\""; } >&5 ($PKG_CONFIG --exists --print-errors "ltc") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LTC_CFLAGS=`$PKG_CONFIG --cflags "ltc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LTC_LIBS"; then pkg_cv_LTC_LIBS="$LTC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ltc\""; } >&5 ($PKG_CONFIG --exists --print-errors "ltc") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LTC_LIBS=`$PKG_CONFIG --libs "ltc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LTC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ltc" 2>&1` else LTC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ltc" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LTC_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else LTC_CFLAGS=$pkg_cv_LTC_CFLAGS LTC_LIBS=$pkg_cv_LTC_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LTC 1" >>confdefs.h HAVE_LTC=1 fi fi if test "x$enable_ltc" != "xno" -a -z "$HAVE_LTC" ; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LTCSMPTE" >&5 $as_echo_n "checking for LTCSMPTE... " >&6; } if test -n "$LTCSMPTE_CFLAGS"; then pkg_cv_LTCSMPTE_CFLAGS="$LTCSMPTE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ltcsmpte\""; } >&5 ($PKG_CONFIG --exists --print-errors "ltcsmpte") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LTCSMPTE_CFLAGS=`$PKG_CONFIG --cflags "ltcsmpte" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LTCSMPTE_LIBS"; then pkg_cv_LTCSMPTE_LIBS="$LTCSMPTE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ltcsmpte\""; } >&5 ($PKG_CONFIG --exists --print-errors "ltcsmpte") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LTCSMPTE_LIBS=`$PKG_CONFIG --libs "ltcsmpte" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LTCSMPTE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ltcsmpte" 2>&1` else LTCSMPTE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ltcsmpte" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LTCSMPTE_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else LTCSMPTE_CFLAGS=$pkg_cv_LTCSMPTE_CFLAGS LTCSMPTE_LIBS=$pkg_cv_LTCSMPTE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LTCSMPTE 1" >>confdefs.h HAVE_LTCSMPTE=1 fi fi if test "x${enable_contrib}" != "xno"; then : for ac_header in tiffio.h do : ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" if test "x$ac_cv_header_tiffio_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TIFFIO_H 1 _ACEOF FOUND_H_TIFF=yes fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFOpen in -ltiff" >&5 $as_echo_n "checking for TIFFOpen in -ltiff... " >&6; } if ${ac_cv_lib_tiff_TIFFOpen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFOpen (); int main () { return TIFFOpen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tiff_TIFFOpen=yes else ac_cv_lib_tiff_TIFFOpen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFOpen" >&5 $as_echo "$ac_cv_lib_tiff_TIFFOpen" >&6; } if test "x$ac_cv_lib_tiff_TIFFOpen" = xyes; then : FOUND_L_TIFF=yes fi if test "x$FOUND_H_TIFF$FOUND_L_TIFF" = "xyesyes"; then $as_echo "#define HAVE_TIFF 1" >>confdefs.h HAVE_TIFF=1 TIFF_LIBS="-ltiff" TIFF_CFLAGS="" else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF" >&5 $as_echo_n "checking for TIFF... " >&6; } if test -n "$TIFF_CFLAGS"; then pkg_cv_TIFF_CFLAGS="$TIFF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tiff\""; } >&5 ($PKG_CONFIG --exists --print-errors "tiff") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TIFF_CFLAGS=`$PKG_CONFIG --cflags "tiff" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$TIFF_LIBS"; then pkg_cv_TIFF_LIBS="$TIFF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tiff\""; } >&5 ($PKG_CONFIG --exists --print-errors "tiff") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TIFF_LIBS=`$PKG_CONFIG --libs "tiff" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TIFF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "tiff" 2>&1` else TIFF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "tiff" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$TIFF_PKG_ERRORS" >&5 NULL=0 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } NULL=0 else TIFF_CFLAGS=$pkg_cv_TIFF_CFLAGS TIFF_LIBS=$pkg_cv_TIFF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_TIFF 1" >>confdefs.h HAVE_TIFF=1 fi fi fi if test "$enable_qtgui" = "yes"; then if test "x$qt4prefix" = "x"; then qt4prefix=$($PKG_CONFIG --variable=prefix QtGui) fi # Check for Qt qmake utility. # Extract the first word of "qmake", so it can be a program name with args. set dummy qmake; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_qmake+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_qmake in [\\/]* | ?:[\\/]*) ac_cv_path_ac_qmake="$ac_qmake" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $qt4prefix/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_qmake="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_ac_qmake" && ac_cv_path_ac_qmake="no" ;; esac fi ac_qmake=$ac_cv_path_ac_qmake if test -n "$ac_qmake"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_qmake" >&5 $as_echo "$ac_qmake" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "lrelease", so it can be a program name with args. set dummy lrelease; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_lrelease+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_lrelease in [\\/]* | ?:[\\/]*) ac_cv_path_ac_lrelease="$ac_lrelease" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $qt4prefix/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_lrelease="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_ac_lrelease" && ac_cv_path_ac_lrelease="no" ;; esac fi ac_lrelease=$ac_cv_path_ac_lrelease if test -n "$ac_lrelease"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_lrelease" >&5 $as_echo "$ac_lrelease" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_qmake" = "xno" -o "x$ac_lrelease" = "xno" ; then as_fn_error $? "qmake not found: please install the Qt4 development package of your distribution. Try setting the --with-qt4config parameter; or use --disable-qtgui to compile xjadeo." "$LINENO" 5 fi HAVE_QT4=1 if test -n "$HAVE_WINDOWS"; then ac_qmake_args="-spec win32-x-g++ -config release" fi ac_qtgui_dir="qt-gui" XJINFO_BIN="xjinfo" ac_config_files="$ac_config_files src/qt-gui/Makefile src/qt-gui/qjadeo.pro" else ac_qtgui_dir="" XJINFO_BIN="" fi ac_contrib_dir="" if test "x$enable_contrib" = "xyes"; then ac_contrib_dir="contrib/cli-remote/" if test -n "$HAVE_TIFF"; then ac_contrib_dir="$ac_contrib_dir contrib/tsmm" fi fi if test "x$enable_contrib" = "xyes"; then ac_config_files="$ac_config_files contrib/cli-remote/Makefile" if test -n "$HAVE_TIFF"; then ac_config_files="$ac_config_files contrib/tsmm/Makefile" fi fi ac_config_files="$ac_config_files Makefile src/Makefile src/xjadeo/Makefile xjadeo.lsm" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "src/qt-gui/Makefile") CONFIG_FILES="$CONFIG_FILES src/qt-gui/Makefile" ;; "src/qt-gui/qjadeo.pro") CONFIG_FILES="$CONFIG_FILES src/qt-gui/qjadeo.pro" ;; "contrib/cli-remote/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/cli-remote/Makefile" ;; "contrib/tsmm/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/tsmm/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/xjadeo/Makefile") CONFIG_FILES="$CONFIG_FILES src/xjadeo/Makefile" ;; "xjadeo.lsm") CONFIG_FILES="$CONFIG_FILES xjadeo.lsm" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi MIDIREPORT="" if test -n "$HAVE_PORTMIDI"; then MIDIREPORT="${MIDIREPORT}portmidi "; fi if test -n "$HAVE_JACKMIDI"; then MIDIREPORT="${MIDIREPORT}jack-midi "; fi if test -n "$ALSA_SEQ_MIDI"; then MIDIREPORT="${MIDIREPORT}alsa-seq "; fi if test -n "$ALSA_RAW_MIDI"; then MIDIREPORT="${MIDIREPORT}alsa-RAW "; fi if test -z "$HAVE_MIDI"; then MIDIREPORT="${MIDIREPORT}disabled."; fi if test -n "$HAVE_MQ"; then RCTLREPORT="POSIX-MQ"; elif test -n "$HAVE_IPCMSG"; then RCTLREPORT="IPC-MSG"; else RCTLREPORT="not avail."; fi if test -z "$HAVE_FT"; then OSDREPORT="disabled" else OSDREPORT=" - freetype: yes - default font: " if test -n "$fontfile" ; then OSDREPORT="${OSDREPORT}$fontfile"; else OSDREPORT="${OSDREPORT}-" fi fi if test -n "$HAVE_SWSCALE"; then FFSWREPORT="swscale"; else FFSWREPORT="img_convert"; fi CONTREPORT="no" if test "x$enable_contrib" = "xyes"; then CONTREPORT="yes libtiff (xjtsmm): "; if test -n "$HAVE_TIFF"; then CONTREPORT="${CONTREPORT}yes"; else CONTREPORT="${CONTREPORT}not avail."; fi fi if test -n "$HAVE_LIBXV"; then RPT_LIBXV="yes"; else RPT_LIBXV="not avail."; fi if test -n "$HAVE_IMLIB2"; then RPT_IMLIB2="yes"; else RPT_IMLIB2="not avail."; fi if test -n "$HAVE_MACOSX"; then RPT_MACOSX="yes"; else RPT_MACOSX="not avail."; fi if test -n "$HAVE_SDL"; then RPT_SDL="yes"; else RPT_SDL="not avail."; fi if test -n "$HAVE_LASH"; then RPT_LASH="yes"; else RPT_LASH="not avail."; fi if test -n "$HAVE_LIBLO"; then RPT_LIBLO="yes"; else RPT_LIBLO="not avail."; fi if test -n "$HAVE_QT4"; then RPT_QT4="yes"; else RPT_QT4="no"; fi if test -n "$HAVE_MACOSX"; then RPT_QT4="${RPT_QT4} (OSX-built-in)"; fi if test -n "$JACK_SESSION"; then RPT_JACKSESSION="yes"; else RPT_JACKSESSION="not avail."; fi if test -n "$HAVE_LTC"; then RPT_LTC="yes"; elif test -n "$HAVE_LTCSMPTE"; then RPT_LTC="yes, libltcsmpte -- deprecated, use https://github.com/x42/libltc"; else RPT_LTC="not avail."; fi { $as_echo "$as_me:${as_lineno-$LINENO}: ------------------------------------------------------------------------ $PACKAGE $VERSION - Configuration Report ------------------------------------------------------------------------ prefix: $prefix exec-prefix: $exec_prefix install path: $bindir System wide config: $sysconfdir/xjadeorc Video Displays - libxv: $RPT_LIBXV - libx11/imlib2: $RPT_IMLIB2 - mac/osx: $RPT_MACOSX - SDL: $RPT_SDL Sync: - JACK-transport: yes - LTC: $RPT_LTC - MIDI: $MIDIREPORT JACK-session: $RPT_JACKSESSION ffmpeg-scaling: $FFSWREPORT remote control: $RCTLREPORT OSC remote control: $RPT_LIBLO LASH: $RPT_LASH On-screen-display: $OSDREPORT GUI (qjadeo): $RPT_QT4 build contrib/*: $CONTREPORT " >&5 $as_echo "$as_me: ------------------------------------------------------------------------ $PACKAGE $VERSION - Configuration Report ------------------------------------------------------------------------ prefix: $prefix exec-prefix: $exec_prefix install path: $bindir System wide config: $sysconfdir/xjadeorc Video Displays - libxv: $RPT_LIBXV - libx11/imlib2: $RPT_IMLIB2 - mac/osx: $RPT_MACOSX - SDL: $RPT_SDL Sync: - JACK-transport: yes - LTC: $RPT_LTC - MIDI: $MIDIREPORT JACK-session: $RPT_JACKSESSION ffmpeg-scaling: $FFSWREPORT remote control: $RCTLREPORT OSC remote control: $RPT_LIBLO LASH: $RPT_LASH On-screen-display: $OSDREPORT GUI (qjadeo): $RPT_QT4 build contrib/*: $CONTREPORT " >&6;} if test "x$enable_contrib" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Note for Packagers: --enable-contrib does not make a difference when packaging all Programs in contrib are noinst targets. They are intended for advanced users, developers or testing only. " >&5 $as_echo "$as_me: Note for Packagers: --enable-contrib does not make a difference when packaging all Programs in contrib are noinst targets. They are intended for advanced users, developers or testing only. " >&6;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: type \"make\" followed my \"make install\" as root. " >&5 $as_echo "$as_me: type \"make\" followed my \"make install\" as root. " >&6;} xjadeo-0.7.6/config.h0000644000175000017500000001642212200730255011336 00000000000000/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* Define as 1 to enable ALSA-raw midi driver */ #define ALSA_RAW_MIDI 1 /* Define as 1 to enable ALSA sequencer midi */ #define ALSA_SEQ_MIDI 1 /* errors in the resource config file only result in a warning message instead of forcing xjadeo to exit. */ #define CFG_WARN_ONLY 1 /* enable XV and imlib2 color equalizer */ #define COLOREQ 1 /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ /* #undef CRAY_STACKSEG_END */ /* enable frame cropping */ /* #undef CROPIMG */ /* Define to 1 if using `alloca.c'. */ /* #undef C_ALLOCA */ /* enable xjadeo x11 drag and drop */ #define DND 1 /* paint a X on screen when unable to decode or display a frame. */ #define DRAW_CROSS 1 /* Define to 1 if you have `alloca', as a function or macro. */ #define HAVE_ALLOCA 1 /* Define to 1 if you have and it should be used (not on Ultrix). */ #define HAVE_ALLOCA_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ALSA_ASOUNDLIB_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_FFMPEG_AVCODEC_H */ /* Have FreeType2 include files */ #define HAVE_FREETYPE_H 1 /* Use freetype for OSD */ #define HAVE_FT 1 /* Define as 1 if you have imlib2 */ #define HAVE_IMLIB2 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define as 1 if you have IPC message queues (system-V) */ /* #undef HAVE_IPCMSG */ /* Define as 1 to enable JACK-MIDI */ #define HAVE_JACKMIDI 1 /* Define to 1 if you have the header file. */ #define HAVE_JACK_MIDIPORT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_JACK_SESSION_H 1 /* experimental code to use jack_video, jack-svn >= r591 */ /* #undef HAVE_JACK_VIDEO */ /* Define as 1 if you have lash */ /* #undef HAVE_LASH */ /* Define as 1 if you have the loblo OSC library */ #define HAVE_LIBLO 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBSWSCALE_SWSCALE_H */ /* Define as 1 if you have the Xv library (-lXv) */ #define HAVE_LIBXV 1 /* Define as 1 if you have libltc - http://github.com/x42/libltc */ #define HAVE_LTC 1 /* Define as 1 if you have ltcsmpte.sf.net */ /* #undef HAVE_LTCSMPTE */ /* use macintosh native display */ /* #undef HAVE_MACOSX */ /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define as 1 if to enable MIDI in general */ #define HAVE_MIDI 1 /* Define as 1 if you have POSIX message queues (libc, librt) */ #define HAVE_MQ 1 /* Define as 1 if to enable the portmidi driver */ #define HAVE_PORTMIDI 1 /* Define to 1 if you have the header file. */ #define HAVE_PORTMIDI_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PORTTIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define as 1 if you have the SDL toolkit */ #define HAVE_SDL 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define as 1 if you have ffmpeg with swscale support */ #define HAVE_SWSCALE 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SWSCALE_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_IPC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MSG_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define as 1 if you have libtiff (contrib/tsmm) */ #define HAVE_TIFF 1 /* Define to 1 if you have the header file. */ #define HAVE_TIFFIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* windows SDL version */ /* #undef HAVE_WINDOWS */ /* Define to 1 if you have the header file. */ #define HAVE_X11_XLIB_H 1 /* Define as 1 if you have libXpm */ #define HAVE_XPM 1 /* use native RGB32 ffmpeg -> imlib. */ #define IMLIB2RGBA /**/ /* Define as 1 to enable JACK Session support */ #define JACK_SESSION 1 /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_SYSMACROS */ /* max length of a remote control line. */ #define MQLEN 512 /* use new JACK latency API */ #define NEW_JACK_LATENCY_API 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* Define as 1 if you older versions of ffmpeg that provide all include headers in one folder. */ /* #undef OLD_FFMPEG */ /* Name of package */ #define PACKAGE "xjadeo" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* The size of `double', as computed by sizeof. */ #define SIZEOF_DOUBLE 8 /* The size of `float', as computed by sizeof. */ #define SIZEOF_FLOAT 4 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 4 /* The size of `unsigned long', as computed by sizeof. */ #define SIZEOF_UNSIGNED_LONG 4 /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ /* #undef STACK_DIRECTION */ /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* enable dynamic time scaling */ #define TIMEMAP 1 /* Define to 1 if your declares `struct tm'. */ /* #undef TM_IN_SYS_TIME */ /* absolute path to truetype default OSD font file */ /* #undef TTFFONTFILE */ /* Version number of package */ #define VERSION "0.7.6" /* 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 /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ xjadeo-0.7.6/depcomp0000755000175000017500000004426711437010433011305 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xjadeo-0.7.6/config.sub0000755000175000017500000010344511437010433011705 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2010-01-22' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: xjadeo-0.7.6/doc/0000755000175000017500000000000012200730320010531 500000000000000xjadeo-0.7.6/doc/xjadeo.png0000644000175000017500000000712611464664425012466 00000000000000PNG  IHDRff9bsRGBbKGDC IDATx]{lTUܶÌ0m[WеakEM$k&Ԡ.FvMcXLA`H%D a.EMS nn!t:scy83W_xΝs9{;wZЄ#j0Ɛaa!C1 c c k"\$^9L4BBJ !TR@I HJBI${VJAI RPJAkN5;ݖQ)%PJAR(e1L8û8㠌s\sϔ4RJR@J!PB@H $%H!* -JB* JiZ+h(h5>bӚN)N !E !R-00@sC8ssŒ98n E )_4TNA$AL6/L'~4B ;} %TI*suVGȃD;BgQ ʒcWx1@'xA7cLc2C11F 1ԛ |7sLر>裏칳ؾ}҂?7n^y9svµ^ xGpXxnضm-[D"ؼysJp8{~!n@cc#>d,X/`ڵJ)ۧ~[ochjjq1CRL2P B#83R@ \})%BjjjQQD(4S1k,?ݩS_b^twwoсٳg{~8#nH)뱣G )#GpweYU殮.9롳˗/CCCXbxܹ_|oqi51^FBRJ}:zzzp̙_cASg#6tCqa޽_|.۱n:tuuab |ܹsӫqSضmB|Aw}RΝ;q7^={{;x饗Ѐ of͚6444;v}%>@gg'M7|3f8ϖQsxV.ǑϻB2K/KzBH,ʘq!MP>-m>/ b&:bT6h8ņcPRČ5c Q|;Ÿh2ѡh- GL1j^VǻE#&K:DFˈɘ|Q3RhW(ŌgD,T8l$4L 1RJ ?7soѥK0<< )dL HhniHBح G CH)-L />fUx%9LR=piE(m_j,t1Rv=#V#,1 0tۘJB(++ǨV >*iYeCL)ZDUl A#5BV9dL)3 %۸&2bK Jl-r#i`*1(V)ŜRruʀBK[+D +RGBf9gvY7r٘S)+!c柭/ӨILX,56 cƲb U&~-d۶W6A|?71T5 HJ ;n6l! 8l۱v!l-kB7H#O# [HH[83\ R8fR=fZu5k7W2X,RTKRMN̙obsccp7.,<Ź70<~[@\ؐ [ZP-cQ,\J %JV ٟږd`MX'g$Y!gr F9{({hq⢈3ppϞE@5T` ƕ b&b_θEھܰpQ G%4x͕sG829kh@ 1P Ƕ~)Z'urF6)sR kd8,=ĸܕ! @"Η%Wh1WŬ'Ӯ|1nt:)eAeO xK3t_ OSjGRI\2Ki) ig|!kLI=nl#[x1T #m?mh%s r*#W6E"9\t| QJ/y0Zt%[Zٕ,䥕h+EkAjrmQ)]K7{d%{dT4R$?y]o|`&`zX%3Ü3 ڌ3^4pRFq98X7&s):[ h.:e9+(%Hg!HNv_S 8R#2@!&4ٛ,MZNKJ8cZ̕Gc|DM211dcc0Ɛaa!Ø+ hOIENDB`xjadeo-0.7.6/doc/xjinfo.10000644000175000017500000000520711640100342012036 00000000000000'\" t .\" Title: xjinfo .\" Author: Robin Gareus .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 09/26/2011 .\" Manual: Manual Pages .\" Source: http://xjadeo.sf.net 0.6.X .\" Language: English .\" .TH "XJINFO" "1" "09/26/2011" "http://xjadeo\&.sf\&.net 0\&.6" "Manual Pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" xjinfo \- Display A/V file info in XML format\&. .SH "SYNOPSIS" .HP \w'\fBxjinfo\fR\ 'u \fBxjinfo\fR [\-chtvVx] \fI\fR .SH "DESCRIPTION" .PP xjinfo does basically the same as \fBffprobe\fR but displays the information in XML or simple text format that can be used for scripting\&. .SH "OPTIONS" .PP \fB\-c\fR, \fB\-\-csv\fR .RS 4 comma separated values, one line per video stream in file\&. Use the built\-in help \fB\-h\fR to learn about the format\&. .RE .PP \fB\-h\fR, \fB\-h, \-\-help\fR .RS 4 Print usage help and exit\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR, \fB\-\-duration\fR .RS 4 print the duration in seconds (without trailing newline) .RE .PP \fB\-v\fR, \fB\-\-text\fR .RS 4 print a single line: duration, fps, geometry and codec info\&. .RE .PP \fB\-x\fR, \fB\-\-xml\fR .RS 4 output XML data\&. This is the default if no option is specified\&. .sp A DTD is available with the source or from \m[blue]\fBxjadeo\&.sf\&.net\fR\m[]\&\s-2\u[1]\d\s+2 .RE .SH "SEE ALSO" .PP xjadeo(1) .SH "AUTHORS" .PP \fBRobin Gareus\fR <\&robin@gareus.org\&> .RS 4 linuxaudio.org .RE .PP \fBLuis Garrido\fR <\&luisgarrido@users.sourceforge.net\&> .RS 4 luisgarrido.users.sourceforge.net .RE .SH "COPYRIGHT" .br Copyright \(co 2005, 2006, 2007, 2009, 2010, 2011 Robin Gareus, Luis Garrido .br .SH "NOTES" .IP " 1." 4 xjadeo.sf.net .RS 4 \%http://xjadeo.git.sourceforge.net/git/gitweb.cgi?p=xjadeo/xjadeo;a=blob_plain;f=src/xjadeo/avinfo.dtd .RE xjadeo-0.7.6/doc/favicon.ico0000644000175000017500000000047611436325750012622 00000000000000(( 31DD"!31DD"!31DD"!31DD"!31DD"!31DD"!31DD"!1xjadeo-0.7.6/doc/xjadeo.10000644000175000017500000003471311640100342012017 00000000000000'\" t .\" Title: xjadeo .\" Author: Robin Gareus .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 09/26/2011 .\" Manual: Manual Pages .\" Source: http://xjadeo.sf.net 0.6.X .\" Language: English .\" .TH "XJADEO" "1" "09/26/2011" "http://xjadeo\&.sf\&.net 0\&.6" "Manual Pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" xjadeo \- display a video\-clip in sync with an external time source .SH "SYNOPSIS" .HP \w'\fBxjadeo\fR\ 'u \fBxjadeo\fR [\-aAbcCDhIkKlLnNPqQRsStvV] [\-d\ \fI\fR] [\-f\ \fI\fR] [\-F\ \fI\fR] [\-i\ \fI\fR] [\-m\ \fI\fR] [\-M\ \fI\fR] [\-o\ \fI\fR] [\-O\ \fI\fR] [\-W\ \fI\fR] [\-x\ \fI\fR] \fI\fR .HP \w'\fBxjadeo\fR\ 'u \fBxjadeo\fR \-R [options] [\fI\fR] .HP \w'\fBxjadeo\fR\ 'u \fBxjadeo\fR \-Q [options] [\fI\fR] .SH "DESCRIPTION" .PP Xjadeo is a software video player that displays a video\-clip in sync with an external time source (MTC, LTC, JACK\-transport)\&. .PP It has applications in soundtrack composition, video monitoring or any task that requires synchronizing movie frames with audio events\&. .PP Xjadeo supports different video file formats, video output libraries and sync sources\&. .SH "OPTIONS" .PP \fB\-a\fR, \fB\-\-ontop\fR .RS 4 Start Xjadeo \*(Aqalways\-on\-top\*(Aq of other windows (this option requires support from your window manager)\&. .RE .PP \fB\-A\fR, \fB\-\-avverbose\fR .RS 4 Enable verbose ffmpeg messages (format/codec debugging)\&. .RE .PP \fB\-b\fR, \fB\-\-letterbox\fR .RS 4 Retain aspect ratio and draw a letterbox around the video\-frame if necessary\&. .RE .PP \fB\-c\fR, \fB\-\-no\-midiclk\fR .RS 4 Do not use MIDI quarter\-frames for more exact sync\&. .RE .PP \fB\-c\fR, \fB\-\-midiclk\fR .RS 4 Use MIDI quarter\-frame timing for more exact sync (this is enabled by default since version 0\&.4\&.11)\&. .RE .PP \fB\-d \fR\fB\fI\fR\fR, \fB\-\-midi\-driver \fR\fB\fI\fR\fR\fB \fR .RS 4 Choose MIDI back\-end to use\&. \fI\fR can be either one of "JACK", "ALSA" or "portmidi" \- depending on the operating\-System and compile\-time configuration\&. .RE .PP \fB\-D, \-\-debug\fR, \fB\-\-debug\fR .RS 4 Enable debug mode\&. Print development related information\&. .RE .PP \fB\-f \fR\fB\fI\fR\fR, \fB\-\-fps \fR\fB\fI\fR\fR .RS 4 Desired refresh\-rate of the video display in frames per second\&. Non\-integer values are possible\&. Default: \-1\&. .sp If this value is set to zero (or less), Xjadeo will use the FPS of the video\-file as its screen update frequency\&. .RE .PP \fB\-F \fR\fB\fI\fR\fR, \fB\-\-filefps \fR\fB\fI\fR\fR .RS 4 Override the (auto\-detected) frame\-rate of the video\-file\&. .RE .PP \fB\-h, \-\-help\fR .RS 4 Prints usage help and exits\&. .RE .PP \fB\-i \fR\fB\fI\fR\fR, \fB\-\-info \fR\fB\fI\fR\fR .RS 4 Displays information using the OSD (on\-screen display\&.) .PP \fB0\fR .RS 4 Off\&. .RE .PP \fB1\fR .RS 4 Frame number\&. .RE .PP \fB2\fR .RS 4 SMPTE time code\&. .RE .PP \fB3\fR .RS 4 Both frame number and SMPTE\&. .RE .sp The remote control interface allows more complete control over the OSD\&. .RE .PP \fB\-I\fR, \fB\-\-ignorefileoffset\fR .RS 4 This option is only useful for video files with a start\-offset, such as split vob files\&. Per default Xjadeo will honor offsets specified in the video\-file header and the file\*(Aqs PTS/DTS\&. \fB\-I\fR allows you to override and subtract this offset and makes the file start at SMPTE position 00:00:00:00 (although you can archive the same result, this option is not related to \fB\-o\fR\&.) .RE .PP \fB\-k\fR, \fB\-\-keyframes \fR .RS 4 Instructs the internal algorithm to seek only to key\-frames\&. This option may improve the performance for certain video encodings\&. .sp The default behavior (without \fB\-k\fR and \fB\-K\fR arguments) is to search any ANY frame\&. .RE .PP \fB\-K\fR, \fB\-\-continuous \fR .RS 4 Decode video frame by frame starting from previous key\-frame\&. This particularly useful for reading files where not every frame is a key\-frame at the cost of increased CPU usage\&. Note that this option adds some extra latency when seeking\&. Combine it with \fB\-f \-1\fR: it makes sense to set Xjadeo\*(Aqs screen\-update frequency to match the frame\-rate of the video file\&. .RE .PP \fB\-l\fR, \fB\-\-ltc\fR .RS 4 Use LTC as sync\-source instead of JACK\-transport\&. .RE .PP \fB\-L\fR, \fB\-\-nolash\fR .RS 4 Disable LASH support\&. .RE .PP \fB\-m \fR\fB\fI\fR\fR, \fB\-\-midi \fR\fB\fI\fR\fR .RS 4 Get sync from MTC (MIDI Time Code) instead of JACK or LTC\&. .sp If using JACK\-MIDI driver, \fI\fR is the JACK\-MIDI port to use as input \- use an empty value ("") to not auto\-connect .sp If using ALSA MIDI back\-end, \fI\fR is the ALSA sequencer\-id to be used as the MTC source\&. A value of \-1 will leave Xjadeo unconnected\&. .sp If using portmidi, \fI\fR is the port\-number of the MIDI input device to use\&. The value \-1 will attempt auto\-connect\&. Use \fB\-v \-m \-1\fR to list MIDI ports during auto\-detection\&. .RE .PP \fB\-M \fR\fB\fI\fR\fR, \fB\-\-midifps \fR\fB\fI\fR\fR .RS 4 Conversion between MTC SMPTE and frame number\&. .PP \fB0\fR (default) .RS 4 Use MTC clock frame rate\&. .RE .PP \fB1\fR .RS 4 Use video\-file\*(Aqs frame\-rate\&. .RE .PP \fB1\fR .RS 4 Resample video frame rate / MTC\&. .RE .RE .PP \fB\-n\fR, \fB\-\-nodropframes\fR .RS 4 Prevent Xjadeo from detecting drop\-frame\-timecode (usually files with 29\&.97 fps) .RE .PP \fB\-N\fR, \fB\-\-dropframes\fR .RS 4 Force Xjadeo to use drop\-frame\-timecode (drop\-frame\-timecode is only valid for files with 29\&.97 fps but your milage may vary) .RE .PP \fB\-o \fR\fB\fI\fR\fR, \fB\-\-offset \fR\fB\fI\fR\fR .RS 4 Offset the video playback a certain number of (video) frames relative to the sync master time base\&. Admits negative values\&. \fI\fR can be specified either as integer frame\-number or SMPTE text\&. .RE .PP \fB\-P\fR, \fB\-\-genpts\fR .RS 4 This option passed on to ffmpeg and has no effect on older versions of libavformat\&. .sp it can be used to generate "presentation time stamps" if they are missing in the file, even if it requires parsing future frames\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR .RS 4 Suppresses normal output messages\&. .RE .PP \fB\-Q\fR, \fB\-\-mq\fR .RS 4 Enable POSIX message queues\&. Set up a communication channel for use with xjremote(1)\&. See the the section called \(lqRemote Control Interface\(rq in the online documentation for more information\&. .RE .PP \fB\-R\fR, \fB\-\-remote\fR .RS 4 Enable interactive (stdin/stdout) remote control mode\&. Options \fB\-\-quiet\fR and \fB\-\-verbose\fR have no effect in remote mode\&. .RE .PP \fB\-s\fR, \fB\-\-fullscreen\fR .RS 4 Start Xjadeo in full\-screen mode\&. .RE .PP \fB\-S\fR, \fB\-\-nosplash\fR .RS 4 Skip the on\-screen\-display startup sequence\&. .RE .PP \fB\-t\fR, \fB\-\-try\-codec\fR .RS 4 Check if the video file is encoded in a format suitable for use with Xjadeo and exit\&. If the video format is not supported the exit code is 1\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 Print additional information\&. .RE .PP \fB\-V\fR, \fB\-\-version\fR .RS 4 Display version and compile\-time configuration information and exit\&. .RE .PP \fB\-W \fR\fB\fI\fR\fR, \fB\-\-ipc \fR\fB\fI\fR\fR .RS 4 Set\-up IPC message queues for xjremote\&. \fI\fR specifies a file\-path used to identify the message\-queue\&. .RE .PP \fB\-x \fR\fB\fI\fR\fR, \fB\-\-vo \fR\fB\fI\fR\fR, \fB\-\-videomode \fR\fB\fI\fR\fR .RS 4 Selects the video output driver\&. Defaults to \fB0\fR (auto\-detect)\&. A value of \-1 lists the available modes and exits\&. .RE .SH "SYNC SOURCES" .PP \fBxjadeo\fR currently supports the following synchronization sources: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} JACK\-transport\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} LTC (Linear/Longitudinal Time Code) \- via JACK audio\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} MTC (MIDI Time Code) via JACK\-MIDI\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} MTC (MIDI Time Code) via ALSA sequencer\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} MTC (MIDI Time Code) via portmidi\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} remote\-ctrl manual seeks (not really a sync source)\&. .RE .SH "VIDEO FORMATS" .PP Xjadeo uses ffmpeg to decode video files, so a wide range of formats and codecs are supported\&. Note, however, that not all the formats support seeking\&. To transcode a video\-file into a suitable format we recommend: .sp .if n \{\ .RS 4 .\} .nf mencoder \-idx \-ovc lavc \-lavcopts keyint=1 \-nosound input_file\&.xxx \-o output_file\&.avi .fi .if n \{\ .RE .\} .sp This creates from your input\-file\&.xxx an AVI mpeg4 encoded video file with no sound, an index (\-idx) and no compression between frames (every frame is a keyframe)\&. The file thus can become really BIG, so watch your disk space! .PP You may want also to shrink the size of the file\*(Aqs video frames by scaling down its geometry\&. This uses fewer system resources while decoding and displaying it and leaves more space in the screen for your audio software\&. .sp .if n \{\ .RS 4 .\} .nf \-vf scale=width:height .fi .if n \{\ .RE .\} .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBImportant\fR .ps -1 .br .PP Also note Xjadeo\*(Aqs \fB\-K\fR option which allows to seek to frames other than key\-frames and enables Xjadeo to play back any file without transcoding it\&. It comes at the expense of increased CPU usage and possibly increased seek latency\&. The latter depends on the key\-frame interval and video\-codec\&. .PP The same can be achieved by adding \fBseek=continuously\fR to ~/\&.xjadeorc\&. .sp .5v .RE .SH "USER INPUT" .PP \fBxjadeo\fR window accepts the following input: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Pressing mouse button 1 will resize the window to the original movie size\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Mouse button 2 and 3 resize the window to match the movie aspect ratio\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Scroll Wheel (buttons 4,5) stepwise decreases/increases the window size maintaining the original aspect ratio\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Xjadeo ≥ v0\&.3\&.8 supports keyboard events\&. Pressing Esc and q will end the program\&. f toggles full\-screen, a togglesalways\-on\-top\&. Press m to hide mouse cursor\&. v, s, o, C and b control on\-screen\-display and l toggles the letter\-box mode\&. The time\-offset can be modified with +, \-, {, } and window\-size with <, >, ,, \&.\&. SPACE and BACKSPACE can be used to control JACK\-transport\&. See the section called \(lqMonitor Window - Key bindings\(rq in the online documentation for a complete list\&. .RE .SH "REMOTE MODE" .PP When started in remote mode (option \fB\-R\fR or \fB\-\-remote\fR) Xjadeo will interactively accept commands and issue responses through its standard input/output mechanism\&. .PP Use the remote command \fBhelp\fR to get a quick overview of all available commands\&. Please refer to the online documentation for a complete description of the remote commands\&. .PP \fBxjadeo \-Q\fR enables remote control by message\-queues; use \fBxjremote\fR to connect\&. .SH "FILES" .PP Xjadeo reads the following resource configuration files in this order: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} /@SYSCONFDIR@/xjadeorc (usually /etc/xjadeorc or /usr/local/etc/xjadeorc, which depends on your distribution and on the configuration when building xjadeo) .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} $HOME/\&.xjadeorc .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} \&./xjadeorc .RE .PP Each line in the configuration file must be in in the format: .sp .if n \{\ .RS 4 .\} .nf KEY=VALUE .fi .if n \{\ .RE .\} .sp If the first character on a line is either \fB#\fR or \fB;\fR the line is ignored\&. \fBKEYS\fR are not case sensitive\&. Some \fBVALUES\fR are case sensitive (e\&.g\&. filenames) and are parsed identical to the corresponding command\-line arguments (e\&.g\&. \fB\-x SDL\fR is equivalent to the config\-file option \fBvideomode=SDL\fR)\&. Boolean values are specified as \fByes\fR or \fBno\fR (e\&.g\&. \fBquiet=yes\fR)\&. .PP currently supported RC\-KEYS: fps, fontfile, lash, letterbox, midiclk, mididriver, midiid, midismpte, mq, nosplash, quiet, seek, verbose and videomode\&. Which are documented in the example \m[blue]\fBxjadeorc\fR\m[]\&\s-2\u[1]\d\s+2 .SH "ENVIRONMENT" .PP \fBJACK_DEFAULT_SERVER\fR .RS 4 Set the jack\-server\-name to connect to (used by JACK\-transport, JACK\-MIDI and LTC) .RE .SH "SEE ALSO" .PP qjadeo(1) .PP xjremote(1) .PP xjinfo(1) .PP \m[blue]\fBonline\-manual\fR\m[]\&\s-2\u[2]\d\s+2 .SH "AUTHORS" .PP \fBRobin Gareus\fR <\&robin@gareus.org\&> .RS 4 linuxaudio.org .RE .PP \fBLuis Garrido\fR <\&luisgarrido@users.sourceforge.net\&> .RS 4 luisgarrido.users.sourceforge.net .RE .SH "COPYRIGHT" .br Copyright \(co 2005, 2006, 2007, 2009, 2010, 2011 Robin Gareus, Luis Garrido .br .SH "NOTES" .IP " 1." 4 xjadeorc .RS 4 \%http://xjadeo.git.sourceforge.net/git/gitweb.cgi?p=xjadeo/xjadeo;a=blob_plain;f=doc/xjadeorc .RE .IP " 2." 4 online-manual .RS 4 \%http://xjadeo.sourceforge.net/ .RE xjadeo-0.7.6/doc/xjadeo.xml0000644000175000017500000034437312152015557012501 00000000000000
<application>Xjadeo</application> - X Jack Video Monitor 2005 2006 2007 2009 2010 2011 2012 2013 Robin Gareus, Luis Garrido Robin Gareus robin@gareus.org linuxaudio.org Luis Garrido luisgarrido@users.sourceforge.net luisgarrido.users.sourceforge.net Xjadeo is a software video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport). Xjadeo is useful in soundtrack composition, video monitoring or any task that requires to synchronizing movie frames with audio events. Xjadeo supports a multitude of video file formats, display libraries and sync sources. It includes an optional GUI called qjadeo that provides setup options, file history, video import/transcoding and control of Xjadeo's run-time parameters. Primarily developed for the GNU/Linux operating system, there are also binaries available for Win32 and OSX. Quick access links: SF-Project Page   Download   Source-Code   Issue Tracker   This manual as PDF 0.7 14 May 2013 prepare migration to github. 0.6-r1 16 Nov 2010 Improved English by Geoff Beasley.
About
FEATURES Xjadeo - video Monitor Display: full-screen or windowed mode, letterbox, timecode on-screen-display. XV/X11 (hardware accelerated) imlib2/X11 SDL (hardware accelerated - win32) carbon/quartz (hardware accelerated - OSX) Video decoding via FFMPEG; Xjadeo supports a multitude of file-formats and video codecs. Sync sources: JACK transport mechanism. MTC using either ALSA-MIDI , JACK-MIDI or portmidi. LTC using JACK-audio frame-accurate: tested with 23.976, 24, 24.976, 25, 29.97df, 30, 59.94 and 60 fps video-files. Timecode conversion and offset calculation. Remote-control interface allows you to query and modify all settings and parameters of a running instance. OSC - Opensoundcontrol Standard I/O POSIX real-time message queues (MQ) System-V IPC Optional Qt Graphical User interface to control Xjadeo.
LICENSE Xjadeo 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 receive a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Build and Install Instructions
System Requirements Xjadeo is currently known to work on GNU/Linux, *BSD, Win32 and Mac OSX. There are no special hardware requirements.
Binaries If you are using a "major" GNU/Linux distribution (Debian, Fedora, Ubuntu, SuSe, Gentoo, Slackware, etc.), you can acquire Xjadeo directly from your distribution. It can be installed using the normal software installation tools for your distribution. In case your distribution does not provide or only ships an old version of Xjadeo, you can build it from . Windows and Mac/OSX binaries are available from the Sourceforge Download Page. Note that you'll need to install JACK for OSX or Windows. in order to use Xjadeo.
Source Xjadeo is developed using a git-repository at git://xjadeo.git.sourceforge.net/gitroot/xjadeo/xjadeo. In case you are unfamiliar with git, Sourceforge provides information on how to access it. Xjadeo is also available as source code package.
Build Dependencies In order to compile the Xjadeo from source, you will need the "development" (-dev) version of the following libraries: Mandatory Libraries: JACK-audio-connection-kit ffmpeg (libavcodec, libavformat, libavutil, libswscale) Note that linking against ffmpeg requires all of ffmpeg's dependencies. Depending on the configuration of ffmpeg, these can include development packages of: libxvidcore, liblame, libfaac, libfaad, libvorbis, libogg, libx264, liba52, libdts,... Video Display Libraries (you need at least one of the following): libXV (recommended) IMlib2 SDL 1.2 (Note: for the Win32 version: SDL is required; on OSX none of the above are used but Xjadeo uses carbon/quartz) Optional libraries: Freetype 2 (actually libfreetype6-2) - for On Screen Display. ALSA (alsa-lib, libasound2) - MIDI Time Code. portmidi - MIDI Time Code. LTCSMPTE - for parsing LTC timecode. QT4 - qjadeo Graphical User Interface liblo - remote control via Opensoundcontrol librt (from the GNU C Library ≥ 2.3.2) - remote-control via POSIX message queue (requires kernel support - Linux ≥ 2.6.6) lash - session management (deprecated LASH support is still available, but not newer options - in particular LTC and MIDI-drivers - are not saved/restored. since Xjadeo ≥ 0.6.0). QT is only needed to compile and run the qjadeo Graphical User Interface (GUI) - not Xjadeo itself. You can certainly build and use Xjadeo without the GUI. qjadeo uses the remote-control feature of Xjadeo and provides easy access for users who are not familiar with the command-line. Furthermore you'll need the standard GNU development tool-set (gcc, make, libc-devel, etc) and if you're building from the source-repository autotools (automake, autoconf) are required to to generate the build environment. We also recommend to install mencoder to transcode video files.
Building <application>Xjadeo</application> If you are using sources from the repository, you'll first need to generate the configuration script: cd xjadeo/ ./autogen.sh Once you have all the build-dependencies the usual spells apply: ./configure make make install # (requires root privileges) The configuration process tries to auto-detect available optional libraries. However, you might want to consider using some of the compile-time options. run ./configure --help for a full list of available arguments. Set the default (hardcoded) true type font file to use for the on-screen-display. build additional support tools - mostly for testing Xjadeo. enable LASH support (deprecated). New features which were introduced after Xjadeo 0.4.10 are not saved/restored with LASH. In particular this affects LTC and JACK-MIDI. Future versions of xjadeo may support JACK-Session management. Do not build the QT Graphical User Interface.
Using <application>Xjadeo</application>
Quick Start Simply run xjadeo your-video-file.avi from a terminal to get a default monitor window displaying the specified video file synchronously to JACK-transport. You can use qjackctl, ardour or any other JACK-transport aware application to start, stop or reposition the transport location. xjadeo --help will print a list of available command line options. Refer to the manual-pages (man xjadeo) which are also available in the for available commendline options. If you prefer, you can also use the graphical user interface qjadeo, be aware that qjadeo only provides access to a limited set of Xjadeo's features. But let's back off a little, first you will need a suitable video file to display..
Video Formats Xjadeo has been designed to aid creative people and not as a general purpose video player. Since it is likely you will be working with the video file for some time, you may want to consider the system resources required for decoding it and perhaps convert it into a format that will tax less your CPU, usually at the expense of more disk space needed to store it. Xjadeo uses ffmpeg to decode the video file and supports only seekable video streams. Probably you first need to encode your video file to a supported format. Be aware that some codecs are governed by licenses or patents in many countries. This is an issue with ffmpeg and not Xjadeo: Nevertheless, you (the end-user) are responsible for complying with the licenses of the codecs you are using. see FFmpeg License and Legal Considerations. We recommend mencoder that comes with mplayer: mencoder -idx -ovc lavc -lavcopts keyint=1 -nosound input-file.xxx -o output-file.aviThis creates from your input-file.xxx an AVI mpeg4 encoded video file with no sound, an index (-idx) and no compression between frames (every frame is a key frame). Thus The file can become really BIG, so watch your disk space! You may want also to shrink the size of the file's video frames by scaling down its geometry. This uses fewer system resources while decoding and displaying it and leaves more space in the screen for your audio software. -vf scale=width:height qjadeo provides an "import dialog" available from the File menu, that will invoke mencoder with these arguments. Xjadeo's option allows to seek to frames other than key-frames and enables Xjadeo to play back any file without transcoding. The down side is increased CPU usage and possibly increased seek latency. The latter depends on the key-frame interval and video-codec. The same can be achieved by adding seek=continuously to ~/.xjadeorc.
Invoking <application>Xjadeo</application> The command syntax: xjadeo [options] video-file There are numerous options documented in the unix man-page, see . The default settings should be good for most use-cases. You can use any application that supports JACK-transport (e.g. qjackctl, ardour, gjacktransport, muse, qtractor, ...) to fool around with its transport controls and see the video clip moving along.
Configuring <application>Xjadeo</application> On startup Xjadeo reads its resource configuration (rc) files if they exist. They are read before parsing command-line options, so settings specified in the .rc file are overridden by command-line arguments. Xjadeo reads the following resource configuration files in this order: /@SYSCONFDIR@/xjadeorc (usually /etc/xjadeorc or /usr/local/etc/xjadeorc, which depends on your distribution and on the configuration when ) $HOME/.xjadeorc ./xjadeorc An example rc file, listing all available options is available with the source-code and can be found online: http://xjadeo.git.sourceforge.net/git/gitweb.cgi?p=xjadeo/xjadeo;a=blob;f=doc/xjadeorc
Sync Methods Xjadeo polls the time code information in the following order, using the first available: MIDI Time Code (if MIDI is connected). LTC (if enabled). JACK-transport (if connected). default value (selecttable using seek remote command). By default Xjadeo connects to jackd on startup. This behavior can be overridden by command line arguments, setting options in the configuration file or later using the remote control interface. An optional time-offset is added after converting the current frame-number to the video file's frames-per-second timebase, followed by clamping the displayed frame-number into the range of the video file duration.
<application>qjadeo</application> - Graphical User Interface To provide easy accesibility and integration into the desktop environment, Xjadeo is supplemented by a graphical user interface: qjadeo is a remote control application that launches Xjadeo and allows to control settings which otherwise would be need to be specified on the command-line. Qjadeo screenshot Screenshot of qjadeo's main window. qjadeo offers "click and go" interface to the most common tasks: Load/replace video-file to display. Provides a history of recently used files. Change the sync-source on the fly. Frontend for importing/transcoding cideo-files (using mencoder). Control On-Screen-Display and set OSD font. manually seek through the video-file using a slider. Change the decoder seek mode. Combined with keyboard shortcuts that can be used with the Xjadeo window itself (see ), this covers all functionality (but for some obscure switches) available from the commandline. Once started, qjadeo can be terminating without closing the monitor window. Re-launching qjadeo will re-connect to the running instance of Xjadeo.
Notes for OSX <application>Jadeo</application> As with many thing on OS X Jadeo is different there. Since OS X mandates a menu-bar for each graphical application, the menu-bar part of qjadeo has been integrated into Jadeo. On the downside: it does not include the import/transcoding feature and no slider for manual seeking. Configuration of Jadeo on OSX can be done exclusively by using a .xjadeorc resource configuration file. See and save it in your home folder.
<application>Xjadeo</application> on Windows The usual way is to launch qjadeo from the Start-Menu, after starting JACK. qjadeo will fire up an Xjadeo window and you can take it from there. See for usage information. In order to use the import/transcoding feature, you need to install mencoder that comes with mplayer and configure the location of installation (default C:\Program Files\mplayer\mencoder.exe) in FileConfigure Qjadeo). On windows it is not possible to disconnect/quit qjadeo without terminating the monitor window of Xjadeo. It is possible to invoke Xjadeo using a command prompt (xjadeo.exe is installed by default to C:\Program Files\xjadeo\).
Interacting with <application>Xjadeo</application> In most cases you will start up Xjadeo with your favorite command line options and not come back to bother again. However you may find it useful to change some settings during runtime:
Remote Control If you do not want to re-focus your keyboard to the Xjadeo window use and jump .
Monitor Window - Key bindings Xjadeo accepts keyboard input (and the X11 version can receive Drag and Drop URIs to load a new file). The current key-bindings are as follows: Key Bindings Key Description Esc Terminate Xjadeo. Space If Xjadeo is synchronized to JACK-transport, toggle JACK-transport play/pause. Backspace If Xjadeo is synchronized to JACK-transport, rewind the play-head. A Toggle window always-on-top. B Draws a black box 'On Screen Display' (OSD) items. Shift C Clear all 'On Screen Display' (OSD) information. E Toggle display of Color-Equalizer (only XV and imlib2). Shift E Reset Color-Equalizer to default values. F Toggle full-screen mode. L Toggle letterbox / scale breaking aspect-ratio. M Toggle mouse pointer visibility. O cycle time-offset OSD: video-frames / SMPTE / off. Q Identical to pressing the Escape key - Terminate Xjadeo. S Toggle OSD SMPTE display. V Toggle OSD frame-number display. < Decrease window size by a factor of 1.2 . > Increase window size by a factor of 1.2 . . Resize window to original (movie-file) size. , Scale window to match movies aspect ratio. - Decrement A/V offset by 1 video-frame. + Increment A/V offset by 1 video-frame. { Decrement A/V offset by 1 minute. } Increment A/V offset by 1 minute. 0-9 change Color-EQ parameters with key pairs. brightness:1+2, contrast:3+4, gamma:5+6, saturation:7+8, hue:9+0 XV color balance is hardware dependant: Some boards do not support all parameters. The imlib2 software EQ is limited to brightness/contrast and gamma correction.
Common Setups
Example Commandlines xjadeo -f 25 -i 2 video-file.avi updates the monitor window 25 times per second and renders SMPTE on the bottom of the screen xjadeo -m -1 -v video-file.avi (using xjadeo compiled with portmidi) auto-connect to first available MIDI-in port and use arriving MTC messages display video in sync. xjadeo -f 12.5 -m 80:0 video-file.avi (using Xjadeo compiled with ALSA seq) connect to MIDI device 80 port 0 and display video in sync with MTC messages, updating the screen every 80ms.
Configure Ardour 0.99.X to sync to JACK Windows Option Editor Tab "Sync" Set "Positional Sync" to "Sync with JACK" Check option "JACK time master" (optional)
Configure Ardour 2 and Ardour 3 to sync to JACK Ardour2 has button just right of to the clock which allows to set Ardour's sync mode (Internal, JACK and MTC) Note: All versions or Ardour provide the alternative option to connect Xjadeo as a MTC slave instead of using JACK-transport.
configure rosegarden to run with <application>Xjadeo</application> Settings Configure Rosegarden Select "Sequencer" icon. Tab "Synchronization" Set "JACK-transport mode" to "Sync"
Sync to RME HDME If you own a RME HDSP Time Code Option Module which is available for selected RME cards. You can use the MTC which is generated automatically by hardware. Simply connect the MIDI port (which shows up as standard ALSA interface on Linux) to Xjadeo's MTC input.
Troubleshoot & Support
Troubleshoot In case Xjadeo does not work out of the box.. Try to play the (transcoded) video-file with another video-player. It may not be Xjadeo's fault but simply an invalid video-file. run xjadeo -v filename - look for warning and error messages, verify that the detected duration and offset (override with is correct. In verbose-more () Xjadeo also prints information about thedisplayed frame and JACK-transport which might give a clue to what is going on. open the example video from http://xjadeo.git.sourceforge.net/git/gitweb.cgi?p=xjadeo/xjadeo;a=blob;f=contrib/xjadeo-example.avi or validate time-accurancy using time-stamped test videos: http://tux.gareus.org/torrents/tsmm_mjpeg-avi_10mins.torrent. Ask for help and share your experience: http://sourceforge.net/projects/xjadeo/support. Don't hesitate and don't be shy! We require your feedback to improve Xjadeo. Please include the output of xjadeo -V.
Known Issues Some Video codecs are known not to work properly on some systems. This is mostly due to different ffmpeg versions, available codec decoders, etc. There is nothing we can do about it. You are required to transcode the video into a suitable format. see Xjadeo portmidi sync make Xjadeo bail out if it fails to connect or encounters a MIDI buffer overflow. This is in fact a feature of portmidi but could also be considered a bug in Xjadeo. X11 / nvidia might not work properly with the Composite Extension as reported in the Forum. Temporarily disable this extension nvidia-xconfig --composite nvidia-xconfig --no-composite or permanently disable it in your X configuration: Section "Extensions" Option "Composite" "Disable" EndSection If you experience unexpected behavior please file a bug report http://sourceforge.net/projects/xjadeo/support or contact the developers.
Remote Control Interface Xjadeo features a remote control mode that allows you to modify all settings of a running Xjadeo instance. When started in remote mode (using option or ) xjadeo will interactively accept commands and issue responses through the standard input/output mechanism. Since version 0.3.20 Xjadeo implements POSIX message queues as an alternative to the standard-I/O remote control and since 0.4.11 also System-V IPC. The latter allows you to disconnect from and reconnect to an existing Xjadeo session. For more information about message queues read the manual. Note that qjadeo controls Xjadeo via message queues. Xjadeo's remote control interpreter is self documented, use the command to query the available command set. The following list only covers basic interaction:
General Commands print a list of available commands with a short description. exit qjadeo.
Video File Commands Load a video file, replacing any previous one. Close the current video file. Returns the file name of the current movie. Returns the length of the movie in seconds. Returns the length of the movie in frames. Returns the frame rate of the current movie. Returns the width of the current movie in pixels. Returns the height of the current movie in pixels. Returns an integer from 1 to 3 on how Xjadeo seeks to a given video frame. seek ly starting from the previous key-frame. seek directly to frame. seek only to s. Set the seek-mode. Valid parameters are integer 1-3 or any of the words: , or .
Synchronization Commands
JACK Connect to JACK and sync to JACK-transport. Stop synchronization with JACK-transport. Get the status of the connection with JACK.
LTC Connect to JACK and sync to audio received on the xjadeo:ltc audio port. Disconnect from JACK and disable LTC sync. Display status of JACK/LTC connection.
MIDI (Dis and re)connect to the last specified MIDI port. The default port is -1, but it can be overridden with or the midi open <port> command. Note: when a MIDI port is connected, the JACK-transport information will be ignored, no matter if Xjadeo is connected to JACK or not. Choose MIDI back-end to use (ALSA, portmidi or JACK - available back-ends depend on the operating-system and compile-time configuration), or if driver-name is empty print current driver. Get sync from MTC (MIDI Time Code) instead of JACK. If using ALSA MIDI, port is the ALSA sequencer id of the MTC source. A value of -1 will leave Xjadeo unconnected. for JACK MIDI, port is the JACK-MIDI port name to auto-connect to. An empty value or non-existing port-name will leave Xjadeo unconnected. If using portmidi, port is the port number of the MIDI input to use. WARNING: using an invalid id with portmidi will cause Xjadeo to bail out! Close MIDI device. Displays the status of the Xjadeo MIDI port connection. Display MIDI SMPTE conversion mode, corresponding to -M option. Set MIDI SMPTE conversion mode. n is an integer, corresponding to the command line option.
General <application>Xjadeo</application> sync commands "Default" frame to display when disconnected from any other sync source. Returns the current frame number. Returns the current head position in SMPTE code. Prints the currently active source: 3: LTC, 2:MIDI, 1:JACK, 0:none / manual seek Returns the current window update rate. Set the window update rate. Returns the current time offset in frames. Set the time offset in frames.
Monitor Window Commands Closes the video window. Opens the video window using the default video-mode. The default video-mode is 'autodetect' unless overridden on the command-line. Opens the video window using the specified video-mode. A value of 0 autodetects while a positive integer corresponds to a video-mode which can be listed with the list videomodes command. Resizes the monitor window. Value may either be a 2 dimensional vector <width>x<height> of absolute values, or a single integer specifying the window size in percentage of the movie file geometry. Position the monitor window on the desktop. The value is expected to be: <width>x<height> Prints the size of the video window in a 2D vector. <width>x<height> Returns the current video mode. Prints a list of available video modes.
Notify Commands Enables async messages. Xjadeo will generate a '@300' reply message each time it polls for a time-code (one message per loop is emitted at the frequency specified with ). Enables async messages. Xjadeo will generate a '@300' reply message each time it displays a new video-frame. Stop generating notify messages.
On Screen Display Commands Render current frame-number on screen. ypos specifies the vertical position in percent (0..100). The text is horizontally centered. A value <0 disables the frame display. Render SMPTE on screen. ypos specifies the vertical position in percent. The text is horizontally centered. A ypos value <0 disables SMPTE OSD. Render the specified text on the screen. The position can be specified with the osd pos command. Display the previously set OSD text again. Turn off OSD text. Set the position of the OSD text xalign is an integer: 0:Left, 1:Center, 2:Right ypos specifies the vertical position in percent (0..100). display if freetype support in available. Specify a TrueType Font file to be used when rendering On-Screen-Display text. draw a black box around the OSD make On Screen Display background transparent. Return information on which text is currently rendered on screen in a bitwise integer encoding: bit0 (1): Frame,     bit1 (2): SMPTE timecode,     bit2 (4): Text,     bit3 (8): black-background-box
Response Format Each remote command is acknowledged with a response, which you can ignore at your option. It is intended to be both human readable and machine parse-able. The response is a single line terminated with the newline character '\n' formatted as: @<status-integer> <text> each line start with an @ followed by an integer that tells if the command succeeded and specifies the format of the text. The status integer is usually a 3 digit decimal number in [100..999]: OK. The command succeeded returning a small text info message. the command succeeded and the return text is in format name=value This is used for returning variables. 200-299 defines the type of the value as follows: integer double Two dimensional vector <int>x<int> string SMPTE-string in format 'HH:MM:SS:FF' These are messages that are generated by Xjadeo notify, not in response to a command. The format and type declaration is identical to 2xx messages. Currently the only 3xx message is 301 position=integer. Error message. Info or help message. These messages are meant to be ignored by automatic parsers and are for user information or displaying comments only.
Open Sound Control Interface An alternative to the remote-control described in is to use Opensoundcontrol. The drawback with OSC however is that there is no feedback. It is a one-way method of communication. Furthermore OSC usually has more latency compared to POSIX real-time messages, although it is quite possible to play a video sending 'seek' commands. On the upside OSC offers a control interface that works via Network. It is easy to use and ubiquitous. There is support to transmit OSC messages for nearly every programming language and even some hardware controllers - be it arduiuno, iPhone or mixing-desks. To enable Xjadeo's OSC interface it needs to be started with the option where port is the UDP port number Xjadeo listens on for messages. e.g. xjadeo -O 7890 myvideofile.mov See , and for a list of supported commands. OSC Commands Address Pattern Type Tags Description - notes in brackes are corresponding remote-ctl commands or commandline-options /jadeo/seek i seek to given frame-number (identical to seek from - Xjadeo needs to be disconnected from JACK and MTC sync-sources) /jadeo/load s Load a video file, replacing any previous one. (load filename) /jadeo/fps f set the screen update frequency (, set fps) /jadeo/framerate f override video-files frame-rate (, set framerate) /jadeo/offset i set time-offset as frame-number (, set offset /jadeo/offset s set time offset as SMPTE (set offset /jadeo/jack/connect Connect to JACK and sync to JACK-transport (jack connect) /jadeo/jack/disconnect Stop synchronization with JACK-transport (jack disconnect) /jadeo/osd/font s Specify a TrueType Font file to be used when rendering On-Screen-Display text (osd font) /jadeo/osd/smtpe i if set to 1: render SMPTE on screen, set to 0 to disable (, osd smpte) /jadeo/osd/frame i if set to 1: render frame-number on screen, set to 0 to disable (, osd frame) /jadeo/osd/box i if set to 1: draw frame-number on screen, set to 0 to disable (osd box, osd nobox) /jadeo/quit terminate Xjadeo.
OSC Commands to configure MIDI sync Address Pattern Type Tags Description - notes in brackes are corresponding remote-ctl commands or commandline-options The following commands are only available if MIDI is supported. /jadeo/midi/connect s Get sync from MTC (MIDI Time Code) instead of JACK. The parameter specifies the midi-port to connect to. see for the format. (, , midi connect) /jadeo/midi/disconnect Close the MIDI device (midi disconnect) /jadeo/midi/quarterframes i 1, 0 en/disable sync to MTC quater frames (, midi clk) /jadeo/midi/clkconvert i specify how to 'convert' MTC SMPTE to framenumber: 0: use framerate of MTC clock (default); 2: use video file FPS; 3: "resample": videoFPS / MTC (,midi sync)
non-standard OSC Commands Address Pattern Type Tags Description - notes in brackes are corresponding remote-ctl commands or commandline-options The following command is only available if "panorama mode" is enabled. see /jadeo/pan i set the x-offset to the value given in pixels. 0 ≤ valmovie-width The following commands are only available if "timescale mode" is enabled. see /jadeo/timescale f set time-multiplier; default value: 1.0 /jadeo/timescale fi set both time-multiplier and offset. default: 1.0, 0 /jadeo/loop i wrap-around/loop video. If set to1 (multiples) of the movie-length are added/subtracted if the current time-stamp is less/above the movie-duration. /jadeo/reverse multiplies the current time-scale with -1.0 and sets a time-offset so that the currently displayed frame is retained.
Advanced Features - Artistic add-ons Xjadeo's core functionality - to display a given video frame at a certain point in time - is not only useful for post-production but has applications in media-art installations. There are two major features which are not enabled by default: time-scale: operations to modify the time-code: multiply (slow-down/speed-up), offset and wrap-around/loop. Panorama/frame-cropping: allows to display a sub-section of the image.
Time-scaling Time-scaling adds three additional parameters to modify the displayed frame. They are applied in the following order: scale - multiply frame-number (default: 1.0) offset - add integer to frame-number (default: 0) wraparound - add/subtract (multiples) of movie-length if the current time-stamp is less/above the movie-duration (default: off) These parameters can be set via the remote-control described in or by as OSC documented at .
Cave/Panorama mode The Panorama mode needs be enabled at compile-time using ./configure --enable-framecrop. when enabled during compilation Xjadeo will crop the image width to 50%. The x-offset can be modified with the keyboard [, ] or OSC commands - see . It is intended to be used with two neighboring movies stitched together: A B C D AB BC CD DA To panning across boundaries, the files have to be re-loaded (using OSC or remote-control).
Action Override using the set override remote-control command, it is possible to disable certain key-bindings or window-events. and limit user interaction with the window. Interaction Override Bit Value Description 0 1 ignore Esc and Q 1 2 ignore window-close event 2 4 ignore Button1 - do not resize the window. 3 8 (OSX only) ignore Jadeo Quit Jadeo 4 16 Ignore time-offset keyboard-shortcuts ( -, +, {, } )
Manual Pages xjadeo 1 http://xjadeo.sf.net 0.6.X xjadeo display a video-clip in sync with an external time source xjadeo -aAbcCDhIkKlLnNPqQRsStvV -d midi-driver -f fps -F fps -i int -m midi-port -M num -o frames|SMPTE -O osc-port -W rpc-id -x dpy-mode videofile xjadeo -R options videofile xjadeo -Q options videofile DESCRIPTION Xjadeo is a software video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport). It has applications in soundtrack composition, video monitoring or any task that requires synchronizing movie frames with audio events. Xjadeo supports different video file formats, video output libraries and sync sources. OPTIONS , Start Xjadeo 'always-on-top' of other windows (this option requires support from your window manager). , Enable verbose ffmpeg messages (format/codec debugging). , Retain aspect ratio and draw a letterbox around the video-frame if necessary. , Do not use MIDI quarter-frames for more exact sync. , Use MIDI quarter-frame timing for more exact sync (this is enabled by default since version 0.4.11). , Choose MIDI back-end to use. midi-driver can be either one of "JACK", "ALSA" or "portmidi" - depending on the operating-System and compile-time configuration. , Enable debug mode. Print development related information. , Desired refresh-rate of the video display in frames per second. Non-integer values are possible. Default: -1. If this value is set to zero (or less), Xjadeo will use the FPS of the video-file as its screen update frequency. , Override the (auto-detected) frame-rate of the video-file. Prints usage help and exits. , Displays information using the OSD (on-screen display.) Off. Frame number. SMPTE time code. Both frame number and SMPTE. The remote control interface allows more complete control over the OSD. , This option is only useful for video files with a start-offset, such as split vob files. Per default Xjadeo will honor offsets specified in the video-file header and the file's PTS/DTS. allows you to override and subtract this offset and makes the file start at SMPTE position 00:00:00:00 (although you can archive the same result, this option is not related to .) , Instructs the internal algorithm to seek only to key-frames. This option may improve the performance for certain video encodings. The default behavior (without and arguments) is to search any ANY frame. , Decode video frame by frame starting from previous key-frame. This particularly useful for reading files where not every frame is a key-frame at the cost of increased CPU usage. Note that this option adds some extra latency when seeking. Combine it with : it makes sense to set Xjadeo's screen-update frequency to match the frame-rate of the video file. , Use LTC as sync-source instead of JACK-transport. , Disable LASH support. , Get sync from MTC (MIDI Time Code) instead of JACK or LTC. If using JACK-MIDI driver, midi-port is the JACK-MIDI port to use as input - use an empty value ("") to not auto-connect If using ALSA MIDI back-end, midi-port is the ALSA sequencer-id to be used as the MTC source. A value of -1 will leave Xjadeo unconnected. If using portmidi, port is the port-number of the MIDI input device to use. The value -1 will attempt auto-connect. Use to list MIDI ports during auto-detection. , Conversion between MTC SMPTE and frame number. (default) Use MTC clock frame rate. Use video-file's frame-rate. Resample video frame rate / MTC. , Prevent Xjadeo from detecting drop-frame-timecode (usually files with 29.97 fps) , Force Xjadeo to use drop-frame-timecode (drop-frame-timecode is only valid for files with 29.97 fps but your milage may vary) , Offset the video playback a certain number of (video) frames relative to the sync master time base. Admits negative values. n can be specified either as integer frame-number or SMPTE text. , This option passed on to ffmpeg and has no effect on older versions of libavformat. it can be used to generate "presentation time stamps" if they are missing in the file, even if it requires parsing future frames. , , Suppresses normal output messages. , Enable POSIX message queues. Set up a communication channel for use with . See the in the online documentation for more information. , Enable interactive (stdin/stdout) remote control mode. Options and have no effect in remote mode. , Start Xjadeo in full-screen mode. , Skip the on-screen-display startup sequence. , Check if the video file is encoded in a format suitable for use with Xjadeo and exit. If the video format is not supported the exit code is 1. , Print additional information. , Display version and compile-time configuration information and exit. , Set-up IPC message queues for xjremote. rpc-id specifies a file-path used to identify the message-queue. , , Selects the video output driver. Defaults to 0 (auto-detect). A value of -1 lists the available modes and exits. SYNC SOURCES xjadeo currently supports the following synchronization sources: JACK-transport. LTC (Linear/Longitudinal Time Code) - via JACK audio. MTC (MIDI Time Code) via JACK-MIDI. MTC (MIDI Time Code) via ALSA sequencer. MTC (MIDI Time Code) via portmidi. remote-ctrl manual seeks (not really a sync source). VIDEO FORMATS Xjadeo uses ffmpeg to decode video files, so a wide range of formats and codecs are supported. Note, however, that not all the formats support seeking. To transcode a video-file into a suitable format we recommend: mencoder -idx -ovc lavc -lavcopts keyint=1 -nosound input_file.xxx -o output_file.avi This creates from your input-file.xxx an AVI mpeg4 encoded video file with no sound, an index (-idx) and no compression between frames (every frame is a keyframe). The file thus can become really BIG, so watch your disk space! You may want also to shrink the size of the file's video frames by scaling down its geometry. This uses fewer system resources while decoding and displaying it and leaves more space in the screen for your audio software. -vf scale=width:height Also note Xjadeo's option which allows one to seek to frames other than key-frames and enables Xjadeo to play back any file without transcoding it. It comes at the expense of increased CPU usage and possibly increased seek latency. The latter depends on the key-frame interval and video-codec. The same can be achieved by adding seek=continuously to ~/.xjadeorc. USER INPUT xjadeo window accepts the following input: Pressing mouse button 1 will resize the window to the original movie size. Mouse button 2 and 3 resize the window to match the movie aspect ratio. Scroll Wheel (buttons 4,5) stepwise decreases/increases the window size maintaining the original aspect ratio. Xjadeo ≥ v0.3.8 supports keyboard events. Pressing Esc and q will end the program. f toggles full-screen, a togglesalways-on-top. Press m to hide mouse cursor. v, s, o, C and b control on-screen-display and l toggles the letter-box mode. The time-offset can be modified with +, -, {, } and window-size with <, >, ,, .. SPACE and BACKSPACE can be used to control JACK-transport. See in the online documentation for a complete list. REMOTE MODE When started in remote mode (option or ) Xjadeo will interactively accept commands and issue responses through its standard input/output mechanism. Use the remote command help to get a quick overview of all available commands. Please refer to the online documentation for a complete description of the remote commands. xjadeo -Q enables remote control by message-queues; use xjremote to connect. FILES Xjadeo reads the following resource configuration files in this order: /@SYSCONFDIR@/xjadeorc (usually /etc/xjadeorc or /usr/local/etc/xjadeorc, which depends on your distribution and on the configuration when ) $HOME/.xjadeorc ./xjadeorc Each line in the configuration file must be in in the format: KEY=VALUE If the first character on a line is either # or ; the line is ignored. are not case sensitive. Some are case sensitive (e.g. filenames) and are parsed identical to the corresponding command-line arguments (e.g. is equivalent to the config-file option ). Boolean values are specified as yes or no (e.g. ). currently supported RC-KEYS: fps, fontfile, lash, letterbox, midiclk, mididriver, midiid, midismpte, mq, nosplash, quiet, seek, verbose and videomode. Which are documented in the example xjadeorc ENVIRONMENT Set the jack-server-name to connect to (used by JACK-transport, JACK-MIDI and LTC) SEE ALSO online-manual qjadeo 1 http://xjadeo.sf.net 0.6.X qjadeo GUI front-end to xjadeo qjadeo DESCRIPTION Xjadeo is a software video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport). qjadeo is a graphical front-end to Xjadeo. It communicates with Xjadeo either directly (single session) or using xjremote. ENVIRONMENT If the variable is set, qjadeo will assume that it holds the path to the xjremote executable. SEE ALSO xjremote 1 http://xjadeo.sf.net 0.6.X xjremote CLI remote-control to xjadeo xjremote -fhPquUvV -I mq-queue-id DESCRIPTION Xjadeo is a software video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport). xjremote connects to a instance of Xjadeo and allows a user to tweak the running configuration. If it can not connect, xjremote will start a new instance of Xjadeo and open a connection to it unless the is given. OPTIONS , disable automatic startup of Xjadeo. Instead xjremote will terminate if it can not connect to a running Xjadeo. , Prints usage help and exits. , specify message-queue identifier. , Skip checking for Xjadeo life signs (ping). , , Suppresses normal output messages. ignored - xjremote can be used as a drop in replacement for xjadeo -Q. ignored - xjremote can be used as a drop in replacement for xjadeo -R. , remove existing queues. Unless combined with this will launch always a new Xjadeo instance after unlinking the queues. Note: active connections are not affected. , remove existing message queues and exit. If no Xjadeo instance is running this is equivalent to . , Print additional information. , Print version information end exit. ignored - xjremote can be used as a drop in replacement for xjadeo -W ... ENVIRONMENT If the variable is set, xjremote will assume that it holds the path to the Xjadeo executable. Note Apart from Standard-I/O, Xjadeo can either use POSIX real-time message-queues (MQ) or System-V IPC communication. The decision is made when compiling it. Basically GNU/Linux uses MQ (but could use IPC as well). OSX only supports IPC and Windows is limited to standard-I/O only. SEE ALSO xjinfo 1 http://xjadeo.sf.net 0.6.X xjinfo Display A/V file info in XML format. xjinfo -chtvVx videofile DESCRIPTION xjinfo does basically the same as ffprobe but displays the information in XML or simple text format that can be used for scripting. OPTIONS , comma separated values, one line per video stream in file. Use the built-in help to learn about the format. , Print usage help and exit. , , print the duration in seconds (without trailing newline) , print a single line: duration, fps, geometry and codec info. , output XML data. This is the default if no option is specified. A DTD is available with the source or from xjadeo.sf.net SEE ALSO
xjadeo-0.7.6/doc/xjadeorc0000644000175000017500000000367611464664425012236 00000000000000# xjadeorc # # lines beginning with '#' or ';' are ignored. # # xjadeo checks: @sysconfdir@/xjadeorc # $HOME/.xjadeorc # ./xjadeorc # #verbose=[yes|no] ;verbose=no #quiet=[yes|no] ;quiet=no # xjadeo framerate - delay # specifies how many times per second xjadeo updates the screen. # this is independant of the video-file's frame-rate. # a negative value will force xjadeo to use the frame-rate of the video file. #fps= ;fps=10.0 # specify default seek mode #seek=[any|cont|key] ;seek=any # disable LASH support (enabled by default) #lash=[yes|no] ;lash=yes # select the video library/interface to use. #videomode=[xv|imlib2|x11|sdl|mac] ;videomode=auto # en/disable message queues (remote control) #mq=[on|off] ;mq=off # absolute path to a TTF font file to be used for on-screen-display #fontfile= ;fontfile=/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf # specify whether to retain the aspect ratio of the movie when scaling # the window. (only Xv) #letterbox=[yes|no] ;letterbox=no # # MIDI OPTIONS # (midi options will be ignored if midi is not available) # # -m : specify MIDI port to read from. # jack-midi: specify midi-port name to connect to or "" to not auto-connect. # alsa-seq: specify id to connect to. (-1: none) eg. -m ardour or -m 80 # portmidi: numeric-id; -1: autodetect, > -1 specifies a (input) midi port. # use '-v -m -1' to list midi-ports. # alsa-raw: specify device-name eg. -m hw:1,0 or -m 1 # 'xjadeo -h' shows more information, 'xjadeo -V' lists available drivers. ;mididriver=alsa-sequencer ;midiid=-1 # -c : don't use MTC quarter frames for # more accurate sync. #midiclk=[yes|no] ;midiclk=no # -M : how to convert the MTC smpte to video smpte # 1: use MTC information (-v to check) - default # 2: force video file's fps # 3: convert/adjust framerates #midismpte=<1|2|3> ;midismpte=0 # do not dispay xjadeo logo on screen on startup. ;nosplash=no # END of xjadeorc xjadeo-0.7.6/doc/man.xsl0000644000175000017500000000106611436273050011773 00000000000000 \fI<>\fR \fB\fR text xjadeo-0.7.6/doc/html.xsl0000644000175000017500000000201611471053720012157 00000000000000 2 style.css xjadeo-0.7.6/doc/qjadeo.10000644000175000017500000000410611640100342012001 00000000000000'\" t .\" Title: qjadeo .\" Author: Robin Gareus .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 09/26/2011 .\" Manual: Manual Pages .\" Source: http://xjadeo.sf.net 0.6.X .\" Language: English .\" .TH "QJADEO" "1" "09/26/2011" "http://xjadeo\&.sf\&.net 0\&.6" "Manual Pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" qjadeo \- GUI front\-end to \fBxjadeo\fR .SH "SYNOPSIS" .HP \w'\fBqjadeo\fR\ 'u \fBqjadeo\fR .SH "DESCRIPTION" .PP Xjadeo is a software video player that displays a video\-clip in sync with an external time source (MTC, LTC, JACK\-transport)\&. .PP \fBqjadeo\fR is a graphical front\-end to Xjadeo\&. It communicates with Xjadeo either directly (single session) or using \fBxjremote\fR\&. .SH "ENVIRONMENT" .PP If the \fBXJREMOTE\fR variable is set, qjadeo will assume that it holds the path to the \fBxjremote\fR executable\&. .SH "SEE ALSO" .PP xjadeo(1) .PP xjremote(1) .SH "AUTHORS" .PP \fBRobin Gareus\fR <\&robin@gareus.org\&> .RS 4 linuxaudio.org .RE .PP \fBLuis Garrido\fR <\&luisgarrido@users.sourceforge.net\&> .RS 4 luisgarrido.users.sourceforge.net .RE .SH "COPYRIGHT" .br Copyright \(co 2005, 2006, 2007, 2009, 2010, 2011 Robin Gareus, Luis Garrido .br xjadeo-0.7.6/doc/xjremote.10000644000175000017500000000764011640100342012401 00000000000000'\" t .\" Title: xjremote .\" Author: Robin Gareus .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 09/26/2011 .\" Manual: Manual Pages .\" Source: http://xjadeo.sf.net 0.6.X .\" Language: English .\" .TH "XJREMOTE" "1" "09/26/2011" "http://xjadeo\&.sf\&.net 0\&.6" "Manual Pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" xjremote \- CLI remote\-control to \fBxjadeo\fR .SH "SYNOPSIS" .HP \w'\fBxjremote\fR\ 'u \fBxjremote\fR [\-fhPquUvV] [\-I\ \fI\fR] .SH "DESCRIPTION" .PP Xjadeo is a software video player that displays a video\-clip in sync with an external time source (MTC, LTC, JACK\-transport)\&. .PP \fBxjremote\fR connects to a instance of Xjadeo and allows a user to tweak the running configuration\&. .PP If it can not connect, xjremote will start a new instance of Xjadeo and open a connection to it unless the \fB\-f\fR is given\&. .SH "OPTIONS" .PP \fB\-f\fR, \fB\-\-nofork\fR .RS 4 disable automatic startup of Xjadeo\&. Instead xjremote will terminate if it can not connect to a running Xjadeo\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Prints usage help and exits\&. .RE .PP \fB\-I \fR\fB\fI\fR\fR, \fB\-\-id \fR\fB\fI\fR\fR .RS 4 specify message\-queue identifier\&. .RE .PP \fB\-P\fR, \fB\-P, \-\-noping\fR .RS 4 Skip checking for Xjadeo life signs (ping)\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR .RS 4 Suppresses normal output messages\&. .RE .PP \fB\-Q\fR .RS 4 ignored \- xjremote can be used as a drop in replacement for \fBxjadeo \-Q\fR\&. .RE .PP \fB\-R\fR .RS 4 ignored \- xjremote can be used as a drop in replacement for \fBxjadeo \-R\fR\&. .RE .PP \fB\-u\fR, \fB\-\-unlink\fR .RS 4 remove existing queues\&. Unless combined with \fB\-f\fR this will launch always a new Xjadeo instance after unlinking the queues\&. Note: active connections are not affected\&. .RE .PP \fB\-U\fR, \fB\-\-unlinkonly\fR .RS 4 remove existing message queues and exit\&. If no Xjadeo instance is running this is equivalent to \fB\-u \-f\fR\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 Print additional information\&. .RE .PP \fB\-V\fR, \fB\-\-version\fR .RS 4 Print version information end exit\&. .RE .PP \fB\-W \fR\fB\fI\fR\fR .RS 4 ignored \- xjremote can be used as a drop in replacement for \fBxjadeo \-W \&.\&.\fR\&. .RE .SH "ENVIRONMENT" .PP If the \fBXJADEO\fR variable is set, xjremote will assume that it holds the path to the Xjadeo executable\&. .SH "NOTE" .PP Apart from Standard\-I/O, Xjadeo can either use POSIX real\-time message\-queues (MQ) or System\-V IPC communication\&. The decision is made when compiling it\&. Basically GNU/Linux uses MQ (but could use IPC as well)\&. OSX only supports IPC and Windows is limited to standard\-I/O only\&. .SH "SEE ALSO" .PP xjadeo(1) .PP qjadeo(1) .SH "AUTHORS" .PP \fBRobin Gareus\fR <\&robin@gareus.org\&> .RS 4 linuxaudio.org .RE .PP \fBLuis Garrido\fR <\&luisgarrido@users.sourceforge.net\&> .RS 4 luisgarrido.users.sourceforge.net .RE .SH "COPYRIGHT" .br Copyright \(co 2005, 2006, 2007, 2009, 2010, 2011 Robin Gareus, Luis Garrido .br xjadeo-0.7.6/doc/Makefile0000644000175000017500000000261611473073566012145 00000000000000# # the docbook is not inteded to be built automatically # as it requires an internet connection to get the xslt files. # and would introduce XML* dependencies... # # precompiled manpages are in included in the distribution, # as is the docbook source. # # an HTML version of the docbook is available online: # http://xjadeo.sourceforge.net/ # .PHONY: all validate html clean man all: html man dtdvalid: xmllint --noout --valid -dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd xjadeo.xml validate: xmllint --noout --valid xjadeo.xml html: validate mkdir -p html (cd html; xsltproc --encoding UTF-8 ../html.xsl ../xjadeo.xml) cp -f style.css favicon.ico html/ cp -f xjadeo.png html/ cp -f qjadeo.png html/ man: validate xsltproc --encoding UTF-8 man.xsl xjadeo.xml clean: -rm -fr qjadeo.1 xjadeo.1 xjinfo.1 xjremote.1 html xjadeo.ps xjadeo.pdf .PHONY: xjadeo.ps xjadeo.pdf xjadeo.ps: xjadeo.xml dblatex -tps -T native \ -P newtbl.autowidth=default \ -P latex.hyperparam=colorlinks,linkcolor=blue \ -P doc.collab.show=0 \ -P latex.output.revhistory=0 \ -P make.year.ranges=1 \ -P doc.lot.show="" \ xjadeo.xml xjadeo.pdf: xjadeo.xml dblatex -T native \ -P newtbl.autowidth=default \ -P latex.hyperparam=colorlinks,linkcolor=blue \ -P doc.collab.show=0 \ -P latex.output.revhistory=0 \ -P make.year.ranges=1 \ -P doc.lot.show="" \ xjadeo.xml xjadeo-0.7.6/aclocal.m40000644000175000017500000012242512200730235011557 00000000000000# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi dnl Make sure AC_PROG_CC is never called again, or it will override our dnl setting of CC. m4_define([AC_PROG_CC], [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR xjadeo-0.7.6/missing0000755000175000017500000002623311437010433011320 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xjadeo-0.7.6/src/0000755000175000017500000000000012200730320010553 500000000000000xjadeo-0.7.6/src/Makefile.am0000644000175000017500000000017711436273050012550 00000000000000## Process this file with automake to produce Makefile.in SUBDIRS = xjadeo @ac_qtgui_dir@ MAINTAINERCLEANFILES = Makefile.in xjadeo-0.7.6/src/xjadeo/0000755000175000017500000000000012200730321012026 500000000000000xjadeo-0.7.6/src/xjadeo/xjadeo.h0000644000175000017500000001231512200216106013373 00000000000000#include #include #include #include /* uint8_t */ #include /* memcpy */ #include #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_WINDOWS # include # include # define vsnprintf _vsnprintf # define snprintf _snprintf #else # include #endif #ifdef HAVE_LASH # include #endif #ifdef OLD_FFMPEG #include #else #include #include #endif #ifndef PIX_FMT_BGRA32 #define PIX_FMT_BGRA32 PIX_FMT_BGRA #endif #ifndef PIX_FMT_RGBA32 #define PIX_FMT_RGBA32 PIX_FMT_RGBA #endif /* xjadeo seek modes */ enum { SEEK_ANY, ///< directly seek to givenvideo frame SEEK_KEY, ///< seek to next keyframe after given frame. SEEK_CONTINUOUS }; ///< seek to keframe before this frame and advance to current frame. /* freetype - On screen display */ enum { OSD_LEFT=-1, OSD_CENTER=-2, OSD_RIGHT=-3 }; ///< use positive values as percent or pixel. /* override bitwise flags: * 0x01 : ignore 'q', ESC / quite * 0x02 : ignore "window closed by WM" / quit * 0x04 : (osx only) menu-exit / quit * 0x08 : ignore mouse-button 1 -- resize * 0x10 : no A/V offset * 0x20 : don't use jack-session */ enum { OVR_QUIT_KEY = 0x01, OVR_QUIT_WMG = 0x02, OVR_QUIT_OSX = 0x04, OVR_MOUSEBTN = 0x08, OVR_AVOFFSET = 0x10, OVR_JSESSION = 0x20, OVR_JCONTROL = 0x40 }; /* async notficy */ enum { NTY_FRAMELOOP = 0x01, NTY_FRAMECHANGE = 0x02, NTY_SETTINGS = 0x04, NTY_KEYBOARD = 0x08 }; #define OSD_FRAME (1) #define OSD_SMPTE (2) #define OSD_EQ (8) #define OSD_OFFS (16) #define OSD_OFFF (32) #define OSD_TEXT (64) #define OSD_BOX (256) #ifdef TTFFONTFILE # define FONT_FILE TTFFONTFILE #else # define FONT_FILE "/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf" #endif /* define maximum size for OSD in pixel */ #ifdef HAVE_FT # define ST_WIDTH (1920) # define ST_HEIGHT (128) #else # define ST_WIDTH (0) # define ST_HEIGHT (0) #endif #define ST_PADDING (10) /* X11 only - but defined here since needed in remote.c and display.c * EWMH state actions, see http://freedesktop.org/Standards/wm-spec/index.html#id2768769 */ #define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ #define _NET_WM_STATE_ADD 1 /* add/set property */ #define _NET_WM_STATE_TOGGLE 2 /* toggle property */ /* prototypes in lash.c */ void lash_process(); void lcs_str(char *key, char *value); void lcs_int(char *key, int value); void lcs_long(char *key, long int value); void lcs_dbl(char *key, double value); #ifdef HAVE_LASH void lash_setup(); #endif /* prototypes of fn's in display.c */ void newsourcebuffer (void); void close_window(void); void open_window(void); int vidoutmode(int user_req); int parsevidoutname (char *arg); int vidoutsupported (int i); int getvidmode (void); const char *vidoutname (int i); int try_next_vidoutmode(int user_req); void splash (uint8_t *mybuffer); void render_buffer (uint8_t *mybuffer); void handle_X_events (void); void Xresize (unsigned int x, unsigned int y); void Xfullscreen (int a); void Xmousepointer (int a); void Xletterbox (int a); void Xontop (int a); void Xgetsize (unsigned int *x, unsigned int *y); void Xposition (int x, int y); void Xgetpos (int *x, int *y); int Xgetontop (void); int Xgetfullscreen (void); /* remote.c */ void exec_remote_cmd (char *cmd); void close_remote_ctrl (void) ; void open_remote_ctrl (void); void close_mq_ctrl (void) ; void open_mq_ctrl (void); void close_ipcmsg_ctrl (void) ; int open_ipcmsg_ctrl (const char *); int remote_read_mq(void); int remote_read_ipc(void); int remote_read_io(void); #ifdef HAVE_WINDOWS int remote_read_h(void); #endif void remote_printf(int val, const char *format, ...); void remote_notify(int mode, int rv, const char *format, ...); int remote_fd_set(fd_set *fd); /* xjadeo.c */ void display_frame(int64_t timestamp, int force_update, int do_render); int open_movie(char* file_name); int close_movie(); void avinit (void); void override_fps (double fps); void init_moviebuffer(void); void event_loop(void); void do_try_this_file_and_exit(char *movie); /* jack.c function prototypes */ long jack_poll_frame (void); void open_jack(void ); void close_jack(void); int jack_connected(void); /* ltc-jack.c function prototypes */ long ltc_poll_frame (void); void open_ltcjack(char *autoconnect); void close_ltcjack(void); int ltcjack_connected(void); const char *ltc_jack_client_name(); /* smpte.c prototypes */ long int smptestring_to_frame (char *str); void frame_to_smptestring(char *smptestring, long int frame); long int smpte_to_frame(int type, int f, int s, int m, int h, int overflow); /* midi.c function prototype */ int midi_connected(void); const char *midi_driver_name(); #ifdef HAVE_MIDI long midi_poll_frame (void); void midi_open(char *midiid); void midi_close(void); int midi_choose_driver(char *); #endif /* xjosc.c */ int initialize_osc(int osc_port); void shutdown_osc(void); int process_osc(void); /* configfile.c */ void xjadeorc (void); int testfile (char *filename); int saveconfig (const char *filename); int readconfig (char *fn); /* freetype - On screen display */ int render_font (char *fontfile, char *text, int px); void free_freetype (); xjadeo-0.7.6/src/xjadeo/midi.c0000644000175000017500000007145012045047651013061 00000000000000/* xjadeo - jack video monitor * midi.c - midi SMPTE / raw midi data parser. * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * * Copyright (c) 2005 Clemens Ladisch * * many kudos to the portmidi developers and their * example code... * * the alsa midi code was inspired by the alsa-tools * amidi.c, aseqdump.c written by Clemens Ladisch */ #include #include #include #include /* TODO: compile all available modes (portmidi, jack-midi, alsa-seq & alsa-raw * select on run-time... */ #ifdef JACK_SESSION #include extern char *jack_uuid; void jack_session_cb( jack_session_event_t *event, void *arg ); #endif #ifdef HAVE_MIDI /* * xjadeo MTC defines and functions * midi library independant */ extern int want_quiet; extern int want_verbose; extern int want_debug; extern double framerate; extern int midi_clkconvert; extern int midi_clkadj; extern int have_dropframes; extern double delay; typedef struct { int frame; int sec; int min; int hour; int day; // overflow int type; int tick; // 1/8 of a frame. } smpte; /* global Vars */ smpte tc; smpte last_tc; int full_tc = 0; const char MTCTYPE[4][10] = { "24fps", "25fps", "29fps", "30fps", }; /* midi system exclusive start/end byte*/ #define MIDI_SOX 0xf0 #define MIDI_EOX 0xf7 #define SE(ARG) prevtick = tc.tick; tc.tick=ARG; full_tc|=1<<(ARG); #define SL(ARG) ARG = ( ARG &(~0xf)) | (data&0xf); #define SH(ARG) ARG = ( ARG &(~0xf0)) | ((data&0xf)<<4); /* parse MTC 0x71 message data */ void parse_timecode( int data) { static int prevtick =0; switch (data>>4) { case 0x0: // #0000 frame LSN SE(1); SL(tc.frame); break; case 0x1: // #0001 frame MSN SE(2); SH(tc.frame); break; case 0x2: // #0010 sec LSN SE(3); SL(tc.sec); break; case 0x3: // #0011 sec MSN SE(4); SH(tc.sec); break; case 0x4: // #0100 min LSN SE(5); SL(tc.min); break; case 0x5: // #0101 min MSN SE(6); SH(tc.min); break; case 0x6: // #0110 hour LSN SE(7); SL(tc.hour); break; case 0x7: // #0111 hour MSN and type SE(0);tc.hour= (tc.hour&(~0xf0)) | ((data&1)<<4); tc.type = (data>>1)&3; if (full_tc!=0xff) break; if (want_verbose) { printf("\r\t\t\t\t\t\t\t->- %02i:%02i:%02i.%02i[%s]\r",tc.hour,tc.min,tc.sec,tc.frame,MTCTYPE[tc.type]); fflush(stdout); } memcpy(&last_tc,&tc,sizeof(smpte)); tc.type=tc.min=tc.frame=tc.sec=tc.hour=tc.tick=0; default: ; } if (full_tc!=0xff) { last_tc.tick=0; return; } // count quarterframes switch (tc.tick - prevtick) { case 7: // assert(tc.tick==7); case -1: /*reverse direction */ last_tc.tick=0-tc.tick; // -7+(7-tc.tick) compensate for latency if (want_verbose) { printf("\r\t\t\t\t\t\t\t-<-\r"); fflush(stdout); } break; case -7: // assert(prevtick==7); case 1: /* transport rolling */ last_tc.tick=tc.tick+7; // compensate for latency break; default: full_tc=last_tc.tick=0; } } /* parse system exclusive MSGs * seek frame - if transport is not rolling */ int parse_sysex_urtm (int data, int state, int type) { /* * Structure of a System Exclusive Message * * # Start of Exclusive: F0 * # Manufacturer ID: 00-7D, 7E=Universal non-realtime, 7F=Universal realtime * # Device number: 00-0F = dev 1 -16, 7F=all * # Model ID: 00-7F * # 0 or more data bytes * # Checksum: 00-7F (all data + checksum = 0 for lowest 7 bits) * # End of Exclusive: F7 * * eg: * F0 7F 7F 01 01 20 00 03 01 F7 * F0 7F 7F 06 44 06 01 20 00 03 01 00 F7 * timecode 00:00:03:01 (@ 25fps) -- Roland MTC * * roland MTC sysex real time message - reverse engineered format * 01 01 [fps: bit 6..5 hour: bit4..0] [min] [sec] [frame] F7 * 06 xx 06 xx [fps (bit 6..5) hour: bit4..0)] [min] [sec] [frame] Checksum F7 * * fps/hour: (011HHHHH): 30 fps, 29fps - non drop * (010HHHHH : 29 fps (drop) * (001HHHHH): 25 fps * (000HHHHH): 24 fps * min,sec,frame are 6bit values */ int rv=type; if (type<0) return (-1); if (state<2 && data !=0x7f) return(-1); if (state<3 && type>0) return (-1); if (state==2 && type==0) { if (data==0x01) rv=1; if (data==0x06) rv=2; last_tc.tick=0; } if (state>2 && type <=0 ) return (-4); if (state==3 && type ==1 && data!=0x01) return (-1); if (state==3 && type ==2 && data!=0x44) return (-1); if (state==3 && type ==2 && data!=0x44) return (-1); if (state==4 && type ==2 && data!=0x06) return (-1); if (state==5 && type ==2 && data!=0x01) return (-1); // type==1 && state4,5,6,7 if (state==4 && type ==1 ) { last_tc.hour=(data&0x1f); last_tc.type=(data>>5)&3; } // hour + format if (state==5 && type ==1 ) { last_tc.min=(data&0x7f); } // min if (state==6 && type ==1 ) { last_tc.sec=(data&0x7f); } // sec if (state==7 && type ==1 ) { last_tc.frame=(data&0x7f); } // frame if (state>7 && type ==1 ) { if (want_verbose) { if (want_debug) printf("\r\t\t\t\t\t\t\t~-~ %02i:%02i:%02i.%02i[%s]\r",tc.hour,tc.min,tc.sec,tc.frame,MTCTYPE[tc.type]); else printf("\r\t\t\t\t\t\t\t-~- %02i:%02i:%02i.%02i[%s]\r",last_tc.hour,last_tc.min,last_tc.sec,last_tc.frame,MTCTYPE[last_tc.type]); fflush(stdout); } return (-1); } // type==2 && state6,7,8,9 if (state==6 && type ==2 ) { last_tc.hour=(data&0x1f); /*last_tc.type=(data>>5)&3*/; } // hour if (state==7 && type ==2 ) { last_tc.min=(data&0x7f); } // min if (state==8 && type ==2 ) { last_tc.sec=(data&0x7f); } // sec if (state==9 && type ==2 ) { last_tc.frame=(data&0x7f); } // frame if (state>9 && type ==2 ) { if (want_verbose) { if (want_debug) printf("\r\t\t\t\t\t\t\t-V- %02i:%02i:%02i.%02i[%s]\r",tc.hour,tc.min,tc.sec,tc.frame,MTCTYPE[tc.type]); else printf("\r\t\t\t\t\t\t\t-v- %02i:%02i:%02i.%02i[%s]\r",last_tc.hour,last_tc.min,last_tc.sec,last_tc.frame,MTCTYPE[last_tc.type]); fflush(stdout); } return (-1); } return (rv); } long convert_smpte_to_frame (smpte now) { return(smpte_to_frame( now.type, now.frame, now.sec, now.min, now.hour, now.day)); } /************************************************ * portmidi */ #ifdef HAVE_PORTMIDI #include #include typedef void PmQueue; PmQueue *Pm_QueueCreate(long num_msgs, long bytes_per_msg); PmError Pm_QueueDestroy(PmQueue *queue); PmError Pm_Enqueue(PmQueue *queue, void *msg); PmError Pm_Dequeue(PmQueue *queue, void *msg); PmStream * pm_midi = NULL; /* if INPUT_BUFFER_SIZE is 0, PortMidi uses a default value */ #define INPUT_BUFFER_SIZE 0 int pm_midi_detectdevices (int print) { int midiid=-1; int i; // id = Pm_GetDefaultInputDeviceID(); <- use this as default ?? /* list device information */ for (i = 0; i < Pm_CountDevices(); i++) { const PmDeviceInfo *info = Pm_GetDeviceInfo(i); if (info->input) { if(midiid==-1) { midiid=i; } } if (print) { printf("%d: %s, %s", i, info->interf, info->name); if (info->input) printf(" (input)"); if (info->output) printf(" (output)"); if(midiid==i) printf(" (*)"); printf("\n"); } } return (midiid); } int pm_midi_check (int midiid) { if (midiid < 0 || midiid >=Pm_CountDevices()) { fprintf(stderr,"Error: invalid midi device id.\n"); return(-1); } return(0); } int active = FALSE; int sysex_state = -1; int sysex_type = 0; /* shared queues */ PmQueue *midi_to_main; PmQueue *main_to_midi; /* timer interrupt for processing midi data */ void process_midi(PtTimestamp timestamp, void *userData) { PmError result; PmEvent buffer; /* just one message at a time */ smpte msg; if (!active) return; /* check for messages */ do { result = Pm_Dequeue(main_to_midi, &msg); if (result) { if (msg.frame == 0xaffe) { // stop thread Pm_Enqueue(midi_to_main, &msg); active= FALSE; return; } else if (msg.frame == 0x4711) { // transport stopped - reset ticks. full_tc=last_tc.tick=0; Pm_Enqueue(midi_to_main, &msg); } else { memcpy(&msg,&last_tc,sizeof(smpte)); Pm_Enqueue(midi_to_main, &msg); } } } while (result); /* see if there is any midi input to process */ do { result = Pm_Poll(pm_midi); if (result) { int shift,data; shift=data=0; if (Pm_Read(pm_midi, &buffer, 1) == pmBufferOverflow) continue; /* parse only MTC relevant messages */ if (Pm_MessageStatus(buffer.message) == 0xf1) parse_timecode (Pm_MessageData1(buffer.message)); for (shift = 0; shift < 32 && (data != MIDI_EOX); shift += 8) { data = (buffer.message >> shift) & 0xFF; /* if this is a status byte that's not MIDI_EOX, the sysex * message is incomplete and there is no more sysex data */ if (data & 0x80 && data != MIDI_EOX && data != MIDI_SOX) { sysex_state=-1; break; } /* sysex- universal real time message f0 7f ... f7 */ if (data == 0xf7) { sysex_state=-1;} else if (sysex_state < 0 && data == 0xf0) { sysex_state=0; sysex_type=0; } else if (sysex_state>=0) { sysex_type = parse_sysex_urtm (data,sysex_state,sysex_type); sysex_state++; } } } } while (result); } void pm_midi_open(char *midiid) { int midi_input; if (pm_midi) return; midi_input = atoi(midiid); if (want_verbose && midi_input < 0) midi_input = pm_midi_detectdevices(1); else if (midi_input <0 ) midi_input = pm_midi_detectdevices(0); if (pm_midi_check(midi_input)) return ; // init smpte tc.type=tc.min=tc.frame=tc.sec=tc.hour=0; last_tc.type=last_tc.min=last_tc.frame=last_tc.sec=last_tc.hour=0; sysex_state = -1; midi_to_main = Pm_QueueCreate(2, sizeof(smpte)); main_to_midi = Pm_QueueCreate(2, sizeof(smpte)); if (!midi_to_main || !main_to_midi ) { fprintf(stderr, "Could not create portmidi queues\n"); return; } PmEvent buffer[1]; Pt_Start(1, &process_midi, 0); /* timer started w/millisecond accuracy */ Pm_Initialize(); /* open input device */ Pm_OpenInput(&pm_midi, midi_input, NULL, INPUT_BUFFER_SIZE, NULL, NULL); if (!want_quiet) printf("Midi Input opened.\n"); Pm_SetFilter(pm_midi, PM_FILT_ACTIVE | PM_FILT_CLOCK); /* flush the buffer after setting filter, just in case anything got through */ while (Pm_Poll(pm_midi)) { Pm_Read(pm_midi, buffer, 1); } active = TRUE; } void pm_midi_close(void) { smpte cmd; if (!want_quiet) printf("closing midi..."); if(!pm_midi) return; cmd.frame=0xaffe; // shutdown CMD Pm_Enqueue(main_to_midi, &cmd); while (Pm_Dequeue(midi_to_main, &cmd)==0) ; // spin Pt_Stop(); /* stop the timer */ Pm_QueueDestroy(midi_to_main); Pm_QueueDestroy(main_to_midi); Pm_Close(pm_midi); pm_midi=NULL; //have_dropframes = 0; // reset MTC state } int pm_midi_connected(void) { if (pm_midi) return (1); return (0); } long pm_midi_poll_frame (void) { int spin; long frame; static long lastframe = -1 ; static int stopcnt = 0; smpte now; if (!pm_midi) return (0); now.frame=0; // CMD request Pm_Enqueue(main_to_midi, &now); // request data do { spin = Pm_Dequeue(midi_to_main, &now); } while (spin == 0); /* spin */ ; frame = convert_smpte_to_frame(now); if(midi_clkadj && (full_tc==0xff)) { double dly = delay>0?delay:(1.0/framerate); //add time that has passed sice last full MTC frame.. smpte cmd; cmd.frame=0x4711; // reset-full_tc CMD double diff= now.tick/4.0; // in smpte frames. // check if transport is stuck... if (lastframe != frame) { stopcnt=0; lastframe=frame; } else if (stopcnt++ > (int) ceil(4.0*framerate/dly)) { // we expect a full midi MTC every (2.0*framerate/delay) polls Pm_Enqueue(main_to_midi, &cmd); // request data while (Pm_Dequeue(midi_to_main, &cmd)==0) ; // spin diff=0.0; if (want_verbose) printf("\r\t\t\t\t\t\t -?-\r"); } frame += (long) rint(diff); if (want_verbose) // subtract 7 quarter frames latency when running.. printf("\r\t\t\t\t\t\t |+%g/8\r",diff<0?rint(4.0*(1.75-diff)):diff<2.0?0:rint(4.0*(diff-1.75))); } return(frame); } #endif /* HAVE_PORTMIDI */ #ifdef HAVE_JACKMIDI /* endif HAVE_PORTMIDI */ /************************************************ * jack-midi * * TODO: also use LASH here! */ #include #include #include jack_client_t *jack_midi_client = NULL; jack_port_t *jack_midi_port; #define JACK_MIDI_QUEUE_SIZE (1024) typedef struct my_midi_event { jack_nframes_t time; size_t size; jack_midi_data_t buffer[16]; } my_midi_event_t; my_midi_event_t event_queue[JACK_MIDI_QUEUE_SIZE]; int queued_events_start = 0; int queued_events_end = 0; int queued_cycle_id = 0; void dequeue_jmidi_events(jack_nframes_t until) { int ci = queued_cycle_id; int new=0; // always process data from prev. jack cycles. while (queued_events_start != queued_events_end) { if (queued_events_start == ci ) new=1; if (new && event_queue[queued_events_start].time > until) { break; } my_midi_event_t *ev = &event_queue[queued_events_start]; if (ev->size==2 && ev->buffer[0] == 0xf1) { parse_timecode(ev->buffer[1]); } else if (ev->size >9 && ev->buffer[0] == 0xf0) { int i; int sysex_type = 0; for (i=1; isize; ++i) { sysex_type = parse_sysex_urtm(ev->buffer[i],i-1,sysex_type); } } queued_events_start = (queued_events_start +1 ) % JACK_MIDI_QUEUE_SIZE; } } static int jack_midi_process(jack_nframes_t nframes, void *arg) { void *jack_buf = jack_port_get_buffer(jack_midi_port, nframes); int nevents = jack_midi_get_event_count(jack_buf); int n; queued_cycle_id = queued_events_end; for (n=0; n 15) { continue; } else { event_queue[queued_events_end].time = ev.time; event_queue[queued_events_end].size = ev.size; memcpy (event_queue[queued_events_end].buffer, ev.buffer, ev.size); queued_events_end = (queued_events_end +1 ) % JACK_MIDI_QUEUE_SIZE; } } return 0; } void jack_midi_shutdown(void *arg) { jack_midi_client=NULL; fprintf (stderr, "jack server shutdown\n"); } void jm_midi_close(void) { if (jack_midi_client) { jack_deactivate (jack_midi_client); jack_client_close (jack_midi_client); } jack_midi_client = NULL; } void jm_midi_open(char *midiid) { if (midi_connected()) { fprintf (stderr, "xjadeo is already connected to jack-midi.\n"); return; } int i = 0; char jackmidiid[16]; do { snprintf(jackmidiid,16,"xjadeo-%i",i); #ifdef JACK_SESSION if (jack_uuid) jack_midi_client = jack_client_open (jackmidiid, JackUseExactName|JackSessionID, NULL, jack_uuid); else #endif jack_midi_client = jack_client_open (jackmidiid, JackUseExactName, NULL); } while (jack_midi_client == NULL && i++<16); if (!jack_midi_client) { fprintf(stderr, "could not connect to jack server.\n"); return; } #ifdef JACK_SESSION jack_set_session_callback (jack_midi_client, jack_session_cb, NULL); #endif #ifndef HAVE_WINDOWS jack_on_shutdown (jack_midi_client, jack_midi_shutdown, 0); #endif jack_set_process_callback(jack_midi_client, jack_midi_process, NULL); jack_midi_port = jack_port_register(jack_midi_client, "MTC in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput , 0); if (jack_midi_port == NULL) { fprintf(stderr, "can't register jack-midi-port\n"); midi_close(); return; } // init smpte tc.type=tc.min=tc.frame=tc.sec=tc.hour=0; last_tc.type=last_tc.min=last_tc.frame=last_tc.sec=last_tc.hour=0; if (jack_activate(jack_midi_client)) { fprintf(stderr, "can't activate jack-midi-client\n"); midi_close(); } if (midiid && strlen(midiid)>0) { const char **found_ports = jack_get_ports(jack_midi_client, NULL, JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput); if (found_ports) { int j; for (j = 0; found_ports[j]; ++j) { if (!strncasecmp(found_ports[j], midiid, strlen(midiid))) { if (want_verbose) { printf("JACK-connect '%s' -> '%s'\n", found_ports[j], jack_port_name(jack_midi_port)); } if (jack_connect(jack_midi_client, found_ports[j], jack_port_name(jack_midi_port))) { if (!want_quiet) fprintf(stderr,"can not auto-connect jack-midi port.\n"); } } } } } } int jm_midi_connected(void) { if (jack_midi_client) return (1); return (0); } long jm_midi_poll_frame (void) { long frame =0 ; static long lastframe = -1 ; static int stopcnt = 0; dequeue_jmidi_events(jack_frames_since_cycle_start(jack_midi_client)); frame = convert_smpte_to_frame(last_tc); if(midi_clkadj && (full_tc==0xff)) { double dly = delay>0?delay:(1.0/framerate); //add time that has passed sice last full MTC frame. double diff; // unit: smpte-frames. // check if transport is stuck... if (lastframe != frame) { stopcnt=0; lastframe=frame; } else if (stopcnt++ > (int) ceil(4.0*framerate/dly)) { // we expect a full midi MTC every (2.0*framerate/delay) polls full_tc=last_tc.tick=0; if (want_verbose) printf("\r\t\t\t\t\t\t -?-\r"); } diff= last_tc.tick/4.0; if (want_verbose) // subtract 7 quarter frames latency when running.. printf("\r\t\t\t\t\t\t |+%g/8\r",diff<0?rint(4.0*(1.75-diff)):diff<2.0?0:rint(4.0*(diff-1.75))); frame += (long) rint(diff); } return(frame); } #endif /* HAVE_JACKMIDI */ /************************************************ * alsamidi */ #ifdef ALSA_RAW_MIDI /* old alsa raw midi */ #include static snd_rawmidi_t *amidi= NULL; int ar_sysex_state = -1; int ar_sysex_type = 0; void amidi_open(char *port_name) { int err=0; if (amidi) return; if ((err = snd_rawmidi_open(&amidi, NULL, port_name, 0)) < 0) { fprintf(stderr,"cannot open port \"%s\": %s", port_name, snd_strerror(err)); return; } // init smpte tc.type=tc.min=tc.frame=tc.sec=tc.hour=0; last_tc.type=last_tc.min=last_tc.frame=last_tc.sec=last_tc.hour=0; ar_sysex_state = -1; snd_rawmidi_nonblock(amidi, 1); // snd_rawmidi_read(amidi, NULL, 0); } void ar_midi_close(void) { if (!want_quiet) printf("closing alsa midi..."); if(!amidi) return; snd_rawmidi_close(amidi); amidi=NULL; } // TODO increase buffer size ( avg: 15Hz * 8 msgs ) // better: standalone thread void amidi_event(void) { int i,rv; int npfds = 0; struct pollfd *pfds; unsigned char buf[256]; unsigned short revents; npfds = snd_rawmidi_poll_descriptors_count(amidi); pfds = alloca(npfds * sizeof(struct pollfd)); snd_rawmidi_poll_descriptors(amidi, pfds, npfds); if (poll(pfds, npfds, 0)<= 0) return; if (snd_rawmidi_poll_descriptors_revents(amidi, pfds, npfds, &revents) < 0) return; if (!(revents & POLLIN)) return; // TODO: loop until buffer is empty... if rv>=256 if ((rv = snd_rawmidi_read(amidi, buf, sizeof(buf))) <=0 ) return; for (i = 0; i < rv; ++i) { int data; if (buf[i] == 0xf1 && (i+1 < rv) && !(buf[i+1]&0x80)) parse_timecode(buf[i+1]); #if 1 /* parse sysex msgs */ data = (buf[i]) & 0xFF; /* if this is a status byte that's not MIDI_EOX, the sysex * message is incomplete and there is no more sysex data */ if (data & 0x80 && data != MIDI_EOX && data != MIDI_SOX) {ar_sysex_state=-1;} // sysex- universal real time message f0 7f ... f7 if (data == 0xf7) { ar_sysex_state=-1;} else if (ar_sysex_state < 0 && data == 0xf0) { ar_sysex_state=0; ar_sysex_type=0; } else if (ar_sysex_state>=0) { ar_sysex_type = parse_sysex_urtm (data,ar_sysex_state,ar_sysex_type); ar_sysex_state++; } #endif } } long ar_midi_poll_frame (void) { if (!amidi) return (0); amidi_event(); // process midi buffers - get most recent timecode return(convert_smpte_to_frame(last_tc)); } void ar_midi_open(char *midiid) { char devicestring[32]; if (atoi(midiid)<0) { if (!want_quiet) fprintf(stdout,"AlsaMIDI does not support autodetection. using default hw:0,0,0\n"); snprintf(devicestring,31,"hw:0,0,0"); } else if (isdigit(midiid[0])) { snprintf(devicestring,31,"hw:%s",midiid); } else { snprintf(devicestring,31,"%s",midiid); } if (want_verbose) printf("amidi device: '%s'\n",devicestring); amidi_open(devicestring); } int ar_midi_detectdevices (int print) { if (print) printf("use 'amidi -l' to list Midi ports\n"); return(0); } int ar_midi_connected(void) { if (amidi) return (1); return (0); } #endif /* ALSA RAW */ #ifdef ALSA_SEQ_MIDI /* alsa sequcer */ /************************************************ * alsa seq midi interface */ #include #include // getpid() #include #include pthread_t aseq_thread; pthread_attr_t aseq_pth_attr; pthread_mutex_t aseq_lock; snd_seq_t *seq= NULL; int as_sysex_state = -1; int as_sysex_type = 0; int aseq_stop=0; // only modify in main thread. void aseq_close(void) { if(!seq) return; if (!want_quiet) printf("closing alsa midi..."); snd_seq_close(seq); seq=NULL; //have_dropframes = 0; // reset MTC state } void aseq_open(char *port_name) { int err=0; snd_seq_addr_t port; char seq_name[32]; snprintf(seq_name,32,"xjadeo-%i",(int) getpid()); if (seq) return; /* open sequencer */ // SND_SEQ_OPEN_INPUT if ((err = snd_seq_open(&seq, "default", SND_SEQ_OPEN_INPUT, 0)) <0 ) { fprintf(stderr,"cannot open alsa sequencer: %s\n", snd_strerror(err)); seq=NULL; return; } if ((err = snd_seq_set_client_name(seq, seq_name)) <0 ) { fprintf(stderr,"cannot set client name: %s\n", snd_strerror(err)); aseq_close(); return; } if ((err = snd_seq_create_simple_port(seq, "MTC in", SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE, SND_SEQ_PORT_TYPE_MIDI_GENERIC | SND_SEQ_PORT_TYPE_APPLICATION)) < 0) { fprintf(stderr,"cannot create port: %s\n", snd_strerror(err)); aseq_close(); return; } if (port_name) { err = snd_seq_parse_address(seq, &port, port_name); if (err < 0) { fprintf(stderr,"Cannot find port %s - %s\n", port_name, snd_strerror(err)); } err = snd_seq_connect_from(seq, 0, port.client, port.port); if (err < 0) { fprintf(stderr,"Cannot connect from port %d:%d - %s\n", port.client, port.port, snd_strerror(err)); } } snd_seq_nonblock(seq, 1); // init smpte tc.type=tc.min=tc.frame=tc.sec=tc.hour=0; last_tc.type=last_tc.min=last_tc.frame=last_tc.sec=last_tc.hour=0; } void process_seq_event(const snd_seq_event_t *ev) { if (ev->type == SND_SEQ_EVENT_QFRAME) parse_timecode(ev->data.control.value); else if (ev->type == SND_SEQ_EVENT_SYSEX) { unsigned int i; as_sysex_type = 0; for (i = 1; i < ev->data.ext.len; ++i) { as_sysex_type = parse_sysex_urtm(((unsigned char*)ev->data.ext.ptr)[i],i-1,as_sysex_type); } } } void aseq_event(void) { int err; int npfds = 0; struct pollfd *pfds; npfds = snd_seq_poll_descriptors_count(seq, POLLIN); pfds = alloca(sizeof(*pfds) * npfds); snd_seq_poll_descriptors(seq, pfds, npfds, POLLIN); if (poll(pfds, npfds, 0) <= 0) return; do { snd_seq_event_t *event; err = snd_seq_event_input(seq, &event); if (err < 0) break; if (event) process_seq_event(event); } while (err > 0); } long as_midi_poll_frame (void) { long frame =0 ; static long lastframe = -1 ; static int stopcnt = 0; if (!seq) return (0); pthread_mutex_lock(&aseq_lock); frame = convert_smpte_to_frame(last_tc); pthread_mutex_unlock(&aseq_lock); if(midi_clkadj && (full_tc==0xff)) { double dly = delay>0?delay:(1.0/framerate); //add time that has passed sice last full MTC frame. double diff; // unit: smpte-frames. // check if transport is stuck... if (lastframe != frame) { stopcnt=0; lastframe=frame; } else if (stopcnt++ > (int) ceil(4.0*framerate/dly)) { // we expect a full midi MTC every (2.0*framerate/delay) polls pthread_mutex_lock(&aseq_lock); full_tc=last_tc.tick=0; pthread_mutex_unlock(&aseq_lock); if (want_verbose) printf("\r\t\t\t\t\t\t -?-\r"); } diff= last_tc.tick/4.0; if (want_verbose) // subtract 7 quarter frames latency when running.. printf("\r\t\t\t\t\t\t |+%g/8\r",diff<0?rint(4.0*(1.75-diff)):diff<2.0?0:rint(4.0*(diff-1.75))); frame += (long) rint(diff); } return(frame); } void as_midi_close(void) { if(!seq) return; aseq_stop =1; pthread_join(aseq_thread,NULL); pthread_mutex_destroy(&aseq_lock); aseq_close(); } void *aseq_run(void *arg) { int err; int npfds = 0; struct pollfd *pfds; npfds = snd_seq_poll_descriptors_count(seq, POLLIN); pfds = alloca(sizeof(*pfds) * npfds); for (;;) { snd_seq_poll_descriptors(seq, pfds, npfds, POLLIN); if (poll(pfds, npfds, 1) < 0) break; do { snd_seq_event_t *event; err = snd_seq_event_input(seq, &event); if (err < 0) break; if (event) { // TODO: lock only when actually modifying last_tc pthread_mutex_lock(&aseq_lock); process_seq_event(event); pthread_mutex_unlock(&aseq_lock); } } while (err > 0); if (aseq_stop) break; } pthread_exit(NULL); return (NULL); } /* list devices... * borrowed from aseqdump.c * Copyright (c) 2005 Clemens Ladisch * GPL */ void as_midi_detectdevices (int print) { if (print) { snd_seq_client_info_t *cinfo; snd_seq_port_info_t *pinfo; snd_seq_client_info_alloca(&cinfo); snd_seq_port_info_alloca(&pinfo); printf(" Dumping midi seq ports: (not connecting to any)\n"); printf(" Port Client name Port name\n"); snd_seq_client_info_set_client(cinfo, -1); while (snd_seq_query_next_client(seq, cinfo) >= 0) { int client = snd_seq_client_info_get_client(cinfo); snd_seq_port_info_set_client(pinfo, client); snd_seq_port_info_set_port(pinfo, -1); while (snd_seq_query_next_port(seq, pinfo) >= 0) { /* we need both READ and SUBS_READ */ if ((snd_seq_port_info_get_capability(pinfo) & (SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ)) != (SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_SUBS_READ)) continue; printf(" %3d:%-3d %-32.32s %s\n", snd_seq_port_info_get_client(pinfo), snd_seq_port_info_get_port(pinfo), snd_seq_client_info_get_name(cinfo), snd_seq_port_info_get_name(pinfo)); } } } } void as_midi_open(char *midiid) { if (atoi(midiid)<0) { aseq_open(NULL); if (want_verbose) as_midi_detectdevices(1); } else { aseq_open(midiid); } if (!seq) return; aseq_stop =0; pthread_mutex_init(&aseq_lock, NULL); if(pthread_create(&aseq_thread, NULL, aseq_run, NULL)) { fprintf(stderr,"could not start midi seq. thread\n"); pthread_mutex_destroy(&aseq_lock); aseq_close(); } } int as_midi_connected(void) { if (seq) return (1); return (0); } #endif /* alsa seq midi */ int null_midi_connected(void) { return 0;} void null_midi_open(char *midiid) {;} void null_midi_close(void) {;} long null_midi_poll_frame (void) { return 0L;} #define NULLMIDI 0, &null_midi_open, &null_midi_close, &null_midi_connected, &null_midi_poll_frame typedef struct { const char *name; int supported; // 1: format compiled in -- 0: not supported void (*midi_open)(char *); void (*midi_close)(void); int (*midi_connected)(void); long (*midi_poll_frame) (void); }midiapi; const midiapi MA[] = { { "JACK-MIDI", #ifdef HAVE_JACKMIDI 1, &jm_midi_open, &jm_midi_close, &jm_midi_connected, &jm_midi_poll_frame #else NULLMIDI #endif }, { "ALSA-Sequencer", #ifdef ALSA_SEQ_MIDI /* alsa sequcer */ 1, &as_midi_open, &as_midi_close, &as_midi_connected, &as_midi_poll_frame #else NULLMIDI #endif }, { "PORTMIDI", #ifdef HAVE_PORTMIDI 1, &pm_midi_open, &pm_midi_close, &pm_midi_connected, &pm_midi_poll_frame #else NULLMIDI #endif }, { "ALSA-RAW-MIDI", #ifdef ALSA_RAW_MIDI 1, &ar_midi_open, &ar_midi_close, &ar_midi_connected, &ar_midi_poll_frame #else NULLMIDI #endif }, {NULL, NULLMIDI} // the end. }; int current_midi_driver = 0; int midi_choose_driver(char *id) { if (midi_connected()) return -1; int i=0; while (MA[i].name) { if ((id && !strncasecmp(MA[i].name, id, strlen(id))) || (!id && MA[i].supported) ) { current_midi_driver = i; break; } ++i; } if (!want_quiet && MA[current_midi_driver].supported) { printf("selected MIDI driver: %s\n", MA[current_midi_driver].name); } return MA[current_midi_driver].supported; } const char *midi_driver_name() { return MA[current_midi_driver].name; } int midi_connected(void) { return (MA[current_midi_driver].midi_connected());} void midi_open(char *midiid) {MA[current_midi_driver].midi_open(midiid);} void midi_close(void) {MA[current_midi_driver].midi_close();} long midi_poll_frame (void) { return (MA[current_midi_driver].midi_poll_frame());} #else /* HAVE_MIDI */ int midi_connected(void) { return (0); } const char *midi_driver_name() { return "none"; } #endif /* HAVE_MIDI */ xjadeo-0.7.6/src/xjadeo/display.c0000644000175000017500000004332712133252334013600 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * */ #include "xjadeo.h" #include "display.h" #ifdef OLD_FFMPEG #include // needed for PIX_FMT #include #else #include // needed for PIX_FMT #include #endif extern long ts_offset; // display on screen extern int want_verbose; extern int want_nosplash; /******************************************************************************* * * NULL Video Output */ int open_window_null (void) { return (1); } void close_window_null (void) { ; } void render_null (uint8_t *mybuffer) { ; } void handle_X_events_null (void) { ; } void newsrc_null (void) { ; } void resize_null (unsigned int x, unsigned int y) { ; } void getsize_null (unsigned int *x, unsigned int *y) { if(x)*x=1; if(y)*y=1; } void position_null (int x, int y) { ; } void getpos_null (int *x, int *y) { if(x)*x=1; if(y)*y=1; } void fullscreen_null (int a) { ; } void mousepointer_null (int a) { ; } void ontop_null (int a) { ; } int getfullscreen_null () { return (0); } int getontop_null () { return(0); } /* // experimental SSE2/MMX2 fast_memcopy // see mplayer's libvo/aclib.c and libvo/aclib_template.c #define MMEMCPY #include "fast_memcpy.c" */ #ifndef MMEMCPY inline void *fast_memcpy(void * to, const void * from, size_t len) { memcpy(to, from, len); return to; } #endif /******************************************************************************* * strided memcopy - convert pitches of video buffer */ inline void stride_memcpy(void * dst, const void * src, int width, int height, int dstStride, int srcStride) { int i; if(dstStride == srcStride) fast_memcpy(dst, src, srcStride*height); else for(i=0; iVoff+uvoff]; mybuffer[rv->Uoff+uvoff]=mybuffer[rv->Voff+uvoff]; mybuffer[rv->Voff+uvoff]=tmp; #elif 0 mybuffer[rv->Uoff+uvoff]=0x80; mybuffer[rv->Voff+uvoff]=0x80; #endif } void _overlay_RGB (uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val) { int pos=rv->bpp*(dx+movie_width*dy); mybuffer[pos]= 255-(mybuffer[pos]+val)/2; mybuffer[pos+1]= 255-(mybuffer[pos+1]+val)/2; mybuffer[pos+2]= 255-(mybuffer[pos+2]+val)/2; } void _render_YUV422 (uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val) { int yoff=(2*dx+movie_width*dy*2); mybuffer[yoff+0]=0x80; mybuffer[yoff+1]=val; mybuffer[yoff+2]=0x80; mybuffer[yoff+3]=val; } void _render_YUV (uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val) { int yoff=(dx+movie_width*dy); int uvoff=((dx/2)+movie_width/2*(dy/2)); // YUV mybuffer[yoff]=val; mybuffer[rv->Uoff+uvoff]=0x80; mybuffer[rv->Voff+uvoff]=0x80; } void _render_RGB (uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val) { int pos=rv->bpp*(dx+movie_width*dy); mybuffer[pos]=val; mybuffer[pos+1]=val; mybuffer[pos+2]=val; } /******************************************************************************* * colorspace utils (slow) */ void rgb2argb (uint8_t *rgbabuffer, uint8_t *rgbbuffer, int width, int height) { int x,y,p3,p4; for (x=0; x< width ;x++) for (y=0; y< height;y++) { p3=3*(x+movie_width*y); p4=4*(x+movie_width*y); rgbabuffer[p4+0] = 255; rgbabuffer[p4+1] = rgbbuffer[p3]; rgbabuffer[p4+2] = rgbbuffer[p3+1]; rgbabuffer[p4+3] = rgbbuffer[p3+2]; } } void rgb2abgr (uint8_t *rgbabuffer, uint8_t *rgbbuffer, int width, int height) { int x,y,p3,p4; for (x=0; x< width ;x++) for (y=0; y< height;y++) { p3=3*(x+movie_width*y); p4=4*(x+movie_width*y); rgbabuffer[p4+3] = 255; rgbabuffer[p4+2] = rgbbuffer[p3]; rgbabuffer[p4+1] = rgbbuffer[p3+1]; rgbabuffer[p4+0] = rgbbuffer[p3+2]; } } /******************************************************************************* * * xjadeo displays */ #define NULLOUTPUT &render_null, &open_window_null, &close_window_null, &handle_X_events_null, &newsrc_null, &resize_null, &getsize_null, &position_null, &getpos_null, &fullscreen_null, &ontop_null, &mousepointer_null, &getfullscreen_null, &getontop_null const vidout VO[] = { { PIX_FMT_RGB24, 1, "NULL", NULLOUTPUT}, // NULL is --vo 0 -> autodetect { PIX_FMT_YUV420P, SUP_LIBXV, "XV - X11 video extension", #if HAVE_LIBXV &render_xv, &open_window_xv, &close_window_xv, &handle_X_events_xv, &newsrc_xv, &resize_xv, &get_window_size_xv, &position_xv, get_window_pos_xv, &xj_set_fullscreen, &xj_set_ontop, &xj_mousepointer, &xj_get_fullscreen, &xj_get_ontop}, #else NULLOUTPUT}, #endif { PIX_FMT_YUV420P, SUP_SDL, "SDL", #ifdef HAVE_SDL &render_sdl, &open_window_sdl, &close_window_sdl, &handle_X_events_sdl, &newsrc_sdl, &resize_sdl, &getsize_sdl, &position_sdl, &getpos_null, &sdl_toggle_fullscreen, &ontop_null, &mousecursor_sdl, &sdl_get_fullscreen, &getontop_null}, #else NULLOUTPUT}, #endif { PIX_FMT_RGB24, SUP_IMLIB, "x11 - ImLib (obsolete)", #if HAVE_IMLIB &render_imlib, &open_window_imlib, &close_window_imlib, &handle_X_events_imlib, &newsrc_imlib, &resize_imlib, &get_window_size_imlib, &position_imlib, &get_window_pos_imlib, &xj_set_fullscreen, &xj_set_ontop, &xj_mousepointer, &getfullscreen_null, &getontop_null}, #else NULLOUTPUT}, #endif #ifdef IMLIB2RGBA { PIX_FMT_BGRA32, SUP_IMLIB2, "ImLib2/x11 (RGBA32)", #else { PIX_FMT_RGB24, SUP_IMLIB2, "ImLib2/x11 (RGB24)", #endif #if HAVE_IMLIB2 &render_imlib2, &open_window_imlib2, &close_window_imlib2, &handle_X_events_imlib2, &newsrc_imlib2, &resize_imlib2, &get_window_size_imlib2, &position_imlib2, &get_window_pos_imlib2, &xj_set_fullscreen, &xj_set_ontop, &xj_mousepointer, &getfullscreen_null, &getontop_null}, #else NULLOUTPUT}, #endif { PIX_FMT_UYVY422, SUP_MACOSX, "Mac OSX - quartz", #ifdef HAVE_MACOSX &render_mac, &open_window_mac, &close_window_mac, &handle_X_events_mac, &newsrc_mac, &resize_mac, &getsize_mac, &position_mac, &getpos_mac, &fullscreen_mac, &ontop_mac, &mousepointer_null, &get_fullscreen_mac, &get_ontop_mac}, #else NULLOUTPUT}, #endif {-1,-1,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} // the end. }; int VOutput = 0; int parsevidoutname (char *arg) { int i=0; int s0=strlen(arg); if (s0==0) return (0); if (!strncasecmp("list",arg,s0>4?4:s0)) return(-1); while (VO[++i].supported>=0) { int s1=strlen(VO[i].name); if (!strncasecmp(VO[i].name,arg,s0>s1?s1:s0)) return(i); } return(0); } const char * vidoutname (int i) { return (VO[i].name); } int vidoutsupported (int i) { return(VO[i].supported); } void dump_vopts (void) { int i=0; fprintf (stdout, "Video Output Modes: \n"); fprintf (stdout, " --vo 0 # autodetect (default)\n"); while (VO[++i].supported>=0) { fprintf (stdout, " --vo %i # %s %s\n",i,VO[i].name, VO[i].supported?"(supported by this xjadeo)":"(NOT compiled in this xjadeo)"); } } int try_next_vidoutmode(int user_req) { int i=0; // check available modes.. while (VO[++i].supported>=0); if (user_req >= i || user_req < 0 ) return (-1); if (user_req < i && user_req > 0 && VO[user_req].supported) return(1); return (0); } int vidoutmode(int user_req) { int i=0; if (user_req < 0) { dump_vopts(); exit (0); } VOutput=0; // check available modes.. while (VO[++i].supported>=0) { if (VO[i].supported && VOutput==0) { VOutput=i; } } if (user_req < i && user_req>0 ) if (VO[user_req].supported) VOutput=user_req; return VO[VOutput].render_fmt; } /******************************************************************************* * * OSD */ #define PB_H (20) #define PB_X (10) #define PB_W (movie_width-2*PB_X) #define SET_RFMT(FORMAT, POINTER, VARS, FUNC) \ if ((FORMAT) == PIX_FMT_YUV420P) \ (POINTER) = &_##FUNC##_YUV; \ else if ((FORMAT) == PIX_FMT_UYVY422) \ (POINTER) = &_##FUNC##_YUV422; \ else if ((FORMAT) == PIX_FMT_RGB24) { \ (POINTER) = &_##FUNC##_RGB; \ VARS.bpp = 3; \ } else if ((FORMAT) == PIX_FMT_RGBA32) { \ (POINTER) = &_##FUNC##_RGB; \ VARS.bpp = 4; \ } else if ((FORMAT) == PIX_FMT_BGRA32) { \ (POINTER) = &_##FUNC##_RGB; \ VARS.bpp = 4; \ } else return ; void OSD_bitmap(int rfmt, uint8_t *mybuffer, int yperc, int xoff, int w, int h, uint8_t *src, uint8_t *mask) { int x,y, xalign, yalign; rendervars rv; void (*_render)(uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val); rv.Uoff = movie_width * movie_height; rv.Voff = rv.Uoff + movie_width * movie_height/4; rv.bpp = 0; xalign= (movie_width - w)/2; yalign= (movie_height - h) * yperc /100.0; if (xalign < 0 ) xalign=0; if (yalign < 0 ) yalign=0; SET_RFMT(rfmt,_render,rv,render) for (x=0; x>3); // PIXMAP width must be mult. of 8 ! int val = src[byte] & 1<<(x%8); if (!mask || mask[byte] & 1<<(x%8)) _render(mybuffer,&rv,(x+xalign),(y+yalign),val?0xee:0x11); } } } void OSD_bar(int rfmt, uint8_t *mybuffer, int yperc, double min,double max,double val, double tara) { int x,y, xalign, yalign; rendervars rv; void (*_render)(uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val); rv.Uoff = movie_width * movie_height; rv.Voff = rv.Uoff + movie_width * movie_height/4; rv.bpp = 0; xalign=PB_X ; yalign= (movie_height - PB_H) * yperc /100.0; int pb_val = (int) (PB_W*(val-min)/(max-min)); int pb_not = (int) (PB_W*(tara-min)/(max-min)); SET_RFMT(rfmt,_render,rv,overlay) for (x=0; x=0 && y<4 && (y+yalign) < movie_height;y++) _render(mybuffer,&rv,(x+xalign),(y+yalign),0); for (y=PB_H; x>=0 && y(B)) ? (A) : (B)) void OSD_render (int rfmt, uint8_t *mybuffer, char *text, int xpos, int yperc) { int x,y, xalign, yalign; rendervars rv; void (*_render)(uint8_t *mybuffer, rendervars *rv, int dx, int dy, int val); rv.Uoff = movie_width * movie_height; rv.Voff = rv.Uoff + movie_width * movie_height/4; rv.bpp = 0; SET_RFMT(rfmt,_render,rv,render) const int fontsize = MIN(MAX(16, movie_height/15),120); if ( render_font(OSD_fontfile, text, fontsize) ) return; if (xpos == OSD_LEFT) xalign=ST_PADDING; // left else if (xpos == OSD_RIGHT) xalign=movie_width-ST_PADDING-ST_rightend; // right else xalign=(movie_width-ST_rightend)/2; // center const int fh = MIN(ST_HEIGHT, ST_height); const int fo = ST_HEIGHT - fh; yalign= (movie_height - fh) * yperc /100.0; int donext =0; for (y=0; y < fh && (y+yalign) < movie_height;y++) { donext=0; for (x=0; x= ST_BG || donext) { _render(mybuffer,&rv,(x+xalign),(y+yalign),ST_image[y+fo][x]); } if (ST_image[y+fo][x]>= ST_BG && rfmt == PIX_FMT_UYVY422) donext=1; else donext=0; } } } #include "icons/splash.bitmap" //#include "icons/splash_mask.xbm" void splash (uint8_t *mybuffer) { if (want_nosplash) return; //if (check main.c:stat_osd_fontfile()) // OSD_render (VO[VOutput].render_fmt, mybuffer, "Xjadeo!", OSD_CENTER, 45); if (movie_width >= xj_splash_height && movie_height >= xj_splash_width) OSD_bitmap(VO[VOutput].render_fmt, mybuffer,45,0, xj_splash_width, xj_splash_height, xj_splash_bits, NULL); // xj_splash_mask_bits); render_buffer(mybuffer); } /******************************************************************************* * * display wrapper functions */ #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2) #include "icons/osd_bitmaps.h" #endif #define OBM(NAME,YPOS) OSD_bitmap(VO[VOutput].render_fmt, mybuffer,YPOS,0, osd_##NAME##_width, osd_##NAME##_height, osd_##NAME##_bits, osd_##NAME##_mask_bits); void render_buffer (uint8_t *mybuffer) { if (!mybuffer) return; // render OSD on buffer if (OSD_mode&OSD_FRAME) OSD_render (VO[VOutput].render_fmt, mybuffer, OSD_frame, OSD_fx, OSD_fy); if (OSD_mode&OSD_SMPTE) OSD_render (VO[VOutput].render_fmt, mybuffer, OSD_smpte, OSD_sx, OSD_sy); #if ( HAVE_LIBXV || HAVE_IMLIB2 ) if (OSD_mode&OSD_EQ) { char tempeq[48]; int v0,v1,v2,v3,v4; if(xj_get_eq("brightness",&v0)) v0=0; if(xj_get_eq("contrast",&v1)) v1=0; if(xj_get_eq("gamma",&v2)) v2=0; if(xj_get_eq("saturation",&v3)) v3=0; if(xj_get_eq("hue",&v4)) v4=0; if (0) { snprintf(tempeq,48,"B:%i C:%i S:%i H:%i G:%i", v0/10, v1/10, v2/10, v3/10, v4/10); OSD_render (VO[VOutput].render_fmt, mybuffer, tempeq, OSD_CENTER, 50); } else { #if 1 OBM(brightness, 3) OBM(contrast, 23) OBM(gamma, 43) OBM(saturation, 63) OBM(hue, 83) #else OSD_render (VO[VOutput].render_fmt, mybuffer, "Brigtness:", OSD_CENTER, 3); OSD_render (VO[VOutput].render_fmt, mybuffer, "Contrast:", OSD_CENTER, 23); OSD_render (VO[VOutput].render_fmt, mybuffer, "Gamma:", OSD_CENTER, 43); OSD_render (VO[VOutput].render_fmt, mybuffer, "Saturation:", OSD_CENTER, 63); OSD_render (VO[VOutput].render_fmt, mybuffer, "Hue:", OSD_CENTER, 83); #endif OSD_bar(VO[VOutput].render_fmt, mybuffer,10, -1000.0,1000.0,(double) v0, 0.0); OSD_bar(VO[VOutput].render_fmt, mybuffer,30, -1000.0,1000.0,(double) v1, (VOutput==1)?-500.0:0.0); OSD_bar(VO[VOutput].render_fmt, mybuffer,50, -1000.0,1000.0,(double) v2, 0.0); OSD_bar(VO[VOutput].render_fmt, mybuffer,70, -1000.0,1000.0,(double) v3, 0.0); OSD_bar(VO[VOutput].render_fmt, mybuffer,90, -1000.0,1000.0,(double) v4, 0.0); } } else #endif { if (OSD_mode&OSD_TEXT ) OSD_render (VO[VOutput].render_fmt, mybuffer, OSD_text, OSD_tx, OSD_ty); if (OSD_mode&OSD_OFFF ) { char tempoff[30]; snprintf(tempoff,30,"off: %li",ts_offset); OSD_render (VO[VOutput].render_fmt, mybuffer, tempoff, OSD_CENTER, 50); } else if (OSD_mode&OSD_OFFS ) { char tempsmpte[30]; sprintf(tempsmpte,"off: "); frame_to_smptestring(tempsmpte+4,ts_offset); OSD_render (VO[VOutput].render_fmt, mybuffer, tempsmpte, OSD_CENTER, 50); } } VO[VOutput].render(buffer); // buffer = mybuffer (so far no share mem or sth) } void open_window(void) { if (!want_quiet) printf("Video output: %s\n",VO[VOutput].name); if (VO[VOutput].open() ) { fprintf(stderr,"Could not open video output.\n"); VOutput=0; loop_run=0; } else loop_run=1; } void close_window(void) { int vmode=VOutput; VOutput=0; loop_run=0; VO[vmode].close(); } void handle_X_events (void) { VO[VOutput].eventhandler(); } void newsourcebuffer (void) { VO[VOutput].newsrc(); } int getvidmode (void) { return(VOutput); } void Xgetpos (int *x, int *y) { VO[VOutput].getpos(x,y); } void Xgetsize (unsigned int *x, unsigned int *y) { VO[VOutput].getsize(x,y); } void Xresize (unsigned int x, unsigned int y) { VO[VOutput].resize(x,y); } void Xontop (int a) { VO[VOutput].ontop(a); } int Xgetontop (void) { return (VO[VOutput].getontop()); } int Xgetfullscreen (void) { return (VO[VOutput].getfullscreen()); } void Xmousepointer (int a) { VO[VOutput].mousepointer(a); } #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2 || defined HAVE_MACOSX || defined HAVE_SDL) extern int force_redraw; // tell the main event loop that some cfg has changed #endif // TODO : use plugin pointer ... void Xletterbox (int action) { if (VOutput !=1 && VOutput !=4 && VOutput !=5 && VOutput!=2) return; #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2 || defined HAVE_MACOSX || defined HAVE_SDL) if (action==2) want_letterbox=!want_letterbox; else want_letterbox=action?1:0; # if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2) if (VOutput ==1 || VOutput ==4) { //X11/XV xj_letterbox(); force_redraw=1; } # endif # ifdef HAVE_SDL if (VOutput==2) { // SDL force_redraw=1; } # endif # ifdef HAVE_MACOSX if (VOutput==5) { // OSX force_redraw=1; window_resized_mac(); } # endif // OSX #endif // X11/XV/or OSX } void Xfullscreen (int a) { VO[VOutput].fullscreen(a); } void Xposition (int x, int y) { VO[VOutput].position(x,y); } xjadeo-0.7.6/src/xjadeo/display_x11.c0000644000175000017500000014625412157710141014275 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 - 2012 * Robin Gareus * Luis Garrido * * this file was inspired by playdv source code of http://libdv.sourceforge.net/. * - (c) 2000 Charles 'Buck' Krasic * - (c) 2000 Erik Walthinsen * * EWMH fullscreen code - from mplayer * - Strasser, Alexander (beastd) ?! */ #include "xjadeo.h" #include "display.h" #define IMC // cache imlib2 image #undef IM_CUSTOM_COLORTABLE #ifdef CROPIMG int xoffset = 0; #endif void jackt_toggle(); void jackt_rewind(); #if (HAVE_LIBXV || HAVE_IMLIB || HAVE_IMLIB2) Display *xj_dpy = NULL; Window xj_rwin, xj_win; int xj_screen; GC xj_gc; Atom xj_del_atom; int xj_ontop = 0; int xj_fullscreen = 0; int xj_mouse = 0; int xj_dwidth, xj_dheight; // cache window size for rendering currently only Xv int xj_box[4]; // letterbox site - currently only Xv & imlib2 /******************************************************************************* * common X11 code */ /* blatantly ripped off mplayer's libvo/x11_common.c - THX. */ #if 0 // DETECT NET_WM #define NET_WM_STATE_TEST(ARGX,ARGY) { \ Atom type= XInternAtom(xj_dpy, ARGX,True);\ if (type!=None && atom == type) { \ if (!want_quiet) fprintf(stderr,"[x11] Detected wm supports " #ARGX " state.\n" );\ return ARGY; } } static int net_wm_support_state_test(Atom atom) { NET_WM_STATE_TEST("_NET_WM_STATE_FULLSCREEN",1); NET_WM_STATE_TEST("_NET_WM_STATE_ABOVE",2); NET_WM_STATE_TEST("_NET_WM_STATE_STAYS_ON_TOP",4); /* printf("DEBUG atom:%s\n", XGetAtomName(xj_dpy,atom)); */ return 0; } void check_wm_atoms(void) { Atom *args; int i, format; int wm=0; unsigned long nitems, bytesafter; Atom type = XInternAtom(xj_dpy, "_NET_SUPPORTED",0); /* if ((args = XListProperties(xj_dpy,xj_win, &nitems))) { */ if (Success == XGetWindowProperty(xj_dpy, xj_rwin, type, 0, 16384, False, AnyPropertyType, &type, &format, &nitems, &bytesafter, (unsigned char **) &args) && nitems > 0) { if (!want_quiet) fprintf(stderr,"[x11] Detected wm supports NetWM.\n"); for (i = 0; i < nitems; i++) wm |= net_wm_support_state_test(args[i]); } XFree(args); } #else void check_wm_atoms(void) { ; } #endif static void net_wm_set_property(char *atom, int state) { XEvent xev; int set = _NET_WM_STATE_ADD; Atom type, property; if (state == _NET_WM_STATE_TOGGLE) set = _NET_WM_STATE_TOGGLE; else if (!state) set = _NET_WM_STATE_REMOVE; type = XInternAtom(xj_dpy,"_NET_WM_STATE", True); // was ,0); if (type == None) return; property = XInternAtom(xj_dpy,atom, 0); if (property == None) return; xev.type = ClientMessage; xev.xclient.type = ClientMessage; xev.xclient.window = xj_win; xev.xclient.message_type = type; xev.xclient.format = 32; xev.xclient.data.l[0] = set; xev.xclient.data.l[1] = property; xev.xclient.data.l[2] = 0; if (!XSendEvent(xj_dpy, DefaultRootWindow(xj_dpy), False, SubstructureRedirectMask|SubstructureNotifyMask, &xev)) { fprintf(stderr,"error changing X11 property\n"); } } #ifdef HAVE_XPM #include #include "icons/xjadeo-color.xpm" #else #include "icons/xjadeo.bitmap" #include "icons/xjadeo_mask.xbm" #endif void xj_set_hints (void) { XTextProperty x_wname, x_iname; XSizeHints hints; XWMHints wmhints; char *w_name ="xjadeo"; char *i_name ="xjadeo"; /* default settings which allow arbitraray resizing of the window */ hints.flags = PSize | PMaxSize | PMinSize; hints.min_width = movie_width / 16; hints.min_height = movie_height / 16; /* maximum dimensions for Xv support are about 2048x2048 */ hints.max_width = 2048; hints.max_height = 2048; wmhints.input = True; #ifdef HAVE_XPM XpmCreatePixmapFromData(xj_dpy, xj_rwin, xjadeo_color_xpm, &wmhints.icon_pixmap, &wmhints.icon_mask, NULL); #else wmhints.icon_pixmap = XCreateBitmapFromData(xj_dpy, xj_rwin, (char *)xjadeo_bits , xjadeo_width, xjadeo_height); wmhints.icon_mask = XCreateBitmapFromData(xj_dpy, xj_rwin, (char *)xjadeo_mask_bits , xjadeo_mask_width, xjadeo_mask_height); #endif wmhints.flags = InputHint | IconPixmapHint | IconMaskHint ;// | StateHint XStringListToTextProperty(&w_name, 1 ,&x_wname); XStringListToTextProperty(&i_name, 1 ,&x_iname); XSetWMProperties(xj_dpy, xj_win, &x_wname, &x_iname, NULL, 0, &hints, &wmhints, NULL); } void xj_set_ontop (int action) { if (action==2) xj_ontop^=1; else xj_ontop=action; net_wm_set_property("_NET_WM_STATE_ABOVE", action); // net_wm_set_property("_NET_WM_STATE_STAYS_ON_TOP", action); } int xj_get_ontop () { return xj_ontop; } void xj_set_fullscreen (int action) { if (action==2) xj_fullscreen^=1; else xj_fullscreen=action; net_wm_set_property("_NET_WM_STATE_FULLSCREEN", action); } int xj_get_fullscreen () { return (xj_fullscreen); } /* also from mplayer's libvo/x11_common.c - thanks GPL !*/ void xj_hidecursor (void) { Cursor no_ptr; Pixmap bm_no; XColor black, dummy; Colormap colormap; static char bm_no_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; colormap = DefaultColormap(xj_dpy, xj_screen); if (!XAllocNamedColor(xj_dpy, colormap, "black", &black, &dummy) ) return; bm_no = XCreateBitmapFromData(xj_dpy, xj_win, bm_no_data, 8, 8); no_ptr = XCreatePixmapCursor(xj_dpy, bm_no, bm_no, &black, &black, 0, 0); XDefineCursor(xj_dpy, xj_win, no_ptr); XFreeCursor(xj_dpy, no_ptr); if (bm_no != None) XFreePixmap(xj_dpy, bm_no); XFreeColors(xj_dpy,colormap,&black.pixel,1,0); } void xj_showcursor (void) { XDefineCursor(xj_dpy,xj_win, 0); } void xj_mousepointer (int action) { if (action==2) xj_mouse^=1; else xj_mouse=action?0:1; if (xj_mouse) xj_hidecursor(); else xj_showcursor(); } void xj_get_window_pos (int *rx, int *ry) { Window dummy; XTranslateCoordinates( xj_dpy, xj_win, xj_rwin, 0, 0, rx, ry, &dummy); while (dummy !=None) { int x, y; XTranslateCoordinates( xj_dpy, xj_win, dummy, 0, 0, &x, &y, &dummy); if (dummy!=None) { (*rx)-=x; (*ry)-=y; } else { (*rx)+=x; (*ry)+=y; } } } void xj_get_window_size (unsigned int *my_Width, unsigned int *my_Height) { int dummyX,dummyY; unsigned int dummy_u0, dummy_u1; Window dummy_w; XGetGeometry(xj_dpy, xj_win, &dummy_w, &dummyX,&dummyY,my_Width,my_Height,&dummy_u0,&dummy_u1); } void xj_resize (unsigned int x, unsigned int y) { XResizeWindow(xj_dpy, xj_win, x, y); } void xj_position (int x, int y) { XMoveWindow(xj_dpy, xj_win,x,y); } void xj_letterbox() { if (!want_letterbox) { /* scale */ xj_box[0]=xj_box[1]=0; xj_box[2]=xj_dwidth; xj_box[3]=xj_dheight; } else { /* letterbox; */ const float asp_src = movie_aspect?movie_aspect:(float)movie_width/(float)movie_height; const float asp_dst = (float)xj_dwidth / (float)xj_dheight; if (asp_dst > asp_src ) { xj_box[3]=xj_dheight; xj_box[2]=xj_box[3]*asp_src; } else { xj_box[2]=xj_dwidth; xj_box[3]=xj_box[2]/asp_src; } xj_box[0]=(xj_dwidth-xj_box[2])/2; xj_box[1]=(xj_dheight-xj_box[3])/2; } } /* void set_x11_icon_name(unsigned char *icon) { XTextProperty text_prop; text_prop.value = icon; text_prop.nitems = strlen((char*)icon); text_prop.encoding = XA_STRING; text_prop.format = 8; XSetWMIconName(xj_dpy, xj_win, &text_prop); XFlush(xj_dpy); } */ /******************************************************************************* * Drag and Drop - common X11 code */ # ifdef DND Atom xj_a_XdndDrop; Atom xj_a_XdndFinished; Atom xj_a_XdndActionCopy; Atom xj_a_XdndLeave; Atom xj_a_XdndPosition; Atom xj_a_XdndStatus; Atom xj_a_XdndEnter; Atom xj_a_XdndAware; Atom xj_a_XdndTypeList; Atom xj_a_XdndSelection; Atom xj_atom; int dnd_source; const int xdnd_version = 5; void HandleEnter(XEvent * xe) { long *l = xe->xclient.data.l; xj_atom= None; Atom ok0 = XInternAtom(xj_dpy, "text/uri-list", False); Atom ok1 = XInternAtom(xj_dpy, "text/plain", False); Atom ok2 = XInternAtom(xj_dpy, "UTF8_STRING", False); int version = (int)(((unsigned long)(l[1])) >> 24); if (version > xdnd_version) return; dnd_source = l[0]; if (l[1] & 0x1UL) { Atom type = 0; int f,ll; unsigned long n, a; unsigned char *data; int offset = 0; a=1; while(a && xj_atom== None){ XGetWindowProperty(xj_dpy, dnd_source, xj_a_XdndTypeList, offset, 256, False, XA_ATOM, &type, &f,&n,&a,&data); if(data == NULL || type != XA_ATOM || f != 8*sizeof(Atom)){ XFree(data); return; } for (ll=0; llxclient.data.l[2]; // xj_get_window_size(&w,&h); // xev.xclient.data.l[3] = (w<<16) | (h&0xFFFFUL); // w, h xev.xclient.data.l[3] = (1<<16) | (1&0xFFFFUL); // w, h xev.xclient.data.l[4] = xj_a_XdndActionCopy; // action XSendEvent(xj_dpy, dnd_source, False, NoEventMask, &xev); } void SendFinished (void) { XEvent xev; memset(&xev,0,sizeof(XEvent)); xev.xany.type = ClientMessage; xev.xany.display = xj_dpy; xev.xclient.window = dnd_source; xev.xclient.message_type = xj_a_XdndFinished; xev.xclient.format = 32; xev.xclient.data.l[0] = xj_win; XSendEvent(xj_dpy, dnd_source, False, NoEventMask, &xev); } #define MAX_DND_FILES 8 void xapi_open(void *d); void getDragData (XEvent *xe) { Atom type; int f; unsigned long n, a; unsigned char *data; if(xe->xselection.property != xj_a_XdndSelection) return; XGetWindowProperty(xj_dpy, xe->xselection.requestor, xe->xselection.property, 0, 65536, True, xj_atom, &type, &f, &n, &a, &data); SendFinished(); if (!data){ fprintf(stderr, "WARNING: drag-n-drop - no data\n"); return; } /* Handle dropped files */ char * retain = (char*)data; char * files[MAX_DND_FILES]; int num = 0; while(retain < ((char *) data) + n) { int nl = 0; if (!strncmp(retain,"file:",5)) { retain+=5; } files[num++]=retain; while(retain < (((char *)data) + n)){ if(*retain == '\r' || *retain == '\n'){ *retain=0; nl = 1; } else if (nl) break; retain++; } if (num >= MAX_DND_FILES) break; } if (want_debug) for (f=0;f to whitespaces, etc. char *t=files[0]; while ((t=strchr(t,'%')) && strlen(t)>2) { int ti=0; char tc= t[3]; t[3]=0; ti=(int)strtol(&(t[1]),NULL,16); t[3]=tc; memmove(t+1,t+3,strlen(t)-2); tc=(char)ti; *t=tc; t[strlen(t)]='\0'; t++; } } if (num>0) xapi_open(files[0]); free(data); } void init_dnd () { Atom atm = (Atom)xdnd_version; if ((xj_a_XdndDrop = XInternAtom (xj_dpy, "XdndDrop", True)) != None && (xj_a_XdndLeave = XInternAtom (xj_dpy, "XdndLeave", True)) != None && (xj_a_XdndEnter = XInternAtom (xj_dpy, "XdndEnter", True)) != None && /* (xj_uri_atom = XInternAtom (xj_dpy, "text/uri-list", True)) != None && */ (xj_a_XdndActionCopy = XInternAtom (xj_dpy, "XdndActionCopy", True)) != None && (xj_a_XdndFinished = XInternAtom (xj_dpy, "XdndFinished", True)) != None && (xj_a_XdndPosition = XInternAtom (xj_dpy, "XdndPosition", True)) != None && (xj_a_XdndStatus = XInternAtom (xj_dpy, "XdndStatus", True)) != None && (xj_a_XdndTypeList = XInternAtom (xj_dpy, "XdndTypeList", True)) != None && (xj_a_XdndSelection = XInternAtom (xj_dpy, "XdndSelection", True)) != None && (xj_a_XdndAware = XInternAtom (xj_dpy, "XdndAware", True)) != None ) { if(!want_quiet) printf("enabled drag-DROP support.\n"); XChangeProperty(xj_dpy, xj_win, xj_a_XdndAware, XA_ATOM, 32, PropModeReplace, (unsigned char *)&atm, 1); } } void disable_dnd () { XDeleteProperty(xj_dpy, xj_win, xj_a_XdndAware); } # endif /* DND */ /******************************************************************************* * X event callback handler */ #define EQCLAMP(var) if((var)<-999) { var=-1000;} if((var)>999) { var=1000;} #define EQMOD(PROP,STEP) if(!xj_get_eq(PROP,&value)){value+=(STEP); EQCLAMP(value); xj_set_eq(PROP,value); force_redraw=1;} // EQ prototypes #ifdef HAVE_LIBXV int xv_set_eq(char *name, int value); int xv_get_eq(char *name, int *value); #endif #ifdef HAVE_IMLIB2 int im2_get_eq(char *name, int *value); int im2_set_eq(char *name, int value); #endif extern const vidout VO[]; extern int VOutput; extern int OSD_mode; // change via keystroke extern long ts_offset; extern char *smpte_offset; extern int force_redraw; // tell the main event loop that some cfg has changed extern int interaction_override; // disable some options. extern double framerate; inline void xj_render () { /* this is the only reference to the global buffer.. * buffer = mybuffer (so far no shared mem or sth) */ VO[VOutput].render(buffer); } int xj_get_eq(char *prop, int *value) { #ifdef COLOREQ # ifdef HAVE_LIBXV if (VOutput == 1) return (xv_get_eq(prop,value)); # endif # ifdef HAVE_IMLIB2 if (VOutput == 4) return (im2_get_eq(prop,value)); # endif #endif if (value) *value=0; return (1); // error } void xj_set_eq (char *prop, int value) { #ifdef COLOREQ # ifdef HAVE_LIBXV if (VOutput == 1) xv_set_eq(prop,value); # endif # ifdef HAVE_IMLIB2 if (VOutput == 4) im2_set_eq(prop,value); # endif #endif } void xj_handle_X_events (void) { XEvent event; int value=0; // XSynchronize(xj_dpy,False ); // XLockDisplay(xj_dpy); while(XPending(xj_dpy)) { XNextEvent(xj_dpy, &event); switch (event.type) { case Expose: // TODO: update only rect (ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height) xj_render(); break; case SelectionRequest: break; case SelectionNotify: #ifdef DND getDragData(&event); #endif break; case ClientMessage: #ifdef DND // fprintf(stdout, "event client: %i\n",event.xclient.message_type); if (event.xclient.message_type == xj_a_XdndPosition) { if (xj_atom!= None) SendStatus(&event); } else if (event.xclient.message_type == xj_a_XdndLeave) { if (want_debug) printf("DND LEAVE!\n"); } else if (event.xclient.message_type == xj_a_XdndEnter) { HandleEnter(&event); } else if (event.xclient.message_type == xj_a_XdndDrop) { if ((event.xclient.data.l[0] != XGetSelectionOwner(xj_dpy, xj_a_XdndSelection)) || (event.xclient.data.l[0] != dnd_source)){ if (!want_quiet) fprintf(stderr,"[x11] DnD owner mismatch."); } if(want_debug) printf("DROP!\n"); if (xj_atom!= None) { XConvertSelection(xj_dpy, xj_a_XdndSelection, xj_atom, xj_a_XdndSelection, xj_win, CurrentTime); } SendFinished(); } else #endif if (event.xclient.data.l[0] == xj_del_atom) { // fprintf(stdout, "Window destoyed...\n"); if ((interaction_override&OVR_QUIT_WMG) == 0) loop_flag=0; #if 0 } else if (event.xclient.data.l[0] == xj_a_TakeFocus) { fprintf(stdout, "take X focus!\n"); #endif #if 0 } else { fprintf(stdout, "unhandled X-client event: %ld\n",(long) event.xclient.message_type); #endif } break; case ConfigureNotify: // from XV only { unsigned int my_Width,my_Height; xj_get_window_size(&my_Width,&my_Height); xj_dwidth= my_Width; xj_dheight= my_Height; xj_letterbox(); } if (VOutput == 1) // only XV xj_render(); break; #if 0 case VisibilityNotify: if (event.xvisibility.state == VisibilityUnobscured) { // fprintf(stdout, "VisibilityUnobscured!\n"); loop_run=1; } else if (event.xvisibility.state == VisibilityPartiallyObscured) { // fprintf(stdout, "Visibility Partly Unobscured!\n"); loop_run=1; } else { loop_run=0; // fprintf(stdout, "Visibility Hidden!\n"); } break; #endif case MapNotify: // fprintf(stdout, "Window (re)mapped - enable Video.\n"); loop_run=1; break; case UnmapNotify: // fprintf(stdout, "Window unmapped/minimized - disabled Video.\n"); loop_run=0; break; case ButtonPress: break; case ButtonRelease: if (event.xbutton.button == 1) { if ((interaction_override&OVR_MOUSEBTN) == 0) xj_resize(ffctv_width, ffctv_height); } else { unsigned int my_Width,my_Height; xj_get_window_size(&my_Width,&my_Height); if (event.xbutton.button == 5 && my_Height > 32 && my_Width > 32) { float step=sqrt((float)my_Height); my_Width-=floor(step*movie_aspect); my_Height-=step; } if (event.xbutton.button == 4) { float step=sqrt((float)my_Height); my_Width+=floor(step*movie_aspect); my_Height+=step; } // resize to match movie aspect ratio if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=floor((float)my_Height * movie_aspect); else my_Height=floor((float)my_Width / movie_aspect); xj_resize(my_Width, my_Height); } // fprintf(stdout, "Button %i release event.\n", event.xbutton.button); if (VOutput == 1) // only XV xj_render(); break; case KeyPress: { KeySym key; char buf[100]; static XComposeStatus stat; XLookupString(&event.xkey, buf, sizeof(buf), &key, &stat); /* HARDCODED KEY BINDINGS */ if (key == XK_Escape) { // 'Esc' if ((interaction_override&OVR_QUIT_KEY) == 0) { loop_flag=0; } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_q ) {// 'q' if ((interaction_override&OVR_QUIT_KEY) == 0) { loop_flag=0; } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_a ) //'a' // always-on-top xj_set_ontop(xj_ontop^=1); else if (key == XK_f ) //'f' // fullscreen xj_set_fullscreen(xj_fullscreen^=1); else if (key == XK_e ) {//'e' // toggle OSD EQ config OSD_mode^=OSD_EQ; if (VOutput!=1 && VOutput!=4) OSD_mode&=~OSD_EQ; // disable but for Xv&imlib2 force_redraw=1; } else if (key == XK_o ) { //'o' // OSD - offset in frames if (OSD_mode&OSD_OFFF) { OSD_mode&=~OSD_OFFF; OSD_mode|=OSD_OFFS; } else if (OSD_mode&OSD_OFFS) { OSD_mode^=OSD_OFFS; } else { OSD_mode^=OSD_OFFF; } force_redraw=1; } else if (key == XK_s ) { //'s' // OSD - current smpte OSD_mode^=OSD_SMPTE; force_redraw=1; } else if (key == XK_l ) { //'l' // OSD - letterbox want_letterbox=!want_letterbox; xj_letterbox(); force_redraw=1; } else if (key == XK_v ) { //'v' // OSD - current video frame OSD_mode^=OSD_FRAME; force_redraw=1; } else if (key == XK_b ) { //'b' // OSD - black box OSD_mode^=OSD_BOX; force_redraw=1; } else if (key == XK_C ) { //'C' // OSD - clear all OSD_mode=0; force_redraw=1; } else if (key == XK_exclam ) { //'Shift-1' // EQMOD("brightness",-8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_quotedbl || key == XK_at) { //'Shift-2' // EQMOD("brightness",+8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_numbersign || key == XK_section) { //'Shift-3' // EQMOD("contrast",-8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_dollar ) { //'Shift-4' // EQMOD("contrast",+8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_1 ) { //'1' // EQMOD("brightness",-50) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_2 ) { //'2' // EQMOD("brightness",+50) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_3 ) { //'3' // EQMOD("contrast",-50) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_4 ) { //'4' // EQMOD("contrast",+50) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_5 ) { //'5' // EQMOD("gamma",-8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_6 ) { //'6' // EQMOD("gamma",+8) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_7 ) { //'7' // EQMOD("saturation",-50) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_8 ) { //'8' // EQMOD("saturation",+100) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_9 ) { //'9' // EQMOD("hue",-5) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_0 ) { //'0' // EQMOD("hue",+5) else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if (key == XK_E ) { //'E' // if (VOutput==1) xj_set_eq("contrast",-500); // xvinfo default:64 (0..255) else xj_set_eq("contrast",0); xj_set_eq("brightness",0); xj_set_eq("saturation",0); xj_set_eq("hue",0); xj_set_eq("gamma",0); force_redraw=1; } else if (key == XK_period ) { //'.' // resize 100% xj_resize(ffctv_width, ffctv_height); } else if (key == XK_comma ) { //',' // resize to aspect ratio unsigned int my_Width,my_Height; xj_get_window_size(&my_Width,&my_Height); if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=rint((float)my_Height * movie_aspect); else my_Height=rint((float)my_Width / movie_aspect); xj_resize(my_Width, my_Height); } else if (key == XK_less ) { //'<' // resize *.83 unsigned int my_Width,my_Height; xj_get_window_size(&my_Width,&my_Height); float step=0.2*my_Height; my_Width-=floor(step*movie_aspect); my_Height-=step; xj_resize(my_Width, my_Height); } else if (key == XK_greater ) { //'>' // resize *1.2 unsigned int my_Width,my_Height; xj_get_window_size(&my_Width,&my_Height); float step=0.2*my_Height; my_Width+=floor(step*movie_aspect); my_Height+=step; xj_resize(my_Width, my_Height); } else if (key == XK_plus ) { //'+' // A/V offset if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } ts_offset++; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if (key == XK_minus ) { //'-' A/V offset if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } ts_offset--; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if (key == XK_braceright ) { //'}' // A/V offset if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } if (framerate > 0) { ts_offset+= framerate *60; } else { ts_offset+= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if (key == XK_braceleft) { //'{' A/V offset if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } if (framerate > 0) { ts_offset-= framerate *60; } else { ts_offset-= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if (key == XK_m ) { // 'm' // toggle mouse pointer xj_mousepointer(2); #ifdef CROPIMG } else if (key == XK_bracketleft ) { // '[' // xoffset-=2; if (xoffset<0) xoffset=0; force_redraw=1; } else if (key == XK_bracketright ) { // ']' // xoffset+=2; if (xoffset>movie_width) xoffset=movie_width; force_redraw=1; #endif } else if (key == XK_BackSpace ) { // BACKSPACE if ((interaction_override&OVR_JCONTROL) == 0) jackt_rewind(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # backspace", (unsigned int) key); } else if (key == XK_space ) { // ' ' // SPACE if ((interaction_override&OVR_JCONTROL) == 0) jackt_toggle(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # space", (unsigned int) key); #if 0 // TEST - save current config -- JACK-SESSION } else if (key == XK_x ) { // 'x' saveconfig("/tmp/xj.cfg"); #endif } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); if (want_debug) printf("unassigned key pressed: 0x%x\n", (unsigned int)key); } } break; case ReparentNotify: break; default: /* TODO: I get Xevents type 94 (0x5e) a lot - * no what could that be ? */ // printf("unhandled X event: type: %ld =0x%x\n",(long) event.type ,(int) event.type); break; } } // XUnlockDisplay(xj_dpy); } #endif /* HAVE any of xv, imlib* */ /******************************************************************************* * XV !!! */ #if HAVE_LIBXV // TODO: support other YUV Xv - ffmpeg combinations // (depending on hardware and X) Xv can do more than YV12 ... #define FOURCC_YV12 0x32315659 /* YV12 YUV420P */ #define FOURCC_I420 0x30323449 /* I420 Intel Indeo 4 */ //#define FOURCC_YUV2 0x32595559 /* YUV2 YUV422 */ //#define FOURCC_UYVY 0x59565955 /* YUV 4:2:2 */ Screen *xv_scn; int xv_swidth, xv_sheight; XEvent xv_event; XvPortID xv_port; XShmSegmentInfo xv_shminfo; XvImage *xv_image; char *xv_buffer; size_t xv_len; int xv_one_memcpy = 0; int xv_pic_format = FOURCC_I420; void allocate_xvimage (void) { // YV12 has 12 bits per pixel. 8bitY 2+2 UV xv_len = movie_width * movie_height * 3 / 2 ; /* shared memory allocation etc. */ xv_image = XvShmCreateImage(xj_dpy, xv_port, xv_pic_format, NULL, // FIXME: use xjadeo buffer directly xv_swidth, xv_sheight, //768, 486, //720, 576, &xv_shminfo); /* TODO: check that this does not break support for some VIC's * let's ship xjadeo w/ xv_one_memcpy=0; - slower(?) but safer(!) * (maybe the U/V planes are swapped, byte order or whatever...) */ #if 0 if (xv_len != xv_image->data_size) xv_one_memcpy =0; else xv_one_memcpy=1; #else xv_one_memcpy=0; #endif xv_len = xv_image->data_size; xv_shminfo.shmid = shmget(IPC_PRIVATE, xv_len, IPC_CREAT | 0777); xv_image->data = xv_buffer = xv_shminfo.shmaddr = shmat(xv_shminfo.shmid, 0, 0); XShmAttach(xj_dpy, &xv_shminfo); XSync(xj_dpy, False); if (xv_shminfo.shmid > 0) shmctl (xv_shminfo.shmid, IPC_RMID, 0); } void deallocate_xvimage(void) { XShmDetach(xj_dpy, &xv_shminfo); shmdt(xv_shminfo.shmaddr); XFree(xv_image); XSync(xj_dpy, False); xv_buffer=NULL; } inline void xv_draw_colorkey(void) { if ( 1 ) // bars { XSetForeground( xj_dpy, xj_gc, 0 ); if (xj_box[1] > 0 ) { XFillRectangle( xj_dpy, xj_win, xj_gc, 0, 0, xj_box[2], xj_box[1]); XFillRectangle( xj_dpy, xj_win, xj_gc, 0, xj_box[1]+xj_box[3], xj_box[2], xj_box[1]+xj_box[3]+xj_box[1]); } /* else */ if (xj_box[0] > 0 ) { XFillRectangle( xj_dpy, xj_win, xj_gc, 0, 0, xj_box[0], xj_box[3]); XFillRectangle( xj_dpy, xj_win, xj_gc, xj_box[0]+xj_box[2], 0, xj_box[0]+xj_box[2]+xj_box[0], xj_box[3]); } } } void render_xv (uint8_t *mybuffer) { if (!xv_buffer || !mybuffer) return; xv_draw_colorkey(); // TODO: only redraw on resize ? size_t Ylen = movie_width * movie_height; size_t UVlen = movie_width * movie_height/4; size_t mw2 = movie_width /2; size_t mh2 = movie_height /2; #ifdef CROPIMG Ylen*=2; UVlen*=2; mw2*=2; size_t stride = xv_swidth*2; // XXX #else size_t stride = xv_swidth; #endif // decode ffmpeg - YUV uint8_t *Yptr=mybuffer; // Y uint8_t *Uptr=Yptr + Ylen; // U uint8_t *Vptr=Uptr + UVlen; // V #ifdef CROPIMG Yptr+= xoffset; Uptr+= xoffset/2; Vptr+= xoffset/2; #endif if (xv_pic_format == FOURCC_I420 && xv_one_memcpy) { // copy YUV420P fast_memcpy(xv_buffer,mybuffer,Ylen+UVlen+UVlen); // Y+U+V } else if (xv_pic_format == FOURCC_I420) { // encode YV420P stride_memcpy(xv_buffer+xv_image->offsets[0], Yptr, xv_swidth, xv_sheight, xv_image->pitches[0], stride); stride_memcpy(xv_buffer+xv_image->offsets[1], Uptr, mw2, mh2, xv_image->pitches[1], mw2); stride_memcpy(xv_buffer+xv_image->offsets[2], Vptr, mw2, mh2, xv_image->pitches[2], mw2); } else { // encode YV12 stride_memcpy(xv_buffer+xv_image->offsets[0], Yptr, xv_swidth, xv_sheight, xv_image->pitches[0], stride); stride_memcpy(xv_buffer+xv_image->offsets[1], Vptr, mw2, mh2, xv_image->pitches[1], mw2); stride_memcpy(xv_buffer+xv_image->offsets[2], Uptr, mw2, mh2, xv_image->pitches[2], mw2); } XvShmPutImage(xj_dpy, xv_port, xj_win, xj_gc, xv_image, 0, 0, /* sx, sy */ xv_swidth, xv_sheight, /* sw, sh */ #if 1 // letterbox xj_box[0],xj_box[1],xj_box[2],xj_box[3], #else 0, 0, /* dx, dy */ xj_dwidth, xj_dheight, /* dw, dh */ #endif True); XFlush(xj_dpy); // XSync(xj_dpy,False); } void newsrc_xv (void) { unsigned int my_Width,my_Height; deallocate_xvimage(); xv_swidth = movie_width; xv_sheight = movie_height; xj_dwidth = ffctv_width; xj_dheight = ffctv_height; xj_letterbox(); allocate_xvimage(); xj_render(); #if 1 // keep current window size when loading a new file ?? -> TODO config option // and also other video modes.. xj_get_window_size(&my_Width,&my_Height); #else my_Width=movie_width; my_Height=movie_height; #endif // or just update xj_dwidth, xj_dheight xj_resize( my_Width, my_Height); } #ifdef COLOREQ int xv_set_eq(char *name, int value) { XvAttribute *attributes; int i, howmany, xv_atom; /* get available attributes */ attributes = XvQueryPortAttributes(xj_dpy, xv_port, &howmany); for (i = 0; i < howmany && attributes; i++) if (attributes[i].flags & XvSettable) { xv_atom = XInternAtom(xj_dpy, attributes[i].name, True); if (xv_atom != None) { int hue = 0, port_value, port_min, port_max; if (!strcmp(attributes[i].name, "XV_BRIGHTNESS") && (!strcasecmp(name, "brightness"))) port_value = value; else if (!strcmp(attributes[i].name, "XV_CONTRAST") && (!strcasecmp(name, "contrast"))) port_value = value; else if (!strcmp(attributes[i].name, "XV_SATURATION") && (!strcasecmp(name, "saturation"))) port_value = value; else if (!strcmp(attributes[i].name, "XV_HUE") && (!strcasecmp(name, "hue"))) { port_value = value; hue = 1; } else /* Note: since 22.01.2002 GATOS supports these attrs for radeons (NK) */ if (!strcmp(attributes[i].name, "XV_RED_INTENSITY") && (!strcasecmp(name, "red_intensity"))) port_value = value; else if (!strcmp(attributes[i].name, "XV_GREEN_INTENSITY") && (!strcasecmp(name, "green_intensity"))) port_value = value; else if (!strcmp(attributes[i].name, "XV_BLUE_INTENSITY") && (!strcasecmp(name, "blue_intensity"))) port_value = value; else continue; port_min = attributes[i].min_value; port_max = attributes[i].max_value; /* nvidia hue workaround */ if (hue && port_min == 0 && port_max == 360) port_value = (port_value >= 0) ? (port_value - 1000) : (port_value + 1000); /* -1000 <= val <= 1000 */ port_value = (int) rint((port_value + 1000.0) * (port_max - port_min) / 2000.0) + port_min; // printf("SET port value:%i\n",port_value); XvSetPortAttribute(xj_dpy, xv_port, xv_atom, port_value); return (0); // OK } } return (1); // not found. } int xv_get_eq(char *name, int *value) { XvAttribute *attributes; int i, howmany, xv_atom; /* get available attributes */ attributes = XvQueryPortAttributes(xj_dpy, xv_port, &howmany); for (i = 0; i < howmany && attributes; i++) if (attributes[i].flags & XvGettable) { xv_atom = XInternAtom(xj_dpy, attributes[i].name, True); if (xv_atom != None) { int val, port_value = 0, port_min, port_max; XvGetPortAttribute(xj_dpy, xv_port, xv_atom, &port_value); port_min = attributes[i].min_value; port_max = attributes[i].max_value; /* -1000 <= val <= 1000 */ val = (port_value - port_min)*2000.0/(port_max - port_min) - 1000; //printf("DEBUG: got port att:%s value:%i\n",attributes[i].name,port_value); if (!strcmp(attributes[i].name, "XV_BRIGHTNESS") && (!strcasecmp(name, "brightness"))) *value = val; else if (!strcmp(attributes[i].name, "XV_CONTRAST") && (!strcasecmp(name, "contrast"))) *value = val; else if (!strcmp(attributes[i].name, "XV_SATURATION") && (!strcasecmp(name, "saturation"))) *value = val; else if (!strcmp(attributes[i].name, "XV_HUE") && (!strcasecmp(name, "hue"))) { /* nasty nvidia detect */ if (port_min == 0 && port_max == 360) *value = (val >= 0) ? (val - 100) : (val + 100); else *value = val; } else if (!strcmp(attributes[i].name, "XV_RED_INTENSITY") && (!strcasecmp(name, "red_intensity"))) *value = val; else if (!strcmp(attributes[i].name, "XV_GREEN_INTENSITY") && (!strcasecmp(name, "green_intensity"))) *value = val; else if (!strcmp(attributes[i].name, "XV_BLUE_INTENSITY") && (!strcasecmp(name, "blue_intensity"))) *value = val; else continue; // printf( "xv_get_eq called! (%s, %d)\n", name, *value); return (0); // all right } } return (1); //error. } #endif int open_window_xv (void) { unsigned int ad_cnt; int fmt_cnt, got_port, i, k; int xv_have_YV12, xv_have_I420; long ev_mask; XGCValues values; XvAdaptorInfo *ad_info; XvImageFormatValues *fmt_info; if ( (xj_dpy=XOpenDisplay(NULL)) == NULL ) { fprintf( stderr, "Cannot connect to X server\n"); return (1); } xj_rwin = DefaultRootWindow(xj_dpy); xj_screen = DefaultScreen(xj_dpy); if (!XShmQueryExtension(xj_dpy)) return 1; /* So let's first check for an available adaptor and port */ if(Success != XvQueryAdaptors(xj_dpy, xj_rwin, &ad_cnt, &ad_info)) { /* Xv extension probably not present */ return (1); } for(i = 0, got_port = False; i < ad_cnt; ++i) { xv_port = ad_info[i].base_id; if (!want_quiet) fprintf(stdout, "Xv: %s: ports %ld - %ld\n", ad_info[i].name, ad_info[i].base_id, ad_info[i].base_id + ad_info[i].num_ports - 1); if (!(ad_info[i].type & XvImageMask)) { if (want_verbose) fprintf(stdout, "Xv: %s: XvImage NOT in capabilty list (%s%s%s%s%s )\n", ad_info[i].name, (ad_info[i].type & XvInputMask) ? " XvInput" : "", (ad_info[i]. type & XvOutputMask) ? " XvOutput" : "", (ad_info[i]. type & XvVideoMask) ? " XvVideo" : "", (ad_info[i]. type & XvStillMask) ? " XvStill" : "", (ad_info[i]. type & XvImageMask) ? " XvImage" : ""); continue; } fmt_info = XvListImageFormats(xj_dpy, ad_info[i].base_id,&fmt_cnt); if (!fmt_info || fmt_cnt == 0) { fprintf(stderr, "Xv: %s: NO supported formats\n", ad_info[i].name); continue; } for(xv_have_YV12=0, xv_have_I420=0, k=0; k < fmt_cnt; ++k) { if (want_debug) { fprintf(stderr, "INFO: Xvideo port %d: 0x%#08x (%c%c%c%c) %s", (int)xv_port, fmt_info[k].id, (fmt_info[k].id) & 0xff, (fmt_info[k].id > 8) & 0xff, (fmt_info[k].id > 16) & 0xff, (fmt_info[k].id > 24) & 0xff, (fmt_info[k].format == XvPacked) ? "packed" : "planar"); fprintf (stderr, " [%s]\n", fmt_info[k].guid); } if (FOURCC_YV12 == fmt_info[k].id) xv_have_YV12 = 1; if (FOURCC_I420 == fmt_info[k].id) xv_have_I420 = 1; } if (xv_have_I420) { xv_pic_format = FOURCC_I420; if (!want_quiet) fprintf(stderr,"XV: using YUV420P + Xvideo extension (I420)\n"); } else if (xv_have_YV12) { xv_pic_format = FOURCC_YV12; if (!want_quiet) fprintf(stderr,"XV: using YUV420P + Xvideo extension (YV12)\n"); } else { fprintf(stderr, "Xv: %s: could not find a suitable colormodel in ( ", ad_info[i].name); for (k = 0; k < fmt_cnt; ++k) { fprintf (stderr, "%#08x[%s] ", fmt_info[k].id, fmt_info[k].guid); } fprintf(stderr, ")\n"); continue; } for(xv_port = ad_info[i].base_id, k = 0; k < ad_info[i].num_ports; ++k, ++(xv_port)) { if(!XvGrabPort(xj_dpy, xv_port, CurrentTime)) { if (want_verbose) fprintf(stdout, "Xv: grabbed port %ld\n", xv_port); got_port = True; break; } } if(got_port) break; } /* for */ if(!ad_cnt) { fprintf(stderr, "Xv: (ERROR) no adaptor found!\n"); return 1; } if(!got_port) { fprintf(stderr, "Xv: (ERROR) could not grab any port!\n"); return 1; } /* * default settings: source, destination and logical widht/height * are set to our well known dimensions. */ xv_swidth = movie_width; xv_sheight = movie_height; xj_dwidth = ffctv_width; xj_dheight = ffctv_height; xj_letterbox(); xj_win = XCreateSimpleWindow(xj_dpy, xj_rwin, -1, -1, xj_dwidth, xj_dheight, 0, XWhitePixel(xj_dpy, xj_screen), XBlackPixel(xj_dpy, xj_screen)); // XmbSetWMProperties(xj_dpy, xj_win, "xjadeo", NULL, NULL, 0, NULL, NULL, NULL); xj_set_hints(); ev_mask = KeyPressMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | StructureNotifyMask; //| PropertyChangeMask | PointerMotionMask; XSelectInput(xj_dpy, xj_win, ev_mask); #ifdef DND init_dnd(); #endif XMapRaised(xj_dpy, xj_win); if ((xj_del_atom = XInternAtom(xj_dpy, "WM_DELETE_WINDOW", True)) != None) XSetWMProtocols(xj_dpy, xj_win, &xj_del_atom, 1); xj_gc = XCreateGC(xj_dpy, xj_win, 0, &values); allocate_xvimage(); check_wm_atoms(); if (start_ontop) xj_ontop=1; if (start_fullscreen) xj_fullscreen=1; xj_set_fullscreen(xj_fullscreen); xj_set_ontop(xj_ontop); // XV_BRIGHTNESS XV_CONTRAST, XV_SATURATION , XV_COLORKEY #if 0 // broken with some gfx boards. /* 004:<:003e: 20: Request(16): InternAtom only-if-exists=true(0x01) name='XV_COLORKEY' * 004:>:0x003e:32: Reply to InternAtom: atom=0x59("XV_COLORKEY") * 004:<:003f: 12: XVideo-Request(141,14): unknown * 004:>:003f:32: unexpected reply * 004:<:0040: 52: XVideo-Request(141,19): unknown * 004:<:0041: 52: XVideo-Request(141,19): unknown */ int value=0; Atom xj_a_colorkey = XInternAtom (xj_dpy, "XV_COLORKEY", True); if (xj_a_colorkey!=None && Success == XvGetPortAttribute(xj_dpy, xv_port, xj_a_colorkey, &value)) { XvSetPortAttribute(xj_dpy, xv_port, xj_a_colorkey, 0x00000000); // AARRGGBB } #endif return 0; } void close_window_xv(void) { //XvFreeAdaptorInfo(ai); XvStopVideo(xj_dpy, xv_port, xj_win); if(xv_shminfo.shmaddr) { XShmDetach(xj_dpy, &xv_shminfo); shmdt(xv_shminfo.shmaddr); } if(xv_image) XFree(xv_image); XSync(xj_dpy, False); XFreeGC(xj_dpy, xj_gc); if (!loop_flag) // TODO: do 'DestroyAll' during shutdown() XSetCloseDownMode(xj_dpy, DestroyAll); XCloseDisplay(xj_dpy); } #if 1 // LEGACY void handle_X_events_xv (void) { xj_handle_X_events(); } void get_window_size_xv (unsigned int *my_Width, unsigned int *my_Height) { xj_get_window_size(my_Width,my_Height); } void get_window_pos_xv (int *x, int *y) { xj_get_window_pos(x,y); } void resize_xv (unsigned int x, unsigned int y) { xj_resize(x, y); } void position_xv (int x, int y) { xj_position(x, y); } #endif #endif /* HAVE_LIBXV */ /******************************************************************************* * X11 / ImLib */ #if HAVE_IMLIB ImlibData *imlib = NULL; int depth; //XImage *image; Pixmap pxm, pxmmask; int open_window_imlib (void) { XGCValues values; long ev_mask; if ( (xj_dpy=XOpenDisplay(NULL)) == NULL ) { fprintf( stderr, "Cannot connect to X server\n"); return (1); } imlib = Imlib_init(xj_dpy); xj_screen = DefaultScreen(xj_dpy); xj_rwin = RootWindow(xj_dpy, xj_screen); depth = DefaultDepth(xj_dpy, xj_screen); xj_win = XCreateSimpleWindow( xj_dpy, xj_rwin, 0, // x 0, // y ffctv_width, // width ffctv_height, // height 0, // border BlackPixel(xj_dpy, xj_screen), WhitePixel(xj_dpy, xj_screen) ); xj_set_hints(); ev_mask = KeyPressMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | StructureNotifyMask; XSelectInput(xj_dpy, xj_win, ev_mask); #ifdef DND init_dnd(); #endif XMapRaised(xj_dpy, xj_win); /* express interest in WM killing this app */ if ((xj_del_atom = XInternAtom(xj_dpy, "WM_DELETE_WINDOW", True)) != None) XSetWMProtocols(xj_dpy, xj_win, &xj_del_atom, 1); xj_gc = XCreateGC(xj_dpy, xj_win, 0, &values); check_wm_atoms(); if (start_ontop) xj_ontop=1; if (start_fullscreen) xj_fullscreen=1; xj_set_fullscreen(xj_fullscreen); xj_set_ontop(xj_ontop); return 0; } void close_window_imlib(void) { // XSync(xj_dpy, True); if (loop_flag) XSetCloseDownMode(xj_dpy, RetainPermanent); else XSetCloseDownMode(xj_dpy, DestroyAll); XDestroyWindow(xj_dpy, xj_win); XFreeGC(xj_dpy, xj_gc); XSync(xj_dpy, False); // XCloseDisplay(xj_dpy); imlib=NULL; } void render_imlib (uint8_t *mybuffer) { unsigned int my_Width,my_Height; ImlibImage *iimage; if (!mybuffer || !imlib) return; iimage = Imlib_create_image_from_data(imlib, mybuffer, NULL, movie_width, movie_height); /* get the current window size */ xj_get_window_size(&my_Width,&my_Height); /* Render the original 24-bit Image data into a pixmap of size w * h */ Imlib_render(imlib,iimage, my_Width,my_Height ); /* Extract the Image and mask pixmaps from the Image */ pxm=Imlib_move_image(imlib,iimage); /* The mask will be 0 if the image has no transparency */ //pxmmask=Imlib_move_mask(imlib,iimage); /* Put the Image pixmap in the background of the window */ XSetWindowBackgroundPixmap(xj_dpy,xj_win,pxm); XClearWindow(xj_dpy,xj_win); //No need to sync. XPending will take care in the event loop. //XSync(xj_dpy, False); Imlib_free_pixmap(imlib, pxm); Imlib_kill_image(imlib, iimage); } void newsrc_imlib (void) { ; // nothing to do :) } void handle_X_events_imlib (void) { xj_handle_X_events(); } #if 1 // LEGACY CODE void get_window_pos_imlib (int *x, int *y) { xj_get_window_pos(x,y); } void get_window_size_imlib (unsigned int *my_Width, unsigned int *my_Height) { xj_get_window_size(my_Width,my_Height); } void resize_imlib (unsigned int x, unsigned int y) { xj_resize(x, y); } void position_imlib (int x, int y) { xj_position(x, y); } #endif #endif /* HAVE_IMLIB */ /******************************************************************************* * * X11 / ImLib2 */ #if HAVE_IMLIB2 int im_depth; Visual *im_vis; Colormap im_cm; int open_window_imlib2 (void) { XGCValues values; long ev_mask; if ( (xj_dpy=XOpenDisplay(NULL)) == NULL ) { fprintf( stderr, "Cannot connect to X server\n"); return (1); } xj_screen = DefaultScreen(xj_dpy); xj_rwin = RootWindow(xj_dpy, xj_screen); im_depth = DefaultDepth(xj_dpy, xj_screen); im_vis = DefaultVisual(xj_dpy, xj_screen); im_cm = DefaultColormap(xj_dpy, xj_screen); xj_dwidth = ffctv_width; xj_dheight = ffctv_height; xj_letterbox(); xj_win = XCreateSimpleWindow( xj_dpy, xj_rwin, 0, // x 0, // y xj_dwidth, // width xj_dheight, // height 0, // border BlackPixel(xj_dpy, xj_screen), WhitePixel(xj_dpy, xj_screen) ); xj_set_hints(); ev_mask = KeyPressMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | StructureNotifyMask; XSelectInput(xj_dpy, xj_win, ev_mask); #ifdef DND init_dnd(); #endif XMapRaised(xj_dpy, xj_win); imlib_set_cache_size(4096 * 1024); // check imlib_context_set_dither(0); /* express interest in WM killing this app */ if ((xj_del_atom = XInternAtom(xj_dpy, "WM_DELETE_WINDOW", True)) != None) XSetWMProtocols(xj_dpy, xj_win, &xj_del_atom, 1); xj_gc = XCreateGC(xj_dpy, xj_win, 0, &values); imlib_context_set_display(xj_dpy); imlib_context_set_visual(im_vis); imlib_context_set_colormap(im_cm); imlib_context_set_drawable(xj_win); check_wm_atoms(); if (start_ontop) xj_ontop=1; if (start_fullscreen) xj_fullscreen=1; xj_set_fullscreen(xj_fullscreen); xj_set_ontop(xj_ontop); return 0; } static Imlib_Image im_image = NULL; void close_window_imlib2(void) { if (im_image) { imlib_context_set_image(im_image); imlib_free_image(); im_image = NULL; } // XSync(xj_dpy, True); if (loop_flag) XSetCloseDownMode(xj_dpy, RetainPermanent); else XSetCloseDownMode(xj_dpy, DestroyAll); XDestroyWindow(xj_dpy, xj_win); XFreeGC(xj_dpy, xj_gc); XSync(xj_dpy, False); // XCloseDisplay(xj_dpy); } #ifdef COLOREQ int im_gamma = 0; int im_brightness = 0; int im_contrast = 0; int im_colormod = 0; int im2_set_eq(char *name, int value) { if (!strcasecmp(name, "brightness")) im_brightness = value; else if (!strcasecmp(name, "contrast")) im_contrast = value; else if (!strcasecmp(name, "gamma")) im_gamma = value; else return -1; im_colormod=1; // TODO: set to 0 if all values 'normal' return 0; // ok } int im2_get_eq(char *name, int *value) { if (!value) return 1; if (!strcasecmp(name, "brightness")) *value = im_brightness; else if (!strcasecmp(name, "contrast")) *value = im_contrast; else if (!strcasecmp(name, "gamma")) *value = im_gamma; else return -1; return 0; // ok } #ifdef IM_CUSTOM_COLORTABLE #define N_CLAMP(VAR) if((VAR)<0){(VAR)=0;} if ((VAR)>1){(VAR) = 1;} void im_set_equalizer(void) { DATA8 red_table[256], green_table[256], blue_table[256], alpha_table[256]; float gamma, brightness, contrast; float rf, gf, bf; int k; brightness = im_brightness / 1000.0; contrast = tan(0.00095 * (im_contrast + 1000) * M_PI / 4); gamma = pow(2, im_gamma / -500.0); rf = 1.0/255.0; gf = 1.0/255.0; bf = 1.0/255.0; for (k = 0; k < 256; k++) { float s; s = pow(rf * k, gamma); s = (s - 0.5) * contrast + 0.5; s += brightness; N_CLAMP(s) red_table[k] = (DATA8) (s * 255); s = pow(gf * k, gamma); s = (s - 0.5) * contrast + 0.5; s += brightness; N_CLAMP(s) green_table[k] = (DATA8) (s * 255); s = pow(bf * k, gamma); s = (s - 0.5) * contrast + 0.5; s += brightness; N_CLAMP(s) blue_table[k] = (DATA8) (s * 255); alpha_table[k] = 255; } imlib_set_color_modifier_tables(red_table, green_table, blue_table, alpha_table); } #endif #endif void render_imlib2 (uint8_t *mybuffer) { Imlib_Image im_scaled = NULL; if (!mybuffer) return; #ifdef IMC DATA32 *data; if (!im_image) { im_image = imlib_create_image(movie_width, movie_height); imlib_context_set_image(im_image); //imlib_image_set_has_alpha(1); // slows things down dramatically ! } imlib_context_set_image(im_image); data=imlib_image_get_data(); #endif /*IMC*/ #ifdef IMLIB2RGBA # ifndef IMC uint8_t * rgbabuf = mybuffer; # else fast_memcpy(data,mybuffer,4*sizeof(uint8_t)*movie_width*movie_height); # endif #else /* rgb24 -> rgba32 */ # ifndef IMC uint8_t * rgbabuf = malloc(4*sizeof(uint8_t)*movie_width*movie_height); # endif # if defined(__BIG_ENDIAN__) # ifndef IMC rgb2argb( rgbabuf, mybuffer, movie_width, movie_height); # else rgb2argb( (uint8_t*) data, mybuffer, movie_width, movie_height); # endif # else /* LITTLE ENDIAN */ # ifndef IMC rgb2abgr( rgbabuf, mybuffer, movie_width, movie_height); # else rgb2abgr( (uint8_t*) data, mybuffer, movie_width, movie_height); # endif # endif #endif #ifdef IMC imlib_image_put_back_data(data); #else //im_image = imlib_create_image_using_data(movie_width, movie_height, (DATA32*)rgbabuf); im_image = imlib_create_image_using_copied_data(movie_width, movie_height, (DATA32*)rgbabuf); //imlib_image_set_has_alpha(1); // beware. SLOW. #endif #ifdef COLOREQ if (im_colormod) { Imlib_Color_Modifier imcm; imcm = imlib_create_color_modifier(); imlib_context_set_color_modifier(imcm); #ifdef IM_CUSTOM_COLORTABLE im_set_equalizer(); #else imlib_modify_color_modifier_brightness(im_brightness/1000.0); // -1.0 .. 1.0 imlib_modify_color_modifier_contrast(im_contrast/1000.0+1.0); // 0.0 .. 2.0 imlib_modify_color_modifier_gamma(im_gamma/1000.0+1.0); // 0.0 .. 2.0 #endif imlib_apply_color_modifier(); imlib_free_color_modifier(); } #endif if (im_image) { imlib_context_set_image(im_image); if (xj_box[2] == movie_width && xj_box[3]== movie_height && xj_box[0] == 0 && xj_box[1]== 0) { imlib_render_image_on_drawable(xj_box[0], xj_box[1]); } else { #if 1 // draw black letter box bars Imlib_Image im_letterbox = NULL; int bw,bh,ox,oy; if (xj_box[0]0 && bh > 0) { im_letterbox=imlib_create_image(bw, bh); imlib_context_set_image(im_letterbox); imlib_context_set_color(0, 0, 0, 255); imlib_image_fill_rectangle(0, 0, bw, bh); imlib_render_image_on_drawable(0,0); imlib_render_image_on_drawable(ox,oy); imlib_free_image(); } #endif imlib_context_set_image(im_image); im_scaled=imlib_create_cropped_scaled_image(0,0,movie_width, movie_height,xj_box[2],xj_box[3]); imlib_context_set_image(im_scaled); //imlib_image_set_has_alpha(0); // beware. imlib_render_image_on_drawable(xj_box[0], xj_box[1]); imlib_free_image(); } #ifndef IMC imlib_context_set_image(im_image); imlib_free_image(); #endif } #ifndef IMLIB2RGBA # ifndef IMC free(rgbabuf); # endif #endif } void newsrc_imlib2 (void) { unsigned int my_Width,my_Height; #ifdef IMC if (im_image) { imlib_context_set_image(im_image); imlib_free_image(); im_image = NULL; } #endif xj_get_window_size(&my_Width,&my_Height); xj_dwidth = ffctv_width; xj_dheight = ffctv_height; xj_letterbox(); xj_resize( my_Width, my_Height); } #if 1 // LEGACY void handle_X_events_imlib2 (void) { xj_handle_X_events(); } void get_window_size_imlib2 (unsigned int *my_Width, unsigned int *my_Height) { xj_get_window_size(my_Width,my_Height); } void get_window_pos_imlib2 (int *x, int *y) { xj_get_window_pos(x,y); } void resize_imlib2 (unsigned int x, unsigned int y) { xj_resize(x, y); } void position_imlib2 (int x, int y) { xj_position(x, y); } #endif #endif xjadeo-0.7.6/src/xjadeo/icons/0000755000175000017500000000000012200730321013141 500000000000000xjadeo-0.7.6/src/xjadeo/icons/gamma.bitmap0000644000175000017500000000104511436325750015361 00000000000000#define osd_gamma_width 24 #define osd_gamma_height 24 static unsigned char osd_gamma_bits[] = { 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0x07, 0x00, 0x04, 0x03, 0xfe, 0x04, 0xc5, 0x03, 0x04, 0x38, 0x00, 0x04, 0x1c, 0x00, 0x04, 0x26, 0x00, 0x04, 0x41, 0x01, 0x84, 0x80, 0x01, 0x44, 0xc0, 0x01, 0x24, 0x00, 0x00, 0x34, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x04, 0x00, 0x38, 0xff, 0xff, 0xff, 0x04, 0x00, 0x38, 0x04, 0x00, 0x08 }; xjadeo-0.7.6/src/xjadeo/icons/xjadeo-color.xpm0000644000175000017500000000242411436325750016217 00000000000000/* XPM */ static char * xjadeo_color_xpm[] = { "32 32 6 1", " c None", ". c #111111", "+ c #BA0404", "@ c #04BA04", "# c #0404BA", "$ c #FFFFFF", " ", " ", " ", " ", " ", " ", "................................", " .... .... .... .... .", " .... .... .... .... .", "................................", "................................", "..++++++++..@@@@@@@@..########..", "..++++++++..@@@@@@@@..########..", ".$$$$+$$$+..@@@@@@@@.$########..", "..$$+++$++..@@@@@@@@.$########..", "..+$++$+++..@@@@@@@@.$########..", "..+$$$+++$..@$$@@@@@$.########..", "..++$+++++.$$$@@@$$$$.##$$$##$$.", "..+$$+++$+..@$@@$@@@$.$$$$###$.$", "..$+$$++$+.$$$@@$@@@$.$###$#$#$$", ".$+++$+++$.$@$$@$$$$$.$$$$##$$$.", "$$$+$$$$+$.$$$@@@@@@..########..", "..+++++++$..@@@@@@@@..########..", "..+++++++$..@@@@@@@@..########..", "........$$......................", "................................", "................................", " ", " ", " ", " ", " "}; xjadeo-0.7.6/src/xjadeo/icons/contrast.bitmap0000644000175000017500000000105611436325750016136 00000000000000#define osd_contrast_width 24 #define osd_contrast_height 24 static unsigned char osd_contrast_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xc0, 0xc3, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x0f, 0x30, 0x84, 0x0f, 0x20, 0xc4, 0x0f, 0x20, 0xc6, 0x0f, 0x60, 0xe2, 0x0f, 0x40, 0xe2, 0x0f, 0x40, 0xe2, 0x0f, 0x40, 0xe2, 0x0f, 0x40, 0xc6, 0x0f, 0x60, 0xc4, 0x0f, 0x20, 0x84, 0x0f, 0x20, 0x0c, 0x0f, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x00, 0x0c, 0x60, 0x00, 0x06, 0xc0, 0xc3, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/contrast_mask.xbm0000644000175000017500000000107511436325750016464 00000000000000#define osd_contrast_mask_width 24 #define osd_contrast_mask_height 24 static unsigned char osd_contrast_mask_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xc0, 0xc3, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x0c, 0x18, 0x3c, 0x18, 0x0c, 0xff, 0x30, 0x84, 0xff, 0x21, 0xc4, 0xff, 0x23, 0xc6, 0xff, 0x63, 0xe2, 0xff, 0x47, 0xe2, 0xff, 0x47, 0xe2, 0xff, 0x47, 0xe2, 0xff, 0x47, 0xc6, 0xff, 0x63, 0xc4, 0xff, 0x23, 0x84, 0xff, 0x21, 0x0c, 0xff, 0x30, 0x18, 0x3c, 0x18, 0x30, 0x00, 0x0c, 0x60, 0x00, 0x06, 0xc0, 0xc3, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/gamma_mask.xbm0000644000175000017500000000106411436325750015707 00000000000000#define osd_gamma_mask_width 24 #define osd_gamma_mask_height 24 static unsigned char osd_gamma_mask_bits[] = { 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x3f, 0x07, 0x00, 0x3e, 0x0f, 0xfe, 0x1c, 0xc7, 0xff, 0x0c, 0xfa, 0x07, 0x0c, 0xfc, 0x00, 0x0c, 0x3e, 0x00, 0x0c, 0x4f, 0x01, 0x8c, 0x87, 0x03, 0xcc, 0xc1, 0x03, 0xec, 0x80, 0x03, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x08, 0x1c, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x1c, 0x00, 0x78 }; xjadeo-0.7.6/src/xjadeo/icons/splash_mask.xbm0000644000175000017500000001667711436325750016137 00000000000000#define xj_splash_mask_width 120 #define xj_splash_mask_height 80 static unsigned char xj_splash_mask_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; xjadeo-0.7.6/src/xjadeo/icons/brightness.bitmap0000644000175000017500000000106411436325750016450 00000000000000#define osd_brightness_width 24 #define osd_brightness_height 24 static unsigned char osd_brightness_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00, 0x0c, 0x70, 0x00, 0x0e, 0x60, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x81, 0x00, 0x80, 0x81, 0x01, 0x8e, 0x00, 0x71, 0x8e, 0x00, 0x71, 0x80, 0x81, 0x01, 0x00, 0x81, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0e, 0x30, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/osd_bitmaps.h0000644000175000017500000000047711436325750015566 00000000000000#ifndef OSD_BITMAPS #define OSD_BITMAPS #include "brightness.bitmap" #include "brightness_mask.xbm" #include "contrast.bitmap" #include "contrast_mask.xbm" #include "gamma.bitmap" #include "gamma_mask.xbm" #include "hue.bitmap" #include "hue_mask.xbm" #include "saturation.bitmap" #include "saturation_mask.xbm" #endif xjadeo-0.7.6/src/xjadeo/icons/saturation.bitmap0000644000175000017500000000106411436325750016471 00000000000000#define osd_saturation_width 24 #define osd_saturation_height 24 static unsigned char osd_saturation_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0x02, 0x01, 0x40, 0xfa, 0xee, 0x40, 0x7a, 0x13, 0x45, 0xaa, 0x9a, 0x40, 0xfa, 0xae, 0x42, 0xba, 0x23, 0x48, 0xfa, 0xae, 0x40, 0x02, 0x01, 0x40, 0xfe, 0xff, 0x7f, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/xjadeo_mask.xbm0000644000175000017500000000161211436325750016076 00000000000000#define xjadeo_mask_width 32 #define xjadeo_mask_height 32 static unsigned char xjadeo_mask_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x3c, 0x1e, 0x8f, 0x78, 0x3c, 0x1e, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/hue.bitmap0000644000175000017500000000103711436325750015061 00000000000000#define osd_hue_width 24 #define osd_hue_height 24 static unsigned char osd_hue_bits[] = { 0x00, 0x7e, 0x00, 0x80, 0xff, 0x01, 0xc0, 0xff, 0x03, 0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07, 0xf0, 0xff, 0x0f, 0xf0, 0xff, 0x0f, 0x10, 0xf8, 0x0f, 0xc8, 0x23, 0x1c, 0xf4, 0x0b, 0x38, 0xf6, 0x61, 0x68, 0xe2, 0x41, 0x44, 0xe3, 0xc0, 0xc4, 0xc1, 0x80, 0x82, 0x81, 0xc2, 0x81, 0x01, 0xfe, 0x80, 0x01, 0x81, 0x80, 0x03, 0xc3, 0xc0, 0x02, 0x42, 0x40, 0x06, 0x66, 0x60, 0x0c, 0x3c, 0x30, 0x38, 0x3c, 0x1c, 0xe0, 0xe7, 0x07, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/xjadeo.bitmap0000644000175000017500000000157311436325750015557 00000000000000#define xjadeo_width 32 #define xjadeo_height 32 static unsigned char xjadeo_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x41, 0x00, 0x08, 0x00, 0x21, 0x00, 0x08, 0x00, 0x91, 0x18, 0x04, 0x00, 0x0a, 0x8e, 0x87, 0x33, 0x44, 0x48, 0xe4, 0x51, 0x4a, 0x4e, 0x24, 0x6a, 0x91, 0xda, 0xe7, 0x39, 0x80, 0x0e, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/splash.bitmap0000644000175000017500000001666011436325750015602 00000000000000#define xj_splash_width 120 #define xj_splash_height 80 static unsigned char xj_splash_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xef, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0xff, 0xff, 0xef, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0xff, 0xff, 0xef, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0xff, 0xff, 0xef, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x30, 0xc2, 0x08, 0x11, 0x42, 0x08, 0x01, 0xf4, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x52, 0xbd, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xdf, 0xf7, 0xf7, 0xff, 0xff, 0x0f, 0x00, 0x08, 0x80, 0xd2, 0xbf, 0xff, 0xdd, 0x73, 0xef, 0xfe, 0xf7, 0xf6, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x21, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x80, 0x50, 0x05, 0x80, 0x39, 0x86, 0x9c, 0x37, 0xde, 0x1c, 0x40, 0xf0, 0xff, 0xff, 0x4f, 0x55, 0x2a, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x31, 0xc2, 0x8c, 0x32, 0x47, 0x9c, 0x73, 0xf6, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x70, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x70, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0xc0, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0xc0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x80, 0xf3, 0x00, 0x84, 0x07, 0x80, 0x1f, 0x80, 0x07, 0x1e, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x73, 0x00, 0xc4, 0x59, 0xe0, 0x1f, 0xe0, 0x8c, 0x3f, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x3f, 0x00, 0x60, 0xf0, 0xf0, 0x1c, 0x78, 0xce, 0x33, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x1e, 0x00, 0x60, 0xf0, 0x38, 0x3c, 0x3c, 0xe6, 0x31, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x0c, 0x00, 0x38, 0xf0, 0x18, 0x2e, 0x3c, 0xe3, 0x30, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x1e, 0x00, 0x38, 0xf0, 0x1c, 0x66, 0xfe, 0x61, 0x18, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x3f, 0x00, 0x38, 0xe0, 0x0c, 0xc7, 0x06, 0x70, 0x18, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x80, 0x73, 0x00, 0x38, 0xb0, 0x8f, 0x83, 0x07, 0x30, 0x0c, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xf1, 0x18, 0x78, 0x1c, 0xcc, 0x01, 0x06, 0x30, 0x0c, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xe0, 0x18, 0xe8, 0x0f, 0xfc, 0x00, 0x04, 0x30, 0x07, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x7c, 0xc0, 0x19, 0xc8, 0x03, 0x78, 0x00, 0xf8, 0xe3, 0x01, 0x08, 0xf0, 0xff, 0xff, 0x0f, 0x18, 0x80, 0x13, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x33, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xfe, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x76, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xfd, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x76, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0x7f, 0xef, 0x76, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xbf, 0xd1, 0x76, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xbf, 0xde, 0x78, 0x19, 0x19, 0x6d, 0xfc, 0x7e, 0xbf, 0x8c, 0xa4, 0x31, 0xff, 0xff, 0xff, 0xbf, 0xde, 0x76, 0x6b, 0x6d, 0xad, 0xff, 0x7e, 0xbf, 0xb5, 0xb6, 0xd6, 0xfe, 0xff, 0xff, 0xbf, 0xd1, 0x76, 0x6b, 0x0d, 0x2d, 0x7c, 0x7c, 0xbf, 0xb5, 0xb6, 0xd6, 0xfe, 0xff, 0xff, 0x7f, 0xef, 0x76, 0x6b, 0xed, 0xed, 0xfd, 0x7e, 0xbf, 0xb5, 0xb6, 0xd6, 0xfe, 0xff, 0xff, 0xff, 0xf0, 0x76, 0x6b, 0x6d, 0xad, 0xfd, 0x7f, 0xbf, 0xb5, 0xb6, 0xd6, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xd6, 0x1c, 0x1d, 0x63, 0xfe, 0xff, 0x68, 0x8e, 0xb6, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; xjadeo-0.7.6/src/xjadeo/icons/saturation_mask.xbm0000644000175000017500000000110311436325750017010 00000000000000#define osd_saturation_mask_width 24 #define osd_saturation_mask_height 24 static unsigned char osd_saturation_mask_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0x02, 0x01, 0x40, 0xfa, 0xff, 0x5f, 0xfa, 0xff, 0x5f, 0xfa, 0xff, 0x5f, 0xfa, 0xff, 0x5f, 0xfa, 0xff, 0x5f, 0xfa, 0xff, 0x5f, 0x02, 0x01, 0x40, 0xfe, 0xff, 0x7f, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/brightness_mask.xbm0000644000175000017500000000110311436325750016767 00000000000000#define osd_brightness_mask_width 24 #define osd_brightness_mask_height 24 static unsigned char osd_brightness_mask_bits[] = { 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x3c, 0x1e, 0xf8, 0x3c, 0x1f, 0xf8, 0x00, 0x1f, 0xf8, 0x7e, 0x1f, 0xf0, 0xff, 0x0f, 0x80, 0xff, 0x01, 0xc0, 0xff, 0x03, 0xdf, 0xc3, 0xfb, 0xdf, 0xc3, 0xfb, 0xdf, 0xc3, 0xfb, 0xdf, 0xc3, 0xfb, 0xc0, 0xff, 0x03, 0x80, 0xff, 0x01, 0xf0, 0xff, 0x0f, 0xf8, 0x7e, 0x1f, 0xf8, 0x00, 0x1f, 0xf8, 0x3c, 0x1f, 0x78, 0x3c, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00 }; xjadeo-0.7.6/src/xjadeo/icons/hue_mask.xbm0000644000175000017500000000105611436325750015407 00000000000000#define osd_hue_mask_width 24 #define osd_hue_mask_height 24 static unsigned char osd_hue_mask_bits[] = { 0x00, 0x7e, 0x00, 0x80, 0xff, 0x01, 0xc0, 0xff, 0x03, 0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07, 0xf0, 0xff, 0x0f, 0xf0, 0xff, 0x0f, 0xf0, 0xff, 0x0f, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f, 0xfe, 0xe7, 0x6f, 0xfe, 0xc3, 0x47, 0xff, 0xc3, 0xc7, 0xff, 0x81, 0x83, 0xff, 0xc3, 0x81, 0xff, 0xff, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xc0, 0xfe, 0x7f, 0x40, 0xfe, 0x7f, 0x60, 0xfc, 0x3f, 0x30, 0xf8, 0x3f, 0x1c, 0xe0, 0xe7, 0x07, 0x00, 0x00, 0x00 }; xjadeo-0.7.6/src/xjadeo/Makefile.am0000644000175000017500000000340212157057427014025 00000000000000#TODO: use a dedicated script for 'git desc' - this is "non-POSIX" way: REV = $(shell test -d ../../.git && git describe --always --tags HEAD 2>/dev/null) bin_PROGRAMS=xjadeo xjremote @XJINFO_BIN@ EXTRA_PROGRAMS = xjinfo xjadeo_SOURCES=xjadeo.c ../../aclocal.m4 ../../config.h display.c jack.c midi.c freetype.c xjadeo.h display.h display_x11.c smpte.c main.c remote.c configfile.c lash.c mqueue.c icons/osd_bitmaps.h display_mac.c xjosc.c display_sdl.c ltc-jack.c ffcompat.h remote.h xjadeo_LDADD = @JACK_LIBS@ @MQ_LIBS@ @FFMPEG_LIBS@ @XV_LIBS@ @IMLIB_LIBS@ @MIDI_LIBS@ @FREETYPE_LIBS@ @IMLIB2_LIBS@ @LASH_LIBS@ @Xpm_LIBS@ @LIBLO_LIBS@ @SDL_LIBS@ @LTCSMPTE_LIBS@ @LTC_LIBS@ -lm xjadeo_CFLAGS = -Wall -g -O3 @JACK_CFLAGS@ @FFMPEG_CFLAGS@ @XV_CFLAGS@ @IMLIB_CFLAGS@ @MIDI_CFLAGS@ @FREETYPE_CFLAGS@ @IMLIB2_CFLAGS@ @LASH_CFLAGS@ @LIBLO_CFLAGS@ @SDL_CFLAGS@ @LTCSMPTE_CFLAGS@ @LTC_CFLAGS@ "-DSUBVERSION=\"$(REV)\"" xjremote_SOURCES = xjremote.c xjremote_LDADD = @MQ_LIBS@ xjinfo_SOURCES = avinfo.c ffcompat.h xjinfo_LDADD = @FFMPEG_LIBS@ xjinfo_CFLAGS = -Wall -g -O3 @FFMPEG_CFLAGS@ #ctags: # find . -type f -name "*.[ch]*" | xargs @CTAGS@ MAINTAINERCLEANFILES = Makefile.in CLEANFILES = paths.h BUILT_SOURCES = paths.h xjadeo_DEPENDENCIES= \ icons/brightness.bitmap icons/gamma.bitmap icons/osd_bitmaps.h icons/splash_mask.xbm \ icons/brightness_mask.xbm icons/gamma_mask.xbm icons/saturation.bitmap icons/xjadeo-color.xpm \ icons/contrast.bitmap icons/hue.bitmap icons/saturation_mask.xbm icons/xjadeo.bitmap \ icons/contrast_mask.xbm icons/hue_mask.xbm icons/splash.bitmap icons/xjadeo_mask.xbm paths.h: Makefile @echo '#define BINDIR "$(DESTDIR)/$(bindir)/"' >$@ @echo '#define SYSCONFDIR "$(DESTDIR)/$(sysconfdir)/"' >>$@ xjadeo-0.7.6/src/xjadeo/ltc-jack.c0000644000175000017500000001632212152015247013617 00000000000000/* xjadeo - jack video monitor * * (c) 2010, 2011 Robin Gareus * * 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, 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef JACK_SESSION #include extern char *jack_uuid; void jack_session_cb( jack_session_event_t *event, void *arg ); #endif #if (defined HAVE_LTCSMPTE || defined HAVE_LTC) extern double framerate; #include #include void close_ltcjack(void); jack_nframes_t j_samplerate = 48000; jack_port_t *j_input_port = NULL; jack_default_audio_sample_t *j_in; jack_nframes_t j_latency = 0; jack_client_t *j_client = NULL; static double ltc_position = 0; static long long int monotonic_fcnt = 0; #ifdef HAVE_LTCSMPTE #warning using deprecated libltcsmpte - get https://github.com/x42/libltc #include static SMPTEDecoder *ltc_decoder = NULL; int myProcess(SMPTEDecoder *d, double *jt) { SMPTEFrameExt frame; #ifdef DEBUG int errors; #endif int i=0; /* marker - if queue is flushed - don't read the last */ int rv=0; #if 0 /* process only last LTC (0: all in decoder queue) */ while (SMPTEDecoderRead(d,&frame)) {i++;} #endif while (i || SMPTEDecoderRead(d,&frame)) { SMPTETime stime; i=0; SMPTEFrameToTime(&frame.base,&stime); #ifdef DEBUG SMPTEDecoderErrors(d,&errors); #endif if (jt) { *jt=(double) ( ((stime.hours*60+stime.mins)*60 +stime.secs)*j_samplerate + ((double)stime.frame*(double)j_samplerate/framerate) + frame.startpos - monotonic_fcnt ); //printf("LTC-debug %f %li %li\n",*jt,frame.startpos, frame.endpos); } #ifdef DEBUG int ms; SMPTEDecoderFrameToMillisecs(d,&frame,&ms); printf("LTC: %02d:%02d:%02d:%02d %8d %d \n", stime.hours,stime.mins, stime.secs,stime.frame, ms, errors); #endif ++rv; } return rv; } #else // HAVE_LTC #include static LTCDecoder *ltc_decoder = NULL; int myProcess(LTCDecoder *d, double *jt) { LTCFrameExt frame; int rv=0; while (ltc_decoder_read(d,&frame)) { SMPTETimecode stime; ltc_frame_to_time(&stime, &frame.ltc, 0); #ifdef DEBUG printf( "%02d:%02d:%02d%c%02d | %8lld %8lld%s \n", stime.hours, stime.mins, stime.secs, (frame.ltc.dfbit) ? '.' : ':', stime.frame, frame.off_start, frame.off_end, frame.reverse ? " R" : " " ); #endif if (jt) { *jt = (double) ( ((stime.hours*60+stime.mins)*60 +stime.secs) * j_samplerate + ((double)stime.frame*(double)j_samplerate / framerate) + frame.off_end - monotonic_fcnt ); } ++rv; } return rv; } #endif #ifdef NEW_JACK_LATENCY_API int jack_latency_cb(void *arg) { jack_latency_range_t jlty; jack_port_get_latency_range(j_input_port, JackCaptureLatency, &jlty); j_latency = jlty.max; return 0; } #endif /** * jack audio process callback */ int process (jack_nframes_t nframes, void *arg) { unsigned char sound[8192]; size_t i; j_in = jack_port_get_buffer (j_input_port, nframes); #ifndef NEW_JACK_LATENCY_API j_latency = jack_port_get_total_latency(j_client,j_input_port); #endif if (nframes > 8192) return 0; for (i = 0; i < nframes; i++) { const int snd=(int)rint((127.0*j_in[i])+128.0); sound[i] = (unsigned char) (snd&0xff); } #ifdef HAVE_LTCSMPTE SMPTEDecoderWrite(ltc_decoder, sound,nframes, monotonic_fcnt-j_latency); #else // HAVE_LTC ltc_decoder_write(ltc_decoder, sound, nframes, monotonic_fcnt-j_latency); #endif myProcess(ltc_decoder, <c_position); monotonic_fcnt += nframes; return 0; } /** * JACK calls this shutdown_callback if the server ever shuts down or * decides to disconnect the client. */ void ltcjack_shutdown (void *arg) { fprintf(stderr,"recv. shutdown request from jackd.\n"); close_ltcjack(); } /** * open a client connection to the JACK server */ int init_jack(const char *client_name) { jack_status_t status; jack_options_t options = JackNullOption; #ifdef JACK_SESSION if (jack_uuid) j_client = jack_client_open (client_name, options|JackSessionID, &status, jack_uuid); else #endif j_client = jack_client_open (client_name, options, &status); if (j_client == NULL) { fprintf (stderr, "jack_client_open() failed, status = 0x%2.0x\n", status); if (status & JackServerFailed) { fprintf (stderr, "Unable to connect to JACK server\n"); } return -1; } if (status & JackServerStarted) { fprintf (stderr, "JACK server started\n"); } if (status & JackNameNotUnique) { client_name = jack_get_client_name(j_client); fprintf (stderr, "unique name `%s' assigned\n", client_name); } jack_set_process_callback (j_client, process, 0); #ifdef JACK_SESSION jack_set_session_callback (j_client, jack_session_cb, NULL); #endif #ifndef HAVE_WINDOWS jack_on_shutdown (j_client, ltcjack_shutdown, 0); #endif j_samplerate=jack_get_sample_rate (j_client); return 0; } int jack_portsetup(void) { #ifdef HAVE_LTCSMPTE FrameRate *fps; fps = FR_create(1, 1, FRF_NONE); FR_setdbl(fps, framerate, 1); // auto-detect drop-frames ltc_decoder = SMPTEDecoderCreate(j_samplerate,fps,8,1); FR_free(fps); #else ltc_decoder = ltc_decoder_create(j_samplerate * 25, 8); #endif if (!ltc_decoder) return -1; if ((j_input_port = jack_port_register (j_client, "ltc-input", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0)) == 0) { fprintf (stderr, "cannot register input port \"ltc-input\"!\n"); return -1; } #ifdef NEW_JACK_LATENCY_API jack_set_graph_order_callback (j_client, jack_latency_cb, NULL); jack_latency_cb(NULL); #endif return 0; } /* API */ long ltc_poll_frame (void) { return (long) floor(ltc_position * framerate / (double)j_samplerate); } void open_ltcjack(char *autoconnect) { char * client_name = "xjadeo-ltc"; if (init_jack(client_name)) { close_ltcjack(); return; } if (jack_portsetup()) { close_ltcjack(); return; } // TODO: autoconnect jack port ?! if (jack_activate (j_client)) { close_ltcjack(); return; } } int ltcjack_connected(void) { if (j_client) return 1; return 0; } void close_ltcjack(void) { if (j_client) { jack_deactivate(j_client); jack_client_close (j_client); } if (ltc_decoder) { #ifdef HAVE_LTCSMPTE SMPTEFreeDecoder(ltc_decoder); #else ltc_decoder_free(ltc_decoder); #endif } j_client=NULL; ltc_decoder=NULL; return; } const char *ltc_jack_client_name() { return jack_get_client_name(j_client); } #else long ltc_poll_frame (void) { return 0;} void open_ltcjack(char *autoconnect) { ; } void close_ltcjack(void) { ; } int ltcjack_connected(void) { return 0;} const char *ltc_jack_client_name() { return "N/A";} #endif xjadeo-0.7.6/src/xjadeo/lash.c0000644000175000017500000003000312155114003013037 00000000000000/* xjadeo - LASH interface * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * */ #include "xjadeo.h" #include "remote.h" #ifdef HAVE_LASH //------------------------------------------------ // extern Globals (main.c) //------------------------------------------------ extern int loop_flag; /* Option flags and variables */ extern char *current_file; extern char *smpte_offset; extern long ts_offset; extern long userFrame; extern int want_quiet; extern int want_debug; extern int want_verbose; extern int want_letterbox; extern int want_dropframes; extern int want_autodrop; extern int want_genpts; extern int want_ignstart; extern int remote_en; extern int remote_mode; #ifdef HAVE_MIDI extern char midiid[32]; extern int midi_clkconvert; /* --midifps [0:MTC|1:VIDEO|2:RESAMPLE] */ extern int midi_clkadj; #endif extern double delay; extern double filefps; extern int videomode; extern int seekflags; extern double framerate; extern double duration; extern long frames; // On screen display extern char OSD_fontfile[1024]; extern char OSD_text[128]; extern int OSD_mode; extern int OSD_fx, OSD_tx, OSD_sx, OSD_fy, OSD_sy, OSD_ty; #if (HAVE_LIBXV || HAVE_IMLIB || HAVE_IMLIB2) extern int xj_ontop; extern int xj_fullscreen; #else # define xj_ontop (0) # define xj_fullscreen (0) #endif // defined in main.c extern lash_client_t *lash_client; /* config options that need to be applied * in a certain order after all other * cfg has been LASHed-in */ typedef struct { int apply; int winpos_x, winpos_y; unsigned int winsize_x, winsize_y; } jdo_config; long int lash_config_get_value_long (const lash_config_t * config) { const void *data = lash_config_get_value(config); return(*((long*) data)); } /************************* * private LASH functions */ void handle_event(lash_event_t* ev) { int type = lash_event_get_type(ev); const char* str = lash_event_get_string(ev); if (type == LASH_Restore_Data_Set) { // FIXME - send this AFTER recv. config if (!want_quiet) printf("LASH restore data set\n"); //lash_send_event(lash_client, lash_event_new_with_type(LASH_Restore_Data_Set)); } else if (type == LASH_Save_Data_Set) { if (!want_quiet) printf("LASH saving data set\n"); unsigned int w,h; int x,y; Xgetpos(&x,&y); lcs_int("window_position",x<<16|y); Xgetsize(&w,&h); lcs_int("window_size",w<<16|h); lcs_int("x11_ontop",xj_ontop); lcs_int("x11_fullscreen",xj_fullscreen); lcs_int("want_letterbox",want_letterbox); lcs_int("want_genpts",want_genpts); lcs_int("want_ignstart",want_ignstart); lcs_int("want_dropframes",want_dropframes); lcs_int("want_autodrop",want_autodrop); #ifdef HAVE_MIDI if (midi_connected()) lcs_int("syncsource",2); else #endif if (jack_connected()) lcs_int("syncsource",1); else lcs_int("syncsource",0); lcs_str("current_file",current_file?current_file:""); lcs_int("seekflags",seekflags); lcs_long("ts_offset",ts_offset); lcs_str("smpte_offset",smpte_offset?smpte_offset:""); lcs_long("userFrame",userFrame); lcs_dbl("update_fps",delay); lcs_dbl("file_fps",filefps); lcs_int("OSD_mode",OSD_mode); // lcs_int("OSD_sx",OSD_sx); lcs_int("OSD_sy",OSD_sy); lcs_int("OSD_mode",OSD_mode); // lcs_int("OSD_fx",OSD_fx); lcs_int("OSD_fy",OSD_fy); lcs_int("OSD_mode",OSD_mode); lcs_int("OSD_mode",OSD_mode); lcs_str("OSD_text",strlen(OSD_text)>0?OSD_text:""); lcs_str("OSD_fontfile",OSD_fontfile); lcs_int("OSD_mode",OSD_mode); lcs_int("OSD_mode",OSD_mode); lcs_int("OSD_tx",OSD_tx); lcs_int("OSD_ty",OSD_ty); #ifdef HAVE_MIDI lcs_int("MIDI_clkconvert",midi_clkconvert); lcs_int("MIDI_clkadj",midi_clkadj); lcs_str("MIDI_ID",(strlen(midiid)>0 && midi_connected())?midiid:"-2"); #endif lash_send_event(lash_client, lash_event_new_with_type(LASH_Save_Data_Set)); } else if (type == LASH_Quit) { loop_flag=0; } else if (want_debug) printf ("WARNING: unhandled LASH Event t:%i s:'%s'\n",type,str); } void handle_config(lash_config_t* conf, jdo_config* jcfg) { const char* key = NULL; key = lash_config_get_key(conf); if (!strcmp(key,"current_file")) { const char *mfile = lash_config_get_value_string (conf); //printf("LASH config: open movie: %s\n",mfile); if (strlen(mfile)) xapi_open((char *) lash_config_get_value_string (conf)); else xapi_close(NULL); } else if (!strcmp(key,"seekflags")) { seekflags = lash_config_get_value_int(conf); } else if (!strcmp(key,"update_fps")) { delay = lash_config_get_value_double(conf); } else if (!strcmp(key,"userFrame")) { userFrame= lash_config_get_value_long(conf); } else if (!strcmp(key,"ts_offset")) { ts_offset= lash_config_get_value_long(conf); } else if (!strcmp(key,"smpte_offset")) { const char *moff = lash_config_get_value_string (conf); if (smpte_offset) free(smpte_offset); smpte_offset=NULL; if (strlen(moff)) smpte_offset=strdup(moff); // } else if (!strcmp(key,"framerate")) { // framerate = lash_config_get_value_double(conf); } else if (!strcmp(key,"file_fps")) { filefps = lash_config_get_value_double(conf); override_fps(filefps); // remote_en needs to be set on startup! - TODO // or we'd need to call remote_open here... // } else if (!strcmp(key,"remote_en")) { //#if HAVE_MQ // remote_en=1; //#endif // notify frame?? No. // remote_mode = lash_config_get_value_int(conf); // /* OSD -settings */ } else if (!strcmp(key,"OSD_text")) { strncpy(OSD_text,lash_config_get_value_string (conf),127); OSD_text[127]=0; } else if (!strcmp(key,"OSD_fontfile")) { strncpy(OSD_fontfile,lash_config_get_value_string (conf),1024); OSD_fontfile[1023]=0; } else if (!strcmp(key,"OSD_mode")) { OSD_mode = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_fx")) { OSD_fx = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_tx")) { OSD_tx = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_sx")) { OSD_sx = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_fy")) { OSD_fy = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_ty")) { OSD_ty = lash_config_get_value_int(conf); } else if (!strcmp(key,"OSD_sy")) { OSD_sy = lash_config_get_value_int(conf); /* jack/midi/offline */ } else if (!strcmp(key,"syncsource")) { switch(lash_config_get_value_int(conf)) { case 1: if (want_verbose) printf("LASH: setting sync source to JACK\n"); #ifdef HAVE_MIDI midi_close(); #endif open_jack(); break; case 2: if (want_verbose) printf("LASH: setting sync source to midi\n"); close_jack(); //we'll connect to MIDI later when we know the port/channel break; default: if (want_verbose) printf("LASH: setting no sync source. (manual seek)\n"); close_jack(); #ifdef HAVE_MIDI midi_close(); #endif } /* MIDI */ } else if (!strcmp(key,"MIDI_clkadj")) { #ifdef HAVE_MIDI midi_clkadj = lash_config_get_value_int(conf); #endif } else if (!strcmp(key,"MIDI_clkconvert")) { #ifdef HAVE_MIDI midi_clkconvert = lash_config_get_value_int(conf); #endif } else if (!strcmp(key,"MIDI_ID")) { #ifdef HAVE_MIDI // TODO: check if we got the same midi library (alsa,portmidi) as the Lash session. // can we use LASH to remember MIDI connections ?!? strncpy(midiid,lash_config_get_value_string (conf),32); midiid[31]=0; if (strlen(midiid) > 0) if (atoi(midiid)>-2) midi_open(midiid); #endif /* Window Settings */ } else if (!strcmp(key,"want_letterbox")) { want_letterbox= lash_config_get_value_long(conf); } else if (!strcmp(key,"want_genpts")) { want_genpts= lash_config_get_value_long(conf); } else if (!strcmp(key,"want_ignstart")) { want_ignstart= lash_config_get_value_long(conf); } else if (!strcmp(key,"want_dropframes")) { want_dropframes= lash_config_get_value_long(conf); } else if (!strcmp(key,"want_autodrop")) { want_autodrop= lash_config_get_value_long(conf); } else if (!strcmp(key,"window_size")) { if (want_debug ) printf("LASH config: window size %ix%i\n", (lash_config_get_value_int(conf)>>16)&0xffff, lash_config_get_value_int(conf)&0xffff); jcfg->winsize_x=(lash_config_get_value_int(conf)>>16)&0xffff, jcfg->winsize_y=lash_config_get_value_int(conf)&0xffff; jcfg->apply=1; //Xresize((lash_config_get_value_int(conf)>>16)&0xffff,lash_config_get_value_int(conf)&0xffff); } else if (!strcmp(key,"window_position")) { jcfg->winpos_x=(lash_config_get_value_int(conf)>>16)&0xffff, jcfg->winpos_y=lash_config_get_value_int(conf)&0xffff; jcfg->apply=1; //Xposition((lash_config_get_value_int(conf)>>16)&0xffff,lash_config_get_value_int(conf)&0xffff); } else if (!strcmp(key,"x11_ontop")) { Xontop(lash_config_get_value_int(conf)); } else if (!strcmp(key,"x11_fullscreen")) { Xfullscreen(lash_config_get_value_int(conf)); } else { unsigned long val_size = lash_config_get_value_size(conf); if (want_debug) printf ("WARNING: unhandled LASH Config. Key = %s size: %ld\n",key,val_size); } } /************************* * public LASH functions */ void lash_setup() { lash_event_t *event; //lash_config_t *lc; event = lash_event_new_with_type(LASH_Client_Name); lash_event_set_string(event, "Xjadeo"); lash_send_event(lash_client, event); /* lc = lash_config_new_with_key("current_file"); lash_config_set_value_string (lc, current_file); lash_send_config(lash_client, lc); lc = lash_config_new_with_key("ts_offset"); lash_config_set_value_int (lc, ts_offset); lash_send_config(lash_client, lc); lc = lash_config_new_with_key("fps"); lash_config_set_value_double (lc, filefps); lash_send_config(lash_client, lc); */ } #endif void lash_process() { #ifdef HAVE_LASH if (!lash_client) {return;} lash_event_t* ev = NULL; lash_config_t* conf = NULL; jdo_config jcfg; memset(&jcfg,0,sizeof(jdo_config)); while ((ev = lash_get_event(lash_client)) != NULL) { handle_event(ev); lash_event_destroy(ev); } while ((conf = lash_get_config(lash_client)) != NULL) { handle_config(conf, &jcfg); lash_config_destroy(conf); } // activate accumulated config options. if (jcfg.apply) { if (jcfg.winpos_x > 0 && jcfg.winpos_y > 0) Xposition(jcfg.winpos_x,jcfg.winpos_y); if (jcfg.winsize_x < 2 || jcfg.winsize_y < 2) Xgetsize(&jcfg.winsize_x,&jcfg.winsize_y); if (want_debug) printf("LASH apply window size: %i %i\n",jcfg.winsize_x,jcfg.winsize_y); Xresize(jcfg.winsize_x,jcfg.winsize_y); } #endif } void lcs_str(char *key, char *value) { #ifdef HAVE_LASH lash_config_t *lc = lash_config_new_with_key(key); lash_config_set_value_string (lc, value); lash_send_config(lash_client, lc); //printf("DEBUG - LASH config str: %s -> %i\n",key,value); #endif } void lcs_long(char *key, long int value) { #ifdef HAVE_LASH lash_config_t *lc; lc = lash_config_new_with_key(key); lash_config_set_value (lc, (void*) &value, sizeof(long int)); lash_send_config(lash_client, lc); //printf("DEBUG - LASH config long %ld -> %i\n",key,value); #endif } void lcs_int(char *key, int value) { #ifdef HAVE_LASH lash_config_t *lc; lc = lash_config_new_with_key(key); lash_config_set_value_int (lc, value); lash_send_config(lash_client, lc); //printf("DEBUG - LASH config int: %i -> %i\n",key,value); #endif } void lcs_dbl(char *key, double value) { #ifdef HAVE_LASH lash_config_t *lc; lc = lash_config_new_with_key(key); lash_config_set_value_double (lc, value); lash_send_config(lash_client, lc); //printf("DEBUG - LASH config dbl %g -> %i\n",key,value); #endif } xjadeo-0.7.6/src/xjadeo/configfile.c0000644000175000017500000002773712042022565014247 00000000000000#include #include #include #include #define XJADEORC "xjadeorc" #define MAX_LINE_LEN 256 #define PATH_MAX 1024 #include #include #include #include #include "paths.h" #ifdef SYSCONFDIR # define SYSCFGDIR SYSCONFDIR #else # define SYSCFGDIR "/etc/" #endif /* test if file exists and is a regular file - returns 1 if ok */ int testfile (char *filename) { struct stat s; int result= stat(filename, &s); if (result != 0) return 0; /* stat() failed */ if (S_ISREG(s.st_mode)) return 1; /* is a regular file - ok */ return(0); } #define OPTSTR(arg) if (arg) free(arg); arg=strdup(value); rv=1; extern char OSD_fontfile[1024]; extern double delay; extern int videomode; extern int seekflags; extern int want_quiet; extern int want_verbose; extern int want_letterbox; extern int want_nosplash; extern int mq_en; extern char *ipc_queue; extern int remote_en; extern int avoid_lash; extern char *midi_driver; extern int use_jack; extern int interaction_override; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) extern int use_ltc; #endif #ifdef HAVE_MIDI extern char midiid[128]; extern int midi_clkconvert; /* --midifps [0:MTC|1:VIDEO|2:RESAMPLE] */ extern int midi_clkadj; /* 0|1 */ #endif extern long userFrame; extern char *smpte_offset; extern char *load_movie; extern double filefps; extern int osc_port; extern int want_dropframes; extern int want_autodrop; extern int want_genpts; extern int want_ignstart; extern int OSD_mode; extern char OSD_text[128]; extern int OSD_fx, OSD_tx, OSD_sx, OSD_fy, OSD_sy, OSD_ty; int start_ontop; int start_fullscreen; #if (HAVE_LIBXV || HAVE_IMLIB || HAVE_IMLIB2) extern int xj_ontop; extern int xj_fullscreen; #endif extern char *current_file; #ifdef JACK_SESSION extern int jack_session_restore; extern int js_winx; extern int js_winy; extern int js_winw; extern int js_winh; #endif #define YES_OK(VAR) \ if (!strncasecmp(value,"yes",3)){ \ VAR = 1; rv=1; \ } else if (!strncasecmp(value,"no",3)) {\ rv=1; \ } #define YES_NO(VAR) \ if (!strncasecmp(value,"yes",3)){ \ VAR = 1; rv=1; \ } else if (!strncasecmp(value,"no",3)) {\ VAR = 0; rv=1; \ } int parseoption (char *item, char *value) { int rv =0; if (!strncasecmp(item,"VIDEOMODE",9)) { int vmode; vmode=parsevidoutname(value); if (vmode==0 ) vmode = atoi(value); if (vmode >=0) { videomode = vmode; rv=1; } } else if (!strncasecmp(item,"FPS",3)) { if (atof(value) > 0) { delay = 1.0 / atof(value); } else delay = -1 ; // use file-framerate rv=1; } else if (!strncasecmp(item,"MIDICLK",7)) { rv=1; #ifdef HAVE_MIDI YES_NO(midi_clkadj) #endif } else if (!strncasecmp(item,"MIDIID",6)) { rv=1; #ifdef HAVE_MIDI strncpy(midiid,value,32); midiid[31]=0; #endif } else if (!strncasecmp(item,"MIDISMPTE",9)) { rv=1; #ifdef HAVE_MIDI midi_clkconvert=atoi(value); #endif } else if (!strncasecmp(item,"MIDIDRIVER",10)) { #ifdef HAVE_MIDI if (midi_driver) free(midi_driver); if (!strcmp(value, "(null)")) midi_driver = NULL; else midi_driver = strdup(value); #endif rv=1; } else if (!strncasecmp(item,"SYNCSOURCE",10)) { use_jack=1; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) use_ltc=0; #endif switch (atoi(value)) { case 3: #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) use_ltc=1; #endif #ifdef HAVE_MIDI snprintf(midiid,128,"-2"); // no-MTC #endif rv=1; break; case 2: // assert (atoi(midiid >= -1); rv=1; break; case 1: #ifdef HAVE_MIDI snprintf(midiid,128,"-2"); // no-MTC #endif rv=1; break; case 0: #ifdef HAVE_MIDI snprintf(midiid,128,"-2"); // no-MTC #endif use_jack=0; // // none/userFrame rv=1; break; default: break; } } else if (!strncasecmp(item,"REMOTECTL",9)) { YES_NO(remote_en) } else if (!strncasecmp(item,"MQ",2)) { YES_NO(mq_en) } else if (!strncasecmp(item,"IPC",3)) { rv=1; if (ipc_queue) free(ipc_queue); if (!strcmp(value, "(null)")) ipc_queue = NULL; else ipc_queue = strdup(value); } else if (!strncasecmp(item,"QUIET",5)) { YES_OK (want_quiet); } else if (!strncasecmp(item,"VERBOSE",7)) { YES_OK (want_verbose); } else if (!strncasecmp(item,"NOSPLASH",8)) { YES_OK (want_nosplash); } else if (!strncasecmp(item,"SEEK",4)) { if (!strncasecmp(value,"any",3)){ seekflags=SEEK_ANY; rv=1; } else if (!strncasecmp(value,"cont",4)){ seekflags=SEEK_CONTINUOUS; rv=1; } else if (!strncasecmp(value,"key",3)){ seekflags=SEEK_KEY; rv=1; } } else if (!strncasecmp(item,"LETTERBOX",9)) { YES_OK(want_letterbox) } else if (!strncasecmp(item,"LASH",4)) { if (!strncasecmp(value,"no",2)) { avoid_lash = 1; rv=1; } else if (!strncasecmp(value,"yes",3)) rv=1; } else if (!strncasecmp(item,"MQ",2)) { YES_OK(mq_en); } else if (!strncasecmp(item,"FONTFILE",8)) { strncpy(OSD_fontfile,value,1023);rv=1; OSD_fontfile[1023]=0; // just to be sure. #ifdef JACK_SESSION } else if (!strncasecmp(item,"MOVIEFILE",9)) { if (load_movie) free(load_movie); load_movie = strdup(value); rv=1; } else if (!strncasecmp(item,"WINPOS",6)) { jack_session_restore=1; rv=1; js_winx=atoi(value)>>16; js_winy=atoi(value)&0xffff; } else if (!strncasecmp(item,"WINPOSX",7)) { jack_session_restore=1; rv=1; js_winx=atoi(value); } else if (!strncasecmp(item,"WINPOSY",7)) { jack_session_restore=1; rv=1; js_winy=atoi(value); } else if (!strncasecmp(item,"WINSIZE",7)) { jack_session_restore=1; rv=1; js_winw=atoi(value)>>16; js_winh=atoi(value)&0xffff; } else if (!strncasecmp(item,"WINSIZEW",8)) { jack_session_restore=1; rv=1; js_winw=atoi(value); } else if (!strncasecmp(item,"WINSIZEH",8)) { jack_session_restore=1; rv=1; js_winh=atoi(value); } else if (!strncasecmp(item,"WINONTOP",8)) { YES_OK(start_ontop) } else if (!strncasecmp(item,"WINFULLSCREEN",13)) { YES_OK(start_fullscreen) } else if (!strncasecmp(item,"GENPTS",6)) { YES_OK(want_genpts) } else if (!strncasecmp(item,"IGNORESTART",11)) { YES_OK(want_ignstart) } else if (!strncasecmp(item,"DROPFRAMES",10)) { YES_OK(want_dropframes) } else if (!strncasecmp(item,"AUTODF",6)) { YES_OK(want_autodrop) } else if (!strncasecmp(item,"IAOVERRIDE",6)) { interaction_override=atoi(value); rv=1; } else if (!strncasecmp(item,"SMPTEOFFSET",11)) { smpte_offset=strdup(value); rv=1; /*ts_offset is set from smpte_offset */ } else if (!strncasecmp(item,"USERFRAME",9)) { userFrame=atol(value); rv=1; } else if (!strncasecmp(item,"FILEFPS",7)) { filefps = atof(value); rv=1; } else if (!strncasecmp(item,"OSCPORT",7)) { osc_port=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDMODE",7)) { OSD_mode=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDSX",5)) { OSD_sx=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDSY",5)) { OSD_sy=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDFX",5)) { OSD_fx=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDFY",5)) { OSD_fy=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDTX",5)) { OSD_tx=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDTY",5)) { OSD_ty=atoi(value); rv=1; } else if (!strncasecmp(item,"OSDTEXT",7)) { snprintf(OSD_text,128,"%s",value); rv=1; #endif } return (rv); } int readconfig (char *fn) { FILE* config_fp; char line[MAX_LINE_LEN]; char* token, *item,*value; int lineno=0; if (!(config_fp = fopen(fn, "r"))) { fprintf(stderr,"configfile failed: %s (%s)\n",fn,strerror(errno)); return (-1); } #if 0 fprintf(stdout,"INFO: parsing configfile: %s\n",fn); #endif while( fgets( line, MAX_LINE_LEN-1, config_fp ) != NULL ) { lineno++; line[MAX_LINE_LEN-1]=0; token = strtok( line, "\t =\n\r" ) ; if( token != NULL && token[0] != '#' && token[0] != ';') { item=strdup(token); token = strtok( NULL, "\t =\n\r" ) ; if (!token) { free(item); #ifdef CFG_WARN_ONLY printf("WARNING: ignored line in config file. %s:%d\n",fn,lineno); continue; #else printf("ERROR parsing config file. %s:%d\n",fn,lineno); exit(1); #endif } value=strdup(token); if (!parseoption(item,value)) { #ifdef CFG_WARN_ONLY printf("WARNING: ignored error in config file. %s:%d\n",fn,lineno); #else printf("ERROR parsing config file. %s:%d\n",fn,lineno); exit(1); #endif } free(item); free(value); } } fclose(config_fp); return 0; } void xjadeorc (void) { char *home; char filename[PATH_MAX]; if ((strlen(SYSCFGDIR) + strlen(XJADEORC) + 2) < PATH_MAX) { sprintf(filename, "%s/%s", SYSCFGDIR, XJADEORC); if (testfile(filename)) readconfig(filename); } home = getenv("HOME"); if (home && (strlen(home) + strlen(XJADEORC) + 2) < PATH_MAX) { sprintf(filename, "%s/.%s", home, XJADEORC); if (testfile(filename)) readconfig(filename); } if (strlen(XJADEORC) + 2 < PATH_MAX) { sprintf(filename, "./%s", XJADEORC); if (testfile(filename)) readconfig(filename); } } #define BOOL(VAR) ((VAR)?"yes":"no") int saveconfig (const char *fn) { FILE* fp; if (!(fp = fopen(fn, "w"))) { if (!want_quiet) fprintf(stderr,"writing configfile failed: %s (%s)\n",fn,strerror(errno)); return -1; } fprintf(fp, "# config file for xjadeo\n#\n# lines beginning with '#' or ';' are ignored.\n#\n"); fprintf(fp, "\n## Settings ##\n"); fprintf(fp, "MOVIEFILE=%s\n", current_file); fprintf(fp, "LETTERBOX=%s\n", BOOL(want_letterbox)); fprintf(fp, "VIDEOMODE=%i\n", videomode); // XXX fprintf(fp, "FPS=%f\n", delay<1?-1:1.0/delay); fprintf(fp, "SEEK=%s\n", (seekflags==SEEK_ANY)?"any":(seekflags==SEEK_KEY?"key":"cont")); fprintf(fp, "OSCPORT=%i\n", osc_port); fprintf(fp, "MQ=%s\n", BOOL(mq_en)); fprintf(fp, "IPC=%s\n", ipc_queue?ipc_queue:"(null)"); fprintf(fp, "REMOTECTL=%s\n", BOOL(remote_en)); fprintf(fp, "NOSPLASH=%s\n", BOOL(want_nosplash)); fprintf(fp, "VERBOSE=%s\n", BOOL(want_verbose)); fprintf(fp, "QUIET=%s\n", BOOL(want_quiet)); fprintf(fp, "IAOVERRIDE=%i\n", interaction_override); fprintf(fp, "\n## Sync settings ##\n"); #ifdef HAVE_MIDI fprintf(fp, "MIDISMPTE=%i\n", midi_clkconvert); fprintf(fp, "MIDIDRIVER=%s\n", midi_driver?midi_driver:"(null)"); fprintf(fp, "MIDIID=%s\n", midiid); fprintf(fp, "MIDICLK=%s\n", BOOL(midi_clkadj)); #endif fprintf(fp, "USERFRAME=%li\n", userFrame); fprintf(fp, "FILEFPS=%f\n", filefps); fprintf(fp, "SMPTEOFFSET=%s\n", smpte_offset?smpte_offset:"0"); // use current setting and connection -- not commandline int ss =0; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) ss=3; else #endif #ifdef HAVE_MIDI if (midi_connected()) ss=2; else #endif if (jack_connected()) ss=1; fprintf(fp, "SYNCSOURCE=%i\n", ss); fprintf(fp, "\n## Decoder settings ##\n"); fprintf(fp, "GENPTS=%s\n", BOOL(want_genpts)); fprintf(fp, "IGNORESTART=%s\n", BOOL(want_ignstart)); fprintf(fp, "DROPFRAMES=%s\n", BOOL(want_dropframes)); fprintf(fp, "AUTODF=%s\n", BOOL(want_autodrop)); fprintf(fp, "\n## OSD ##\n"); fprintf(fp, "OSDMODE=%i\n", OSD_mode); fprintf(fp, "OSDSX=%i\n", OSD_sx); fprintf(fp, "OSDSY=%i\n", OSD_sy); fprintf(fp, "OSDFX=%i\n", OSD_fx); fprintf(fp, "OSDFY=%i\n", OSD_fy); fprintf(fp, "OSDTX=%i\n", OSD_tx); fprintf(fp, "OSDTY=%i\n", OSD_ty); fprintf(fp, "OSDTEXT=%s\n", OSD_text); fprintf(fp, "FONTFILE=%s\n", OSD_fontfile); fprintf(fp, "\n## WINDOW POSITION/SIZE ##\n"); unsigned int w,h; int x,y; Xgetpos(&x,&y); Xgetsize(&w,&h); fprintf(fp, "WINPOSX=%i\n", x); fprintf(fp, "WINPOSY=%i\n", y); fprintf(fp, "WINSIZEW=%i\n", w); fprintf(fp, "WINSIZEH=%i\n", h); #if (HAVE_LIBXV || HAVE_IMLIB || HAVE_IMLIB2) fprintf(fp, "WINONTOP=%s\n", BOOL(xj_ontop)); fprintf(fp, "WINFULLSCREEN=%s\n", BOOL(xj_fullscreen)); #endif fclose(fp); if (!want_quiet) fprintf(stderr,"written config: %s\n",fn); return 0; } xjadeo-0.7.6/src/xjadeo/freetype.c0000644000175000017500000001025612133254253013753 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido */ #include "xjadeo.h" #ifdef HAVE_FT #include #include FT_FREETYPE_H /* origin is the upper left corner */ unsigned char ST_image[ST_HEIGHT][ST_WIDTH]; int ST_rightend=0; int ST_height=0; void draw_bitmap(FT_Bitmap* bitmap, FT_Int x, FT_Int y) { FT_Int i, j, p, q; FT_Int x_max = x + bitmap->width; FT_Int y_max = y + bitmap->rows; for (i = x, p = 0; i < x_max; i++, p++) { for (j = y, q = 0; j < y_max; j++, q++) { if (i >= ST_WIDTH || j >= ST_HEIGHT || i < 0 || j < 0) continue; ST_image[j][i] |= bitmap->buffer[q * bitmap->width + p]; } } } static char *ff = NULL; static int initialized = 0; static FT_Library library; static FT_Face face; int render_font (char *fontfile, char *text, int px) { static int pxx = 0; FT_GlyphSlot slot; FT_Matrix matrix; /* transformation matrix */ FT_Vector pen; /* untransformed origin */ FT_Error error; int target_height; int n, num_chars; /* set up matrix */ matrix.xx = (FT_Fixed)(0x10000L); matrix.xy = (FT_Fixed)(0x0L); matrix.yx = (FT_Fixed)(0x0L); matrix.yy = (FT_Fixed)(0x10000L); if (!ff || strcmp(fontfile, ff) || pxx != px || !initialized) { pxx = px; free(ff); ff = strdup(fontfile); if (initialized) { FT_Done_Face (face); FT_Done_FreeType(library); initialized = 0; } error = FT_Init_FreeType(&library); /* initialize library */ if (error) return(-1); error = FT_New_Face(library, fontfile, 0, &face); /* create face object */ if (error) { FT_Done_FreeType(library); return(-1); } error = FT_Set_Char_Size(face, 0, px * 64, 0, 72); /* set character size */ if (error) { FT_Done_Face (face); FT_Done_FreeType(library); return(-1); } initialized = 1; } /* the pen position incartesian space coordinates; */ pen.x = 1 * 64; pen.y = 10 * 64; num_chars = strlen(text); target_height = ST_HEIGHT; slot = face->glyph; memset(&(ST_image[0][0]),0,ST_WIDTH*ST_HEIGHT); ST_rightend=0; ST_height = 0; for (n = 0; n < num_chars; n++) { /* set transformation */ FT_Set_Transform(face, &matrix, &pen); /* load glyph image into the slot (erase previous one) */ error = FT_Load_Char(face, text[n], FT_LOAD_RENDER); if (error) continue; /* ignore errors */ /* now, draw to our target surface (convert position) */ draw_bitmap(&slot->bitmap, slot->bitmap_left, target_height - slot->bitmap_top); const int height = slot->bitmap_top + (slot->bitmap_top - slot->bitmap.rows)/2.0; if (height > ST_height) { ST_height = height; if (ST_height > ST_HEIGHT) ST_height = ST_HEIGHT; } if ((slot->bitmap_left + slot->bitmap.width) > ST_WIDTH) break; /* increment pen position */ pen.x += slot->advance.x; pen.y += slot->advance.y; ST_rightend=pen.x/64; } ST_rightend+=1; return 0; } void free_freetype () { free(ff); if (initialized) { FT_Done_Face (face); FT_Done_FreeType(library); } initialized = 0; } #else /* No freetype */ unsigned char ST_image[1][1]; int ST_rightend = 0; int ST_height = 0; int render_font (char *fontfile, char *text, int px) {return -1;} void free_freetype () { ; } #endif /* HAVE_FT*/ /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/xjadeo/xjosc.c0000644000175000017500000002705612130356645013271 00000000000000/* xjadeo - OSC remote control Copyright (C) 2007,2009 Robin Gareus This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation; 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. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_LIBLO #include #include #include #include "xjadeo.h" extern int want_verbose; extern int want_quiet; extern int loop_flag; extern int loop_run; extern int force_redraw; extern int movie_width; extern long userFrame; extern long dispFrame; extern double delay; extern double filefps; extern long ts_offset; #ifdef HAVE_MIDI extern int midi_clkconvert; extern int midi_clkadj; extern char midiid[32]; #endif #ifdef TIMEMAP extern long timeoffset; extern double timescale; extern int wraparound; #endif #ifdef CROPIMG extern int xoffset; #endif extern double delay; extern double framerate; int oscb_seek (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); userFrame=argv[0]->i; return(0); } int oscb_fps (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- f:%f\n", path, argv[0]->f); if (argv[0]->f>0) delay= 1.0 / argv[0]->f; else delay = -1; // use file-framerate return(0); } int oscb_framerate (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- f:%f\n", path, argv[0]->f); filefps=argv[0]->f; override_fps(filefps); return(0); } int oscb_offset (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); ts_offset = argv[0]->i; return(0); } int oscb_offsetsmpte (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- s:%s\n", path, &argv[0]->s); ts_offset = smptestring_to_frame((char*)&argv[0]->s); return(0); } int oscb_jackconnect (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ open_jack(); return(0); } int oscb_jackdisconnect (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ close_jack(); return(0); } #ifdef HAVE_MIDI int oscb_midiconnect (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ char *mp; if (&argv[0]->s && strlen(&argv[0]->s)>0) mp=&argv[0]->s; else mp="-1"; midi_open(mp); if (midi_connected()) { strncpy(midiid,mp,32); midiid[31]=0; } return(0); } int oscb_mididisconnect (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ midi_close(); return(0); } int oscb_midiquarterframes (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); midi_clkadj = argv[0]->i?1:0; return(0); } int oscb_midiclkconvert (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); midi_clkconvert = argv[0]->i; return(0); } #endif #ifdef TIMEMAP int oscb_timescale (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- f:%f\n", path, argv[0]->f); timescale=argv[0]->f; force_redraw=1; return(0); } int oscb_timescale2 (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- f:%f i:%i\n", path, argv[0]->f, argv[1]->i); timescale=argv[0]->f; timeoffset=argv[1]->i; force_redraw=1; return(0); } int oscb_loop (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); wraparound = argv[0]->i?1:0; return(0); } int oscb_reverse (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s\n", path); timescale *= -1.0; if (timescale<0) timeoffset = (-2.0*timescale) * dispFrame; // TODO: check file-offset and ts_offset. -> also in remote.c else timeoffset = 0; // TODO - applt diff dispFrame <> transport src return(0); } #endif #ifdef CROPIMG int oscb_pan (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); xoffset=argv[0]->i; if (xoffset<0) xoffset=0; if (xoffset>movie_width) xoffset=movie_width; force_redraw=1; return(0); } #endif int oscb_load (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (1 || want_verbose) fprintf(stderr, "OSC: %s <- s:%s\n", path, &argv[0]->s); open_movie(&argv[0]->s); init_moviebuffer(); newsourcebuffer(); force_redraw=1; return(0); } // OSD extern char OSD_fontfile[1024]; extern int OSD_mode; int oscb_osdfont (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (1 || want_verbose) fprintf(stderr, "OSC: %s <- s:%s\n", path, &argv[0]->s); snprintf(OSD_fontfile,1024,"%s",(char*) &argv[0]->s); return(0); } int oscb_osdframe (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); if (argv[0]->i) OSD_mode|=OSD_FRAME; else OSD_mode&=~OSD_FRAME; force_redraw=1; return(0); } int oscb_osdsmtpe (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); if (argv[0]->i) OSD_mode|=OSD_SMPTE; else OSD_mode&=~OSD_SMPTE; force_redraw=1; return(0); } int oscb_osdbox (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); if (argv[0]->i) OSD_mode|=OSD_BOX; else OSD_mode&=~OSD_BOX; force_redraw=1; return(0); } int oscb_remotecmd (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- s:%s\n", path, &argv[0]->s); exec_remote_cmd (&argv[0]->s); return(0); } // X11 options /* int oscb_fullscreen (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); int action=_NET_WM_STATE_TOGGLE; if (!strcmp(d,"on") || atoi(d)==1) action=_NET_WM_STATE_ADD; else if (!strcmp(d,"off")) action=_NET_WM_STATE_REMOVE; remote_printf(100,"ok."); Xfullscreen(action); return(0); } int oscb_mousepointer (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ if (want_verbose) fprintf(stderr, "OSC: %s <- i:%i\n", path, argv[0]->i); int action=2; if (!strcmp(d,"on") || atoi(d)==1) action=1; else if (!strcmp(d,"off")) action=0; Xmousepointer (action); remote_printf(100,"ok."); return(0); } */ // general int oscb_quit (const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data){ fprintf(stderr, "OSC 'quit' command recv.\n"); loop_flag=0; return(0); } static void oscb_error(int num, const char *m, const char *path) { fprintf(stderr, "liblo server error %d in path %s: %s\n", num, path, m); } ////////////////////////////////////////////////////////////////////////////// lo_server osc_server = NULL; int initialize_osc(int osc_port) { char tmp[8]; uint32_t port = (osc_port>100 && osc_port< 60000)?osc_port:7000; snprintf(tmp, sizeof(tmp), "%d", port); fprintf(stderr, "OSC trying port:%i\n",port); osc_server = lo_server_new (tmp, oscb_error); //fprintf (stderr,"OSC port %i is in use.\n", port); if (!osc_server) { if(!want_quiet) fprintf(stderr, "OSC start failed."); return(1); } if(!want_quiet) { char *urlstr; urlstr = lo_server_get_url (osc_server); fprintf(stderr, "OSC server name: %s\n",urlstr); free (urlstr); } lo_server_add_method(osc_server, "/jadeo/seek", "i", &oscb_seek, NULL); // IFF no MIDI-TC and no JACK-TS - seek to this frame lo_server_add_method(osc_server, "/jadeo/load", "S", &oscb_load, NULL); #ifdef CROPIMG lo_server_add_method(osc_server, "/jadeo/pan", "i", &oscb_pan, NULL); #endif #ifdef TIMEMAP lo_server_add_method(osc_server, "/jadeo/timescale", "f", &oscb_timescale, NULL); lo_server_add_method(osc_server, "/jadeo/timescale", "fi", &oscb_timescale2, NULL); lo_server_add_method(osc_server, "/jadeo/loop", "i", &oscb_loop, NULL); lo_server_add_method(osc_server, "/jadeo/reverse", "", &oscb_reverse, NULL); #endif lo_server_add_method(osc_server, "/jadeo/fps", "f", &oscb_fps, NULL); // set screen update fps lo_server_add_method(osc_server, "/jadeo/framerate", "f", &oscb_framerate, NULL); // override file's fps lo_server_add_method(osc_server, "/jadeo/offset", "i", &oscb_offset, NULL); // set offset by frame-number lo_server_add_method(osc_server, "/jadeo/offset", "s", &oscb_offsetsmpte, NULL); // set offset as SMPTE lo_server_add_method(osc_server, "/jadeo/jack/connect", "", &oscb_jackconnect, NULL); lo_server_add_method(osc_server, "/jadeo/jack/disconnect", "", &oscb_jackdisconnect, NULL); #ifdef HAVE_MIDI lo_server_add_method(osc_server, "/jadeo/midi/connect", "s", &oscb_midiconnect, NULL); lo_server_add_method(osc_server, "/jadeo/midi/disconnect", "", &oscb_mididisconnect, NULL); lo_server_add_method(osc_server, "/jadeo/midi/quarterframes", "i", &oscb_midiquarterframes, NULL); lo_server_add_method(osc_server, "/jadeo/midi/clkconvert", "i", &oscb_midiclkconvert, NULL); #endif lo_server_add_method(osc_server, "/jadeo/osd/font", "s", &oscb_osdfont, NULL); lo_server_add_method(osc_server, "/jadeo/osd/smtpe", "i", &oscb_osdsmtpe, NULL); lo_server_add_method(osc_server, "/jadeo/osd/frame", "i", &oscb_osdframe, NULL); lo_server_add_method(osc_server, "/jadeo/osd/box", "i", &oscb_osdbox, NULL); lo_server_add_method(osc_server, "/jadeo/cmd", "s", &oscb_remotecmd, NULL); lo_server_add_method(osc_server, "/jadeo/quit", "", &oscb_quit, NULL); if(want_verbose) fprintf(stderr, "OSC server started on port %i\n",port); return (0); } int process_osc(void) { int rv = 0; if (!osc_server) return 0; while (lo_server_recv_noblock(osc_server, 0) > 0) { rv++; } return rv; } void shutdown_osc(void) { if (!osc_server) return; lo_server_free(osc_server); if(!want_verbose) fprintf(stderr, "OSC server shut down.\n"); } #else int initialize_osc(int osc_port) {return(1);} void shutdown_osc(void) {;} int process_osc(void) {return(0);} #endif /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/xjadeo/smpte.c0000644000175000017500000002035111436325750013263 00000000000000/* simple timecode parser. * * 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, 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. * * (c) 2006 * Robin Gareus * * NOTE: compiles standalone for testing * gcc -o smpte smpte.c -lm * * run ./smpte * */ #include #include #include #include enum { SMPTE_FRAME = 0, SMPTE_SEC, SMPTE_MIN, SMPTE_HOUR, SMPTE_OVERFLOW, SMPTE_LAST }; /* binary coded decimal (BCD) digits * not to mix up with SMPTE struct (in midi.c) * HH:MM:SS:FF */ typedef struct { int v[(SMPTE_LAST)]; ///< allocates 5 ints for a 32bit BCD - bad design :-) } bcd; #ifdef HAVE_CONFIG_H /* XJADEO include */ #include extern double framerate; extern int want_dropframes; // force drop-frame TC (command-line arg) default: 0 extern int want_autodrop; // force disable drop-frame TC (command-line arg) default:1 extern int have_dropframes; #define FPS framerate #else /* Standalone */ //#define FPS 25 void dump(bcd *s, char *info); double framerate = 25.0; int want_dropframes = 0; int want_autodrop = 1; int have_dropframes = 0; // detected from MTC ; TODO: force to zero if jack of user TC #define FPS framerate #endif #ifdef HAVE_MIDI extern int midi_clkconvert; #else int midi_clkconvert =0; #endif #define FIX_SMPTE_OVERFLOW(THIS,NEXT,INC) \ if (s->v[(THIS)] >= (INC)) { int ov= (int) floor((double) s->v[(THIS)] / (INC)); s->v[(THIS)] -= ov*(INC); s->v[(NEXT)]+=ov;} \ if (s->v[(THIS)] < 0 ) { int ov= (int) floor((double) s->v[(THIS)] / (INC)); s->v[(THIS)] -= ov*(INC); s->v[(NEXT)]+=ov;} void parse_int (bcd *s, int val) { int i; for (i=0;iv[i]=0; s->v[SMPTE_FRAME]= (int) val; FIX_SMPTE_OVERFLOW(SMPTE_FRAME,SMPTE_SEC,(int)ceil(FPS)); FIX_SMPTE_OVERFLOW(SMPTE_SEC,SMPTE_MIN,60); FIX_SMPTE_OVERFLOW(SMPTE_MIN,SMPTE_HOUR,60); FIX_SMPTE_OVERFLOW(SMPTE_HOUR,SMPTE_OVERFLOW,24); } // FORMAT [[[HH:]MM:]SS:]FF void parse_string (bcd *s, char *val) { int i; char *buf = strdup(val); char *t; for (i=0;iv[i]=0; i=0; while (i < SMPTE_OVERFLOW && buf && (t=strrchr(buf,':'))) { char *tmp=t+1; s->v[i] = (int) atoi(tmp); *t=0; i++; } if (i < SMPTE_OVERFLOW) s->v[i]= (int) atoi(buf); free(buf); FIX_SMPTE_OVERFLOW(SMPTE_FRAME,SMPTE_SEC,(int)ceil(FPS)); FIX_SMPTE_OVERFLOW(SMPTE_SEC,SMPTE_MIN,60); FIX_SMPTE_OVERFLOW(SMPTE_MIN,SMPTE_HOUR,60); FIX_SMPTE_OVERFLOW(SMPTE_HOUR,SMPTE_OVERFLOW,24); } /* legacy version of smpte_to_frame(...) * does not do any frame-dropping.. handy. */ int to_frame(bcd *s) { int frame=0; int sec=0; #if 0 printf("%s %02i#%02i:%02i:%02i:%02i\n","DBG: ", s->v[SMPTE_OVERFLOW], s->v[SMPTE_HOUR], s->v[SMPTE_MIN], s->v[SMPTE_SEC], s->v[SMPTE_FRAME]); #endif sec=((((s->v[SMPTE_HOUR]*60)+s->v[SMPTE_MIN])*60)+s->v[SMPTE_SEC]); if (s->v[SMPTE_OVERFLOW]<0) { sec=86400-sec; sec*=-1; } // TODO: check if this behaves correctly for non integer FPS :-> //frame=(int) floor(sec*FPS)+s->v[SMPTE_FRAME]; frame=(int) floor(sec * ceil(FPS)) + s->v[SMPTE_FRAME]; return (frame); } void add (bcd*s, bcd *s0, bcd *s1) { int i; for (i=0;iv[i]=s0->v[i]+s1->v[i]; //s->v[SMPTE_OVERFLOW]=0; FIX_SMPTE_OVERFLOW(SMPTE_FRAME,SMPTE_SEC,(int)ceil(FPS)); FIX_SMPTE_OVERFLOW(SMPTE_SEC,SMPTE_MIN,60); FIX_SMPTE_OVERFLOW(SMPTE_MIN,SMPTE_HOUR,60); FIX_SMPTE_OVERFLOW(SMPTE_HOUR,SMPTE_OVERFLOW,24); } void sub (bcd*s, bcd *s0, bcd *s1) { int i; for (i=0;iv[i]=s0->v[i]-s1->v[i]; //s->v[SMPTE_OVERFLOW]=0; FIX_SMPTE_OVERFLOW(SMPTE_FRAME,SMPTE_SEC,(int)ceil(FPS)); FIX_SMPTE_OVERFLOW(SMPTE_SEC,SMPTE_MIN,60); FIX_SMPTE_OVERFLOW(SMPTE_MIN,SMPTE_HOUR,60); FIX_SMPTE_OVERFLOW(SMPTE_HOUR,SMPTE_OVERFLOW,24); } /*-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*/ #ifndef HAVE_CONFIG_H // standalone void dump(bcd *s, char *info) { printf("%s %02i:%02i:%02i:%02i -- %i\n",info?info:"", s->v[SMPTE_HOUR], s->v[SMPTE_MIN], s->v[SMPTE_SEC], s->v[SMPTE_FRAME], to_frame(s)); } int main (int argc, char **argv) { bcd n0,n1; bcd d0; if (argc != 2) { printf("usage %s \n",argv[0]); return(1); framerate=25; parse_string(&n0,argv[1]); parse_int(&n1,25*60); sub(&d0,&n0,&n1); dump(&n0,"S1 : "); dump(&n1,"S2 : "); dump(&d0,"RES : "); return(0); } #endif /*-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*/ /* * Insert two frame numbers at the * start of every minute except the tenth. */ long insert_drop_frames (long int frames) { long minutes = (frames / 17982L) * 10L; ///< 17982 frames in 10 mins base. long off_f = frames % 17982L; long off_adj =0; if (off_f >= 1800L) { // nothing to do in the first minute off_adj = 2 + 2 * (long) floor(((off_f-1800L) / 1798L)); } return ( 1800L * minutes + off_f + off_adj); } /*-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*/ long int smpte_to_frame(int type, int f, int s, int m, int h, int overflow); /* * used for parsing user input '-o' 'set offset', etc * basically the same as smpte_to_frame(...) */ long int smptestring_to_frame (char *str) { bcd s; long int frame; parse_string(&s,str); if ((strchr(str,':') && have_dropframes && want_autodrop)||want_dropframes) { frame= smpte_to_frame ( 2 /*29.97fps */, s.v[SMPTE_FRAME], s.v[SMPTE_SEC], s.v[SMPTE_MIN], s.v[SMPTE_HOUR], 0); if (s.v[SMPTE_OVERFLOW]<0) { frame=30*86400-frame; frame*=-1; } } else frame = (long int)to_frame(&s); return (frame); } /* any smpte output (verbose and OSD) */ void frame_to_smptestring(char *smptestring, long int frame) { bcd s; if (!smptestring) return; long frames = (long) floor((double) frame); char sep = ':'; if ((have_dropframes && want_autodrop)||want_dropframes) { frames = insert_drop_frames(frames); sep = '.'; } parse_int(&s, (int) frames); snprintf(smptestring,13,"%02i%c%02i%c%02i%c%02i", s.v[SMPTE_HOUR], sep, s.v[SMPTE_MIN], sep, s.v[SMPTE_SEC], sep, s.v[SMPTE_FRAME]); } long int smpte_to_frame(int type, int f, int s, int m, int h, int overflow) { long frame =0 ; double fps= FPS; switch(type) { case 0: fps=24.0; break; case 1: fps=25.0; break; case 2: fps=30.0*1000.0/1001.0; break; case 3: fps=30.0; break; } if (type==2 || want_dropframes) { /* * Drop frame numbers (not frames) 00:00 and 00:01 at the * start of every minute except the tenth. * * dropframes are not required or permitted when operating at * 24, 25, or 30 frames per second. * */ long base_time = ((h*3600) + ((m/10) * 10 * 60)) * fps; // XXXFPS long off_m = m % 10; long off_s = (off_m * 60) + s; long off_f = (30 * off_s) + f - (2 * off_m); //long off_s = (long) rint(off_f * XXXFPS/fps); //frame = base_time + off_s; frame = base_time + off_f; fps=30; have_dropframes=1; // TODO: recalc ts_offset string when changing this } else { frame = f + fps * ( s + 60*m + 3600*h); have_dropframes=0; // TODO: recalc ts_offset string when changing this } switch (midi_clkconvert) { case 2: // force video fps frame = f + (int) floor(FPS * ( s + 60*m+ 3600*h)); break; case 3: // 'convert' FPS. frame = (int) rint(frame * FPS / fps); break; default: // use MTC fps info ; break; } return(frame); } #if 0 // never use this - this drops frames not smpte-timestamps! // it can "import" external non-drop timestamps to // local drop-frame timecode. long int sec_to_frame(double secs) { int frames = secs * framerate; int type = -1 ; bcd s; if (framerate >29.9 && framerate < 30.0 ) type =2; parse_int(&s, (int) frames); return (smpte_to_frame(type, s.v[SMPTE_FRAME], s.v[SMPTE_SEC], s.v[SMPTE_MIN], s.v[SMPTE_HOUR], 0)); } #endif xjadeo-0.7.6/src/xjadeo/Makefile.in0000644000175000017500000013614712200730266014037 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = xjadeo$(EXEEXT) xjremote$(EXEEXT) @XJINFO_BIN@ EXTRA_PROGRAMS = xjinfo$(EXEEXT) subdir = src/xjadeo DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_xjadeo_OBJECTS = xjadeo-xjadeo.$(OBJEXT) xjadeo-display.$(OBJEXT) \ xjadeo-jack.$(OBJEXT) xjadeo-midi.$(OBJEXT) \ xjadeo-freetype.$(OBJEXT) xjadeo-display_x11.$(OBJEXT) \ xjadeo-smpte.$(OBJEXT) xjadeo-main.$(OBJEXT) \ xjadeo-remote.$(OBJEXT) xjadeo-configfile.$(OBJEXT) \ xjadeo-lash.$(OBJEXT) xjadeo-mqueue.$(OBJEXT) \ xjadeo-display_mac.$(OBJEXT) xjadeo-xjosc.$(OBJEXT) \ xjadeo-display_sdl.$(OBJEXT) xjadeo-ltc-jack.$(OBJEXT) xjadeo_OBJECTS = $(am_xjadeo_OBJECTS) xjadeo_LINK = $(CCLD) $(xjadeo_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_xjinfo_OBJECTS = xjinfo-avinfo.$(OBJEXT) xjinfo_OBJECTS = $(am_xjinfo_OBJECTS) xjinfo_DEPENDENCIES = xjinfo_LINK = $(CCLD) $(xjinfo_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_xjremote_OBJECTS = xjremote.$(OBJEXT) xjremote_OBJECTS = $(am_xjremote_OBJECTS) xjremote_DEPENDENCIES = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(xjadeo_SOURCES) $(xjinfo_SOURCES) $(xjremote_SOURCES) DIST_SOURCES = $(xjadeo_SOURCES) $(xjinfo_SOURCES) $(xjremote_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ #TODO: use a dedicated script for 'git desc' - this is "non-POSIX" way: REV = $(shell test -d ../../.git && git describe --always --tags HEAD 2>/dev/null) xjadeo_SOURCES = xjadeo.c ../../aclocal.m4 ../../config.h display.c jack.c midi.c freetype.c xjadeo.h display.h display_x11.c smpte.c main.c remote.c configfile.c lash.c mqueue.c icons/osd_bitmaps.h display_mac.c xjosc.c display_sdl.c ltc-jack.c ffcompat.h remote.h xjadeo_LDADD = @JACK_LIBS@ @MQ_LIBS@ @FFMPEG_LIBS@ @XV_LIBS@ @IMLIB_LIBS@ @MIDI_LIBS@ @FREETYPE_LIBS@ @IMLIB2_LIBS@ @LASH_LIBS@ @Xpm_LIBS@ @LIBLO_LIBS@ @SDL_LIBS@ @LTCSMPTE_LIBS@ @LTC_LIBS@ -lm xjadeo_CFLAGS = -Wall -g -O3 @JACK_CFLAGS@ @FFMPEG_CFLAGS@ @XV_CFLAGS@ @IMLIB_CFLAGS@ @MIDI_CFLAGS@ @FREETYPE_CFLAGS@ @IMLIB2_CFLAGS@ @LASH_CFLAGS@ @LIBLO_CFLAGS@ @SDL_CFLAGS@ @LTCSMPTE_CFLAGS@ @LTC_CFLAGS@ "-DSUBVERSION=\"$(REV)\"" xjremote_SOURCES = xjremote.c xjremote_LDADD = @MQ_LIBS@ xjinfo_SOURCES = avinfo.c ffcompat.h xjinfo_LDADD = @FFMPEG_LIBS@ xjinfo_CFLAGS = -Wall -g -O3 @FFMPEG_CFLAGS@ #ctags: # find . -type f -name "*.[ch]*" | xargs @CTAGS@ MAINTAINERCLEANFILES = Makefile.in CLEANFILES = paths.h BUILT_SOURCES = paths.h xjadeo_DEPENDENCIES = \ icons/brightness.bitmap icons/gamma.bitmap icons/osd_bitmaps.h icons/splash_mask.xbm \ icons/brightness_mask.xbm icons/gamma_mask.xbm icons/saturation.bitmap icons/xjadeo-color.xpm \ icons/contrast.bitmap icons/hue.bitmap icons/saturation_mask.xbm icons/xjadeo.bitmap \ icons/contrast_mask.xbm icons/hue_mask.xbm icons/splash.bitmap icons/xjadeo_mask.xbm all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/xjadeo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/xjadeo/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) xjadeo$(EXEEXT): $(xjadeo_OBJECTS) $(xjadeo_DEPENDENCIES) $(EXTRA_xjadeo_DEPENDENCIES) @rm -f xjadeo$(EXEEXT) $(xjadeo_LINK) $(xjadeo_OBJECTS) $(xjadeo_LDADD) $(LIBS) xjinfo$(EXEEXT): $(xjinfo_OBJECTS) $(xjinfo_DEPENDENCIES) $(EXTRA_xjinfo_DEPENDENCIES) @rm -f xjinfo$(EXEEXT) $(xjinfo_LINK) $(xjinfo_OBJECTS) $(xjinfo_LDADD) $(LIBS) xjremote$(EXEEXT): $(xjremote_OBJECTS) $(xjremote_DEPENDENCIES) $(EXTRA_xjremote_DEPENDENCIES) @rm -f xjremote$(EXEEXT) $(LINK) $(xjremote_OBJECTS) $(xjremote_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-configfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-display_mac.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-display_sdl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-display_x11.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-freetype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-jack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-lash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-ltc-jack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-midi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-mqueue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-remote.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-smpte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-xjadeo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjadeo-xjosc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjinfo-avinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xjremote.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` xjadeo-xjadeo.o: xjadeo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-xjadeo.o -MD -MP -MF $(DEPDIR)/xjadeo-xjadeo.Tpo -c -o xjadeo-xjadeo.o `test -f 'xjadeo.c' || echo '$(srcdir)/'`xjadeo.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-xjadeo.Tpo $(DEPDIR)/xjadeo-xjadeo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xjadeo.c' object='xjadeo-xjadeo.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-xjadeo.o `test -f 'xjadeo.c' || echo '$(srcdir)/'`xjadeo.c xjadeo-xjadeo.obj: xjadeo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-xjadeo.obj -MD -MP -MF $(DEPDIR)/xjadeo-xjadeo.Tpo -c -o xjadeo-xjadeo.obj `if test -f 'xjadeo.c'; then $(CYGPATH_W) 'xjadeo.c'; else $(CYGPATH_W) '$(srcdir)/xjadeo.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-xjadeo.Tpo $(DEPDIR)/xjadeo-xjadeo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xjadeo.c' object='xjadeo-xjadeo.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-xjadeo.obj `if test -f 'xjadeo.c'; then $(CYGPATH_W) 'xjadeo.c'; else $(CYGPATH_W) '$(srcdir)/xjadeo.c'; fi` xjadeo-display.o: display.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display.o -MD -MP -MF $(DEPDIR)/xjadeo-display.Tpo -c -o xjadeo-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display.Tpo $(DEPDIR)/xjadeo-display.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='xjadeo-display.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c xjadeo-display.obj: display.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display.obj -MD -MP -MF $(DEPDIR)/xjadeo-display.Tpo -c -o xjadeo-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display.Tpo $(DEPDIR)/xjadeo-display.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='xjadeo-display.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi` xjadeo-jack.o: jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-jack.o -MD -MP -MF $(DEPDIR)/xjadeo-jack.Tpo -c -o xjadeo-jack.o `test -f 'jack.c' || echo '$(srcdir)/'`jack.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-jack.Tpo $(DEPDIR)/xjadeo-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jack.c' object='xjadeo-jack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-jack.o `test -f 'jack.c' || echo '$(srcdir)/'`jack.c xjadeo-jack.obj: jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-jack.obj -MD -MP -MF $(DEPDIR)/xjadeo-jack.Tpo -c -o xjadeo-jack.obj `if test -f 'jack.c'; then $(CYGPATH_W) 'jack.c'; else $(CYGPATH_W) '$(srcdir)/jack.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-jack.Tpo $(DEPDIR)/xjadeo-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jack.c' object='xjadeo-jack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-jack.obj `if test -f 'jack.c'; then $(CYGPATH_W) 'jack.c'; else $(CYGPATH_W) '$(srcdir)/jack.c'; fi` xjadeo-midi.o: midi.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-midi.o -MD -MP -MF $(DEPDIR)/xjadeo-midi.Tpo -c -o xjadeo-midi.o `test -f 'midi.c' || echo '$(srcdir)/'`midi.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-midi.Tpo $(DEPDIR)/xjadeo-midi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='midi.c' object='xjadeo-midi.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-midi.o `test -f 'midi.c' || echo '$(srcdir)/'`midi.c xjadeo-midi.obj: midi.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-midi.obj -MD -MP -MF $(DEPDIR)/xjadeo-midi.Tpo -c -o xjadeo-midi.obj `if test -f 'midi.c'; then $(CYGPATH_W) 'midi.c'; else $(CYGPATH_W) '$(srcdir)/midi.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-midi.Tpo $(DEPDIR)/xjadeo-midi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='midi.c' object='xjadeo-midi.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-midi.obj `if test -f 'midi.c'; then $(CYGPATH_W) 'midi.c'; else $(CYGPATH_W) '$(srcdir)/midi.c'; fi` xjadeo-freetype.o: freetype.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-freetype.o -MD -MP -MF $(DEPDIR)/xjadeo-freetype.Tpo -c -o xjadeo-freetype.o `test -f 'freetype.c' || echo '$(srcdir)/'`freetype.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-freetype.Tpo $(DEPDIR)/xjadeo-freetype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='freetype.c' object='xjadeo-freetype.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-freetype.o `test -f 'freetype.c' || echo '$(srcdir)/'`freetype.c xjadeo-freetype.obj: freetype.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-freetype.obj -MD -MP -MF $(DEPDIR)/xjadeo-freetype.Tpo -c -o xjadeo-freetype.obj `if test -f 'freetype.c'; then $(CYGPATH_W) 'freetype.c'; else $(CYGPATH_W) '$(srcdir)/freetype.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-freetype.Tpo $(DEPDIR)/xjadeo-freetype.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='freetype.c' object='xjadeo-freetype.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-freetype.obj `if test -f 'freetype.c'; then $(CYGPATH_W) 'freetype.c'; else $(CYGPATH_W) '$(srcdir)/freetype.c'; fi` xjadeo-display_x11.o: display_x11.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_x11.o -MD -MP -MF $(DEPDIR)/xjadeo-display_x11.Tpo -c -o xjadeo-display_x11.o `test -f 'display_x11.c' || echo '$(srcdir)/'`display_x11.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_x11.Tpo $(DEPDIR)/xjadeo-display_x11.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_x11.c' object='xjadeo-display_x11.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_x11.o `test -f 'display_x11.c' || echo '$(srcdir)/'`display_x11.c xjadeo-display_x11.obj: display_x11.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_x11.obj -MD -MP -MF $(DEPDIR)/xjadeo-display_x11.Tpo -c -o xjadeo-display_x11.obj `if test -f 'display_x11.c'; then $(CYGPATH_W) 'display_x11.c'; else $(CYGPATH_W) '$(srcdir)/display_x11.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_x11.Tpo $(DEPDIR)/xjadeo-display_x11.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_x11.c' object='xjadeo-display_x11.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_x11.obj `if test -f 'display_x11.c'; then $(CYGPATH_W) 'display_x11.c'; else $(CYGPATH_W) '$(srcdir)/display_x11.c'; fi` xjadeo-smpte.o: smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-smpte.o -MD -MP -MF $(DEPDIR)/xjadeo-smpte.Tpo -c -o xjadeo-smpte.o `test -f 'smpte.c' || echo '$(srcdir)/'`smpte.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-smpte.Tpo $(DEPDIR)/xjadeo-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smpte.c' object='xjadeo-smpte.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-smpte.o `test -f 'smpte.c' || echo '$(srcdir)/'`smpte.c xjadeo-smpte.obj: smpte.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-smpte.obj -MD -MP -MF $(DEPDIR)/xjadeo-smpte.Tpo -c -o xjadeo-smpte.obj `if test -f 'smpte.c'; then $(CYGPATH_W) 'smpte.c'; else $(CYGPATH_W) '$(srcdir)/smpte.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-smpte.Tpo $(DEPDIR)/xjadeo-smpte.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smpte.c' object='xjadeo-smpte.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-smpte.obj `if test -f 'smpte.c'; then $(CYGPATH_W) 'smpte.c'; else $(CYGPATH_W) '$(srcdir)/smpte.c'; fi` xjadeo-main.o: main.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-main.o -MD -MP -MF $(DEPDIR)/xjadeo-main.Tpo -c -o xjadeo-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-main.Tpo $(DEPDIR)/xjadeo-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='xjadeo-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c xjadeo-main.obj: main.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-main.obj -MD -MP -MF $(DEPDIR)/xjadeo-main.Tpo -c -o xjadeo-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-main.Tpo $(DEPDIR)/xjadeo-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='xjadeo-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` xjadeo-remote.o: remote.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-remote.o -MD -MP -MF $(DEPDIR)/xjadeo-remote.Tpo -c -o xjadeo-remote.o `test -f 'remote.c' || echo '$(srcdir)/'`remote.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-remote.Tpo $(DEPDIR)/xjadeo-remote.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='remote.c' object='xjadeo-remote.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-remote.o `test -f 'remote.c' || echo '$(srcdir)/'`remote.c xjadeo-remote.obj: remote.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-remote.obj -MD -MP -MF $(DEPDIR)/xjadeo-remote.Tpo -c -o xjadeo-remote.obj `if test -f 'remote.c'; then $(CYGPATH_W) 'remote.c'; else $(CYGPATH_W) '$(srcdir)/remote.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-remote.Tpo $(DEPDIR)/xjadeo-remote.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='remote.c' object='xjadeo-remote.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-remote.obj `if test -f 'remote.c'; then $(CYGPATH_W) 'remote.c'; else $(CYGPATH_W) '$(srcdir)/remote.c'; fi` xjadeo-configfile.o: configfile.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-configfile.o -MD -MP -MF $(DEPDIR)/xjadeo-configfile.Tpo -c -o xjadeo-configfile.o `test -f 'configfile.c' || echo '$(srcdir)/'`configfile.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-configfile.Tpo $(DEPDIR)/xjadeo-configfile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='configfile.c' object='xjadeo-configfile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-configfile.o `test -f 'configfile.c' || echo '$(srcdir)/'`configfile.c xjadeo-configfile.obj: configfile.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-configfile.obj -MD -MP -MF $(DEPDIR)/xjadeo-configfile.Tpo -c -o xjadeo-configfile.obj `if test -f 'configfile.c'; then $(CYGPATH_W) 'configfile.c'; else $(CYGPATH_W) '$(srcdir)/configfile.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-configfile.Tpo $(DEPDIR)/xjadeo-configfile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='configfile.c' object='xjadeo-configfile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-configfile.obj `if test -f 'configfile.c'; then $(CYGPATH_W) 'configfile.c'; else $(CYGPATH_W) '$(srcdir)/configfile.c'; fi` xjadeo-lash.o: lash.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-lash.o -MD -MP -MF $(DEPDIR)/xjadeo-lash.Tpo -c -o xjadeo-lash.o `test -f 'lash.c' || echo '$(srcdir)/'`lash.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-lash.Tpo $(DEPDIR)/xjadeo-lash.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lash.c' object='xjadeo-lash.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-lash.o `test -f 'lash.c' || echo '$(srcdir)/'`lash.c xjadeo-lash.obj: lash.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-lash.obj -MD -MP -MF $(DEPDIR)/xjadeo-lash.Tpo -c -o xjadeo-lash.obj `if test -f 'lash.c'; then $(CYGPATH_W) 'lash.c'; else $(CYGPATH_W) '$(srcdir)/lash.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-lash.Tpo $(DEPDIR)/xjadeo-lash.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lash.c' object='xjadeo-lash.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-lash.obj `if test -f 'lash.c'; then $(CYGPATH_W) 'lash.c'; else $(CYGPATH_W) '$(srcdir)/lash.c'; fi` xjadeo-mqueue.o: mqueue.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-mqueue.o -MD -MP -MF $(DEPDIR)/xjadeo-mqueue.Tpo -c -o xjadeo-mqueue.o `test -f 'mqueue.c' || echo '$(srcdir)/'`mqueue.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-mqueue.Tpo $(DEPDIR)/xjadeo-mqueue.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mqueue.c' object='xjadeo-mqueue.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-mqueue.o `test -f 'mqueue.c' || echo '$(srcdir)/'`mqueue.c xjadeo-mqueue.obj: mqueue.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-mqueue.obj -MD -MP -MF $(DEPDIR)/xjadeo-mqueue.Tpo -c -o xjadeo-mqueue.obj `if test -f 'mqueue.c'; then $(CYGPATH_W) 'mqueue.c'; else $(CYGPATH_W) '$(srcdir)/mqueue.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-mqueue.Tpo $(DEPDIR)/xjadeo-mqueue.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mqueue.c' object='xjadeo-mqueue.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-mqueue.obj `if test -f 'mqueue.c'; then $(CYGPATH_W) 'mqueue.c'; else $(CYGPATH_W) '$(srcdir)/mqueue.c'; fi` xjadeo-display_mac.o: display_mac.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_mac.o -MD -MP -MF $(DEPDIR)/xjadeo-display_mac.Tpo -c -o xjadeo-display_mac.o `test -f 'display_mac.c' || echo '$(srcdir)/'`display_mac.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_mac.Tpo $(DEPDIR)/xjadeo-display_mac.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_mac.c' object='xjadeo-display_mac.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_mac.o `test -f 'display_mac.c' || echo '$(srcdir)/'`display_mac.c xjadeo-display_mac.obj: display_mac.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_mac.obj -MD -MP -MF $(DEPDIR)/xjadeo-display_mac.Tpo -c -o xjadeo-display_mac.obj `if test -f 'display_mac.c'; then $(CYGPATH_W) 'display_mac.c'; else $(CYGPATH_W) '$(srcdir)/display_mac.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_mac.Tpo $(DEPDIR)/xjadeo-display_mac.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_mac.c' object='xjadeo-display_mac.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_mac.obj `if test -f 'display_mac.c'; then $(CYGPATH_W) 'display_mac.c'; else $(CYGPATH_W) '$(srcdir)/display_mac.c'; fi` xjadeo-xjosc.o: xjosc.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-xjosc.o -MD -MP -MF $(DEPDIR)/xjadeo-xjosc.Tpo -c -o xjadeo-xjosc.o `test -f 'xjosc.c' || echo '$(srcdir)/'`xjosc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-xjosc.Tpo $(DEPDIR)/xjadeo-xjosc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xjosc.c' object='xjadeo-xjosc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-xjosc.o `test -f 'xjosc.c' || echo '$(srcdir)/'`xjosc.c xjadeo-xjosc.obj: xjosc.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-xjosc.obj -MD -MP -MF $(DEPDIR)/xjadeo-xjosc.Tpo -c -o xjadeo-xjosc.obj `if test -f 'xjosc.c'; then $(CYGPATH_W) 'xjosc.c'; else $(CYGPATH_W) '$(srcdir)/xjosc.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-xjosc.Tpo $(DEPDIR)/xjadeo-xjosc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xjosc.c' object='xjadeo-xjosc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-xjosc.obj `if test -f 'xjosc.c'; then $(CYGPATH_W) 'xjosc.c'; else $(CYGPATH_W) '$(srcdir)/xjosc.c'; fi` xjadeo-display_sdl.o: display_sdl.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_sdl.o -MD -MP -MF $(DEPDIR)/xjadeo-display_sdl.Tpo -c -o xjadeo-display_sdl.o `test -f 'display_sdl.c' || echo '$(srcdir)/'`display_sdl.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_sdl.Tpo $(DEPDIR)/xjadeo-display_sdl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_sdl.c' object='xjadeo-display_sdl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_sdl.o `test -f 'display_sdl.c' || echo '$(srcdir)/'`display_sdl.c xjadeo-display_sdl.obj: display_sdl.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-display_sdl.obj -MD -MP -MF $(DEPDIR)/xjadeo-display_sdl.Tpo -c -o xjadeo-display_sdl.obj `if test -f 'display_sdl.c'; then $(CYGPATH_W) 'display_sdl.c'; else $(CYGPATH_W) '$(srcdir)/display_sdl.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-display_sdl.Tpo $(DEPDIR)/xjadeo-display_sdl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display_sdl.c' object='xjadeo-display_sdl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-display_sdl.obj `if test -f 'display_sdl.c'; then $(CYGPATH_W) 'display_sdl.c'; else $(CYGPATH_W) '$(srcdir)/display_sdl.c'; fi` xjadeo-ltc-jack.o: ltc-jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-ltc-jack.o -MD -MP -MF $(DEPDIR)/xjadeo-ltc-jack.Tpo -c -o xjadeo-ltc-jack.o `test -f 'ltc-jack.c' || echo '$(srcdir)/'`ltc-jack.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-ltc-jack.Tpo $(DEPDIR)/xjadeo-ltc-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ltc-jack.c' object='xjadeo-ltc-jack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-ltc-jack.o `test -f 'ltc-jack.c' || echo '$(srcdir)/'`ltc-jack.c xjadeo-ltc-jack.obj: ltc-jack.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -MT xjadeo-ltc-jack.obj -MD -MP -MF $(DEPDIR)/xjadeo-ltc-jack.Tpo -c -o xjadeo-ltc-jack.obj `if test -f 'ltc-jack.c'; then $(CYGPATH_W) 'ltc-jack.c'; else $(CYGPATH_W) '$(srcdir)/ltc-jack.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjadeo-ltc-jack.Tpo $(DEPDIR)/xjadeo-ltc-jack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ltc-jack.c' object='xjadeo-ltc-jack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjadeo_CFLAGS) $(CFLAGS) -c -o xjadeo-ltc-jack.obj `if test -f 'ltc-jack.c'; then $(CYGPATH_W) 'ltc-jack.c'; else $(CYGPATH_W) '$(srcdir)/ltc-jack.c'; fi` xjinfo-avinfo.o: avinfo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjinfo_CFLAGS) $(CFLAGS) -MT xjinfo-avinfo.o -MD -MP -MF $(DEPDIR)/xjinfo-avinfo.Tpo -c -o xjinfo-avinfo.o `test -f 'avinfo.c' || echo '$(srcdir)/'`avinfo.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjinfo-avinfo.Tpo $(DEPDIR)/xjinfo-avinfo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='avinfo.c' object='xjinfo-avinfo.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjinfo_CFLAGS) $(CFLAGS) -c -o xjinfo-avinfo.o `test -f 'avinfo.c' || echo '$(srcdir)/'`avinfo.c xjinfo-avinfo.obj: avinfo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjinfo_CFLAGS) $(CFLAGS) -MT xjinfo-avinfo.obj -MD -MP -MF $(DEPDIR)/xjinfo-avinfo.Tpo -c -o xjinfo-avinfo.obj `if test -f 'avinfo.c'; then $(CYGPATH_W) 'avinfo.c'; else $(CYGPATH_W) '$(srcdir)/avinfo.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xjinfo-avinfo.Tpo $(DEPDIR)/xjinfo-avinfo.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='avinfo.c' object='xjinfo-avinfo.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xjinfo_CFLAGS) $(CFLAGS) -c -o xjinfo-avinfo.obj `if test -f 'avinfo.c'; then $(CYGPATH_W) 'avinfo.c'; else $(CYGPATH_W) '$(srcdir)/avinfo.c'; fi` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS paths.h: Makefile @echo '#define BINDIR "$(DESTDIR)/$(bindir)/"' >$@ @echo '#define SYSCONFDIR "$(DESTDIR)/$(sysconfdir)/"' >>$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/src/xjadeo/display_sdl.c0000644000175000017500000004024512155240514014437 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * * this file was inspired by playdv source code of http://libdv.sourceforge.net/. * - (c) 2000 Charles 'Buck' Krasic * - (c) 2000 Erik Walthinsen * */ #include "xjadeo.h" #include "display.h" extern long ts_offset; extern char *smpte_offset; extern int force_redraw; // tell the main event loop that some cfg has changed extern int interaction_override; // disable some options. extern double framerate; void jackt_toggle(); void jackt_rewind(); void calc_letterbox(int src_w, int src_h, int out_w, int out_h, int *sca_w, int *sca_h); void resized_sdl (); /******************************************************************************* * SDL */ #ifdef HAVE_SDL #define MYSDLFLAGS (SDL_HWSURFACE | SDL_RESIZABLE | SDL_DOUBLEBUF) SDL_Surface* sdl_screen; SDL_Overlay *sdl_overlay; SDL_Rect sdl_rect; SDL_Rect sdl_dest_rect; int sdl_pic_format= SDL_YV12_OVERLAY; // fourcc int full_screen_width = 1024; int full_screen_height = 768; void close_window_sdl(void) { if(sdl_overlay) SDL_FreeYUVOverlay(sdl_overlay); SDL_Quit(); } int open_window_sdl (void) { const SDL_VideoInfo *video_info; int video_bpp; if(SDL_Init(SDL_INIT_VIDEO) < 0) goto no_sdl; /* Get the "native" video mode */ video_info = SDL_GetVideoInfo(); switch (video_info->vfmt->BitsPerPixel) { case 16: case 32: video_bpp = video_info->vfmt->BitsPerPixel; break; default: video_bpp = 16; break; } full_screen_width = video_info->current_w; full_screen_height = video_info->current_h; sdl_rect.x = 0; sdl_rect.y = 0; sdl_rect.h = ffctv_height; sdl_rect.w = ffctv_width; sdl_screen = SDL_SetVideoMode(sdl_rect.w, sdl_rect.h, video_bpp,MYSDLFLAGS); SDL_WM_SetCaption("xjadeo", "xjadeo"); // FIXME: on linux the SDL_*_OVERLAY are defined as FOURCC numbers rather than beeing abstract // so we could try other ffmpeg/lqt compatible 420P formats as I420 (0x30323449) sdl_overlay = SDL_CreateYUVOverlay(movie_width, movie_height, 0x30323449, sdl_screen); sdl_pic_format=0x30323449; if(!sdl_overlay || (!sdl_overlay->hw_overlay)) { sdl_overlay = SDL_CreateYUVOverlay(movie_width, movie_height, SDL_YV12_OVERLAY, sdl_screen); sdl_pic_format=SDL_YV12_OVERLAY; } if((!sdl_overlay)) fprintf(stderr, "NO OVERLAY\n"); if((!sdl_overlay || SDL_LockYUVOverlay(sdl_overlay)<0)) { printf("OVERLAY error.\n"); goto no_overlay; } resized_sdl(); if (sdl_overlay->pitches[0] != movie_width || sdl_overlay->pitches[1] != sdl_overlay->pitches[2] ) { fprintf(stderr,"unsupported SDL YV12.\n"); goto no_overlay; } #if 0 // verify YUV alignment if ((sdl_overlay->pixels[1] - sdl_overlay->pixels[0]) != ( movie_width * movie_height) || (sdl_overlay->pixels[2] - sdl_overlay->pixels[1]) != ( movie_width * movie_height /4) ) { printf("unsupported SDL YV12 pixel buffer alignment.\n"); goto no_overlay; } #endif /* SDL_Surface* icon = SDL_LoadBMP(iconName)); SDL_WM_SetIcon(icon, NULL); */ return(0); no_overlay: if(sdl_overlay) SDL_FreeYUVOverlay(sdl_overlay); SDL_Quit(); no_sdl: return 1; } void black_border_sdl(SDL_Rect b) { //printf(" bb: +%i+%i %i %i\n", b.x, b.y, b.w, b.h); SDL_FillRect(sdl_screen, &b, SDL_MapRGB(sdl_screen->format, 0,0,0)); SDL_UpdateRect(sdl_screen, b.x, b.y, b.w, b.h); } void resized_sdl () { if (!want_letterbox) { memcpy(&sdl_dest_rect, &sdl_rect, sizeof (SDL_Rect)); return; } /* want letterbox: */ int dw,dh; calc_letterbox(movie_width, movie_height, sdl_rect.w, sdl_rect.h, &dw, &dh); sdl_dest_rect.w = dw; sdl_dest_rect.h = dh; sdl_dest_rect.x = (sdl_rect.w - sdl_dest_rect.w)/2; sdl_dest_rect.y = (sdl_rect.h - sdl_dest_rect.h)/2; #if 0 SDL_FillRect(sdl_screen, &sdl_rect, SDL_MapRGB(sdl_screen->format, 0,0,0)); SDL_UpdateRect(sdl_screen, sdl_rect.x, sdl_rect.y, sdl_rect.w, sdl_rect.h); #else SDL_Rect b; if (sdl_dest_rect.y >0 ){ b.x=0;b.y=0; b.w=sdl_rect.w; b.h=sdl_dest_rect.y; black_border_sdl(b); b.x=0;b.y=sdl_rect.h - sdl_dest_rect.y; b.w=sdl_rect.w; b.h=sdl_dest_rect.y; black_border_sdl(b); } if (sdl_dest_rect.x >0 ){ b.x=0;b.y=0; b.w=sdl_dest_rect.x; b.h=sdl_rect.h; black_border_sdl(b); b.x=sdl_rect.w - sdl_dest_rect.x;b.y=0; b.w=sdl_dest_rect.x; b.h=sdl_rect.h; black_border_sdl(b); } #endif } void mousecursor_sdl(int action) { static int sdl_mouse = 1; if (action==2) sdl_mouse^=1; else sdl_mouse=action?1:0; SDL_ShowCursor(sdl_mouse); } void resize_sdl (unsigned int x, unsigned int y) { sdl_screen = SDL_SetVideoMode(x, y, 0, MYSDLFLAGS); sdl_rect.w=x; sdl_rect.h=y; resized_sdl(); force_redraw=1; } void getsize_sdl (unsigned int *x, unsigned int *y) { if(x) *x = sdl_rect.w; if(y) *y = sdl_rect.h; } void get_window_pos_sdl (unsigned int *x, unsigned int *y) { SDL_SysWMinfo info; SDL_VERSION(&info.version); if (!( SDL_GetWMInfo(&info) > 0 )) { return; } #ifdef HAVE_WINDOWS WINDOWINFO w; GetWindowInfo(info.window, &w); *x= w.rcWindow.left; *y= w.rcWindow.top; //*w= w.rcWindow.right - w.rcWindow.left; //*h= w.rcWindow.bottom - w.rcWindow.top; printf("%ld - %ld\n", w.rcWindow.left, w.rcWindow.top); #endif #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2) if ( info.subsystem == SDL_SYSWM_X11 ) { Window dummy; int xx,xy; info.info.x11.lock_func(); XTranslateCoordinates(info.info.x11.display, info.info.x11.wmwindow, info.info.x11.fswindow, 0, 0, &xx, &xy, &dummy); // TODO recurse until dummy!=None info.info.x11.unlock_func(); *x= xx; *y= xy; } #endif } void position_sdl(int x, int y) { SDL_SysWMinfo info; SDL_VERSION(&info.version); if ( SDL_GetWMInfo(&info) > 0 ) { #ifdef HAVE_WINDOWS SetWindowPos(info.window, NULL, x, y, sdl_rect.w, sdl_rect.h, 0); #endif #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2) if ( info.subsystem == SDL_SYSWM_X11 ) { info.info.x11.lock_func(); #if 0 /* get root window size -> center window */ int x, y; int w, h; w = DisplayWidth(info.info.x11.display, DefaultScreen(info.info.x11.display)); h = DisplayHeight(info.info.x11.display, DefaultScreen(info.info.x11.display)); x = (w - screen->w)/2; y = (h - screen->h)/2; #endif XMoveWindow(info.info.x11.display, info.info.x11.wmwindow, x, y); info.info.x11.unlock_func(); } #endif } } void render_sdl (uint8_t *mybuffer) { /* http://www.fourcc.org/indexyuv.htm */ size_t Ylen= movie_width * movie_height; size_t UVlen= movie_width/2 * movie_height/2; // decode ffmpeg - YUV uint8_t *Yptr=mybuffer; uint8_t *Uptr=Yptr + Ylen; uint8_t *Vptr=Uptr + UVlen; if (sdl_pic_format == SDL_YV12_OVERLAY) { // encode SDL YV12 stride_memcpy(sdl_overlay->pixels[0],Yptr,movie_width,movie_height,sdl_overlay->pitches[0],movie_width);//Y stride_memcpy(sdl_overlay->pixels[1],Vptr,movie_width/2,movie_height/2,sdl_overlay->pitches[1],movie_width/2);//V stride_memcpy(sdl_overlay->pixels[2],Uptr,movie_width/2,movie_height/2,sdl_overlay->pitches[2],movie_width/2);//U } else { // encode SDL YUV stride_memcpy(sdl_overlay->pixels[0],Yptr,movie_width,movie_height,sdl_overlay->pitches[0],movie_width);//Y stride_memcpy(sdl_overlay->pixels[1],Uptr,movie_width/2,movie_height/2,sdl_overlay->pitches[1],movie_width/2);//U stride_memcpy(sdl_overlay->pixels[2],Vptr,movie_width/2,movie_height/2,sdl_overlay->pitches[2],movie_width/2);//V } SDL_UnlockYUVOverlay(sdl_overlay); SDL_DisplayYUVOverlay(sdl_overlay, &sdl_dest_rect); SDL_LockYUVOverlay(sdl_overlay); } int sdl_full_screen =0; SDL_Rect sdl_oldsize; int sdl_get_fullscreen () { return (sdl_full_screen); } void sdl_toggle_fullscreen(int action) { if (sdl_full_screen && action !=1) { sdl_rect.w=sdl_oldsize.w; sdl_rect.h=sdl_oldsize.h; sdl_screen = SDL_SetVideoMode(sdl_rect.w, sdl_rect.h, 0, MYSDLFLAGS); sdl_full_screen=0; // dv_center_window(sdl_screen); } else if (!sdl_full_screen && action !=0) { sdl_oldsize.w=sdl_rect.w; sdl_oldsize.h=sdl_rect.h; sdl_rect.w= full_screen_width; sdl_rect.h= full_screen_height; sdl_screen = SDL_SetVideoMode(sdl_rect.w, sdl_rect.h, 0, (MYSDLFLAGS & ~SDL_RESIZABLE) | SDL_FULLSCREEN ); sdl_full_screen=1; } resized_sdl(); } void calc_letterbox(int src_w, int src_h, int out_w, int out_h, int *sca_w, int *sca_h) { const float asp_src = movie_aspect?movie_aspect:(float)src_w/src_h; if (asp_src * out_h > out_w) { (*sca_w)=out_w; (*sca_h)=(int)round((float)out_w/asp_src); } else { (*sca_h)=out_h; (*sca_w)=(int)round((float)out_h*asp_src); } } void newsrc_sdl (void) { if(sdl_overlay) SDL_FreeYUVOverlay(sdl_overlay); sdl_overlay = SDL_CreateYUVOverlay(movie_width, movie_height, SDL_YV12_OVERLAY, sdl_screen); } void handle_X_events_sdl (void) { SDL_Event ev; unsigned int key; while (SDL_PollEvent(&ev)) { switch(ev.type){ case SDL_VIDEOEXPOSE: // SDL render event render_sdl(buffer); // printf("SDL render event.\n"); break; case SDL_QUIT: if ((interaction_override&OVR_QUIT_KEY) == 0) loop_flag=0; break; case SDL_KEYDOWN: key = ev.key.keysym.sym; if(ev.key.keysym.sym==SDLK_ESCAPE) { if ((interaction_override&OVR_QUIT_KEY) == 0) { loop_flag=0; } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if(ev.key.keysym.sym==SDLK_q) { if ((interaction_override&OVR_QUIT_KEY) == 0) { loop_flag=0; } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); } } else if(ev.key.keysym.sym==SDLK_s) { OSD_mode^=OSD_SMPTE; force_redraw=1; } else if(ev.key.keysym.sym==SDLK_a) { // TODO always on top } else if(ev.key.keysym.sym==SDLK_f) { sdl_toggle_fullscreen(2); } else if(ev.key.keysym.sym==SDLK_l) { want_letterbox=!want_letterbox; resized_sdl(); force_redraw=1; } else if(ev.key.keysym.sym==SDLK_m) { mousecursor_sdl(2); } else if(ev.key.keysym.sym==SDLK_s) { OSD_mode^=OSD_SMPTE; force_redraw=1; } else if(ev.key.keysym.sym==SDLK_v) { OSD_mode^=OSD_FRAME; force_redraw=1; } else if(ev.key.keysym.sym==SDLK_b) { OSD_mode^=OSD_BOX; force_redraw=1; } else if(ev.key.keysym.sym== SDLK_c && ev.key.keysym.mod&KMOD_SHIFT) { OSD_mode=0; force_redraw=1; } else if(ev.key.keysym.sym== SDLK_LESS || (ev.key.keysym.sym== SDLK_COMMA && ev.key.keysym.mod&KMOD_SHIFT) ) { // '<' unsigned int my_Width,my_Height; getsize_sdl(&my_Width,&my_Height); float step=0.2*my_Height; my_Width-=floor(step*movie_aspect); my_Height-=step; resize_sdl(my_Width, my_Height); } else if(ev.key.keysym.sym== SDLK_GREATER || (ev.key.keysym.sym== SDLK_PERIOD && ev.key.keysym.mod&KMOD_SHIFT) ) { // '>' unsigned int my_Width,my_Height; getsize_sdl(&my_Width,&my_Height); float step=0.2*my_Height; my_Width+=floor(step*movie_aspect); my_Height+=step; resize_sdl(my_Width, my_Height); } else if(ev.key.keysym.sym==SDLK_PERIOD) { resize_sdl(ffctv_width, ffctv_height); } else if(ev.key.keysym.sym== SDLK_COMMA) { // ',' unsigned int my_Width,my_Height; getsize_sdl(&my_Width,&my_Height); if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=rint((float)my_Height * movie_aspect); else my_Height=rint((float)my_Width / movie_aspect); resize_sdl(my_Width, my_Height); } else if(ev.key.keysym.sym==SDLK_o) { if (OSD_mode&OSD_OFFF) { OSD_mode&=~OSD_OFFF; OSD_mode|=OSD_OFFS; } else if (OSD_mode&OSD_OFFS) { OSD_mode^=OSD_OFFS; } else { OSD_mode^=OSD_OFFF; } force_redraw=1; } else if(ev.key.keysym.sym== SDLK_EQUALS && ev.key.keysym.mod&KMOD_SHIFT) { // '+' SDLK_PLUS does not work :/ if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } ts_offset++; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if(ev.key.keysym.sym==SDLK_MINUS) { if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } ts_offset--; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if(ev.key.keysym.sym== SDLK_LEFTBRACKET && ev.key.keysym.mod&KMOD_SHIFT) { // '{' if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } if (framerate > 0) { ts_offset-= framerate *60; } else { ts_offset-= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } else if(ev.key.keysym.sym== SDLK_RIGHTBRACKET&& ev.key.keysym.mod&KMOD_SHIFT) { // '}' if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); break; } if (framerate > 0) { ts_offset+= framerate *60; } else { ts_offset+= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); #ifdef CROPIMG } else if(ev.key.keysym.sym== SDLK_LEFTBRACKET) { // '[' } else if(ev.key.keysym.sym== SDLK_RIGHTBRACKET) { // ']' #endif } else if(ev.key.keysym.sym== SDLK_BACKSPACE) { if ((interaction_override&OVR_JCONTROL) == 0) jackt_rewind(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # backspace", 0xff08); } else if(ev.key.keysym.sym== SDLK_SPACE) { if ((interaction_override&OVR_JCONTROL) == 0) jackt_toggle(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # space", 0x0020); } else { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) key); //printf("SDL key event: %x\n", ev.key.keysym.sym); } break; case SDL_VIDEORESIZE: sdl_screen = SDL_SetVideoMode(ev.resize.w, ev.resize.h, 0, MYSDLFLAGS); sdl_rect.w=ev.resize.w; sdl_rect.h=ev.resize.h; force_redraw=1; resized_sdl(); break; case SDL_MOUSEBUTTONUP: if(ev.button.button == SDL_BUTTON_LEFT) { resize_sdl(ffctv_width, ffctv_height); } else #if 0 // fix aspect only on right-button and scroll. if(ev.button.button == SDL_BUTTON_WHEELUP || ev.button.button == SDL_BUTTON_WHEELDOWN || ev.button.button == SDL_BUTTON_RIGHT) #endif { unsigned int my_Width,my_Height; getsize_sdl(&my_Width,&my_Height); if(ev.button.button == SDL_BUTTON_WHEELUP) { float step=sqrt((float)my_Height); my_Width-=floor(step*movie_aspect); my_Height-=step; } if(ev.button.button == SDL_BUTTON_WHEELDOWN) { float step=sqrt((float)my_Height); my_Width+=floor(step*movie_aspect); my_Height+=step; } // resize to match movie aspect ratio if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=floor((float)my_Height * movie_aspect); else my_Height=floor((float)my_Width / movie_aspect); resize_sdl(my_Width,my_Height); } break; case SDL_ACTIVEEVENT: /** Application loses/gains visibility */ /* TODO disable rendering when inactive */ break; case SDL_MOUSEMOTION: break; default: /* unhandled event */ //printf("SDL EVENT: %x\n", ev.type ); break; } } } #endif /* HAVE_SDL */ xjadeo-0.7.6/src/xjadeo/remote.h0000644000175000017500000000500012155114162013415 00000000000000void xapi_printversion(void *d); void xapi_open(void *d); void xapi_close(void *d); void xapi_close_window(void *d); void xapi_set_videomode(void *d); void xapi_open_window(void *d); void xapi_pvideomode(void *d); void xapi_lvideomodes(void *d); void xapi_pletterbox(void *d); void xapi_sletterbox(void *d); void xapi_pwinpos(void *d); void xapi_pwinsize(void *d); void xapi_saspect (void *d); void xapi_swinsize(void *d); void xapi_ontop(void *d); void xapi_fullscreen(void *d); void xapi_pontop(void *d); void xapi_pfullscreen(void *d); void xapi_mousepointer(void *d); void xapi_poverride(void *d); void xapi_soverride(void *d); void xapi_swinpos(void *d); void xapi_exit(void *d); void xapi_quit(void *d); void xapi_pfilename(void *d); void xapi_pduration(void *d); void xapi_pframerate(void *d); void xapi_pframes(void *d); void xapi_poffset(void *d); void xapi_ptimescale(void *d); void xapi_ploop(void *d); void xapi_pseekmode (void *d); void xapi_sseekmode (void *d); void xapi_pmwidth(void *d); void xapi_pmheight(void *d); void xapi_soffset(void *d); void xapi_stimescale(void *d); void xapi_sloop(void *d); void xapi_sreverse(void *d); void xapi_pposition(void *d); void xapi_psmpte(void *d); void xapi_seek(void *d); void xapi_pfps(void *d); void xapi_sfps(void *d); void xapi_sframerate(void *d); void xapi_jack_status(void *d); void xapi_ltc_status(void *d); void xapi_open_ltc(void *d); void xapi_close_ltc(void *d); void xapi_open_jack(void *d); void xapi_close_jack(void *d); void xapi_osd_smpte(void *d); void xapi_osd_frame(void *d); void xapi_osd_off(void *d); void xapi_osd_on(void *d); void xapi_osd_text(void *d); void xapi_osd_font(void *d); void xapi_osd_nobox(void *d); void xapi_osd_box(void *d); void xapi_osd_avail(void *d); void xapi_osd_mode(void *d); void xapi_posd(void *d); void xapi_psync(void *d); void xapi_osd_pos(void *d); void xapi_midi_status(void *d); void xapi_smididriver(void *d); void xapi_open_midi(void *d); void xapi_reopen_midi(void *d); void xapi_close_midi(void *d); void xapi_detect_midi(void *d); void xapi_pmidilibrary (void *d); void xapi_pmidiclk(void *d); void xapi_smidiclk(void *d); void xapi_pmidisync(void *d); void xapi_smidisync(void *d); void xapi_bidir_alloff(void *d); void xapi_bidir_loop(void *d); void xapi_bidir_noloop(void *d); void xapi_bidir_frame(void *d); void xapi_bidir_noframe(void *d); void xapi_bidir_settings(void *d); void xapi_bidir_nosettings(void *d); void xapi_bidir_keyboard(void *d); void xapi_bidir_nokeyboard(void *d); void xapi_ping(void *d); void xapi_null(void *d); xjadeo-0.7.6/src/xjadeo/main.c0000644000175000017500000006071412133254455013064 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * Credits: * * xjadeo: (c) 2006 - 2012 * Luis Garrido * Robin Gareus * * XLib code: * http://www.ac3.edu.au/SGI_Developer/books/XLib_PG/sgi_html/index.html * * WM_DELETE_WINDOW code: * http://biology.ncsa.uiuc.edu/library/SGI_bookshelves/SGI_Developer/books/OpenGL_Porting/sgi_html/apf.html * * ffmpeg code: * http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html * */ #define EXIT_FAILURE 1 #include "xjadeo.h" #ifdef OLD_FFMPEG #include // needed for PIX_FMT #include #else #include // needed for PIX_FMT #include #endif #include #include #include #include #include //------------------------------------------------ // Globals //------------------------------------------------ // Display loop /* int loop_flag: main xjadeo event loop * if loop_flag is set to 0, xjadeo will exit */ int loop_flag = 1; /* int loop_run: video update enable * if set to 0 no smpte will be polled and * no video frame updates are performed. */ int loop_run = 1; // Video Decoder int movie_width = 320; int movie_height = 180; int ffctv_width = 320; int ffctv_height = 180; float movie_aspect = 320.0 / 180.0; AVFormatContext *pFormatCtx = NULL; int videoStream = -1; AVCodecContext *pCodecCtx = NULL; AVFrame *pFrame = NULL; AVFrame *pFrameFMT = NULL; uint8_t *buffer = NULL; int render_fmt = PIX_FMT_YUV420P; ///< needs to be set before calling movie_open /* Video File Info */ double duration = 1; double framerate = 1; long frames = 1; int64_t file_frame_offset = 0; /* Option flags and variables */ char *current_file = NULL; char *smpte_offset = NULL; long ts_offset = 0; long userFrame = 0; // seek to this frame if jack and midi are N/A long dispFrame = 0; // global strorage... = (SMPTE+offset) with boundaries to [0..movie_file_frames] int force_redraw = 0; int interaction_override = 0; // disable some options. /* 1 (bit 0) : ignore 'q' and 'ESC' quit key * 2 (bit 1) : igore window-manager close button * 4 (bit 2) : ignore OSX-Menu QUIT * 8 (bit 3) : ignore left-mouse click * 16(bit 4) : disable '+' '-' '{' '}' offset keys */ int want_quiet =0; /* --quiet, --silent */ int want_debug =0; /* -D --debug (hidden option) */ int want_verbose =0; /* --verbose */ int want_avverbose =0; /* --avverbose */ int want_genpts =0; /* --genpts */ int want_ignstart =0; /* --ignorefileoffset */ int want_nosplash =0; /* --nosplash */ int start_ontop =0; /* --ontop // -a */ int start_fullscreen =0;/* --fullscreen // -s */ int want_letterbox =0; /* --letterbox -b */ int want_dropframes =0; /* --dropframes -N -- force using drop-frame timecode */ int want_autodrop =1; /* --nodropframes -n (hidden option) -- allow using drop-frame timecode */ int avoid_lash =0; /* --nolash */ int remote_en =0; /* --remote, -R */ int osc_port =0; /* --osc, -O */ int mq_en =0; /* --mq, -Q */ char *ipc_queue = NULL; /* --ipc, -W */ int remote_mode =0; /* 0: undirectional ; >0: bidir * bitwise enable async-messages * so far only: * (1) notify timecode * (2) notify changed timecode */ int try_codec =0; /* --try-codec */ #ifdef HAVE_MIDI char midiid[128] = "-2";/* --midi # -1: autodetect -2: jack-transport, -3: none/userFrame */ int midi_clkconvert =0; /* --midifps [0:MTC|1:VIDEO|2:RESAMPLE] */ char *midi_driver = NULL; /* --mididriver */ #endif int have_dropframes =0; /* detected from MTC; TODO: force to zero if jack or user TC */ int jack_clkconvert =1; /* --jackfps - NOT YET IMPLEMENTED [0:audio_frames_per_video_frame 1:video-file] */ int use_jack = 1; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) int use_ltc = 0; /* -l , --ltc */ #endif char *load_rc = NULL; char *load_movie = NULL; #ifdef JACK_SESSION char *jack_uuid = NULL; int jack_session_restore = 0; int js_winx = -1; int js_winy = -1; int js_winw = -1; int js_winh = -1; #endif #ifdef HAVE_LASH lash_client_t *lash_client; #endif #ifdef HAVE_MACOSX // mac GUI defaults int seekflags = SEEK_CONTINUOUS; #else int seekflags = SEEK_ANY; #endif int midi_clkadj =1; /* --midiclk */ double filefps = -1.0; // if > 0 override autodetected video file frame rate int videomode = 0; // --vo - default: autodetect double delay = -1; // use file's FPS // On screen display char OSD_fontfile[1024] = FONT_FILE; char OSD_text[128] = "xjadeo!"; char OSD_frame[48] = ""; char OSD_smpte[13] = ""; int OSD_mode = 0; int OSD_fx = OSD_CENTER; int OSD_tx = OSD_CENTER; int OSD_sx = OSD_CENTER; int OSD_fy = 5; // percent int OSD_sy = 98; // percent int OSD_ty = 50; // percent /* The name the program was run with, stripped of any leading path. */ char *program_name; // prototypes . static void usage (int status); static void printversion (void); static struct option const long_options[] = { {"quiet", no_argument, 0, 'q'}, {"silent", no_argument, 0, 'q'}, {"verbose", no_argument, 0, 'v'}, {"avverbose", no_argument, 0, 'A'}, {"genpts", no_argument, 0, 'P'}, {"ignorefileoffset", no_argument, 0, 'I'}, {"nofileoffset", no_argument, 0, 'I'}, {"nosplash", no_argument, 0, 'S'}, {"keyframes", no_argument, 0, 'k'}, {"continuous", required_argument, 0, 'K'}, {"offset", no_argument, 0, 'o'}, {"fps", required_argument, 0, 'f'}, {"filefps", required_argument, 0, 'F'}, {"videomode", required_argument, 0, 'x'}, {"vo", required_argument, 0, 'x'}, {"remote", no_argument, 0, 'R'}, {"mq", no_argument, 0, 'Q'}, {"ipc", required_argument, 0, 'W'}, {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'V'}, {"try-codec", no_argument, 0, 't'}, {"info", no_argument, 0, 'i'}, {"ontop", no_argument, 0, 'a'}, {"fullscreen", no_argument, 0, 's'}, {"nolash", required_argument, 0, 'L'}, {"dropframes", no_argument, 0, 'N'}, {"nodropframes", no_argument, 0, 'n'}, {"letterbox", no_argument, 0, 'b'}, {"midi", required_argument, 0, 'm'}, {"midifps", required_argument, 0, 'M'}, {"midi-driver", required_argument, 0, 'd'}, {"midiclk", no_argument, 0, 'C'}, {"no-midiclk", no_argument, 0, 'c'}, {"ltc", no_argument, 0, 'l'}, {"ttf-font", required_argument, 0, 'T'}, #ifdef JACK_SESSION {"uuid", required_argument, 0, 'U'}, {"rc", required_argument, 0, 'r'}, #endif #ifdef HAVE_LIBLO {"osc", required_argument, 0, 'O'}, #endif {"debug", no_argument, 0, 'D'}, {NULL, 0, NULL, 0} }; /* Set all the option flags according to the switches specified. Return the index of the first non-option argument. */ static int decode_switches (int argc, char **argv) { int c; while ((c = getopt_long (argc, argv, "q" /* quiet or silent */ "v" /* verbose */ "A" /* avverbose */ "P" /* genpts */ "I" /* ignorefileoffset */ "h" /* help */ "S" /* nosplash */ "R" /* stdio remote control */ "Q" /* POSIX rt-message queues */ "W:" /* IPC message queues */ "k" /* keyframes */ "K" /* anyframe */ "o:" /* offset */ "t" /* try-codec */ "T:" /* ttf-font */ "f:" /* fps */ "F:" /* file FPS */ "x:" /* video-mode */ "a" /* always on top */ "s" /* start in full-screen mode */ "i:" /* info - OSD-mode */ "b" /* letterbox */ "m:" /* midi interface */ "M:" /* midi clk convert */ "d:" /* midi driver */ "C" /* --midiclk */ "c" /* --no-midiclk */ "l" /* --ltc */ #ifdef JACK_SESSION "r:" /* --rc */ "U:" /* --uuid */ #endif "N" /* --dropframes */ "n" /* --nodropframes */ #ifdef HAVE_LIBLO "O:" /* --osc */ #endif "D" /* debug */ "L" /* no lash */ "V", /* version */ long_options, (int *) 0)) != EOF) { switch (c) { case 'q': /* --quiet, --silent */ want_quiet = 1; want_verbose = 0; want_avverbose = 0; break; case 'D': /* --debug */ want_debug = 1; break; case 'A': /* --avverbose */ want_avverbose = !remote_en; break; case 'v': /* --verbose */ want_verbose = !remote_en; break; case 'S': /* --nosplash */ want_nosplash = 1; break; case 'I': /* --ignorefileoffset */ want_ignstart++; break; case 'P': /* --avverbose */ want_genpts = 1; break; case 'R': /* --remote */ remote_en = 1; want_quiet = 1; want_verbose = 0; want_avverbose = 0; break; case 'Q': /* --mq */ mq_en = 1; break; case 'W': /* --ipc */ if (ipc_queue) free(ipc_queue); ipc_queue = strdup(optarg); break; case 'O': /* --avverbose */ osc_port=atoi(optarg); break; case 'n': /* --nodropframes */ want_autodrop = 0; break; case 'N': /* --dropframes */ want_dropframes = 1; break; case 'L': /* --nolash */ avoid_lash = 1; break; case 'b': /* --letterbox */ want_letterbox = 1; break; case 't': /* --try */ try_codec = 1; break; case 'i': /* --info */ OSD_mode=atoi(optarg)&3; if (!want_quiet) printf("On screen display: [%s%s%s] \n", (!OSD_mode)?"off": (OSD_mode&OSD_FRAME)?"frames":"", (OSD_mode&(OSD_FRAME|OSD_SMPTE))==(OSD_FRAME|OSD_SMPTE)?" ":"", (OSD_mode&OSD_SMPTE)?"SMPTE":"" ); break; case 'o': /* --offset */ // we don't know the file's framerate yet! smpte_offset=strdup(optarg); //ts_offset=smptestring_to_frame(optarg,0); //printf("set time offset to %li frames\n",ts_offset); break; case 'k': /* --keyframes */ seekflags=SEEK_KEY; printf("seeking to keyframes only\n"); break; case 'K': /* --anyframe */ seekflags=SEEK_CONTINUOUS; if (!want_quiet) #if LIBAVFORMAT_BUILD < 4617 printf("libavformat (ffmpeg) does not support continuous seeking...\n uprade your ffmpeg library and recompile xjadeo!\n"); #else printf("enabled continuous seeking..\n"); #endif break; case 'F': /* --filefps */ if(atof(optarg)>0) filefps = atof(optarg); // TODO: use av_parse_video_frame_rate() break; case 'f': /* --fps */ if(atof(optarg)>0) delay = 1.0 / atof(optarg); else delay = -1; // use file-framerate break; case 'x': /* --vo --videomode */ videomode = atoi(optarg); if (videomode == 0) videomode = parsevidoutname(optarg); break; #ifdef HAVE_MIDI case 'm': /* --midi */ strncpy(midiid,optarg,sizeof(midiid)); midiid[(sizeof(midiid)-1)]=0; break; case 'd': /* --midi-driver */ if (midi_driver) free(midi_driver); midi_driver = strdup(optarg); break; case 'M': /* --midifps */ midi_clkconvert = atoi(optarg); break; case 'C': /* --midiclk */ midi_clkadj = 1; break; case 'c': /* --no-midiclk */ midi_clkadj = 0; break; #else case 'm': /* --midi */ case 'd': /* --midi-driver */ case 'M': /* --midifps */ case 'C': /* --midiclk */ case 'c': /* --no-midiclk */ printf("This version of xjadeo is compiled without MIDI support\n"); break; #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) case 'l': /* --ltc */ use_ltc = 1; break; #else case 'l': /* --ltc */ printf("This version of xjadeo is compiled without LTC support\n"); break; #endif case 'U': /* --uuid */ #ifdef JACK_SESSION if (jack_uuid) free(jack_uuid); jack_uuid = strdup(optarg); #endif break; case 'r': /* --rc */ if (load_rc) free(load_rc); load_rc = strdup(optarg); break; case 'V': printversion(); exit(0); case 's': start_fullscreen=1; break; case 'a': start_ontop=1; break; case 'T': strcpy(OSD_fontfile, optarg); break; case 'h': usage (0); default: usage (EXIT_FAILURE); } } return optind; } static void usage (int status) { printf ("%s - \ jack video monitor\n", program_name); printf ("usage: %s [Options] \n", program_name); printf (" %s -R [Options] []\n", program_name); printf ("" "Options:\n" " -h, --help display this help and exit\n" " -V, --version print version information and exit\n" " -q, --quiet, --silent inhibit usual output\n" " -v, --verbose print more information\n" "\n" " -A, --avverbose dump ffmpeg messages.\n" " -a, --ontop stack xjadeo window on top of the desktop.\n" " requires x11 or xv videomode and EWMH.\n" " -b, --letterbox retain apect ratio when scaling (Xv only).\n" " -c, --no-midiclk ignore MTC quarter frames.\n" " -d , specify midi-driver to use. run 'xjadeo -V' to\n" " --midi-driver list supported driver(s). is not case-\n" " sensitive and can be shortened to the first unique\n" " name. eg '-d j' for jack, '-d alsa-r' for alsa-raw\n" " -f , --fps display update freq. - default -1 use file's fps\n" " -i , --info render OnScreenDisplay info: 0:off, %i:frame,\n" " %i:smpte, %i:both. (use remote ctrl for more opts.)\n" "", OSD_FRAME,OSD_SMPTE,OSD_FRAME|OSD_SMPTE); // :) printf ("" /* take a breath */ " -I, --ignorefileoffset set the beginning of the file to SMPTE zero.\n" " eg. override timestamps of split vob files.\n" " -k, --keyframes seek to keyframes only\n" " -K, --continuous decode video source continuously. (extra latency\n" " when seeking to non-key frames.)\n" #ifdef HAVE_LASH " -L, --nolash ignore the fact that xjadeo could use lash.\n" " --lash-no-autoresume [liblash option]\n" " --lash-no-start-server [liblash option]\n" #endif /* HAVE_LASH */ " -l, --ltc sync to LinearTimeCode (audio-jack).\n" #ifdef JACK_SESSION " -U, --uuid specify JACK-SESSION UUID.\n" #endif " -m , use MTC instead of jack-transport\n" " --midi argument is driver-specific:\n" " * jack-midi: specify midi-port name to connect to\n" " or \"\" to not auto-connect.\n" " * alsa-seq: specify id to connect to. (-1: none)\n" " eg. -m ardour or -m 80 \n" " * portmidi: numeric-id; -1: autodetect\n" " value > -1 specifies a (input) midi port to use\n" " use '-v -m -1' to list midi-ports.\n" " * alsa-raw: specify device-name \n" " eg. -m hw:1,0 or -m 1 \n" " -M , how to 'convert' MTC SMPTE to framenumber:\n" " --midifps 0: use framerate of MTC clock (default)\n" " 2: use video file FPS\n" " 3: \"resample\": videoFPS / MTC \n" /* - undocumented /hidden/ options " -n , --nodropframes parse MTC as announced, but do not use frame-drop\n" " algorithm for OSD - useful for debugging\n" " -N , --dropframes force the SMPTE converter to use the drop-frames\n" " algorithm. (Frame dropping is only useful in \n" " combination with a 29fps MIDI time source.\n" " MTC in 29.97-frame-drop format is automatically\n" " detected and it is illegal to use this algorithm\n" " for other framerates.) DO NOT USE THIS OPTION,\n" " unless you really know what you are doing.\n" */ " -o , --offset add/subtract video-frames to/from timecode\n" #ifdef HAVE_LIBLO " -O , --osc listen for OSC messages on given port.\n" #endif " -P , --genpts ffmpeg option - ignore timestamps in the file.\n" #ifdef HAVE_MQ " -Q, --mq set-up RT message queues for xjremote\n" #endif " -r , --rc .rc settings file to load.\n" " -R, --remote remote control (stdin) - implies non verbose&quiet\n" " -S, --nosplash do not display splash image on startup.\n" " -s, --fullscreen start xjadeo in fullscreen mode.\n" " requires x11 or xv videomode.\n" " -t, --try-codec checks if the video-file can be played by jadeo.\n" " exits with code 1 if the file is not supported.\n" " no window is opened in this mode.\n" " -T , \n" " --ttf-file path to .ttf font for on-screen-display\n" #ifdef HAVE_IPCMSG " -W, --ipc set-up IPC message queues for xjremote\n" #endif " -x , --vo , set the video output mode (default: 0 - autodetect\n" " --videomode -1 prints a list of available modes.\n" " \n" " Check the docs to learn how the video should be encoded.\n" ); exit (status); } static void printversion (void) { printf ("xjadeo "); printf ("version %s ", VERSION); #ifdef SUBVERSION if (strlen(SUBVERSION)>0 && strcmp(SUBVERSION, "exported")) { printf ("scm-%s ", SUBVERSION); } #endif printf ("[ "); #ifdef HAVE_LASH printf("LASH "); #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) printf("LTC "); #endif #ifdef JACK_SESSION printf("JACK-SESSION "); #endif #ifdef HAVE_MQ printf("POSIX-MQueue "); #elif defined HAVE_IPCMSG printf("IPC-MSG "); #endif printf("]\n compiled with ffmpeg: AVFORMAT=0x%x AVCODEC=0x%x\n", LIBAVFORMAT_BUILD, LIBAVCODEC_BUILD); printf(" MTC-MIDI: "); #ifndef HAVE_MIDI printf("disabled."); #else /* have Midi */ # ifdef HAVE_JACKMIDI printf("jack-midi "); # endif # ifdef ALSA_SEQ_MIDI printf("alsa-sequencer "); # endif # ifdef HAVE_PORTMIDI printf("portmidi "); # endif # ifdef ALSA_RAW_MIDI printf("alsa-raw "); # endif # if (defined ALSA_RAW_MIDI || defined HAVE_PORTMIDI || defined ALSA_SEQ_MIDI || defined HAVE_JACKMIDI) printf("(first listed is default)"); # else printf("no midi-driver available."); # endif #endif /* HAVE_MIDI */ printf("\n displays: " #if HAVE_LIBXV "Xv " #endif #ifdef HAVE_SDL "SDL " #endif #if HAVE_IMLIB "X11/imlib " #endif #if HAVE_IMLIB2 "X11/imlib2" # ifdef IMLIB2RGBA "(RGBA32) " # else "(RGB24) " # endif #endif #ifdef HAVE_MACOSX "OSX/quartz " #endif "\n" ); } void stat_osd_fontfile(void) { #ifdef HAVE_FT struct stat s; if (stat(OSD_fontfile, &s)==0 ) { if (want_verbose) fprintf(stdout,"OSD font file: %s\n",OSD_fontfile); return; } if (!want_quiet) fprintf(stderr,"no TTF font found. OSD will not be available until you set one.\n"); #endif } //-------------------------------------------- // Main //-------------------------------------------- void clean_up (int status) { if(remote_en) close_remote_ctrl(); #ifdef HAVE_MQ if(mq_en) close_mq_ctrl(); #elif defined HAVE_IPCMSG if(ipc_queue) { close_ipcmsg_ctrl(); free(ipc_queue); } #endif shutdown_osc(); close_window(); close_movie(); #ifdef HAVE_MIDI if (midi_driver) free(midi_driver); if (midi_connected()) midi_close(); else #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) close_ltcjack(); else #endif close_jack(); free_freetype(); if (smpte_offset) free(smpte_offset); if (load_rc) free(load_rc); if (load_movie) free(load_movie); if (!want_quiet) fprintf(stdout, "\nBye!\n"); exit(status); } void catchsig (int sig) { #ifndef HAVE_WINDOWS signal(SIGHUP, catchsig); /* reset signal */ signal(SIGINT, catchsig); //signal(SIGHUP, SIG_IGN); /* reset signal */ //signal(SIGINT, SIG_IGN); #endif if (!want_quiet) fprintf(stdout,"\n CAUGHT SIGINT - shutting down.\n"); loop_flag=0; clean_up(1); exit(1); } int main (int argc, char **argv) { int i; int lashed = 0; // did we get started by lashd ? char* movie= NULL; program_name = argv[0]; xjadeorc(); // read config files - default values before parsing cmd line. #ifdef __APPLE__ { if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { char **gArgv = (char **) malloc(sizeof (char *) * argc); int i; gArgv[0] = argv[0]; for (i=1;i 0) initialize_osc(osc_port); open_movie(movie); open_window(); // try fallbacks if window open failed in autodetect mode if (videomode==0 && getvidmode() ==0) { // re-use cmd-option variable as counter. if (want_verbose) printf("trying video driver fallbacks.\n"); while (getvidmode() ==0) { // check if window is open. videomode++; int tv=try_next_vidoutmode(videomode); if (tv<0) break; // no videomode found! if (want_verbose) printf("trying videomode: %i: %s\n",videomode,vidoutname(videomode)); if (tv==0) continue; // this mode is not available render_fmt = vidoutmode(videomode); open_window(); } } if (getvidmode() ==0) { fprintf(stderr,"Could not open display.\n"); if(!remote_en) { // && !mq_en && !ipc_queue) { /* TODO: allow windowless startup with MQ ?! */ #ifdef HAVE_MIDI if (midi_driver) free(midi_driver); if (midi_connected()) midi_close(); else #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) close_ltcjack(); else #endif close_jack(); exit(1); } } init_moviebuffer(); #ifdef HAVE_MIDI midi_choose_driver(midi_driver); #ifdef JACK_SESSION if (jack_uuid && !strcmp(midi_driver_name(), "JACK-MIDI")) { // don't auto-connect jack-midi on session restore. if (atoi(midiid) == 0) midiid[0]='\0'; } #endif if (atoi(midiid) >= -1 ) { if (!want_quiet) printf("using MTC as sync-source.\n"); midi_open(midiid); } else #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (use_ltc) { open_ltcjack(NULL); } else #endif { if (!want_quiet) printf("using JACK-transport as sync source.\n"); if (use_jack) open_jack(); } #ifdef HAVE_MQ if(mq_en) open_mq_ctrl(); #elif defined HAVE_IPCMSG if(ipc_queue) open_ipcmsg_ctrl(ipc_queue); #endif if(remote_en) open_remote_ctrl(); display_frame(0LL,1,1); splash(buffer); event_loop(); clean_up(0); return (0); } /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/xjadeo/xjremote.c0000644000175000017500000004525712200005456013770 00000000000000/* xj-five - message queues Copyright (C) 2006 Robin Gareus 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define EXIT_FAILURE 1 /* we'll use mq_timedreceive */ #define _XOPEN_SOURCE 600 #include #include #include #include #include #include #include #include #ifdef HAVE_CONFIG_H # include #endif #include "paths.h" static void usage (int status); static void printversion (void); char *program_name; int want_quiet = 0; /*< --quiet, --silent */ int want_verbose = 0; /*< --verbose */ int want_ping = 1; /*< --noping */ int want_unlink = 0; /*< --1:unlink mqueues on startup 2: and exit */ int want_nofork = 0; /*< --nofork ; donT launch xjadeo */ char *qid = NULL; /*< -I - name of the MQ */ int want_create = 0; /*< unused - only xjadeo create queues */ int xjr_mute = 1; /*< 1: mute all but '8xx' messages * 2: dont display any replies * 0: terminal mode */ static struct option const long_options[] = { {"quiet", no_argument, 0, 'q'}, {"silent", no_argument, 0, 'q'}, {"verbose", no_argument, 0, 'v'}, {"nofork", no_argument, 0, 'f'}, {"unlink", no_argument, 0, 'u'}, {"unlinkonly", no_argument, 0, 'U'}, {"id", required_argument, 0, 'I'}, {"noping", required_argument, 0, 'P'}, {"version", no_argument, 0, 'V'}, {NULL, 0, NULL, 0} }; static int decode_switches (int argc, char **argv) { int c; while ((c = getopt_long (argc, argv, "q" /* quiet or silent */ "v" /* verbose */ "h" /* help */ "R" /* remote - arg for xjadeo compatibilty */ "Q" /* remote - arg for xjadeo compatibilty */ "W:" /* remote - arg for xjadeo compatibilty */ "I:" /* queue id */ "f" /* nofork */ "u" /* unlink */ "U" /* unlinkonly */ "P" /* noping */ "V", /* version */ long_options, (int *) 0)) != EOF) { switch (c) { case 'q': /* --quiet, --silent */ want_quiet = 1; want_verbose = 0; break; case 'v': /* --verbose */ want_verbose = 1; break; case 'I': /* --id */ if (qid) free(qid); qid = strdup(optarg); break; case 'U': /* --unlinkonly */ want_unlink = 2; break; case 'u': /* --unlink */ want_unlink = 1; break; case 'f': /* --nofork */ want_nofork = 1; break; case 'P': /* --noping */ want_ping = 0; break; case 'R': case 'Q': case 'W': break; case 'V': printversion(); exit(0); break; case 'h': usage (0); default: usage (EXIT_FAILURE); } } /* while switch */ return optind; } static void usage (int status) { printf ("%s - jack video monitor remote control utility\n", program_name); printf ("usage: %s [Options]\n", program_name); printf ("" "Options:\n" " -h, --help display this help and exit\n" " -V, --version print version information and exit\n" " -f, --nofork connect only to already running instances and\n" " do NOT launch a new xjadeo if none found.\n" " -P, --noping do not check if xjadeo is alive. just connect.\n" " -q, --quiet, --silent inhibit usual output\n" " -I, --id specify queue id.\n" " -u, --unlink remove existing queues\n" " -U, --unlinkonly remove queues and exit\n" " NOTE: active connections will not be affected by an\n" " unlink event.\n" " \n"); exit (status); } static void printversion (void) { printf ("xjremote version %s\n", VERSION); } /* check if file is executable */ int testexec (char *filename) { struct stat s; if (!filename) return (0); int result= stat(filename, &s); if (result != 0) return 0; /* stat() failed */ #ifdef HAVE_WINDOWS return(1); #else if (!S_ISREG(s.st_mode) && !S_ISLNK(s.st_mode)) return 0; /* is not a regular file */ if (s.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) return 1; /* is executable */ return(0); #endif } // flags: bit0 (1): close stdio // bit1 (2): fork xjadeo -R (otherwise '-Q' if bit2 is unset) // bit2 (4): fork xjadeo -W queuefile void execjadeo(int flags, char *queuefile) { char *xjadeo = getenv("XJADEO"); if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = BINDIR "xjadeo"; if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = "/Applications/Jadeo.app/Contents/MacOS/Jadeo"; // OSX if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = "./xjadeo"; // XXX DEVEL svn:trunk/src/xjadeo if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = "src/xjadeo/xjadeo"; // XXX DEVEL svn:trunk/ if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = "../xjadeo/xjadeo"; // XXX DEVEL svn:trunk/src/qt-qui if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (!xjadeo) xjadeo = "./bin/xjadeo"; // XXX ~/ -> use env("HOME") if (!testexec(xjadeo)) { printf("# xjadeo executable not found in : %s\n",xjadeo?xjadeo:"(?)"); xjadeo=NULL; } if (xjadeo) { printf("# executing: %s\n",xjadeo); if (flags&1) { close(0); dup2(open("/dev/null", 0), 1); dup2(open("/dev/null", 0), 2); } if (flags&4) execl(xjadeo,"xjadeo", "-q", "-W", queuefile, NULL); else if (flags&2) execl(xjadeo,"xjadeo", "-R", NULL); else execl(xjadeo,"xjadeo", "-Q", "-q", NULL); } else { printf("# no xjadeo executable found. try to set the XJADEO env. variable\n"); } } #ifdef HAVE_WINDOWS #else void forkjadeo (void) { // TODO create remote-mqID and set pass it to xjadeo. // check: is there a way to list mq's apart from mounting /dev/mqueue ?? printf("# launching a new xjadeo instance for you..\n"); pid_t pid = fork(); switch (pid) { case -1: fprintf(stderr,"fork failed\n"); exit(-1); case 0: execjadeo(1, NULL); fprintf(stdout,"# exec failed.\n"); exit(0); default: fprintf(stdout,"# connecting to xjadeo...\n"); } } #endif //-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #include #include #include #ifdef HAVE_WINDOWS #include #else #include #endif #include #define REMOTE_RX fileno(stdin) int xjselect (int sec) { #ifdef HAVE_WINDOWS DWORD bytesAvail = 0; HANDLE h = GetStdHandle(STD_INPUT_HANDLE); PeekNamedPipe(h, 0, 0, 0, &bytesAvail, 0); if (bytesAvail > 0) return (1); return(0); #else fd_set fd; int max_fd=0; struct timeval tv = { 0, 0 }; tv.tv_sec = sec; tv.tv_usec = 0; FD_ZERO(&fd); FD_SET(REMOTE_RX,&fd); max_fd=(REMOTE_RX+1); if (select(max_fd, &fd, NULL, NULL, &tv)) return(1); return(0); #endif } //-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #ifdef HAVE_MQ #include #include #include extern int errno; /* xjadeo mq message X-change format * * currently this acts a dumb stdio wrapper * with a maxmsg of 255 bytes. * * sooner or later remote.c commands will be parsed here * (readline) and xjadeo will drop the text-remote-ctl in favor of * fast message queues.. * */ typedef struct { int cmd; char m[MQLEN]; } mqmsg; // globals shared between threads int loop_flag = 1; int ping_st =0; int pong_st =0; struct timeval ping_time,pong_time; #define REMOTE_TX fileno(stdout) void *read_thread (void *d) { mqd_t mqfd; char *msg_buffer; int timeout_cnt = 0; struct mq_attr mqat; char qname[64]; snprintf(qname,64,"/xjadeo-reply%s%s", d?"-":"", d?(char*)d:""); printf("# STARTING reply receiver: mqID=%s\n",d?qname+13:"[default]"); mqfd = mq_open(qname, O_RDONLY | O_CREAT, S_IRWXU , NULL); if (mqfd == -1) { perror("mq_open failure:"); return(NULL); }; if (mq_getattr(mqfd, &mqat) == -1) { perror("mq_getattr error:"); return(NULL); }; msg_buffer = malloc(mqat.mq_msgsize); while (loop_flag) { int printit; struct timeval tv; struct timespec to; gettimeofday(&tv,NULL); to.tv_sec=tv.tv_sec + 2 ; to.tv_nsec= (long) tv.tv_usec * 1000L; #if 0 if (timeout_cnt == 25 ) { ping(.); } else if (timeout_cnt > 30 ) { timeout=0; fprintf(stdout,"# no live signs from xjadeo.\n"); } #endif int num_bytes_received = mq_timedreceive(mqfd, msg_buffer, mqat.mq_msgsize, 0, &to); if (num_bytes_received == -1 && errno==ETIMEDOUT) { timeout_cnt++; continue; } if (num_bytes_received == -1) { perror("mq_receive failure on mqfd"); #if 0 usleep(40000); continue; #else loop_flag = 0; break; #endif } if (num_bytes_received != sizeof(mqmsg) ) { if (!want_quiet) // display anyway ? warning ?? fprintf(stderr,"MQ: received garbage message\n"); continue; } timeout_cnt=0; printit = !xjr_mute; mqmsg *mymsg = (mqmsg*) &msg_buffer[0]; if ( xjr_mute==0 && mymsg->cmd == 100 && !strncmp(mymsg->m,"quit.",5)) { if (want_verbose) printf("# xjadeo terminated. we will follow.\n"); loop_flag=0; } else if ( mymsg->cmd == 100 && !strncmp(mymsg->m,"pong.",5) && ping_st && !pong_st) { printit=0; pong_st=1; gettimeofday(&pong_time,NULL); } else if ( mymsg->cmd/100 == 8 && xjr_mute<2) { printit=1; } if (printit) { #if 1 char tmp[8+MQLEN]; snprintf (tmp,(MQLEN+8),"@%d %s", mymsg->cmd, mymsg->m); // newline is part of data payload. (void) write(REMOTE_TX,tmp,strlen(tmp)); #else printf ("@%d %s", mymsg->cmd, mymsg->m); // newline is part of data payload. fflush(stdout); #endif } } if (want_verbose) printf ("# SHUTTING DOWN receiver thread.\n"); mq_close(mqfd); return (NULL); } void unlink_queues (char *queueid) { char qname[64]; if (!want_quiet) printf("# unlinking queue mqID=%s\n",queueid?qname+15:"[default]"); snprintf(qname,64,"/xjadeo-request%s%s", queueid?"-":"", queueid?queueid:""); mq_unlink(qname); snprintf(qname,64,"/xjadeo-reply%s%s", queueid?"-":"", queueid?queueid:""); mq_unlink(qname); } void ping (mqd_t mqfd_tx) { if (ping_st) return; ping_st=1; pong_st=0; gettimeofday(&ping_time,NULL); // send 'ping' int num_bytes_to_send; int priority_of_msg = 20; mqmsg mymsg = {1, "ping\n" }; num_bytes_to_send = sizeof(mqmsg); if(mq_send(mqfd_tx, (char*) &mymsg, num_bytes_to_send, priority_of_msg) == -1) { perror("mq_send failure on mqfd_tx"); } } void dothework (mqd_t mqfd_tx) { int num_bytes_to_send; int priority_of_msg = 20; mqmsg mymsg = {1, "" }; num_bytes_to_send = sizeof(mqmsg); if (!want_quiet) { printf("# COMMAND INTERFACE ACTIVATED: use 'exit' or EOF to terminate this session.\n"); printf("# use 'quit' to terminate xjadeo and disconnect.\n"); printf("# type 'help' to query xjadeo commands.\n"); } char buf[MQLEN]; int offset =0; while (loop_flag) { int rx; char *end; if (!xjselect(1)) continue; if ((rx = read(REMOTE_RX, buf + offset, (MQLEN-1)-offset)) > 0) { offset += rx; buf[offset] = '\0'; } else if (rx < 0) { continue; } else { loop_flag=0; break; } while ((end = strchr(buf, '\n'))) { int retry = 10; *(end) = '\0'; if (!strncmp(buf,"exit",4)) { loop_flag=0; break; } snprintf(mymsg.m,MQLEN,"%s\n",buf); //strncpy(mymsg.m,buf,MQLEN-1); // add '\n' mymsg.m[MQLEN-1]=0; while (--retry && mq_send(mqfd_tx, (char*) &mymsg, num_bytes_to_send, priority_of_msg) == -1) { usleep(50000); } if (!retry) { perror("mq_send failure on mqfd_tx"); // ping ? } offset-=((++end)-buf); if (offset) memmove(buf,end,offset); } } } int main(int argc, char **argv) { int i; pthread_t xet; mqd_t mqfd_tx; char qname[64]; int did_fork = 0; int timeout; program_name = argv[0]; i = decode_switches (argc, argv); if ((i)!= argc) usage (EXIT_FAILURE); if (want_unlink) unlink_queues(qid); if (want_unlink&2) exit(0); restart: /* set up outgoing connection first */ loop_flag=1; timeout = 10; snprintf(qname,64,"/xjadeo-request%s%s", qid?"-":"", qid?qid:""); if (want_verbose) printf("# initializing mqID=%s\n",qid?qname+15:"[default]"); do { mqfd_tx = mq_open(qname, O_WRONLY | O_NONBLOCK | (want_create?O_CREAT|O_EXCL:0), S_IRWXU , NULL); if (mqfd_tx < 0) { if ( errno != ENOENT ) break; if (!want_quiet) printf("# could not connect to xjadeo. still trying.\n"); if (want_nofork) { if (!want_quiet) printf("# giving up. There's no running instance of xjadeo with MQ enabled.\n"); exit (0); } if (!did_fork) { forkjadeo(); did_fork=1;} sleep (1); } } while (mqfd_tx < 0 && timeout--); if (mqfd_tx == -1) { perror("mq_open failure."); exit(0); }; /* create incoming connection + handler */ pthread_create(&xet, NULL, read_thread, NULL); /* ping xjadeo - alive check */ if (want_ping) { if (!want_quiet) fprintf(stdout, "# pinging xjadeo...\n"); // TODO flush the queue before pinging ping(mqfd_tx); timeout=50; // 5 sec while(!pong_st && --timeout) { usleep(100000); } if (!timeout) { if (!want_quiet) fprintf(stdout, "# WARNING: queues exist, but xjadeo does not respond\n"); if (want_verbose) fprintf(stdout, "# deleting stale message queues.\n"); #if 1 if (!did_fork) { mq_close(mqfd_tx); loop_flag=0; // stop read thread. pthread_join(xet,NULL); ping_st=0;pong_st=0; unlink_queues(qid); goto restart; } else #endif unlink_queues(qid); if (!want_quiet) fprintf(stdout, "# please try again.\n"); exit(1); } } xjr_mute = 0; dothework(mqfd_tx); /* time to go */ loop_flag=0; // stop read thread. if (!want_quiet) printf("bye bye.\n"); pthread_join(xet,NULL); if (mq_close(mqfd_tx) == -1) perror("mq_close failure on mqfd_tx"); if (qid) free(qid); return (0); } #elif HAVE_IPCMSG #include #include #include #include #include struct msgbuf1 { long mtype; char mtext[BUFSIZ]; }; int loop_flag = 1; int unlink_queue_on_exit = 1; void *rx_thread (void *arg) { int i, rv, msqid; msqid = *((int*)arg); struct msgbuf1 rxbuf; while (loop_flag) { rv = msgrcv(msqid, (void*) &rxbuf, BUFSIZ, 1, 0); if(rv == -1) { fprintf(stderr, "\nCTL: Msgrcv failed., Error = %d: %s\n", errno, strerror(errno)); pthread_exit(0); return 0; } for(i = 0; i 0) { offset += rx; buf[offset] = '\0'; } else if (rx < 0) { continue; } else { if (loop_flag) unlink_queue_on_exit=0; loop_flag=0; break; } while ((end = strchr(buf, '\n'))) { int retry = 10; *(end) = '\0'; if (!strncmp(buf,"exit",4)) { unlink_queue_on_exit=0; loop_flag=0; break; } snprintf(txbuf.mtext,BUFSIZ,"%s\n",buf); //strncpy(txbuf.mtext,buf,BUFSIZ-1); // add '\n' and '\0' txbuf.mtext[BUFSIZ-1]=0; while (--retry && msgsnd(msqid, (const void*) &txbuf, strlen(txbuf.mtext), IPC_NOWAIT) == -1) { usleep(50000); } if (!retry) { fprintf(stderr, "CTL: msgsnd failed. Error = %d: %s\n", errno, strerror(errno)); } offset-=((++end)-buf); if (offset) memmove(buf,end,offset); } } } int main (int argc, char **argv) { int msqrx, msqtx; pthread_t xet; char *queuename = NULL; program_name = argv[0]; int i = decode_switches (argc, argv); if ((i)!= argc) usage (EXIT_FAILURE); if (qid) queuename = strdup(qid); else queuename = tempnam("/tmp", "xjremote"); if (want_unlink) unlink (queuename); if (want_unlink&2) exit(0); int fd = open (queuename, O_WRONLY | O_CREAT | O_NONBLOCK | O_NOCTTY, S_IRUSR | S_IWUSR); if (fd == -1) { fprintf(stderr, "\nCan not create queue. error = %d: %s\n", errno, strerror(errno)); return -1; } printf("@ IPC Queue name: %s\n", queuename); if (!want_nofork) { if (!want_quiet) printf("# launching a new xjadeo instance for you..\n"); pid_t pid = fork(); if (pid == -1) return -2; else if (pid == 0) { execjadeo(5, queuename); fprintf(stderr,"CTL: EXEC failed\n"); exit (1); } } key_t key_rx = ftok (queuename, 'a'); key_t key_tx = ftok (queuename, 'b'); msqrx = msgget(key_rx, IPC_CREAT| S_IRUSR | S_IWUSR); msqtx = msgget(key_tx, IPC_CREAT| S_IRUSR | S_IWUSR); if(msqrx == -1 || msqtx == -1) { printf("CTL: getKey failed. Error = %d: %s\n", errno, strerror(errno)); return -1; } // TODO: try ping ?! loop_flag=1; pthread_create(&xet, NULL, rx_thread, (void*) &msqrx); if (!want_quiet) { printf("# COMMAND INTERFACE ACTIVATED: use 'exit' or EOF to terminate this session.\n"); printf("# use 'quit' to terminate xjadeo and disconnect.\n"); printf("# type 'help' to query xjadeo commands.\n"); } tx_loop(msqtx); loop_flag=0; // stop read thread. if (!want_quiet) printf("bye bye.\n"); pthread_cancel(xet); pthread_join(xet,NULL); if (unlink_queue_on_exit) { msgctl(msqtx, IPC_RMID, NULL); msgctl(msqrx, IPC_RMID, NULL); unlink (queuename); } else if (!want_quiet) printf("# keeping IPC queue: '%s'\n# resume with %s -f -I %s\n", queuename, program_name, queuename); free(queuename); if (qid) free(qid); return 0; } #else int main(int argc, char **argv) { program_name = argv[0]; decode_switches (argc, argv); printf("# This xjadeo was compiled without POSIX-mqueue and IPC messages.\n"); if (want_nofork) exit (0); printf("# -> stdio remote terminal.\n"); execjadeo(2, NULL); exit(1); } #endif xjadeo-0.7.6/src/xjadeo/avinfo.dtd0000644000175000017500000001006611436325750013750 00000000000000 xjadeo-0.7.6/src/xjadeo/mqueue.c0000644000175000017500000001113211436325750013431 00000000000000/* xj-five - message queues Copyright (C) 2006 Robin Gareus 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., 675 Mass Ave, Cambridge, MA 02139, USA. $Id: xj-five.c,v 1.12 2006/09/09 10:55:12 rgareus Exp $ */ #include "xjadeo.h" #ifdef HAVE_MQ #include #include #include #include #include #include extern int errno; extern int loop_run; // display active extern int loop_flag;// program active extern int want_quiet; extern int want_verbose; /* see xjremote.c for information on this one */ typedef struct { int cmd; char m[MQLEN]; } mqmsg; /* some static globals */ mqd_t mqfd_r = -1; mqd_t mqfd_s = -1; size_t mq_msgsize_r; char *msg_buffer; int priority_of_msg = 20; int mymq_init(char *id) { struct mq_attr mqat; // TODO use session ID in path. // implement session authenticaion? - allow user to specify umask. char qname[64]; snprintf(qname,64,"/xjadeo-request%s%s", id?"-":"", id?(char*)id:""); mqfd_r = mq_open(qname, O_RDONLY | O_CREAT | O_EXCL | O_NONBLOCK, S_IRWXU , NULL); if (mqfd_r == -1) { perror("mq_open failure:"); if (errno == EEXIST) fprintf(stderr,"note: use `xjremote -u` to unlink old queues\n"); return(1); } if (mq_getattr(mqfd_r, &mqat) == -1) { perror("mq_getattr error:"); return(1); } mq_msgsize_r = mqat.mq_msgsize; msg_buffer = malloc(mq_msgsize_r); snprintf(qname,64,"/xjadeo-reply%s%s", id?"-":"", id?(char*)id:""); mqfd_s = mq_open(qname, O_WRONLY | O_CREAT | O_EXCL | O_NONBLOCK, S_IRWXU , NULL); if (mqfd_s == -1) { perror("mq_open failure:"); if (errno == EEXIST) fprintf(stderr,"note: use `xjremote -u` to unlink old queues\n"); mq_close(mqfd_r); snprintf(qname,64,"/xjadeo-request%s%s", id?"-":"", id?(char*)id:""); mq_unlink(qname); return(1); } while (mq_receive(mqfd_r, msg_buffer, mq_msgsize_r, 0) > 0) ; #if 0 { // FLUSH the output Queue mqd_t mqfd_sx = mq_open(qname, O_RDONLY | O_NONBLOCK, S_IRWXU , NULL); while (mq_receive(mqfd_sx, msg_buffer, mq_msgsize_r, 0) > 0) ; mq_close(mqfd_sx); } #endif if (!want_quiet) printf("activated remote interface. mqID:%s\n",id?id:"[default]"); return(0); } void mymq_close(void) { if(mqfd_s == -1 || mqfd_r==-1) { return; } if (mq_close(mqfd_r) == -1) perror("mq_close failure on mqfd_r"); if (mq_close(mqfd_s) == -1) perror("mq_close failure on mqfd_s"); //FIXME : use mqID // snprintf(qname,64,"/xjadeo-request%s%s", id?"-":"", id?(char*)id:""); if (mq_unlink("/xjadeo-request") == -1) perror("mq_unlink failure"); if (mq_unlink("/xjadeo-reply") == -1) perror("mq_unlink failure"); if (!want_quiet) printf("closed MQ remote control.\n"); mqfd_s=mqfd_r=-1; } /* read message from queue and store it in data. * data needs to be 'NULL' (ignore msg) or point to a valid char[MQLEN]. * return values 0: no message in queue * -1: error * >0: data bytes in message. */ int mymq_read(char *data) { mqmsg *mymsg; int num_bytes_received = mq_receive(mqfd_r, msg_buffer, mq_msgsize_r, 0); if (num_bytes_received == -1 && errno==EAGAIN) return (0); if (num_bytes_received == -1) { perror("mq_receive failure on mqfd"); usleep(40000); return (-1); } if (num_bytes_received != sizeof(mqmsg) ) { fprintf(stderr,"MQ: received garbage message\n"); return (-1); } mymsg = (mqmsg*) &msg_buffer[0]; if (data) strncpy(data,mymsg->m,MQLEN); data[MQLEN-1]=0; return (strlen(data)); } void mymq_reply(int rv, char *str) { int retry=5; static int retry_warn=1; mqmsg myrpy = {1, "" }; if (mqfd_s== -1) return; myrpy.cmd= rv; snprintf(myrpy.m,MQLEN,"%s\n",str); // until we implement threads we should not waste time trying to re-send.. // mq_timedsend() might be an alternative.. while (retry > 0) { int rv=mq_send(mqfd_s, (char*) &myrpy, sizeof(mqmsg), priority_of_msg); if(!rv) break; retry--; usleep(20); } if (retry==0 && retry_warn) { fprintf(stderr,"DROPPED REMOTE MESSAGE\n"); retry_warn=0; } } #endif /* HAVE_MQ */ xjadeo-0.7.6/src/xjadeo/remote.c0000644000175000017500000011165412200005476013423 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * * * * XAPI return values: * 1xx: command succeeded * 2xx: query variable succeeded: * 3xx: async messages (initiated by xjadeo) * 4xx: error * 8xx: info message (eg. help) * * more detailed: * 100: * 101: var= // long int * 124: vmode= : (list of avail video modes) * * 201: var= // long int * 202: var= * 210: var=x * 220: var= * 228: var= * * 301: frame changed * 310: key press * * suggestions, TODO: * 5xx: command succeeded, but status is negative. * eg. 510 midi not connected, but available * which is currenlty 199. * * grep "void xapi" remote.c | sed 's/ {/;/ '> remote.h */ #include "xjadeo.h" #ifdef OLD_FFMPEG #include // needed for PIX_FMT #include #else #include // needed for PIX_FMT #include #endif #include #include #include #include #include //------------------------------------------------ // extern Globals (main.c) //------------------------------------------------ extern int loop_flag; extern int movie_width; extern int movie_height; extern int ffctv_width; extern int ffctv_height; extern float movie_aspect; extern AVFrame *pFrameFMT; extern uint8_t *buffer; // needs to be set before calling movie_open extern int render_fmt; /* Video File Info */ extern double duration; extern double framerate; extern long frames; extern AVFormatContext *pFormatCtx; extern int videoStream; extern int force_redraw; // tell the main event loop that some cfg has changed /* Option flags and variables */ extern char *current_file; extern long ts_offset; extern char *smpte_offset; extern long userFrame; extern long dispFrame; extern int want_quiet; extern int want_verbose; extern int want_letterbox; extern int remote_en; extern int mq_en; extern char *ipc_queue; extern int remote_mode; #ifdef HAVE_MIDI extern int midi_clkconvert; extern int midi_clkadj; extern char midiid[32]; #endif #ifdef TIMEMAP extern long timeoffset; extern double timescale; extern int wraparound; #endif extern double delay; extern double filefps; extern int videomode; extern int seekflags; extern int interaction_override; // On screen display extern char OSD_fontfile[1024]; extern char OSD_text[128]; extern int OSD_mode; extern int OSD_fx, OSD_tx, OSD_sx, OSD_fy, OSD_sy, OSD_ty; extern jack_client_t *jack_client; extern char jackid[16]; // TODO: someday we can implement 'mkfifo' or open / pipe #define REMOTE_RX (fileno(stdin)) #define REMOTE_TX (fileno(stdout)) #define REMOTEBUFSIZ 4096 int remote_read(void); void remote_printf(int val, const char *format, ...); //-------------------------------------------- // API commands //-------------------------------------------- void xapi_printversion(void *d) { remote_printf(220, "version=%s", VERSION); } void xapi_open(void *d) { char *fn= (char*)d; //printf("open file: '%s'\n",fn); if ( open_movie(fn)) remote_printf(403, "failed to open file '%s'",fn); else remote_printf(129, "opened file: '%s'",fn); init_moviebuffer(); newsourcebuffer(); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update screen } void xapi_close(void *d) { if (!close_movie()) { remote_printf(100, "closed video buffer."); init_moviebuffer(); newsourcebuffer(); } else remote_printf(404, "no video buffer to close."); } void xapi_close_window(void *d) { close_window(); remote_printf(100, "window closed."); } void xapi_set_videomode(void *d) { int vmode; if (getvidmode() !=0) { remote_printf(413, "cannot change videomode while window is open."); return; } vmode=parsevidoutname(d); if (vmode==0 ) vmode = atoi((char*)d); if (vmode <0) { remote_printf(414, "video mode needs to be a positive integer or 0 for autodetect."); return; } render_fmt = vidoutmode(vmode); remote_printf(100, "setting video mode to %i",getvidmode()); open_window(); // required here; else VOutout callback fn will fail. if (pFrameFMT && current_file) { // reinit buffer with new format char *fn=strdup(current_file); open_movie(fn); free(fn); } else { if(buffer) free(buffer); buffer=NULL; // set videomode to 0 or loop_flag=0? } init_moviebuffer(); force_redraw=1; } void xapi_open_window(void *d) { if (getvidmode() !=0) { remote_printf(412, "window already open."); return; } xapi_set_videomode("0"); } void xapi_pvideomode(void *d) { remote_printf(201,"videomode=%i", getvidmode()); } void xapi_lvideomodes(void *d) { int i=0; remote_printf(100,"list video modes."); while (vidoutsupported(++i)>=0) { if (vidoutsupported(i)) remote_printf(124,"vmode=%i : %s",i,vidoutname(i)); else remote_printf(800,"n/a=%i : %s",i,vidoutname(i)); } } void xapi_pletterbox(void *d) { if (want_letterbox) remote_printf(201,"letterbox=1 # fixed aspect ratio"); else remote_printf(201,"letterbox=0 # free scaling"); } void xapi_sletterbox(void *d) { int action=2; if (!strcmp(d,"on") || atoi(d)==1) action=1; else if (!strcmp(d,"off")) action=0; Xletterbox (action); xapi_pletterbox(NULL); } void xapi_pwinpos(void *d) { int x,y; Xgetpos(&x,&y); remote_printf(210,"windowpos=%ix%i",x,y); } void xapi_pwinsize(void *d) { unsigned int x,y; Xgetsize(&x,&y); remote_printf(210,"windowsize=%ux%u",x,y); } void xapi_saspect (void *d) { unsigned int my_Width,my_Height; Xgetsize(&my_Width,&my_Height); // resize to match movie aspect ratio // dup code in display_x11.c (!) if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=floor((float)my_Height * movie_aspect); else my_Height=floor((float)my_Width / movie_aspect); remote_printf(100,"resizing window to %ux%u",my_Width, my_Height); Xresize(my_Width, my_Height); } void xapi_swinsize(void *d) { unsigned int w,h; char *size= (char*)d; char *tmp; h=ffctv_height; w=ffctv_width; if ((tmp=strchr(size,'x')) && ++tmp) { w=atoi(size); h=atoi(tmp); } else { int percent=atoi(size); if (percent > 0 && percent <= 500) { w*= percent; w/=100; h*= percent; h/=100; } } remote_printf(100,"resizing window to %ux%u",w,h); Xresize(w,h); } void xapi_ontop(void *d) { int action=_NET_WM_STATE_TOGGLE; if (!strcmp(d,"on") || atoi(d)==1) action=_NET_WM_STATE_ADD; else if (!strcmp(d,"toggle")) action=_NET_WM_STATE_TOGGLE; else if (!strcmp(d,"off") || atoi(d)==0) action=_NET_WM_STATE_REMOVE; remote_printf(100,"ok."); Xontop(action); } void xapi_fullscreen(void *d) { int action=_NET_WM_STATE_TOGGLE; if (!strcmp(d,"on") || atoi(d)==1) action=_NET_WM_STATE_ADD; else if (!strcmp(d,"toggle")) action=_NET_WM_STATE_TOGGLE; else if (!strcmp(d,"off") || atoi(d)==0) action=_NET_WM_STATE_REMOVE; remote_printf(100,"ok."); Xfullscreen(action); } void xapi_pontop(void *d) { if (Xgetontop()) remote_printf(201,"windowontop=1 # always on top"); else remote_printf(201,"windowontop=0 # normal window stack"); } void xapi_pfullscreen(void *d) { if (Xgetfullscreen()) remote_printf(201,"fullscreen=1 # full-screen"); else remote_printf(201,"fullscreen=0 # windowed"); } void xapi_mousepointer(void *d) { int action=2; if (!strcmp(d,"on") || atoi(d)==1) action=1; else if (!strcmp(d,"off")) action=0; Xmousepointer (action); remote_printf(100,"ok."); } void xapi_poverride(void *d) { remote_printf(201,"override=%i", interaction_override); } void xapi_soverride(void *d) { interaction_override=atoi(d); //remote_printf(100,"ok."); xapi_poverride(NULL); } void xapi_swinpos(void *d) { int x,y; char *t0= (char*)d; char *t1; x=0;y=0; if ((t1=strchr(t0,'x')) && ++t1) { x=atoi(t0); y=atoi(t1); remote_printf(100,"positioning window to %ix%i",x,y); Xposition(x,y); } else { remote_printf(421,"invalid position argument (example 200x100)"); } } void xapi_exit(void *d) { remote_printf(489,"exit is not a xjadeo command - use 'quit' to terminate this session."); } void xapi_quit(void *d) { remote_printf(100,"quit."); loop_flag=0; } void xapi_pfilename(void *d) { if (current_file) remote_printf(220, "filename=%s", current_file); else remote_printf(410, "no open video file"); } void xapi_pduration(void *d) { remote_printf(202, "duration=%g", duration); } void xapi_pframerate(void *d) { remote_printf(202, "framerate=%g", framerate); } void xapi_pframes(void *d) { remote_printf(201, "frames=%ld ", frames); } void xapi_poffset(void *d) { remote_printf(201,"offset=%li",(long int) ts_offset); } void xapi_ptimescale(void *d) { #ifdef TIMEMAP remote_printf(202,"timescale=%g", timescale); remote_printf(201,"timeoffset=%li",(long int) timeoffset); #else remote_printf(499,"timescale is not available."); #endif } void xapi_ploop(void *d) { #ifdef TIMEMAP remote_printf(201,"loop=%d", wraparound); #else remote_printf(499,"looping is not available."); #endif } void xapi_pseekmode (void *d) { switch (seekflags) { case SEEK_ANY: remote_printf(201,"seekmode=2 # any"); break; case SEEK_KEY: remote_printf(201,"seekmode=3 # keyframe"); break; default: remote_printf(201,"seekmode=1 # continuous"); break; } } void xapi_sseekmode (void *d) { char *mode= (char*)d; if (!strcmp(mode,"key") || atoi(mode)==3) seekflags=SEEK_KEY; else if (!strcmp(mode,"any") || atoi(mode)==2) seekflags=SEEK_ANY; else if (!strcmp(mode,"continuous") || atoi(mode)==1) seekflags=SEEK_CONTINUOUS; else { remote_printf(422,"invalid argument (1-3 or 'continuous', 'any', 'key')"); return; } xapi_pseekmode(NULL); } void xapi_pmwidth(void *d) { remote_printf(201,"movie_width=%i", movie_width); } void xapi_pmheight(void *d) { remote_printf(201,"movie_height=%i", movie_height); } void xapi_soffset(void *d) { //long int new = atol((char*)d); ts_offset = smptestring_to_frame((char*)d); remote_printf(101,"offset=%li",(long int) ts_offset); } void xapi_stimescale(void *d) { #ifdef TIMEMAP char *t1; timescale = atof((char*)d); if ((t1=strchr((char*)d,' ')) && ++t1) { timeoffset = atol(t1); } xapi_ptimescale(NULL); force_redraw=1; #else remote_printf(499,"timescale is not available."); #endif } void xapi_sloop(void *d) { #ifdef TIMEMAP wraparound = atoi((char*)d)?1:0; #else remote_printf(499,"timescale is not available."); #endif } void xapi_sreverse(void *d) { #ifdef TIMEMAP timescale *= -1.0; if (timescale<0) timeoffset = (-2.0*timescale) *dispFrame; // TODO: check file-offset and ts_offset. else timeoffset = 0; // TODO - applt diff dispFrame <> transport src #endif } void xapi_pposition(void *d) { remote_printf(201,"position=%li",dispFrame); } void xapi_psmpte(void *d) { char smptestr[13]; frame_to_smptestring(smptestr,dispFrame); remote_printf(228,"smpte=%s",smptestr); } void xapi_seek(void *d) { //long int new = atol((char*)d); userFrame= smptestring_to_frame((char*)d); remote_printf(101,"defaultseek=%li",userFrame); } void xapi_pfps(void *d) { remote_printf(201,"updatefps=%i",(int) rint(1/delay)); } void xapi_sfps(void *d) { char *off= (char*)d; if(atof(off)>0) delay = 1.0 / atof(off); else delay = -1; // use file-framerate remote_printf(101,"updatefps=%i",(int) rint(1/delay)); } void xapi_sframerate(void *d) { char *off= (char*)d; if (!(atof(off)>0)) { remote_printf(423,"invalid argument (range >0)"); return; } filefps= atof(off); override_fps(filefps); remote_printf(202, "framerate=%g", framerate); } void xapi_jack_status(void *d) { if (jack_client) remote_printf(220,"jackclient=%s",jackid); else remote_printf(100,"not connected to jack server"); } void xapi_ltc_status(void *d) { if (ltcjack_connected()) remote_printf(220,"jackclient=%s",ltc_jack_client_name()); else remote_printf(100,"no open LTC JACK source"); } void xapi_open_ltc(void *d) { #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) #ifdef HAVE_MIDI midi_close(); #endif close_jack(); open_ltcjack((char *) d); // TODO: autoconnect if (ltcjack_connected()) remote_printf(100,"opened LTC jack port."); else remote_printf(405,"failed to connect to jack server"); #else remote_printf(499,"LTC-jack is not available."); #endif } void xapi_close_ltc(void *d) { #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) close_ltcjack(); remote_printf(100,"closed ltc-jack connection"); #else remote_printf(499,"LTC-jack is not available."); #endif } void xapi_open_jack(void *d) { #ifdef HAVE_MIDI midi_close(); #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) close_ltcjack(); #endif open_jack(); if (jack_client) remote_printf(100,"connected to jack server."); else remote_printf(405,"failed to connect to jack server"); } void xapi_close_jack(void *d) { close_jack(); remote_printf(100,"closed jack connection"); } void xapi_osd_smpte(void *d) { int y = atoi((char*)d); if (y<0){ OSD_mode&=~OSD_SMPTE; remote_printf(100,"hiding smpte OSD"); } else if (y<=100) { OSD_mode|=OSD_SMPTE; OSD_sy=y; remote_printf(100,"rendering smpte on position y:%i%%",y); } else remote_printf(422,"invalid argument (range -1..100)"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_frame(void *d) { int y = atoi((char*)d); if (y<0){ OSD_mode&=~OSD_FRAME; remote_printf(100,"hiding frame OSD"); } else if (y<=100) { OSD_mode|=OSD_FRAME; OSD_fy=y; remote_printf(100,"rendering frame on position y:%i%%",y); } else remote_printf(422,"invalid argument (range -1..100)"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_off(void *d) { OSD_mode&=~OSD_TEXT; remote_printf(100,"hiding OSD"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_on(void *d) { OSD_mode|=OSD_TEXT; remote_printf(100,"rendering OSD"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_text(void *d) { snprintf(OSD_text,128,"%s",(char*)d); force_redraw=1; //display_frame((int64_t)(dispFrame),1,1); // update OSD xapi_osd_on(NULL); } void xapi_osd_font(void *d) { snprintf(OSD_fontfile,1024,"%s",(char*)d); xapi_osd_on(NULL); } void xapi_osd_nobox(void *d) { OSD_mode&=~OSD_BOX; remote_printf(100,"OSD transparent background"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_box(void *d) { OSD_mode|=OSD_BOX; remote_printf(100,"OSD black box background"); force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_osd_avail(void *d) { #ifdef HAVE_FT remote_printf(100,"rendering OSD is supported"); #else remote_printf(490,"this feature is not compiled"); #endif } void xapi_osd_mode(void *d) { int m = atoi((char*)d); if (m&1) OSD_mode|=OSD_FRAME; else OSD_mode&=~OSD_FRAME; if (m&2) OSD_mode|=OSD_SMPTE; else OSD_mode&=~OSD_SMPTE; if (m&4) OSD_mode|=OSD_TEXT; else OSD_mode&=~OSD_TEXT; if (m&8) OSD_mode|=OSD_BOX; else OSD_mode&=~OSD_BOX; remote_printf(100,"set osdmode=%i", (OSD_mode&OSD_FRAME?1:0)|(OSD_mode&OSD_SMPTE?2:0)|(OSD_mode&OSD_TEXT?4:0)|(OSD_mode&OSD_BOX?8:0)); force_redraw=1; } void xapi_posd(void *d) { #ifdef HAVE_FT remote_printf(201,"osdmode=%i", (OSD_mode&OSD_FRAME?1:0)|(OSD_mode&OSD_SMPTE?2:0)|(OSD_mode&OSD_TEXT?4:0)|(OSD_mode&OSD_BOX?8:0)); remote_printf(220,"osdfont=%s", OSD_fontfile); remote_printf(220,"osdtext=%s", OSD_text); #else remote_printf(490,"this feature is not compiled"); #endif } void xapi_psync(void *d) { int ss =0; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) ss=3; else #endif #ifdef HAVE_MIDI if (midi_connected()) ss=2; else #endif if (jack_connected()) ss=1; remote_printf(201,"syncsource=%i",ss); } void xapi_osd_pos(void *d) { char *t0= (char*)d; char *t1; if ((t1=strchr(t0,' ')) && ++t1) { OSD_tx=atoi(t0); OSD_ty=atoi(t1); if (OSD_tx > OSD_RIGHT) OSD_tx=OSD_RIGHT; if (OSD_tx < OSD_LEFT) OSD_tx=OSD_LEFT; if (OSD_ty > 100) OSD_ty=100; if (OSD_ty < 0) OSD_ty=0; remote_printf(100,"realigning OSD"); } else { remote_printf(421,"invalid argument (example 1 95)"); } force_redraw=1; //display_frame((int64_t)(dispFrame),1); // update OSD } void xapi_midi_status(void *d) { #ifdef HAVE_MIDI // FIXME: we shall return "200,midiid=XXX" // and "100 not connected" ?? as in jack connected // BUT: // midiid can be (portmidi) or string (alsa midi) if (midi_connected()) remote_printf(100,"midi connected."); else remote_printf(199,"midi not connected."); #else remote_printf(499,"midi not available."); #endif } void xapi_smididriver(void *d) { #ifdef HAVE_MIDI char *mp = NULL; if (d && strlen(d)>0) mp=d; if (midi_choose_driver(mp)>0) { remote_printf(100,"ok."); } else { remote_printf(440,"chosen MIDI driver is not supported."); } #else remote_printf(499,"midi not available."); #endif } void xapi_open_midi(void *d) { #ifdef HAVE_MIDI char *mp; if (d && strlen(d)>0) mp=d; else mp="-1"; // midiid ? if (midi_connected()) remote_printf(441,"MIDI port already connected."); midi_open(mp); if (midi_connected()) { remote_printf(100,"MIDI connected."); strncpy(midiid,mp,32); midiid[31]=0; } else remote_printf(440,"MIDI open failed."); #else remote_printf(499,"midi not available."); #endif } void xapi_reopen_midi(void *d) { #ifdef HAVE_MIDI midi_close(); xapi_open_midi(midiid); #endif } void xapi_close_midi(void *d) { #ifdef HAVE_MIDI midi_close(); remote_printf(100,"midi close."); #else remote_printf(499,"midi not available."); #endif } void xapi_detect_midi(void *d) { #ifdef HAVE_MIDI midi_open("-1"); if (midi_connected()) remote_printf(100,"MIDI connected."); else remote_printf(440,"MIDI open failed."); #else remote_printf(499,"midi not available."); #endif } void xapi_pmidilibrary (void *d) { #ifdef HAVE_MIDI remote_printf(220,"mididrv=%s", midi_driver_name()); #else remote_printf(499,"midi not available."); #endif } void xapi_pmidiclk(void *d) { #ifdef HAVE_MIDI remote_printf(201,"midiclk=%i", midi_clkadj); #else remote_printf(499,"midi not available."); #endif } void xapi_smidiclk(void *d) { #ifdef HAVE_MIDI midi_clkadj = atoi((char*)d)?1:0; remote_printf(101,"midiclk=%i", midi_clkadj); #else remote_printf(499,"midi not available."); #endif } void xapi_pmidisync(void *d) { #ifdef HAVE_MIDI remote_printf(201,"midisync=%i", midi_clkconvert); #else remote_printf(499,"midi not available."); #endif } void xapi_smidisync(void *d) { #ifdef HAVE_MIDI midi_clkconvert = atoi((char*)d); remote_printf(101,"midisync=%i", midi_clkconvert); #else remote_printf(499,"midi not available."); #endif } void xapi_bidir_alloff(void *d) { remote_printf(100,"disabled frame notification."); remote_mode=0; } void xapi_bidir_loop(void *d) { remote_printf(100,"enabled frame notify."); remote_mode|=NTY_FRAMELOOP; } void xapi_bidir_noloop(void *d) { remote_printf(100,"disabled frame notification."); remote_mode&=~NTY_FRAMELOOP; } void xapi_bidir_frame(void *d) { remote_printf(100,"enabled frame notify."); remote_mode|=NTY_FRAMECHANGE; } void xapi_bidir_noframe(void *d) { remote_printf(100,"disabled frame notification."); remote_mode&=~NTY_FRAMECHANGE; } void xapi_bidir_settings(void *d) { remote_printf(100,"enabled settings notify."); remote_mode|=NTY_SETTINGS; } void xapi_bidir_nosettings(void *d) { remote_printf(100,"disabled frame notification."); remote_mode&=~NTY_SETTINGS; } void xapi_bidir_keyboard(void *d) { remote_printf(100,"enabled keypress notify."); remote_mode|=NTY_KEYBOARD; } void xapi_bidir_nokeyboard(void *d) { remote_printf(100,"disabled frame notification."); remote_mode&=~NTY_KEYBOARD; } void xapi_ping(void *d) { remote_printf(100,"pong."); } void xapi_null(void *d) { remote_printf(402,"command not implemented."); } void api_help(void *d); //-------------------------------------------- // cmd interpreter //-------------------------------------------- typedef void myfunction (void *); typedef struct _command { const char *name; const char *help; struct _command *children; myfunction *func; int sticky; // unused } Dcommand; Dcommand cmd_test[] = { {"load ", ": replace current video file.", NULL , xapi_open, 0 }, {"seek ", ": seek to this frame - if jack and midi are offline", NULL, xapi_seek , 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_midi[] = { /* {"autoconnect", ": discover and connect to midi time source", NULL, xapi_detect_midi, 0 }, */ {"connect ", ": connect to midi time source (-1: discover)", NULL, xapi_open_midi, 0 }, {"disconnect", ": unconect from midi device", NULL, xapi_close_midi, 0 }, {"reconnect", ": connect to last specified midi port", NULL, xapi_reopen_midi, 0 }, {"status", ": display status of midi connection.", NULL, xapi_midi_status, 0 }, {"driver ", ": select midi driver.", NULL, xapi_smididriver, 0 }, {"driver", ": display the used midi driver", NULL, xapi_pmidilibrary, 0 }, {"library", ": alias for 'midi driver' (deprecated)", NULL, xapi_pmidilibrary, 0 }, {"sync ", ": set MTC smpte conversion. 0:MTC 2:Video 3:resample", NULL, xapi_smidisync, 0 }, {"clk ", "[1|0]: use MTC quarter frames.", NULL, xapi_smidiclk, 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_jack[] = { {"connect", ": connect and sync to jack server", NULL, xapi_open_jack , 0 }, {"disconnect", ": disconnect from jack server", NULL, xapi_close_jack , 0 }, {"status", ": get status of jack connection", NULL, xapi_jack_status , 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_ltc[] = { {"connect", ": connect and sync to jack server", NULL, xapi_open_ltc , 0 }, {"disconnect", ": disconnect from jack server", NULL, xapi_close_ltc , 0 }, {"status", ": get status of jack connection", NULL, xapi_ltc_status , 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_osd[] = { {"frame " , ": render current framenumber. y=0..100 (<0 disable)", NULL, xapi_osd_frame, 0 }, {"smpte " , ": render smpte. y=0..100 (<0 disable)", NULL, xapi_osd_smpte, 0 }, {"text " , ": render on screen", NULL, xapi_osd_text, 0 }, {"text" , ": display prev. OSD text", NULL, xapi_osd_on, 0 }, {"notext" , ": clear text OSD", NULL, xapi_osd_off, 0 }, {"off" , ": same as 'osd notext'", NULL, xapi_osd_off, 0 }, {"on" , ": same as 'osd text'", NULL, xapi_osd_on, 0 }, {"pos " , " : xalign=0..2 (L,C,R) ypos=0..100", NULL, xapi_osd_pos, 0 }, {"available" , ": return 100 if freetype OSD is available", NULL, xapi_osd_avail, 0 }, {"font " , ": use this TTF font file", NULL, xapi_osd_font, 0 }, {"box" , ": forces a black box around the OSD", NULL, xapi_osd_box, 0 }, {"nobox" , ": make OSD backgroung transparent", NULL, xapi_osd_nobox, 0 }, {"mode" , ":: restore OSD as returned by 'get osdcfg'", NULL, xapi_osd_mode, 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_get[] = { {"position", ": return current frame position", NULL, xapi_pposition , 0 }, {"smpte", ": return current frame position", NULL, xapi_psmpte , 0 }, {"fps", ": display current update frequency", NULL, xapi_pfps , 0 }, {"offset", ": show current frame offset", NULL, xapi_poffset , 0 }, {"timescale", ": show scale/offset", NULL, xapi_ptimescale , 0 }, {"loop", ": show loop/wrap-around setting", NULL, xapi_ploop , 0 }, {"file", ": print filename of current video buffer", NULL, xapi_pfilename , 0 }, {"duration", ": query length of video buffer in seconds", NULL, xapi_pduration , 0 }, {"frames", ": show length of video buffer in frames", NULL, xapi_pframes , 0 }, {"framerate", ": show frame rate of video file", NULL, xapi_pframerate , 0 }, {"width", ": query width of video source buffer", NULL, xapi_pmwidth , 0 }, {"height", ": query width of video source buffer", NULL, xapi_pmheight , 0 }, {"seekmode", ": display how video frames are searched ", NULL, xapi_pseekmode, 0 }, {"windowsize" , ": show current window size", NULL, xapi_pwinsize, 0 }, {"windowpos" , ": show current window position", NULL, xapi_pwinpos, 0 }, {"videomode" , ": display current video mode", NULL, xapi_pvideomode, 0 }, {"midisync", ": display midi smpte conversion mode", NULL, xapi_pmidisync, 0 }, {"midiclk", ": MTC quarter frame precision", NULL, xapi_pmidiclk, 0 }, {"osdcfg", ": display status on screen display", NULL, xapi_posd, 0 }, {"syncsource", ": display currently used sync source", NULL, xapi_psync, 0 }, {"letterbox" , ": query video scaling mode", NULL, xapi_pletterbox, 0 }, {"fullscreen" , ": is xjadeo displayed on full screen", NULL, xapi_pfullscreen, 0 }, {"ontop" , ": query window on top mode", NULL, xapi_pontop, 0 }, {"override", ": query disabled window events", NULL, xapi_poverride , 0 }, {"version", ": query xjadeo version", NULL, xapi_printversion , 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_notify[] = { {"disable" , ": disable async messages", NULL, xapi_bidir_alloff, 0 }, {"frame" , ": enable async frame-update messages", NULL, xapi_bidir_frame, 0 }, {"keyboard" , ": enable async keypress messages", NULL, xapi_bidir_keyboard, 0 }, {"loop" , ": enable continuous frame position messages", NULL, xapi_bidir_loop, 0 }, {"nosettings" , ": disable async settings dump on shutdown", NULL, xapi_bidir_nosettings, 0 }, {"nokeyboard" , ": disable async keypress messages", NULL, xapi_bidir_nokeyboard, 0 }, {"noframe" , ": enable async frame-update messages", NULL, xapi_bidir_noframe, 0 }, {"noloop" , ": enable continuous frame position messages", NULL, xapi_bidir_noloop, 0 }, {"off" , ": disable all async messages", NULL, xapi_bidir_alloff, 0 }, {"settings" , ": enable async settings dump on shutdown", NULL, xapi_bidir_settings, 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_window[] = { {"close", ": close window", NULL, xapi_close_window, 0 }, {"open", ": open window", NULL, xapi_open_window, 0 }, {"mode " , ": changes video mode and opens window", NULL, xapi_set_videomode, 0 }, {"resize " , "|x: resize window (percent of movie or abs)", NULL, xapi_swinsize, 0 }, {"size " , "|x: alias for resize", NULL, xapi_swinsize, 0 }, {"position " , "x: move window to absolute position", NULL, xapi_swinpos, 0 }, {"pos " , "x: alias for 'window position'", NULL, xapi_swinpos, 0 }, {"xy " , "x: alias for 'window position'", NULL, xapi_swinpos, 0 }, {"fullscreen " , "[on|off|toggle]: en/disable fullscreen (only XV/x11/OSX)", NULL, xapi_fullscreen, 0 }, {"zoom " , "[on|off|toggle]: alias for 'window fullscreen'", NULL, xapi_fullscreen, 0 }, {"letterbox " , "[on|off|toggle]: don't break aspect ratio (only XV/x11-imlib2)", NULL, xapi_sletterbox, 0 }, {"mouse " , "[on|off|toggle]: en/disable mouse cursor display (only XV/x11)", NULL, xapi_mousepointer, 0 }, {"ontop " , "[on|off|toggle]: en/disable 'on top' (only XV/x11)", NULL, xapi_ontop, 0 }, {"fixaspect" , ": scale window to match aspect ration (same as mouse btn 3)", NULL, xapi_saspect, 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_set[] = { {"fps ", ": set current update frequency", NULL, xapi_sfps , 0 }, {"offset ", ": set current frame offset", NULL, xapi_soffset , 0 }, {"timescale ", " : set timescale and offset", NULL, xapi_stimescale , 0 }, {"loop ", ": 0: normal, 1:wrap around", NULL, xapi_sloop , 0 }, {"seekmode ", "<1-3>: seek continuous, to any or to keyframes only", NULL, xapi_sseekmode, 0 }, {"framerate ", ": override frame rate of video file", NULL, xapi_sframerate , 0 }, {"override ", ": disable window events", NULL, xapi_soverride , 0 }, {NULL, NULL, NULL , NULL, 0} }; Dcommand cmd_root[] = { // note: keep 'seek' on top of the list - if an external app wants seek a lot, xjadeo will // not spend time comparing command strings - OTOH I/O takes much longer than this anyway :X {"seek ", ": seek to this frame - if jack and midi are offline", NULL, xapi_seek , 0 }, {"load ", ": replace current video file.", NULL , xapi_open, 0 }, {"unload", ": close video file.", NULL , xapi_close, 0 }, {"window", " .. : monitor window functions", cmd_window, NULL, 0 }, {"notify", " .. : async remote info messages", cmd_notify, NULL, 0 }, {"get", " .. : query xjadeo variables or state", cmd_get, NULL, 0 }, {"set", " .. : set xjadeo variables", cmd_set, NULL, 0 }, {"osd", " .. : on screen display commands", cmd_osd, NULL, 0 }, {"jack", " .. : jack sync commands", cmd_jack, NULL, 0 }, {"midi", " .. : midi sync commands", cmd_midi, NULL, 0 }, {"ltc", " .. : LTC sync commands", cmd_ltc, NULL, 0 }, {"reverse", ": set timescale to reverse playback from now", NULL , xapi_sreverse, 0 }, {"list videomodes" , ": displays a list of possible video modes", NULL, xapi_lvideomodes, 0 }, {"ping", ": claim a pong", NULL , xapi_ping, 0 }, {"exit", ": [close MQ-session]", NULL , xapi_exit, 0 }, {"help", ": show a quick help", NULL , api_help, 0 }, {"quit", ": terminate xjadeo", NULL , xapi_quit, 0 }, {NULL, NULL, NULL , NULL, 0}, }; // TODO new commands: // - welcome message. (on reconnect) // - query OSD status (qjadeo - reconnect) // - query midi settings (xapi_midi_status) void api_help_recursive(Dcommand *r, const char *prefix) { int i=0; while (r[i].name) { if (r[i].children) { int len = 2+strlen(prefix)+ strlen(r[i].name); char *tmp= malloc(len*sizeof(char)); snprintf(tmp,len,"%s%s ",prefix,r[i].name); //remote_printf(800,"# %s%s%s",prefix,r[i].name,r[i].help); api_help_recursive(r[i].children, tmp); free(tmp); } else { remote_printf(800,"+ %s%s%s",prefix,r[i].name,r[i].help); } i++; } } void api_help(void *d) { remote_printf(100, "print help"); remote_printf(800, "+ xjadeo remote control commands:"); api_help_recursive(cmd_root,""); } void exec_remote_cmd_recursive (Dcommand *leave, char *cmd) { int i=0; while (*cmd==' ') ++cmd; // fprintf(stderr,"DEBUG: %s\n",cmd); while (leave[i].name) { if (strncmp(cmd,leave[i].name,strlen(leave[i].name))==0) break; i++; } if (!leave[i].name) { remote_printf(400,"unknown command."); return; // no cmd found } if (leave[i].children) exec_remote_cmd_recursive(leave[i].children,cmd+strlen(leave[i].name)); else if (leave[i].func) { char *arg= cmd+strlen(leave[i].name); strtok(arg, "\r\n"); leave[i].func(arg); } else remote_printf(401,"command not implemented."); } #ifdef HAVE_LASH # if !(defined HAVE_MQ || defined HAVE_IPCMSG) #warning #warning #warning LASH support - but no POSIX message queues! #warning #warning This xjadeo will not be able to (re)connect #warning to a GUI when launched by lashd! #warning #warning # endif #endif //-------------------------------------------- // remote control - STDIO //-------------------------------------------- typedef struct { char buf[REMOTEBUFSIZ]; int offset; }remotebuffer; remotebuffer *inbuf; int remote_read_io(void) { int rx; char *start, *end; if ((rx = read(REMOTE_RX, inbuf->buf + inbuf->offset, (REMOTEBUFSIZ-1)-inbuf->offset)) > 0) { inbuf->offset+=rx; inbuf->buf[inbuf->offset] = '\0'; } start=inbuf->buf; while ((end = strchr(start, '\n'))) { *(end) = '\0'; //if (strlen(start) > 0) exec_remote_cmd_recursive(cmd_root,start); inbuf->offset-=((++end)-start); if (inbuf->offset) memmove(inbuf->buf,end,inbuf->offset); } return(rx>0?0:-1); } void exec_remote_cmd (char *cmd) { exec_remote_cmd_recursive(cmd_root, cmd); } #ifdef HAVE_WINDOWS int remote_read_h(void) { int rv=-1; char buf[BUFSIZ]; DWORD bytesAvail = 0; HANDLE h = GetStdHandle(STD_INPUT_HANDLE); do { PeekNamedPipe(h, 0, 0, 0, &bytesAvail, 0); DWORD sr=0; if (bytesAvail > 0 && ReadFile(h, buf, BUFSIZ, &sr, NULL) && sr>0) { buf[sr]=0; char *start, *end; start = buf; while (*start && (end = strchr(start, '\n'))) { *(end) = '\0'; strtok(start, "\r"); //if (strlen(start) > 0) exec_remote_cmd_recursive(cmd_root,start); start=end+1; } rv=0; } } while (bytesAvail>0); return rv; } #endif #ifdef HAVE_MQ # define LOGLEN MQLEN #elif defined(HAVE_IPCMSG) # define LOGLEN BUFSIZ #else # define LOGLEN 1023 #endif void remote_printf_io(int rv, const char *format, ...) { va_list arglist; char text[LOGLEN]; char msg[LOGLEN]; va_start(arglist, format); vsnprintf(text, LOGLEN, format, arglist); va_end(arglist); text[LOGLEN -1] =0; // just to be safe :) snprintf(msg, LOGLEN, "@%i %s\n",rv,text); msg[LOGLEN -1] =0; (void) write(REMOTE_TX,msg,strlen(msg)); } void open_remote_ctrl (void) { inbuf=malloc(sizeof(remotebuffer)); inbuf->offset=0; remote_printf_io(800, "xjadeo - remote control (type 'help' for info)"); } void close_remote_ctrl (void) { free(inbuf); } int remote_fd_set(fd_set *fd) { FD_SET(REMOTE_RX,fd); return( REMOTE_RX+1); } //-------------------------------------------- // POSIX message queeue //-------------------------------------------- #ifdef HAVE_MQ // prototypes in mqueue.c int mymq_read(char *data); void mymq_reply(int rv, char *str); void mymq_close(void); int mymq_init(char *id); /* MQ replacement for remote_printf() */ void remote_printf_mq(int rv, const char *format, ...) { va_list arglist; char text[MQLEN]; va_start(arglist, format); vsnprintf(text, MQLEN, format, arglist); va_end(arglist); text[MQLEN -1] =0; // just to be safe :) mymq_reply(rv,text); } int remote_read_mq(void) { int rx; char data[MQLEN]; char *t; int rv = -1; while ((rx=mymq_read(data)) > 0 ) { if ((t = strchr(data, '\n'))) *t='\0'; //if (strlen(data) < 1) continue; exec_remote_cmd_recursive(cmd_root,data); rv=0; } return(rv); } void open_mq_ctrl (void) { if(mymq_init(NULL)) mq_en=0; else remote_printf_mq(800, "xjadeo - remote control (type 'help' for info)"); } void close_mq_ctrl (void) { remote_printf(100, "quit."); mymq_close(); } #elif defined HAVE_IPCMSG #include #include #include #include #include #include #include #include #include struct msgbuf1 { long mtype; char mtext[BUFSIZ]; }; int msqtx = 0; int msqrx = 0; int myipc_reply(int id, char *msg){ struct msgbuf1 txbuf; txbuf.mtype=1; snprintf(txbuf.mtext, BUFSIZ, "@%i %s\n", id, msg); // XXX if (msgsnd(msqtx, (const void*) &txbuf, strlen(txbuf.mtext), IPC_NOWAIT) == -1) { fprintf(stderr, "msgsnd failed., Error = %d: %s\n", errno, strerror(errno)); return -1; } return 0; } int remote_read_ipc () { int rv; struct msgbuf1 rxbuf; rv = msgrcv(msqrx, (void*) &rxbuf, BUFSIZ, 1, IPC_NOWAIT); if(rv < 0 ) { if (errno != EAGAIN && errno != ENOMSG) { fprintf(stderr, "Msgrcv failed., Error = %d: %s\n", errno, strerror(errno)); close_ipcmsg_ctrl(); free(ipc_queue); ipc_queue = NULL; } return (-1); } char *t, *s; s=rxbuf.mtext; // TODO remember end of long messages.. while (s && *s && (t = strchr(s, '\n'))) { *t='\0'; if (strlen(s) < 1) continue; exec_remote_cmd_recursive(cmd_root,s); s=t+1; } remote_read_ipc(); // read all queued messages.. return(0); } int open_ipcmsg_ctrl (const char *queuename) { key_t key_tx = ftok (queuename, 'a'); key_t key_rx = ftok (queuename, 'b'); msqrx = msgget(key_rx, IPC_CREAT| S_IRUSR | S_IWUSR); msqtx = msgget(key_tx, IPC_CREAT| S_IRUSR | S_IWUSR); if(msqrx == -1 || msqtx == -1) { printf("\ngetKey failed., Error = %d: %s\n", errno, strerror(errno)); return -1; } return 0; } void close_ipcmsg_ctrl () { remote_printf(100, "quit."); #if 0 msgctl(msqtx, IPC_RMID, NULL); msgctl(msqrx, IPC_RMID, NULL); #endif } #endif //-------------------------------------------- // REMOTE + MQ wrapper //-------------------------------------------- void remote_printf_argslist(int rv, const char *format, va_list arglist) { char text[LOGLEN]; char msg[LOGLEN]; vsnprintf(text, MQLEN, format, arglist); text[LOGLEN -1] =0; #ifdef HAVE_MQ /* remote_printf_mq(...) */ mymq_reply(rv,text); #elif HAVE_IPCMSG /* remote_printf_ipc(...) */ if (ipc_queue) myipc_reply(rv,text); #endif /* remote_printf_io(...) */ if (remote_en) { snprintf(msg, LOGLEN, "@%i %s\n",rv,text); msg[LOGLEN -1] =0; (void) write(REMOTE_TX,msg,strlen(msg)); } } void remote_printf(int rv, const char *format, ...) { va_list arglist; va_start(arglist, format); remote_printf_argslist(rv, format, arglist); va_end(arglist); } void remote_notify(int mode, int rv, const char *format, ...) { if (!(remote_en||mq_en||ipc_queue) || !(remote_mode & mode)) return; va_list arglist; va_start(arglist, format); remote_printf_argslist(rv, format, arglist); va_end(arglist); } xjadeo-0.7.6/src/xjadeo/xjadeo.c0000644000175000017500000006655412200215233013404 00000000000000/* xjadeo - jack video monitor * * 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, 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. * */ /* Credits: * * xjadeo: * Luis Garrido * Robin Gareus * * XLib code: * http://www.ac3.edu.au/SGI_Developer/books/XLib_PG/sgi_html/index.html * * WM_DELETE_WINDOW code: * http://biology.ncsa.uiuc.edu/library/SGI_bookshelves/SGI_Developer/books/OpenGL_Porting/sgi_html/apf.html * * ffmpeg code: * http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html * */ #include "xjadeo.h" #include "ffcompat.h" #include "remote.h" //------------------------------------------------ // extern Globals (main.c) //------------------------------------------------ extern int loop_flag; extern int loop_run; extern int movie_width; extern int movie_height; extern int ffctv_width; extern int ffctv_height; extern float movie_aspect; extern AVFormatContext *pFormatCtx; extern int videoStream; extern AVCodecContext *pCodecCtx; extern AVFrame *pFrame; extern AVFrame *pFrameFMT; extern uint8_t *buffer; struct SwsContext *pSWSCtx; // needs to be set before calling movie_open extern int render_fmt; /* Video File Info */ extern double duration; extern double framerate; extern long frames; extern int64_t file_frame_offset; extern int have_dropframes; /* Option flags and variables */ extern char *current_file; extern double filefps; extern long ts_offset; extern char *smpte_offset; extern long userFrame; extern long dispFrame; extern int force_redraw; extern int want_quiet; extern int want_debug; extern int want_verbose; extern int want_avverbose; extern int want_nosplash; extern int want_genpts; extern int want_ignstart; extern int remote_en; extern int remote_mode; extern int mq_en; extern char *ipc_queue; extern double delay; extern int seekflags; #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) extern int use_ltc; #endif #ifdef TIMEMAP long timeoffset = 0; double timescale = 1.0; int wraparound = 0; #endif // On screen display extern char OSD_frame[48]; extern char OSD_smpte[13]; extern int OSD_mode; const AVRational c1_Q = { 1, 1 }; double tpf = 1.0; /* pts/dts increments per video-frame - cached value */ static int fFirstTime=1; #ifdef JACK_SESSION extern int jack_session_restore; extern int js_winx; extern int js_winy; extern int js_winw; extern int js_winh; #endif void js_apply() { #ifdef JACK_SESSION if (jack_session_restore) { jack_session_restore = 0; if (js_winx > 0 && js_winy > 0) Xposition(js_winx, js_winy); if (js_winw > 0 && js_winh > 0) Xresize(js_winw,js_winh); } #endif } //-------------------------------------------- // main event loop //-------------------------------------------- // int select_sleep (int usec) { int remote_activity = 0; fd_set fd; int max_fd=0; struct timeval tv = { 0, 0 }; tv.tv_sec = 0; tv.tv_usec = usec; FD_ZERO(&fd); if (remote_en) { max_fd=remote_fd_set(&fd); } #if defined HAVE_MQ if (mq_en) { if (!remote_read_mq()) remote_activity=1; } #elif defined HAVE_IPCMSG if (ipc_queue) { if (!remote_read_ipc()) remote_activity=1; } #endif #ifdef HAVE_LIBLO remote_activity |= process_osc(); #endif if (remote_activity) { tv.tv_sec = 0; tv.tv_usec = 1; } #if 0 /* pselect sleep */ struct timespec ts; ts.tv_sec = (usec / 1000000L); ts.tv_nsec = (usec % 1000000L)*1000; if (pselect(max_fd, &fd, NULL, NULL, &ts,NULL)) remote_read_io(); #elif defined HAVE_WINDOWS if (!remote_en || remote_read_h()) { Sleep((usec+ 999) /1000); } #else if (select(max_fd, &fd, NULL, NULL, &tv)) { remote_read_io(); return 1; } #endif return remote_activity; } void event_loop(void) { double elapsed_time; struct timeval clock1, clock2; long newFrame, offFrame; long nanos; double dly; static int splashed = -1; if (want_verbose) printf("\nentering video update loop @%.2f fps.\n",delay>0?(1.0/delay):framerate); gettimeofday(&clock1, NULL); while(loop_flag) { /* MAIN LOOP */ if (loop_run==0) { // CHECK: && !force_redraw ?! /* video offline - (eg. window minimized) * do not update frame */ select_sleep(2e5L); handle_X_events(); lash_process(); js_apply(); continue; } #ifdef HAVE_MIDI if (midi_connected()) newFrame = midi_poll_frame(); else #endif #if (defined HAVE_LTCSMPTE || defined HAVE_LTC) if (ltcjack_connected()) newFrame = ltc_poll_frame(); else #endif newFrame = jack_poll_frame(); if (newFrame <0 ) newFrame=userFrame; #if 0 // DEBUG static long oldFrame = 0; if (oldFrame != newFrame) { if (oldFrame +1 != newFrame) { printf("\ndiscontinuity %li -> %li\n", oldFrame, newFrame); } oldFrame=newFrame; } #endif #ifdef TIMEMAP newFrame = (long) floor((double) newFrame * timescale) + timeoffset; // TODO: calc newFrames/frames instead of while-loop while (newFrame > frames && wraparound && frames!=0) newFrame-=frames; while (newFrame < 0 && wraparound && frames!=0) newFrame+=frames; #endif offFrame = newFrame + ts_offset; long curFrame = dispFrame; display_frame((int64_t)(offFrame), force_redraw, !splashed || want_nosplash); if ((remote_en||mq_en||ipc_queue) && ( (remote_mode&NTY_FRAMELOOP) || ((remote_mode&NTY_FRAMECHANGE)&& curFrame!=dispFrame)) ) { /*call xapi_pposition ?? -> rv:200 * dispFrame is the currently displayed frame * = SMPTE + offset */ remote_printf(301,"position=%li",dispFrame); } force_redraw=0; dly = delay>0?delay:(1.0/framerate); if (splashed) { if (splashed == -1) { splashed = 4.5/dly; } splash(buffer); } if(want_verbose) { #if 0 fprintf(stdout, "frame: smpte:%li \r", newFrame); #else char tempsmpte[15]; frame_to_smptestring(tempsmpte,newFrame); fprintf(stdout, "smpte: %s f:%li\r", tempsmpte,newFrame); #endif fflush(stdout); } handle_X_events(); lash_process(); js_apply(); gettimeofday(&clock2, NULL); elapsed_time = ((double) (clock2.tv_sec-clock1.tv_sec)) + ((double) (clock2.tv_usec-clock1.tv_usec)) / 1000000.0; if(elapsed_time < dly) { nanos = (long) floor(1e9L * (dly - elapsed_time)); if (!select_sleep(nanos/1000L)) { if (splashed) { if(!--splashed) force_redraw=1; } } } clock1.tv_sec=clock2.tv_sec; clock1.tv_usec=clock2.tv_usec; } if ((remote_en||mq_en||ipc_queue) && (remote_mode&4)) { // send current settings xapi_pfullscreen(NULL); xapi_pontop(NULL); xapi_posd(NULL); xapi_pletterbox(NULL); xapi_pwinpos(NULL); xapi_pwinsize(NULL); xapi_poffset(NULL); } } //-------------------------------------------- // Manage video file //-------------------------------------------- void render_empty_frame(int blit); void init_moviebuffer(void) { int numBytes; if (buffer) free(buffer); if (want_debug) printf("DEBUG: init_moviebuffer - render_fmt: %i\n",render_fmt); /* Determine required buffer size and allocate buffer */ #ifdef CROPIMG numBytes=avpicture_get_size(render_fmt, movie_width*2, movie_height); #else numBytes=avpicture_get_size(render_fmt, movie_width, movie_height); #endif buffer=(uint8_t *) calloc(1,numBytes); // Assign appropriate parts of buffer to image planes in pFrameFMT if (pFrameFMT) { avpicture_fill((AVPicture *)pFrameFMT, buffer, render_fmt, movie_width, movie_height); #ifdef HAVE_SWSCALE pSWSCtx = sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, movie_width, movie_height, render_fmt, SWS_BICUBIC, NULL, NULL, NULL); #endif } render_empty_frame(0); } /* Open video file */ void avinit (void) { av_register_all(); #if LIBAVFORMAT_BUILD < 0x351400 avcodec_init(); #endif avcodec_register_all(); if(!want_avverbose) av_log_set_level(AV_LOG_QUIET); } int open_movie(char* file_name) { int i; AVCodec *pCodec; AVStream *av_stream; if (pFrameFMT) { /* close currently open movie */ //fprintf(stderr,"replacing current video file buffer\n"); close_movie(); } fFirstTime = 1; pFrameFMT = NULL; movie_width = 320; movie_height = 180; movie_aspect = (float)movie_width / (float) movie_height; duration = frames = 1; framerate = 10; // prevent slow reaction to remote-ctl (event loop). file_frame_offset = 0; videoStream=-1; // recalc offset with new framerate if (smpte_offset) ts_offset=smptestring_to_frame(smpte_offset); /* Open video file */ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 7, 0) if(av_open_input_file(&pFormatCtx, file_name, NULL, 0, NULL)!=0) #else pFormatCtx=NULL; if(avformat_open_input(&pFormatCtx, file_name, NULL, NULL)!=0) #endif { if (!remote_en && !mq_en && !ipc_queue) //TODO prevent msg only when starting up with no file... fprintf( stderr, "Cannot open video file %s\n", file_name); pFormatCtx=NULL; return (-1); } /* Retrieve stream information */ if(avformat_find_stream_info(pFormatCtx, NULL)<0) { fprintf( stderr, "Cannot find stream information in file %s\n", file_name); avformat_close_input(&pFormatCtx); pFormatCtx=NULL; return (-1); } #if LIBAVFORMAT_BUILD < 0x350200 if (!want_quiet) dump_format(pFormatCtx, 0, file_name, 0); #else if (!want_quiet) av_dump_format(pFormatCtx, 0, file_name, 0); #endif /* Find the first video stream */ for(i=0; inb_streams; i++) #if LIBAVFORMAT_BUILD > 4629 if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO) #else if(pFormatCtx->streams[i]->codec.codec_type==CODEC_TYPE_VIDEO) #endif { videoStream=i; break; } if(videoStream==-1) { fprintf( stderr, "Cannot find a video stream in file %s\n", file_name); avformat_close_input(&pFormatCtx); pFormatCtx=NULL; return( -1 ); } av_stream = pFormatCtx->streams[videoStream]; // At LIBAVFORMAT_BUILD==4624 r_frame_rate becomes an AVRational. Before it was an int. if (filefps >0 ) framerate=filefps; #if LIBAVFORMAT_BUILD <= 4616 else framerate = (double) av_stream->codec.frame_rate / (double) av_stream->codec.frame_rate_base; #elif LIBAVFORMAT_BUILD <= 4623 // I'm not sure that this is correct: else framerate = (double) av_stream->r_frame_rate / (double) av_stream->r_frame_rate_base; #else else if(av_stream->r_frame_rate.den && av_stream->r_frame_rate.num) { framerate = av_q2d(av_stream->r_frame_rate); if ((framerate < 4 || framerate > 100 ) && (av_stream->time_base.num && av_stream->time_base.den)) framerate = 1.0/av_q2d(av_stream->time_base); } else framerate = 1.0/av_q2d(av_stream->time_base); #endif // detect drop frame timecode if (fabs(framerate - 30000.0/1001.0) < 0.01) { have_dropframes=1; if(!want_quiet) fprintf(stdout, "enabled drop-frame-timecode (use -n to override).\n"); } #if defined(__BIG_ENDIAN__) && (__ppc__) && LIBAVFORMAT_BUILD <= 4616 // this cast is weird, but it works.. the bytes seem to be in 'correct' order, but the two // 4byte-words are swapped. ?! // I wonder how this behaves on a 64bit arch // - maybe it's bug in ffmpeg or all video files I tried had a bad header :D int64_t dur = (int64_t) (pFormatCtx->duration); duration = ( ((double) (((dur&0xffffffff)<<32)|((dur>>32)&0xffffffff))) / (double) AV_TIME_BASE ); #else // duration = (double) (((double) (pFormatCtx->duration - pFormatCtx->start_time))/ (double) AV_TIME_BASE); duration = (double) (((double) (pFormatCtx->duration))/ (double) AV_TIME_BASE); #endif frames = (long) (framerate * duration); #if LIBAVFORMAT_BUILD <= 4623 // check if correct; tpf = (double) framerate / (double) av_stream->codec.frame_rate * (double) av_stream->codec.frame_rate_base; #elif LIBAVFORMAT_BUILD <= 4629 // check if correct; tpf = (av_q2d(pFormatCtx->streams[videoStream]->r_frame_rate)/framerate); #else tpf = 1.0/(av_q2d(pFormatCtx->streams[videoStream]->time_base)*framerate); #endif if (!want_ignstart && pFormatCtx->start_time != AV_NOPTS_VALUE) { file_frame_offset = (int64_t) floor(framerate * (double) pFormatCtx->start_time / (double) AV_TIME_BASE); } // recalc offset with new framerate if (smpte_offset) ts_offset=smptestring_to_frame(smpte_offset); if (!want_quiet) { if (filefps >0 ) fprintf(stdout, "overridden frame rate: %g\n", framerate); else fprintf(stdout, "original frame rate: %g\n", framerate); fprintf(stdout, "length in seconds: %g\n", duration); fprintf(stdout, "total frames: %ld\n", frames); fprintf(stdout, "file start offset: %" PRId64 " video-frames\n",file_frame_offset); } // Get a pointer to the codec context for the video stream #if LIBAVFORMAT_BUILD > 4629 pCodecCtx=pFormatCtx->streams[videoStream]->codec; #else pCodecCtx=&(pFormatCtx->streams[videoStream]->codec); #endif if (!want_quiet) { fprintf(stderr, "image size: %ix%i px\n", pCodecCtx->width, pCodecCtx->height); } #ifdef CROPIMG movie_width = (pCodecCtx->width / 2)&~1; // TODO allow configuration movie_height = pCodecCtx->height &~1; #else movie_width = pCodecCtx->width &~1; movie_height = pCodecCtx->height &~1; #endif float sample_aspect = 1.0; if (av_stream->sample_aspect_ratio.num) sample_aspect = av_q2d(av_stream->sample_aspect_ratio); else if (av_stream->codec->sample_aspect_ratio.num) sample_aspect = av_q2d(av_stream->codec->sample_aspect_ratio); else sample_aspect = 1.0; movie_aspect = sample_aspect * (float)pCodecCtx->width / (float) pCodecCtx->height; ffctv_height = movie_height; ffctv_width = ((int)rint(pCodecCtx->height * movie_aspect)) & ~1; if (ffctv_width > pCodecCtx->width) { ffctv_width = movie_width; ffctv_height = ((int)rint(pCodecCtx->width / movie_aspect)) & ~1; } // somewhere around LIBAVFORMAT_BUILD 4630 #ifdef AVFMT_FLAG_GENPTS if (want_genpts) pFormatCtx->flags|=AVFMT_FLAG_GENPTS; //pFormatCtx->flags|=AVFMT_FLAG_IGNIDX; #endif if (!want_quiet) { fprintf(stderr, "display size: %ix%i px\n", movie_width, movie_height); } // Find the decoder for the video stream pCodec=avcodec_find_decoder(pCodecCtx->codec_id); if(pCodec==NULL) { fprintf( stderr, "Cannot find a codec for file: %s\n", file_name); avformat_close_input(&pFormatCtx); pFormatCtx = NULL; pCodecCtx = NULL; return( -1 ); } // Open codec if(avcodec_open2(pCodecCtx, pCodec, NULL)<0) { fprintf( stderr, "Cannot open the codec for file %s\n", file_name); avformat_close_input(&pFormatCtx); pFormatCtx = NULL; pCodecCtx = NULL; return( -1 ); } pFrame=avcodec_alloc_frame(); if(pFrame==NULL) { fprintf( stderr, "Cannot allocate video frame buffer\n"); avcodec_close(pCodecCtx); avformat_close_input(&pFormatCtx); pFormatCtx = NULL; pCodecCtx = NULL; return(-1); } pFrameFMT=avcodec_alloc_frame(); if(pFrameFMT==NULL) { fprintf( stderr, "Cannot allocate display frame buffer\n"); av_free(pFrame); avcodec_close(pCodecCtx); avformat_close_input(&pFormatCtx); pFormatCtx = NULL; pCodecCtx = NULL; return(-1); } current_file=strdup(file_name); return( 0 ); } void override_fps (double fps) { if (fps <= 0) return; framerate = fps; frames = (long) (framerate * duration); #if LIBAVFORMAT_BUILD <= 4623 // check if correct; tpf = (double) framerate / (double) pCodecCtx->frame_rate * (double) pCodecCtx->frame_rate_base; #elif LIBAVFORMAT_BUILD <= 4629 // check if correct; tpf = (av_q2d(pFormatCtx->streams[videoStream]->r_frame_rate)/framerate); #else tpf = 1.0/(av_q2d(pFormatCtx->streams[videoStream]->time_base)*framerate); #endif // recalc offset with new framerate if (smpte_offset) ts_offset=smptestring_to_frame(smpte_offset); } int64_t my_avprev = 0; // last recent seeked timestamp void render_empty_frame(int blit) { if (!buffer) return; // clear image (black / or YUV green) if (render_fmt == PIX_FMT_UYVY422) { int i; for (i=0;istream_index==videoStream) #if LIBAVCODEC_VERSION_MAJOR < 52 || ( LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR < 21) avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, packet->data, packet->size); #else avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, packet); #endif if(packet->data) av_free_packet(packet); } my_avprev=dispFrame=0; } // TODO: set this high (>1000) if transport stopped and to a low value (<100) if transport is running. #define MAX_CONT_FRAMES (500) int my_seek_frame (AVPacket *packet, int64_t timestamp) { AVStream *v_stream; int rv=1; int nolivelock = 0; int64_t mtsb = 0; static int ffdebug = 0; if (videoStream < 0) return (0); v_stream = pFormatCtx->streams[videoStream]; if (want_ignstart==1) { timestamp+= file_frame_offset; } // TODO: assert 0 < timestamp + ts_offset - (..->start_time) < length #if LIBAVFORMAT_BUILD > 4629 // verify this version # ifdef FFDEBUG printf("\nDEBUG: want frame=%li ", (long int) timestamp); # endif if (filefps > 0) { timestamp*=tpf; } else { // does not work with -F , but it's more accurate when rounding ratios timestamp=av_rescale_q(timestamp,c1_Q,v_stream->time_base); timestamp=av_rescale_q(timestamp,c1_Q,v_stream->r_frame_rate); //< timestamp/=framerate; } # ifdef FFDEBUG printf("ts=%li ##\n", (long int) timestamp); # endif #endif #if LIBAVFORMAT_BUILD < 4617 rv= av_seek_frame(pFormatCtx, videoStream, timestamp / framerate * 1000000LL); #else if (seekflags==SEEK_ANY) { rv= av_seek_frame(pFormatCtx, videoStream, timestamp, AVSEEK_FLAG_ANY | AVSEEK_FLAG_BACKWARD) ; avcodec_flush_buffers(pCodecCtx); } else if (seekflags==SEEK_KEY) { rv= av_seek_frame(pFormatCtx, videoStream, timestamp, AVSEEK_FLAG_BACKWARD) ; avcodec_flush_buffers(pCodecCtx); } else /* SEEK_CONTINUOUS */ if (my_avprev >= timestamp || ((my_avprev + 32*tpf) < timestamp) ) { // NOTE: only seek if last-frame is less then 32 frames behind // else read continuously until we get there :D // FIXME 32: use keyframes interval of video file or cmd-line-arg as threshold. // TODO: do we know if there is a keyframe inbetween now (my_avprev) // and the frame to seek to?? - if so rather seek to that frame than read until then. // and if no keyframe in between my_avprev and ts - prevent backwards seeks even if // timestamp-my_avprev > threshold! - Oh well. // seek to keyframe *BEFORE* this frame //printf("SEEK: %d\n",timestamp); rv= av_seek_frame(pFormatCtx, videoStream, timestamp, AVSEEK_FLAG_BACKWARD) ; avcodec_flush_buffers(pCodecCtx); } #endif if (rv < 0 && (timestamp == 0 || seekflags == SEEK_CONTINUOUS)) { rv = av_seek_frame(pFormatCtx, videoStream, timestamp, 0); } my_avprev = timestamp; if (rv < 0) return (0); // seek failed. read_frame: nolivelock++; if(av_read_frame(pFormatCtx, packet)<0) { if (!want_quiet) printf("Reached movie end\n"); return (0); } #if LIBAVFORMAT_BUILD >=4616 if (av_dup_packet(packet) < 0) { printf("can not allocate packet\n"); goto read_frame; } #endif if(packet->stream_index!=videoStream) { // fprintf(stderr, "Not a video frame\n"); if (packet->data) av_free_packet(packet); goto read_frame; } /* backwards compatible - no cont. seeking (seekmode ANY or KEY ; cmd-arg: -K, -k) * do we want a AVSEEK_FLAG_ANY + SEEK_CONTINUOUS option ?? not now. */ #if LIBAVFORMAT_BUILD < 4617 return (1); #endif if (seekflags!=SEEK_CONTINUOUS) return (1); #ifdef FFDEBUG printf("\nDEBUG: got pts=%li dts:%li frame: p:%g d:%g ##\n", (long int) packet->pts , (long int) packet->dts, packet->pts*framerate*av_q2d(v_stream->time_base), packet->dts*framerate*av_q2d(v_stream->time_base)); #endif mtsb = packet->pts; if (mtsb == AV_NOPTS_VALUE) { mtsb = packet->dts; if (ffdebug==0) { ffdebug=1; if (!want_quiet) fprintf(stderr,"WARNING: video file does not report pts information.\n resorting to ffmpeg decompression timestamps.\n consider to transcode the file or use the --genpts option.\n"); } } if (mtsb == AV_NOPTS_VALUE) { if (ffdebug<2) { ffdebug=2; if (!want_quiet) fprintf(stderr,"ERROR: neither the video file nor the ffmpeg decoder were able to\n provide a video frame timestamp."); } av_free_packet(packet); return (0); } #if 0 if (mtsb != AV_NOPTS_VALUE && mtsb!=0) my_avprev = mtsb; if (mtsb > timestamp) { printf("WRONG want:%lli got:%lli\n", timestamp, mtsb); my_avprev = mtsb;} if (mtsb == timestamp) printf("Right.\n"); #endif #if 1 if (mtsb >= timestamp) #else // test & check time-base/ framerate re-scaling if ((mtsb*framerate*av_q2d(v_stream->time_base)) >= (timestamp*framerate*av_q2d(v_stream->time_base))) #endif { my_avprev = mtsb; return (1); // ok! } /* skip to next frame */ #ifdef FFDEBUG printf("To Skip %li -> %li\n",(long int) mtsb, (long int) timestamp); #endif //my_avprev= mtsb; int frameFinished; #if LIBAVCODEC_VERSION_MAJOR < 52 || ( LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR < 21) avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, packet->data, packet->size); #else avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, packet); #endif av_free_packet(packet); if (!frameFinished) { if (want_debug) fprintf(stderr, "seek decode not finished!\n"); /*XXX*/ goto read_frame; } if (nolivelock < MAX_CONT_FRAMES) goto read_frame; reset_video_head(packet); return (0); // seek failed. } void display_frame(int64_t timestamp, int force_update, int do_render) { static AVPacket packet; int frameFinished; if (!buffer || !current_file) { return; } if (timestamp - file_frame_offset< 0) timestamp=0; else if(timestamp - file_frame_offset>= frames) timestamp = frames - 1; if (!force_update && dispFrame == timestamp) return; if(want_verbose) fprintf(stdout, "\t\t\t\tdisplay:%07li \r", (long int) timestamp); dispFrame = timestamp; if (OSD_mode&OSD_FRAME) snprintf(OSD_frame,48,"Frame: %li", dispFrame); if (OSD_mode&OSD_SMPTE) frame_to_smptestring(OSD_smpte,dispFrame - ts_offset); if(fFirstTime) { fFirstTime=0; memset(&packet, 0, sizeof(AVPacket)); } if (pFrameFMT && my_seek_frame(&packet, timestamp)) { /* Decode video frame */ while (1) { frameFinished=0; if(packet.stream_index==videoStream) #if LIBAVCODEC_VERSION_MAJOR < 52 || ( LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR < 21) avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, packet.data, packet.size); #else avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet); #endif /* Did we get a video frame? */ if(frameFinished) { /* Convert the image from its native format to FMT */ #ifdef HAVE_SWSCALE int dstStride[8] = {0,0,0,0,0,0,0,0}; switch (render_fmt) { case PIX_FMT_RGBA32: case PIX_FMT_BGRA32: dstStride[0] = movie_width*4; break; case PIX_FMT_BGR24: dstStride[0] = movie_width*3; break; case PIX_FMT_UYVY422: dstStride[0] = movie_width*2; break; case PIX_FMT_YUV420P: default: dstStride[0] = movie_width; dstStride[1] = movie_width/2; dstStride[2] = movie_width/2; } sws_scale(pSWSCtx, (const uint8_t * const*)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameFMT->data, dstStride); #else img_convert((AVPicture *)pFrameFMT, render_fmt, (AVPicture*)pFrame, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height); #endif if (do_render) render_buffer(buffer); // in pFrameFMT av_free_packet(&packet); /* XXX */ break; } else { // fprintf( stderr, "Frame not finished\n"); if(packet.data) av_free_packet(&packet); if(av_read_frame(pFormatCtx, &packet)<0) { fprintf( stderr, "read error!\n"); reset_video_head(&packet); render_empty_frame(1); break; } #if LIBAVFORMAT_BUILD >=4616 if (av_dup_packet(&packet) < 0) { printf("can not allocate packet\n"); break; } #endif } } /* end while !frame_finished */ } else { if (pFrameFMT && want_debug) fprintf( stderr, "frame seek unsucessful.\n"); render_empty_frame(1); } } int close_movie() { if(current_file) free(current_file); current_file=NULL; if (!pFrameFMT) return(-1); // Free the software scaler #ifdef HAVE_SWSCALE sws_freeContext(pSWSCtx); #endif // Free the formatted image if(buffer) free(buffer); buffer=NULL; if (pFrameFMT) av_free(pFrameFMT); pFrameFMT=NULL; //Free the YUV frame if (pFrame) av_free(pFrame); pFrame=NULL; //Close the codec avcodec_close(pCodecCtx); //Close the video file avformat_close_input(&pFormatCtx); duration = frames = 1; pCodecCtx = NULL; pFormatCtx = NULL; framerate = 10; // prevent slow reaction to remote-ctl (event loop). return (0); } void do_try_this_file_and_exit(char *movie) { AVPacket packet; packet.data=NULL; int frameFinished=0; if(open_movie(movie)){ if (!want_quiet) printf("File not found or invalid.\n"); exit(1); } init_moviebuffer(); if (my_seek_frame(&packet, 1)) { #if LIBAVCODEC_VERSION_MAJOR < 52 || ( LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR < 21) avcodec_decode_video(pCodecCtx, pFrame, &frameFinished, packet.data, packet.size); #else avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet); #endif } close_movie(); if (!frameFinished) { if (!want_quiet) printf("sorry. this video codec not supported.\n"); exit(1); } if (!want_quiet) printf("ok. great encoding, dude.\n"); exit (0); } xjadeo-0.7.6/src/xjadeo/display.h0000644000175000017500000001316311743513625013611 00000000000000/* shared header file for xjadeo display backends */ extern int movie_width, movie_height; extern int ffctv_width, ffctv_height; extern float movie_aspect; extern int loop_flag, loop_run; extern uint8_t *buffer; extern int want_quiet; extern int want_debug; extern int want_verbose; extern int start_ontop; extern int start_fullscreen; extern int want_letterbox; extern int remote_en; extern char OSD_fontfile[1024]; extern char OSD_text[128]; extern char OSD_frame[48]; extern char OSD_smpte[13]; extern int OSD_mode; extern int OSD_fx, OSD_fy; extern int OSD_sx, OSD_sy; extern int OSD_tx, OSD_ty; /* fast memcpy - see mplayer's libvo/aclib_template.c */ inline void * fast_memcpy(void * to, const void * from, size_t len); /* prototypes in display.c */ inline void stride_memcpy(void * dst, const void * src, int width, int height, int dstStride, int srcStride); void rgb2argb (uint8_t *rgbabuffer, uint8_t *rgbbuffer, int width, int height); void rgb2abgr (uint8_t *rgbabuffer, uint8_t *rgbbuffer, int width, int height); typedef struct { int render_fmt; // the format ffmpeg should write to the shared buffer int supported; // 1: format compiled in -- 0: not supported const char *name; // void (*render)(uint8_t *mybuffer); int (*open)(void); void (*close)(void); void (*eventhandler)(void); void (*newsrc)(void); void (*resize)(unsigned int x, unsigned int y); void (*getsize)(unsigned int *x, unsigned int *y); void (*position)(int x, int y); void (*getpos)(int *x, int *y); void (*fullscreen)(int action); void (*ontop)(int action); void (*mousepointer)(int action); int (*getfullscreen)(void); int (*getontop)(void); }vidout; /******************************************************************************* * SDL */ #ifdef HAVE_SDL #include #include #define SUP_SDL 1 void position_sdl(int x, int y); int sdl_get_fullscreen (); void sdl_toggle_fullscreen(int action); void mousecursor_sdl(int action); #else #define SUP_SDL 0 #endif void close_window_sdl(void); int open_window_sdl (void); void resize_sdl (unsigned int x, unsigned int y) ; void getsize_sdl (unsigned int *x, unsigned int *y); void position_sdl(int x, int y); void render_sdl (uint8_t *mybuffer); void newsrc_sdl (void) ; void handle_X_events_sdl (void) ; /******************************************************************************* * Shared X11 functions */ #if (defined HAVE_LIBXV || defined HAVE_IMLIB || defined HAVE_IMLIB2) void xj_set_fullscreen (int action); void xj_mousepointer (int action); int xj_get_eq(char *prop, int *value); void xj_set_ontop (int action); void xj_position (int x, int y); void xj_resize (unsigned int x, unsigned int y); void xj_get_window_size (unsigned int *my_Width, unsigned int *my_Height); void xj_get_window_pos (int *x, int *y); int xj_get_ontop (); int xj_get_fullscreen (); void xj_letterbox(); #endif /******************************************************************************* * XV !!! */ #if HAVE_LIBXV # include # include # include # include # include # include # include # include # define SUP_LIBXV 1 #else # define SUP_LIBXV 0 #endif /* HAVE_LIBXV */ void get_window_size_xv (unsigned int *my_Width, unsigned int *my_Height); void get_window_pos_xv (int *x, int *y); void resize_xv (unsigned int x, unsigned int y); void position_xv (int x, int y); void render_xv (uint8_t *mybuffer); void handle_X_events_xv (void); void newsrc_xv (void); int open_window_xv (void); void close_window_xv(void); /******************************************************************************* * * X11 / ImLib */ #if HAVE_IMLIB # include # include # include # include # include # define SUP_IMLIB 1 #else # define SUP_IMLIB 0 #endif void get_window_size_imlib (unsigned int *my_Width, unsigned int *my_Height); void get_window_pos_imlib (int *x, int *y); int open_window_imlib (void); void close_window_imlib(void); void render_imlib (uint8_t *mybuffer); void newsrc_imlib (void) ; void handle_X_events_imlib (void); void resize_imlib (unsigned int x, unsigned int y); void position_imlib (int x, int y); /******************************************************************************* * * X11 / ImLib2 */ #if HAVE_IMLIB2 # include # include # include # include # include # define SUP_IMLIB2 1 #else # define SUP_IMLIB2 0 #endif void get_window_size_imlib2 (unsigned int *my_Width, unsigned int *my_Height); void get_window_pos_imlib2 (int *x, int *y); int open_window_imlib2 (void); void close_window_imlib2(void); void render_imlib2 (uint8_t *mybuffer); void newsrc_imlib2 (void) ; void handle_X_events_imlib2 (void); void resize_imlib2 (unsigned int x, unsigned int y); void position_imlib2 (int x, int y); /******************************************************************************* * * Max Osx - quartz */ #ifdef HAVE_MACOSX # define SUP_MACOSX 1 #else # define SUP_MACOSX 0 #endif void get_window_size_mac (unsigned int *my_Width, unsigned int *my_Height); void getpos_mac (int *x, int *y); int open_window_mac (void); void close_window_mac(void); void render_mac (uint8_t *mybuffer); void newsrc_mac (void) ; void handle_X_events_mac (void); void resize_mac (unsigned int x, unsigned int y); void position_mac (int x, int y); void getsize_mac (unsigned int *x, unsigned int *y); void fullscreen_mac (int a); void ontop_mac (int a); int get_fullscreen_mac(); int get_ontop_mac(); void window_resized_mac(); xjadeo-0.7.6/src/xjadeo/jack.c0000644000175000017500000001170612155132070013035 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2006 * Robin Gareus * Luis Garrido * */ #include #include #include #include #include #include "xjadeo.h" //extern double duration; //extern long frames; extern double framerate; extern int want_quiet; extern int jack_clkconvert; extern int interaction_override; #ifdef HAVE_LASH extern lash_client_t *lash_client; #endif jack_client_t *jack_client = NULL; char jackid[16]; #ifdef JACK_SESSION #include extern char *jack_uuid; extern int loop_flag; void jack_session_cb(jack_session_event_t *event, void *arg) { char filename[256]; char command[256]; if (interaction_override&OVR_JSESSION) { /* DO NOT SAVE SESSION * e.g. if xjadeo will be restored by wrapper-program * f.i. ardour3+videotimeline */ jack_session_reply(jack_client, event); jack_session_event_free(event); return; } snprintf(filename, sizeof(filename), "%sxjadeo.state", event->session_dir ); snprintf(command, sizeof(command), "xjadeo -U %s --rc ${SESSION_DIR}xjadeo.state", event->client_uuid ); //TODO save-state in filename saveconfig(filename); event->command_line = strdup(command); jack_session_reply( jack_client, event ); if(event->type == JackSessionSaveAndQuit) loop_flag=0; jack_session_event_free(event); } #endif /* when jack shuts down... */ void jack_shutdown(void *arg) { jack_client=NULL; fprintf (stderr, "jack server shutdown\n"); } int jack_connected(void) { if (jack_client) return (1); return (0); } void open_jack(void ) { if (jack_client) { fprintf (stderr, "xjadeo is alredy connected to jack.\n"); return; } int i = 0; do { snprintf(jackid,16,"xjadeo-%i",i); #ifdef JACK_SESSION if (jack_uuid) jack_client = jack_client_open (jackid, JackUseExactName|JackSessionID, NULL, jack_uuid); else #endif jack_client = jack_client_open (jackid, JackUseExactName, NULL); } while (jack_client == 0 && i++<16); if (!jack_client) { fprintf(stderr, "could not connect to jack server.\n"); } else { #ifdef JACK_SESSION jack_set_session_callback (jack_client, jack_session_cb, NULL); #endif #ifndef HAVE_WINDOWS jack_on_shutdown (jack_client, jack_shutdown, 0); jack_activate(jack_client); #endif if (!want_quiet) fprintf(stdout, "connected as jack client '%s'\n",jackid); #ifdef HAVE_LASH lash_jack_client_name(lash_client, jackid); #endif } } void jackt_rewind() { if (jack_client) { jack_transport_locate (jack_client,0); } } void jackt_start() { if (jack_client) { jack_transport_start (jack_client); } } void jackt_stop() { if (jack_client) { jack_transport_stop (jack_client); } } void jackt_toggle() { if (jack_client) { switch (jack_transport_query(jack_client, NULL)) { case JackTransportRolling: jackt_stop(); break; case JackTransportStopped: jackt_start(); break; default: break; } } } void close_jack(void) { if (jack_client) { jack_client_t *b = jack_client; jack_client=NULL; jack_deactivate (b); jack_client_close (b); } jack_client=NULL; } long jack_poll_frame (void) { jack_position_t jack_position; long frame = 0; if (!jack_client) return (-1); jack_transport_query(jack_client, &jack_position); #ifdef JACK_DEBUG fprintf(stdout, "jack position: %lu %lu/ \n", (long unsigned) jack_position.frame, (long unsigned) jack_position.frame_rate); fprintf(stdout, "jack frame position time: %g sec %g sec\n", jack_position.frame_time , jack_position.next_time); #endif #ifdef HAVE_JACK_VIDEO if ((jack_position.valid & JackAudioVideoRatio) && jack_clkconvert == 0 ) { frame = (long ) floor(jack_position.audio_frames_per_video_frame * jack_position.frame / (double) jack_position.frame_rate); # ifdef JACK_DEBUG fprintf(stdout, "jack calculated frame: %li\n", frame); # endif } else #endif /* HAVE_JACK_VIDEO */ { double jack_time = 0; jack_time = jack_position.frame / (double) jack_position.frame_rate; // frame = (long) floor((double) frames * (double) jack_time / (double) duration); // frame = sec_to_frame(jack_time); frame = floor(framerate * jack_time); #ifdef JACK_DEBUG fprintf(stdout, "jack calculated time: %lf sec - frame: %li\n", jack_time, frame); #endif } return(frame); } xjadeo-0.7.6/src/xjadeo/avinfo.c0000644000175000017500000002751712170023367013423 00000000000000/* xjinfo - write Audio/Video file information in XML format * * (c) 2006 Robin Gareus * * 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, 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. * * * Parts of this go back to code found "for free" on the ffmpeg mailing list: * thanks Paul Curtis! Andrea Gianarro helped improving this tool. * It basically does what 'ffmpeg -i' does, but has a couple of features * that can be used in scripts. * * compile with: * gcc avinfo.c -o xjinfo -lavcodec -lavformat ##FFMPEG## * * replace ##FFMPEG## with the arguments corresponding to your ffmpeg * installation as returned by `ffmpeg-config --libs avcodec avformat` * eg: * -lavcodec -lavformat -lavutil -lx264 -ldts -lmp3lame -logg * -lvorbis -lvorbisenc -ltheora -la52 -lraw1394 -ldc1394_control -lgsm * -lz -lm -L/usr/local/lib/ * */ #ifdef HAVE_CONFIG_H # include #else # define VERSION 0.2 #endif #define EXIT_FAILURE 1 #include #include #include #ifndef HAVE_WINDOWS #include #include #else #define PRId64 "I64d" #endif #include #include "ffcompat.h" #if LIBAVFORMAT_BUILD >= 3473920 #include #endif char *program_name; int want_mode = 0; /*< 0:xml 1:time 2:videoinfo */ static void usage (int status) { printf ("%s - \ video file info\n", program_name); printf ("usage: %s [Options] \n", program_name); printf ("" "Options:\n" " -h display this help and exit\n" " -V print version information and exit\n" " -x print XML (default).\n" " -t print duration of file in seconds.\n" " -v dump human readable video stream information.\n" " -c dump comma separated video stream information.\n" " one line for each video stream:\n" " file-duration,file-fps,stream-fps,width,height,codec,colorspace\n" " Units: file-len: sec; fps: 1/sec; w&h: pixels; codec+fmt: text\n" ); exit (status); } static void printversion (void) { printf ("%s version %s\n", program_name, VERSION); printf("compiled with LIBAVFORMAT_BUILD 0x%x = %i\n", LIBAVFORMAT_BUILD, LIBAVFORMAT_BUILD); } static struct option const long_options[] = { {"xml", no_argument, 0, 'x'}, {"csv", no_argument, 0, 'c'}, {"text", no_argument, 0, 'v'}, {"time", no_argument, 0, 't'}, {"duration", no_argument, 0, 't'}, {"version", no_argument, 0, 'V'}, {NULL, 0, NULL, 0} }; static int decode_switches (int argc, char **argv) { int c; while ((c = getopt_long (argc, argv, "h" /* help */ "x" /* xml output */ "v" /* video streams csv */ "c" /* video streams csv */ "t" /* file duration */ "V", /* version */ long_options, (int *) 0)) != EOF) { switch (c) { case 't': want_mode = 1; break; case 'c': want_mode = 3; break; case 'v': want_mode = 2; break; case 'x': want_mode = 0; break; case 'V': printversion(); exit(0); case 'h': usage (0); default: usage (EXIT_FAILURE); } } /* while switch */ return optind; } int main(int argc, char *argv[]) { AVFormatContext *ic = NULL; AVCodec *p; int err, ret, i, flags; char str[80]; char *fn = NULL; int64_t hours, mins, secs, us; program_name = argv[0]; i = decode_switches (argc, argv); if ((i+1)== argc) fn = argv[i]; else usage (EXIT_FAILURE); av_register_all(); av_log_set_level(AV_LOG_QUIET); #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 7, 0) err = av_open_input_file(&ic, fn, NULL, 0, NULL); #else err = avformat_open_input(&ic, fn, NULL, NULL); #endif if (err < 0) { fprintf(stderr, "%s: Error while opening file\n", fn); return 1; } ret = avformat_find_stream_info(ic, NULL); if (ret < 0) { fprintf(stderr, "%s: could not find codec parameters\n", fn); return 1; } #if defined(__BIG_ENDIAN__) && (__ppc__) && LIBAVFORMAT_BUILD <= 4616 // this cast is weird, but it works.. the bytes seem to be in 'correct' order, but the two // 4byte-words are swapped. ?! - maybe it's only the files I tried.. int64_t dur = (int64_t) (ic->duration); secs = (int) ( ((double) (((dur&0xffffffff)<<32)|((dur>>32)&0xffffffff))) / (double) AV_TIME_BASE ); #else secs = (int) (ic->duration / AV_TIME_BASE); #endif if (want_mode == 1) { /* duration only */ printf("%"PRId64"", secs); return 0; } if (want_mode == 2) { /* CSV video stream info */ for (i = 0; i < ic->nb_streams; i++) { AVStream *st = ic->streams[i]; AVCodecContext *codec; #if LIBAVFORMAT_BUILD <= 4629 codec = &(st->codec); #else codec = st->codec; #endif p = avcodec_find_decoder(codec->codec_id); if (codec->width) { us = ic->duration % AV_TIME_BASE; mins = secs / 60; secs %= 60; hours = mins / 60; mins %= 60; printf("%02"PRId64":%02"PRId64":%02"PRId64".%01"PRId64" - ", hours, mins, secs, (us * 10) / AV_TIME_BASE); #if LIBAVFORMAT_BUILD < 4624 printf("fps:%.2f ", (double) codec->frame_rate / (double) codec->frame_rate_base); #elif LIBAVFORMAT_BUILD <= 4629 printf("fps:%.2f ", av_q2d(st->r_frame_rate) ); #else printf("fps:%.2f ",1.0/av_q2d(st->time_base)); #endif printf("w:%d ", codec->width); printf("h:%d #", codec->height); if (p) printf("%s,", p->name); #if LIBAVFORMAT_BUILD < 3473920 printf("%s", avcodec_get_pix_fmt_name(codec->pix_fmt)); #else printf("%s", av_get_pix_fmt_name(codec->pix_fmt)); #endif printf("\n"); break; } } return 0; } if (want_mode == 3) { /* CSV video stream info */ for (i = 0; i < ic->nb_streams; i++) { AVStream *st = ic->streams[i]; AVCodecContext *codec; #if LIBAVFORMAT_BUILD <= 4629 codec = &(st->codec); #else codec = st->codec; #endif p = avcodec_find_decoder(codec->codec_id); if (codec->width) { printf("%"PRId64",", secs); printf("%.2f,",1.0/av_q2d(st->time_base)); #if LIBAVFORMAT_BUILD < 4624 printf("%.2f,", (double) codec->frame_rate / (double) codec->frame_rate_base); #elif LIBAVFORMAT_BUILD <= 4629 printf("%.2f,", av_q2d(st->r_frame_rate)); #else printf("%.2f,", 1/av_q2d(codec->time_base)); #endif printf("%d,", codec->width); printf("%d,", codec->height); printf("%d:%d,", codec->sample_aspect_ratio.num,codec->sample_aspect_ratio.den); if (p) printf("%s,", p->name); #if LIBAVFORMAT_BUILD < 3473920 printf("%s", avcodec_get_pix_fmt_name(codec->pix_fmt)); #else printf("%s", av_get_pix_fmt_name(codec->pix_fmt)); #endif printf("\n"); } } return 0; } /* XML output */ printf("\n"); printf("\n"); printf("\n"); printf(" 0.2\n"); printf(" %s\n", ic->filename); printf(" %"PRId64"\n", secs); printf(" %"PRId64"\n", ic->duration); printf(" %d\n", AV_TIME_BASE); us = ic->duration % AV_TIME_BASE; mins = secs / 60; secs %= 60; hours = mins / 60; mins %= 60; printf(" \n", hours, mins, secs, (us * 10) / AV_TIME_BASE); printf(" %d\n", ic->bit_rate); #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 0, 0) printf(" %"PRId64"\n", ic->file_size); #endif printf(" %"PRId64"\n", ic->start_time); #if LIBAVFORMAT_BUILD < 3473920 if (ic->title) printf(" %s\n", ic->title); if (ic->copyright) printf(" %s\n", ic->copyright); if (ic->author) printf(" %s\n", ic->author); if (ic->album) printf(" %s\n", ic->album); if (ic->comment) printf(" %s\n", ic->comment); if (ic->year) printf(" %d\n", ic->year); if (ic->track) printf(" %d\n", ic->track); if (ic->genre) printf(" %s\n", ic->genre); #elif LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 0, 0) AVMetadataTag *next = NULL; while((next=av_metadata_get(ic->metadata, "", next, AV_METADATA_IGNORE_SUFFIX))) { printf(" <%s>%s\n", next->key, next->value ,next->key); } #else AVDictionaryEntry *next = NULL; while((next=av_dict_get(ic->metadata, "", next, AV_DICT_IGNORE_SUFFIX))) { printf(" <%s>%s\n", next->key, next->value ,next->key); } #endif #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 0, 0) #if LIBAVFORMAT_BUILD > 4629 printf(" %d\n", ic->mux_rate); #endif #endif printf(" %d\n", ic->nb_streams); for (i = 0; i < ic->nb_streams; i++) { AVStream *st = ic->streams[i]; AVCodecContext *codec; #if LIBAVFORMAT_BUILD <= 4629 codec = &(st->codec); #else codec = st->codec; #endif avcodec_string(str, sizeof(str), codec, 0); switch (codec->codec_type) { case CODEC_TYPE_VIDEO: printf(" \n", str); printf(" \n", i); break; case CODEC_TYPE_AUDIO: printf(" \n", str); printf(" \n", i); break; case CODEC_TYPE_DATA: printf(" \n", i); break; default: printf(" \n", i); break; } p = avcodec_find_decoder(codec->codec_id); flags = ic->iformat->flags; if (p) printf(" %s\n", p->name); else printf(" unknown\n"); printf(" %"PRId64"\n", st->duration); printf(" \n %d\n", st->time_base.num); printf(" %d\n \n", st->time_base.den); printf(" %.2f\n", 1.0/av_q2d(st->time_base)); printf(" %d\n", codec->bit_rate); #if LIBAVFORMAT_BUILD > 4629 if (flags & AVFMT_SHOW_IDS) printf(" 0x%x\n", st->id); #endif if (codec->width) { printf(" %d\n", codec->width); printf(" %d\n", codec->height); if (codec->sample_aspect_ratio.num && codec->sample_aspect_ratio.den) { printf(" \n %d\n", codec->sample_aspect_ratio.num); printf(" %d\n \n", codec->sample_aspect_ratio.den); } #if LIBAVFORMAT_BUILD < 4624 printf(" %.2f\n", (double) codec->frame_rate / (double) codec->frame_rate_base); #elif LIBAVFORMAT_BUILD <= 4629 printf(" %.2f\n", 1/av_q2d(codec->time_base)); #else printf(" %.2f\n", av_q2d(st->r_frame_rate)); #endif #if LIBAVFORMAT_BUILD < 3473920 printf(" %s\n", avcodec_get_pix_fmt_name(codec->pix_fmt)); #else printf(" %s\n", av_get_pix_fmt_name(codec->pix_fmt)); #endif } if (codec->channels) printf(" %d\n", codec->channels); if (codec->sample_rate) printf(" %d\n", codec->sample_rate); printf(" \n"); } printf("\n"); return 0; } /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/xjadeo/ffcompat.h0000644000175000017500000000252712136032732013735 00000000000000#ifdef OLD_FFMPEG #include // needed for PIX_FMT #include #else #include // needed for PIX_FMT #include #endif #ifdef HAVE_SWSCALE #ifdef OLD_FFMPEG #include #else #include #endif #endif #include #include #include #include /* ffmpeg backwards compat */ #ifndef CODEC_TYPE_VIDEO #define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO #endif #ifndef CODEC_TYPE_DATA #define CODEC_TYPE_DATA AVMEDIA_TYPE_DATA #endif #ifndef CODEC_TYPE_AUDIO #define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO #endif #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52, 123, 0) static inline int avcodec_open2(AVCodecContext *avctx, AVCodec *codec, void **options __attribute__((unused))) { return avcodec_open(avctx, codec); } #endif #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 111, 0) static inline int avformat_find_stream_info(AVFormatContext *ic, void **options) { return av_find_stream_info(ic); } #endif #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(53, 5, 0) static inline void avformat_close_input(AVFormatContext **s) { av_close_input_file(*s); } #endif xjadeo-0.7.6/src/xjadeo/display_mac.c0000644000175000017500000015616212155241200014414 00000000000000/* xjadeo - jack video monitor * * 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, 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. * * (c) 2008 Robin Gareus * * this code was inspired by mplayer's libvo/vo_quartz.c * (c) 2004 Nicolas Plourde * (C) 2004 Romain Dolbeau * * */ #include "xjadeo.h" void xapi_open(void *d); void jackt_stop(); void jackt_start(); void jackt_toggle(); void jackt_rewind(); int midi_connected(void); int jack_connected(void); extern int loop_flag; extern int VOutput; extern int OSD_mode; // change via keystroke extern long ts_offset; extern char *smpte_offset; extern int force_redraw; // tell the main event loop that some cfg has changed extern int want_letterbox; extern int seekflags; extern int interaction_override; // disable some options. extern int movie_width; extern int movie_height; extern int ffctv_width; extern int ffctv_height; extern float movie_aspect; extern double delay; extern double framerate; extern int start_fullscreen; extern int start_ontop; int keep_aspect = 0 ; // don't allow resizing window other than in aspect. #ifdef CROPIMG extern int xoffset; #endif #define memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 0) static inline void * memcpy_pic2(void * dst, const void * src, int bytesPerLine, int height, int dstStride, int srcStride, int limit2width) { int i; void *retval=dst; if(!limit2width && dstStride == srcStride) { if (srcStride < 0) { src = (uint8_t*)src + (height-1)*srcStride; dst = (uint8_t*)dst + (height-1)*dstStride; srcStride = -srcStride; } memcpy(dst, src, srcStride*height); } else { for(i=0; i #include //#include // #ifdef WORDS_BIGENDIAN #define be2me_16(x) (x) #define be2me_32(x) (x) #define be2me_64(x) (x) #define le2me_16(x) bswap_16(x) #define le2me_32(x) bswap_32(x) #define le2me_64(x) bswap_64(x) #else #define be2me_16(x) bswap_16(x) #define be2me_32(x) bswap_32(x) #define be2me_64(x) bswap_64(x) #define le2me_16(x) (x) #define le2me_32(x) (x) #define le2me_64(x) (x) #endif int levelList[] = { kCGDesktopWindowLevelKey, kCGNormalWindowLevelKey, kCGScreenSaverWindowLevelKey }; /// prototypes static void flip_page(void); static OSStatus KeyEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); static OSStatus MouseEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); static OSStatus DialogEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); void mac_put_key(UInt32 key, UInt32 charcode); OSStatus mac_menu_cmd(OSStatus result, HICommand *acmd); /// static int vo_fs = 0; // enter fullscreen - user setting static int vo_mac_fs = 0; // we are in fullscreen /// static int mouseHide = 0; static int winLevel = 1; // always on top static Rect imgRect; // size of the original image (unscaled) static Rect dstRect; // size of the displayed image (after scaling) static Rect winRect; // size of the window containg the displayed image (include padding) static Rect oldWinRect; // size of the window containg the displayed image (include padding) when NOT in fullscreen mode static Rect oldWinBounds; // last size before entering full-screen static Rect deviceRect; // size of the display device static int device_width; static int device_height; static int device_id; static short fs_res_x=0; // full screen res static short fs_res_y=0; static MenuRef windMenu; static MenuRef movMenu; static MenuRef osdMenu; static MenuRef scrnMenu; static MenuRef zoomMenu; static MenuRef seekMenu; static MenuRef jackMenu; static MenuRef syncMenu; static MenuRef osdoMenu; #if 0 static MenuRef fpsMenu; static MenuRef fileMenu; #endif enum // menubar { mQuit = 1, mOpen, mSettings, mHalfScreen, mNormalScreen, mDoubleScreen, mFullScreen, mKeepAspect, // letterbox mOSDOffset, mOSDFrame, mOSDSmpte, mOSDBox, // mOSDFont, mOSDOffO, mOSDOffS, mOSDOffF, mSyncJack, mSyncLTC, mSyncJackMidi, mSyncPortMidi, mSyncNone, mJackPlay, mJackStop, mJackRewind, mSeekAny, mSeekKeyFrame, mSeekContinuous }; static WindowRef theWindow = NULL; static WindowGroupRef winGroup = NULL; static CGContextRef context; static GDHandle deviceHdl; // main display device static CGRect bounds; // RGB[A] image boundaries static CGDataProviderRef dataProviderRef; // RGB[A] ref static CGImageRef image; // RGB[A] image // YUV & CoDec static uint32_t image_depth; static uint32_t image_format; static uint32_t image_size; static uint32_t image_buffer_size; static char *image_data = NULL; static ImageSequence seqId; //static CodecType image_qtcodec; static PlanarPixmapInfoYUV420 *P = NULL; static uint8_t *yuvbuf = NULL; static struct { ImageDescriptionHandle desc; Handle extension_colr; Handle extension_fiel; Handle extension_clap; Handle extension_pasp; } yuv_qt_stuff; static MatrixRecord matrix; //////////////////////////////////////////////////////////////////// // update checked menu items static void checkMyMenu(void) { CheckMenuItem (seekMenu, 1, seekflags==SEEK_ANY); CheckMenuItem (seekMenu, 2, seekflags==SEEK_KEY); CheckMenuItem (seekMenu, 3, seekflags==SEEK_CONTINUOUS); CheckMenuItem (osdMenu, 1, (OSD_mode&OSD_FRAME)!=0); CheckMenuItem (osdMenu, 2, (OSD_mode&OSD_SMPTE)!=0); CheckMenuItem (osdMenu, 5, (OSD_mode&OSD_BOX)!=0); CheckMenuItem (osdoMenu, 1, (OSD_mode&(OSD_OFFS|OSD_OFFF))==0); CheckMenuItem (osdoMenu, 2, (OSD_mode&OSD_OFFS)!=0); CheckMenuItem (osdoMenu, 3, (OSD_mode&OSD_OFFF)!=0); CheckMenuItem (zoomMenu, 6, want_letterbox); CheckMenuItem (syncMenu, 1, jack_connected()); CheckMenuItem (syncMenu, 4, ltcjack_connected()); CheckMenuItem (syncMenu, 5, midi_connected() && !strcmp(midi_driver_name(), "PORTMIDI")); CheckMenuItem (syncMenu, 6, midi_connected() && !strcmp(midi_driver_name(), "JACK-MIDI")); CheckMenuItem (syncMenu, 7, (!jack_connected() && !midi_connected() && !ltcjack_connected())); } // main window setup and painting.. static void mac_CreateWindow(uint32_t d_width, uint32_t d_height, WindowAttributes windowAttrs) { CFStringRef titleKey; CFStringRef windowTitle; OSStatus result; MenuItemIndex index; // FIXME : these may leak memory when re-opening the window. CFStringRef movMenuTitle; CFStringRef zoomMenuTitle; CFStringRef seekMenuTitle; CFStringRef jackMenuTitle; CFStringRef osdMenuTitle; CFStringRef osdoMenuTitle; CFStringRef scrnMenuTitle; CFStringRef syncMenuTitle; #if 0 CFStringRef fpsMenuTitle; CFStringRef fileMenuTitle; #endif const EventTypeSpec win_events[] = { { kEventClassWindow, kEventWindowClosed }, { kEventClassWindow, kEventWindowBoundsChanged }, { kEventClassCommand, kEventCommandProcess } }; const EventTypeSpec key_events[] = { { kEventClassKeyboard, kEventRawKeyDown }, { kEventClassKeyboard, kEventRawKeyRepeat } }; const EventTypeSpec mouse_events[] = { { kEventClassMouse, kEventMouseMoved }, //{ kEventClassMouse, kEventMouseWheelMoved }, { kEventClassMouse, kEventMouseDown }, { kEventClassMouse, kEventMouseUp }, //{ kEventClassMouse, kEventMouseDragged } }; SetRect(&winRect, 0, 0, d_width, d_height); SetRect(&oldWinRect, 0, 0, d_width, d_height); SetRect(&dstRect, 0, 0, d_width, d_height); //Clear Menu Bar ClearMenuBar(); //Create Window Menu CreateStandardWindowMenu(0, &windMenu); InsertMenu(windMenu, 0); #if 1 EnableMenuCommand(0, kHICommandPreferences); //DisableMenuCommand(0, kHICommandServices); //AEInstallEventHandler(kCoreEventClass, kAEShowPreferences, NewAEEventHandlerUPP(WindowEventHandler), NULL, false); #endif ////Create Movie Menu CreateNewMenu (1004, 0, &movMenu); movMenuTitle = CFSTR("Movie"); SetMenuTitleWithCFString(movMenu, movMenuTitle); AppendMenuItemTextWithCFString(movMenu, CFSTR("Load File"), 0, mOpen, &index); AppendMenuItemTextWithCFString(movMenu, NULL, kMenuItemAttrSeparator, 0, &index); AppendMenuItemTextWithCFString(movMenu, CFSTR("Seek"), 0, 0, &index); #if 0 AppendMenuItemTextWithCFString(movMenu, CFSTR("Attributes"), 0, 0, &index); //Create File Attribute Menu CreateNewMenu (0, 0, &fileMenu); fileMenuTitle = CFSTR("View"); SetMenuTitleWithCFString(fileMenu, fileMenuTitle); SetMenuItemHierarchicalMenu(movMenu, 4, fileMenu); AppendMenuItemTextWithCFString(fileMenu, CFSTR("use file's FPS"), 1, 0, &index); //XXX AppendMenuItemTextWithCFString(fileMenu, CFSTR("override FPS"), 1, 0, &index); //XXX #endif #if 0 AppendMenuItemTextWithCFString(movMenu, NULL, kMenuItemAttrSeparator, 0, &index); AppendMenuItemTextWithCFString(movMenu, CFSTR("About"), 0, kHICommandAbout, &index); #endif //Create seek Menu CreateNewMenu (0, 0, &seekMenu); seekMenuTitle = CFSTR("Seek"); SetMenuTitleWithCFString(seekMenu, seekMenuTitle); SetMenuItemHierarchicalMenu(movMenu, 3, seekMenu); AppendMenuItemTextWithCFString(seekMenu, CFSTR("to any frame"), 0, mSeekAny, &index); AppendMenuItemTextWithCFString(seekMenu, CFSTR("keyframes only"), 0, mSeekKeyFrame, &index); AppendMenuItemTextWithCFString(seekMenu, CFSTR("Continuously"), 0, mSeekContinuous, &index); ////Create Screen Menu CreateNewMenu (0, 0, &scrnMenu); scrnMenuTitle = CFSTR("Screen"); SetMenuTitleWithCFString(scrnMenu, scrnMenuTitle); AppendMenuItemTextWithCFString(scrnMenu, CFSTR("OSD"), 0, 0, &index); AppendMenuItemTextWithCFString(scrnMenu, CFSTR("Zoom"), 0, 0, &index); #if 0 AppendMenuItemTextWithCFString(scrnMenu, CFSTR("Monitor Speed"), 0, 0, &index); //Create FPS Menu CreateNewMenu (0, 0, &fpsMenu); fpsMenuTitle = CFSTR("Monitor Speed"); SetMenuTitleWithCFString(fpsMenu, fpsMenuTitle); SetMenuItemHierarchicalMenu(scrnMenu, 3, fpsMenu); AppendMenuItemTextWithCFString(fpsMenu, CFSTR("at screen fps"), 1, 0, &index); //XXX AppendMenuItemTextWithCFString(fpsMenu, CFSTR("at files fps"), 1, 0, &index); //XXX //CheckMenuItem (fpsMenu, 2, (delay==-1)); AppendMenuItemTextWithCFString(fpsMenu, CFSTR("custom"), 1, 0, &index); //XXX #endif //Create OSD Menu CreateNewMenu (0, 0, &osdMenu); osdMenuTitle = CFSTR("OSD"); SetMenuTitleWithCFString(osdMenu, osdMenuTitle); SetMenuItemHierarchicalMenu(scrnMenu, 1, osdMenu); AppendMenuItemTextWithCFString(osdMenu, CFSTR("Frameno."), 0, mOSDFrame, &index); AppendMenuItemTextWithCFString(osdMenu, CFSTR("SMPTE"), 0, mOSDSmpte, &index); AppendMenuItemTextWithCFString(osdMenu, CFSTR("SMPTE-Offset"), 0, 0, &index); AppendMenuItemTextWithCFString(osdMenu, NULL, kMenuItemAttrSeparator, 0, &index); AppendMenuItemTextWithCFString(osdMenu, CFSTR("Box"), 0, mOSDBox, &index); //AppendMenuItemTextWithCFString(osdMenu, CFSTR("Font"), 0, mOSDFont, &index); CreateNewMenu (0, 0, &osdoMenu); osdoMenuTitle = CFSTR("SMPTE-Offset"); SetMenuTitleWithCFString(osdoMenu, osdoMenuTitle); SetMenuItemHierarchicalMenu(osdMenu, 3, osdoMenu); AppendMenuItemTextWithCFString(osdoMenu, CFSTR("off"), 0, mOSDOffO, &index); AppendMenuItemTextWithCFString(osdoMenu, CFSTR("as SMPTE"), 0, mOSDOffS, &index); AppendMenuItemTextWithCFString(osdoMenu, CFSTR("as Frameno"), 0, mOSDOffF, &index); //Create Zoom Menu CreateNewMenu (0, 0, &zoomMenu); zoomMenuTitle = CFSTR("Zoom"); SetMenuTitleWithCFString(zoomMenu, zoomMenuTitle); SetMenuItemHierarchicalMenu(scrnMenu, 2, zoomMenu); AppendMenuItemTextWithCFString(zoomMenu, CFSTR("Half Size"), 0, mHalfScreen, &index); AppendMenuItemTextWithCFString(zoomMenu, CFSTR("Normal Size"), 0, mNormalScreen, &index); AppendMenuItemTextWithCFString(zoomMenu, CFSTR("Double Size"), 0, mDoubleScreen, &index); AppendMenuItemTextWithCFString(zoomMenu, CFSTR("Full Screen"), 0, mFullScreen, &index); AppendMenuItemTextWithCFString(zoomMenu, NULL, kMenuItemAttrSeparator, 0, &index); AppendMenuItemTextWithCFString(zoomMenu, CFSTR("Letterbox"), 0, mKeepAspect, &index); //Create Sync Menu CreateNewMenu (0, 0, &syncMenu); syncMenuTitle = CFSTR("Sync"); SetMenuTitleWithCFString(syncMenu, syncMenuTitle); AppendMenuItemTextWithCFString(syncMenu, CFSTR("JACK"), 0, mSyncJack, &index); AppendMenuItemTextWithCFString(syncMenu, CFSTR("Jack Transport"), 0, 0, &index); AppendMenuItemTextWithCFString(syncMenu, NULL, kMenuItemAttrSeparator, 0, &index); AppendMenuItemTextWithCFString(syncMenu, CFSTR("LTC (jack)"), 0, mSyncLTC, &index); AppendMenuItemTextWithCFString(syncMenu, CFSTR("MTC (portmidi)"), 0, mSyncPortMidi, &index); AppendMenuItemTextWithCFString(syncMenu, CFSTR("MTC (jackmidi)"), 0, mSyncJackMidi, &index); AppendMenuItemTextWithCFString(syncMenu, CFSTR("none"), 0, mSyncNone, &index); //Create Jack Menu CreateNewMenu (0, 0, &jackMenu); jackMenuTitle = CFSTR("Jack Transport"); SetMenuTitleWithCFString(jackMenu, jackMenuTitle); SetMenuItemHierarchicalMenu(syncMenu, 2, jackMenu); AppendMenuItemTextWithCFString(jackMenu, CFSTR("Play"), 0, mJackPlay, &index); AppendMenuItemTextWithCFString(jackMenu, CFSTR("Stop"), 0, mJackStop, &index); AppendMenuItemTextWithCFString(jackMenu, CFSTR("Rewind"), 0, mJackRewind, &index); checkMyMenu(); InsertMenu(movMenu, GetMenuID(windMenu)); InsertMenu(scrnMenu, GetMenuID(windMenu)); InsertMenu(syncMenu, GetMenuID(windMenu)); //insert before Window menu DrawMenuBar(); //create window CreateNewWindow(kDocumentWindowClass, windowAttrs, &winRect, &theWindow); CreateWindowGroup(0, &winGroup); SetWindowGroup(theWindow, winGroup); //Set window title titleKey = CFSTR("jadeo"); windowTitle = CFCopyLocalizedString(titleKey, NULL); result = SetWindowTitleWithCFString(theWindow, windowTitle); CFRelease(titleKey); CFRelease(windowTitle); //Install event handler InstallApplicationEventHandler (NewEventHandlerUPP (KeyEventHandler), GetEventTypeCount(key_events), key_events, NULL, NULL); InstallApplicationEventHandler (NewEventHandlerUPP (MouseEventHandler), GetEventTypeCount(mouse_events), mouse_events, NULL, NULL); InstallWindowEventHandler (theWindow, NewEventHandlerUPP (WindowEventHandler), GetEventTypeCount(win_events), win_events, theWindow, NULL); } //////////////////////////////////////////////////////// DialogRef midiAlertDialog = 0; static OSStatus midiAlert(void) { OSStatus status = 0; const EventTypeSpec win_events[] = { { kEventClassWindow, kEventWindowClosed }, { kEventClassCommand, kEventCommandProcess } }; CreateStandardAlert(kAlertNoteAlert, CFSTR("Midi connect failed!"), CFSTR("could not connect to MIDI Port. check the settings."), NULL, &midiAlertDialog); //RunStandardAlert(midiAlertDialog, NULL, NULL); ShowWindow (GetDialogWindow(midiAlertDialog)); InstallWindowEventHandler (GetDialogWindow(midiAlertDialog), NewEventHandlerUPP (DialogEventHandler), GetEventTypeCount(win_events), win_events, GetDialogWindow(midiAlertDialog), NULL); RunAppModalLoopForWindow (GetDialogWindow(midiAlertDialog)); return(status); } // TODO DialogRef settingsDialog = 0; static OSStatus NavOpenSettings(void) { OSStatus status = 0; #if 0 Rect setRect; WindowRef theSettings = NULL; SetRect(&setRect, 0, 0, 300, 200); WindowAttributes windowAttrs; windowAttrs = kWindowNoShadowAttribute | kWindowOpaqueForEventsAttribute; CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes, &setRect, &theSettings); #else const EventTypeSpec win_events[] = { { kEventClassWindow, kEventWindowClosed }, { kEventClassCommand, kEventCommandProcess } }; CreateStandardAlert(kAlertNoteAlert, CFSTR("settings dialog"), CFSTR("not yet implemented. use .xjadeorc file in your $HOME to make settings persist."),NULL, &settingsDialog); InstallWindowEventHandler (GetDialogWindow(settingsDialog), NewEventHandlerUPP (DialogEventHandler), GetEventTypeCount(win_events), win_events, GetDialogWindow(settingsDialog), NULL); ShowWindow (GetDialogWindow(settingsDialog)); RunAppModalLoopForWindow (GetDialogWindow(settingsDialog)); #endif return(status); } //////////////////////////////////////////////////////// static OSStatus OpenDocuments( AEDescList docList ) { long index; FSRef fsRef; //CFStringRef fileName; long count = 0; OSStatus status = AECountItems( &docList, &count ); require_noerr( status, CantGetCount ); for( index = 1; index <= count; index++ ) { if ( (status = AEGetNthPtr( &docList, index, typeFSRef, NULL, NULL, &fsRef, sizeof(FSRef), NULL) ) == noErr ) { unsigned char revpath[PATH_MAX]; OSErr error; error = FSRefMakePath(&fsRef, revpath, sizeof(revpath)); if (error !=noErr) continue; printf("%s\n", revpath); xapi_open(revpath); break; } } CantGetCount: return(status); } int ask_close() { DialogRef noticeDialog; DialogItemIndex itemIndex; AlertStdCFStringAlertParamRec inAlertParam; GetStandardAlertDefaultParams(&inAlertParam, kStdCFStringAlertVersionOne); inAlertParam.defaultButton = kAlertStdAlertCancelButton; inAlertParam.defaultText = CFSTR("Quit"); inAlertParam.cancelText = CFSTR("Don't Quit"); CreateStandardAlert(kAlertCautionAlert, CFSTR("Really Quit?"), CFSTR("Application terminaton is beeing blocked by remote control.\nPlease use the controlling application to quit Jadeo.\nQuit anyway?"), &inAlertParam, ¬iceDialog); RunStandardAlert(noticeDialog, NULL, &itemIndex); if (itemIndex == 1) return 1; return 0; } static OSStatus NavOpenDocument(void) { printf("NavOpenDocument\n"); OSStatus status; NavDialogCreationOptions options; NavReplyRecord navReply; static NavObjectFilterUPP navFilterUPP = NULL; NavDialogRef navDialog = NULL; status = NavGetDefaultDialogCreationOptions( &options ); require_noerr( status, CantGetDefaultOptions ); //if ( navFilterUPP == NULL ) navFilterUPP = NewNavObjectFilterUPP( NavOpenFilterProc ); status = NavCreateChooseFileDialog( &options, NULL, NULL, NULL, navFilterUPP, NULL, &navDialog ); require_noerr( status, CantCreateDialog ); status = NavDialogRun( navDialog ); require_noerr( status, CantRunDialog ); status = NavDialogGetReply( navDialog, &navReply ); require( (status == noErr) || (status == userCanceledErr), CantGetReply ); if ( navReply.validRecord ) status = OpenDocuments( navReply.selection ); else status = userCanceledErr; NavDisposeReply( &navReply ); CantGetReply: CantRunDialog: if ( navDialog != NULL ) NavDialogDispose( navDialog ); CantCreateDialog: CantGetDefaultOptions: return(status); } //////////////////////////////////////////////////////// // osx helpers void window_resized_mac() { //printf("resized\n"); int padding = 0; CGRect tmpBounds; GetPortBounds( GetWindowPort(theWindow), &winRect ); if(want_letterbox) { float window_aspect = (float)((float)(winRect.right)/(float)winRect.bottom); if (window_aspect > movie_aspect ) { padding = (winRect.right - winRect.bottom*movie_aspect)/2; SetRect(&dstRect, padding, 0, winRect.bottom*movie_aspect+padding, winRect.bottom); } else { padding = (winRect.bottom - winRect.right/movie_aspect)/2; SetRect(&dstRect, 0, padding, winRect.right, winRect.right/movie_aspect+padding); } } else { SetRect(&dstRect, 0, 0, winRect.right, winRect.bottom); } switch (image_format) { case PIX_FMT_RGB24: case PIX_FMT_RGBA32: { bounds = CGRectMake(dstRect.left, dstRect.top, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top); CreateCGContextForPort (GetWindowPort (theWindow), &context); break; } case PIX_FMT_YUV420P: case PIX_FMT_YUYV422: case PIX_FMT_UYVY422: { long scale_X = FixDiv(Long2Fix(dstRect.right - dstRect.left),Long2Fix(imgRect.right)); long scale_Y = FixDiv(Long2Fix(dstRect.bottom - dstRect.top),Long2Fix(imgRect.bottom)); SetIdentityMatrix(&matrix); if (((dstRect.right - dstRect.left) != imgRect.right) || ((dstRect.bottom - dstRect.right) != imgRect.bottom)) { ScaleMatrix(&matrix, scale_X, scale_Y, 0, 0); if (padding > 0) { TranslateMatrix(&matrix, Long2Fix(dstRect.left), Long2Fix(dstRect.top)); } } SetDSequenceMatrix(seqId, &matrix); break; } default: break; } //Clear Background tmpBounds = CGRectMake( 0, 0, winRect.right, winRect.bottom); CreateCGContextForPort(GetWindowPort(theWindow),&context); CGContextFillRect(context, tmpBounds); } void window_ontop() { SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel])); } void window_fullscreen() { static Ptr restoreState = NULL; if(vo_fs) { if(winLevel != 0) { if(device_id == 0) { SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar); // CGDisplayHideCursor(kCGDirectMainDisplay); // mouseHide = TRUE; } if(fs_res_x != 0 || fs_res_y != 0) { BeginFullScreen( &restoreState, deviceHdl, &fs_res_x, &fs_res_y, NULL, NULL, 0); //Get Main device info/////////////////////////////////////////////////// deviceRect = (*deviceHdl)->gdRect; device_width = deviceRect.right; device_height = deviceRect.bottom; } } // end if winLevel !=0 //save old window size if (!vo_mac_fs) { GetWindowPortBounds(theWindow, &oldWinRect); GetWindowBounds(theWindow, kWindowContentRgn, &oldWinBounds); } //go fullscreen int panscan_x = 0; // offset window->image int panscan_y = 0; if(want_letterbox) { float window_aspect = (float)((float)(device_width)/(float)device_height); if (window_aspect > movie_aspect) panscan_x = (device_width - device_height*movie_aspect); else panscan_y = (device_height - device_width/movie_aspect); } ChangeWindowAttributes(theWindow, kWindowNoShadowAttribute, 0); MoveWindow(theWindow, deviceRect.left-(panscan_x >> 1), deviceRect.top-(panscan_y >> 1), 1); SizeWindow(theWindow, device_width+panscan_x, device_height+panscan_y,1); vo_mac_fs = 1; } else { //go back to windowed mode vo_mac_fs = 0; if(restoreState != NULL) { EndFullScreen(restoreState, 0); //Get Main device info/////////////////////////////////////////////////// deviceRect = (*deviceHdl)->gdRect; device_width = deviceRect.right; device_height = deviceRect.bottom; restoreState = NULL; } SetSystemUIMode( kUIModeNormal, 0); #if 0 //show mouse cursor CGDisplayShowCursor(kCGDirectMainDisplay); mouseHide = FALSE; #endif //revert window to previous setting ChangeWindowAttributes(theWindow, 0, kWindowNoShadowAttribute); SizeWindow(theWindow, oldWinRect.right, oldWinRect.bottom,1); MoveWindow(theWindow, oldWinBounds.left, oldWinBounds.top, 1); } window_resized_mac(); } //default keyboard event handler static OSStatus KeyEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) { printf ("key-event\n"); OSStatus result = noErr; UInt32 class = GetEventClass (event); UInt32 kind = GetEventKind (event); result = CallNextEventHandler(nextHandler, event); if(class == kEventClassKeyboard) { char macCharCodes; UInt32 macKeyCode; UInt32 macKeyModifiers; GetEventParameter(event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(macCharCodes), NULL, &macCharCodes); GetEventParameter(event, kEventParamKeyCode, typeUInt32, NULL, sizeof(macKeyCode), NULL, &macKeyCode); GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(macKeyModifiers), NULL, &macKeyModifiers); if(macKeyModifiers != 256) { #if 1 if (kind == kEventRawKeyRepeat || kind == kEventRawKeyDown) { mac_put_key(macKeyCode, macCharCodes); } #endif } else if(macKeyModifiers == 256) { #if 0 switch(macCharCodes) { case '[': SetWindowAlpha(theWindow, winAlpha-=0.05); break; case ']': SetWindowAlpha(theWindow, winAlpha+=0.05); break; } #endif } else result = eventNotHandledErr; } return result; } //default mouse event handler static OSStatus MouseEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) { //printf ("mouse-event\n"); OSStatus result = noErr; UInt32 class = GetEventClass (event); UInt32 kind = GetEventKind (event); result = CallNextEventHandler(nextHandler, event); if(class == kEventClassMouse) { WindowPtr tmpWin; Point mousePos; Point winMousePos; GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, 0, sizeof(Point), 0, &mousePos); GetEventParameter(event, kEventParamWindowMouseLocation, typeQDPoint, 0, sizeof(Point), 0, &winMousePos); switch (kind) { case kEventMouseMoved: { #if 0 // auto - show mouse whem moving if(vo_mac_fs) { CGDisplayShowCursor(kCGDirectMainDisplay); mouseHide = FALSE; } #endif } break; case kEventMouseWheelMoved: { #if 0 int wheel; short part; GetEventParameter(event, kEventParamMouseWheelDelta, typeSInt32, 0, sizeof(int), 0, &wheel); part = FindWindow(mousePos,&tmpWin); if(part == inContent) { if(wheel > 0) mac_put_key(0, '>'); else mac_put_key(0, '<'); } #endif } break; case kEventMouseDown: case kEventMouseUp: { EventMouseButton button; short part; Rect bounds; // XXX bounds is also a static/global GetWindowPortBounds(theWindow, &bounds); GetEventParameter(event, kEventParamMouseButton, typeMouseButton, 0, sizeof(EventMouseButton), 0, &button); part = FindWindow(mousePos,&tmpWin); if(kind == kEventMouseUp) { #if 0 if (part != inContent) break; switch(button) { case kEventMouseButtonPrimary: mac_put_key(0, '.'); break; case kEventMouseButtonSecondary: mac_put_key(0, ','); break; case kEventMouseButtonTertiary: ; break; default:result = eventNotHandledErr;break; } #endif break; } if( (winMousePos.h > (bounds.right - 15)) && (winMousePos.v > (bounds.bottom)) ) { if(!vo_mac_fs) GrowWindow(theWindow, mousePos, NULL); } else if(part == inMenuBar) { MenuSelect(mousePos); HiliteMenu(0); } else if(part == inContent) { #if 0 switch(button) { case kEventMouseButtonPrimary: break; case kEventMouseButtonSecondary: break; case kEventMouseButtonTertiary: break; default: result = eventNotHandledErr; break; } #else result = eventNotHandledErr; #endif } } break; case kEventMouseDragged: break; default:result = eventNotHandledErr;break; } } return result; } static OSStatus DialogEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) { if (midiAlertDialog) { QuitAppModalLoopForWindow(GetDialogWindow(midiAlertDialog)); DisposeDialog(midiAlertDialog); midiAlertDialog=0; } if (settingsDialog) { QuitAppModalLoopForWindow(GetDialogWindow(settingsDialog)); DisposeDialog(settingsDialog); settingsDialog=0; } return noErr; } //default window event handler static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) { //printf ("window-event\n"); OSStatus result = noErr; //uint32_t d_width; //uint32_t d_height; UInt32 class = GetEventClass (event); UInt32 kind = GetEventKind (event); if(class == kEventClassCommand) { //printf("kEventClassCommand\n"); HICommand theHICommand; result = CallNextEventHandler(nextHandler, event); GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand); result = mac_menu_cmd(result, &theHICommand); // or slider // if (kind == kEventCommandProcess) {;} } else if(class == kEventClassWindow) { //printf("kEventClassWindow\n"); WindowRef window; Rect rectPort = {0,0,0,0}; GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window); if(window) { GetPortBounds(GetWindowPort(window), &rectPort); } switch (kind) { case kEventWindowClose: if ((interaction_override&OVR_QUIT_WMG) == 0 || ask_close()) { result = CallNextEventHandler(nextHandler, event); } break; case kEventWindowClosed: result = CallNextEventHandler(nextHandler, event); // TODO: catch window close theWindow = NULL; loop_flag=0; //exit(0); // XXX //ExitToShell(); break; //resize window case kEventWindowZoomed: case kEventWindowBoundsChanged: result = CallNextEventHandler(nextHandler, event); window_resized_mac(); flip_page(); window_resized_mac(); break; default: result = CallNextEventHandler(nextHandler, event); //result = eventNotHandledErr; break; } } return result; } static void flip_page(void) { int curTime; static int lastTime = 0; if(theWindow == NULL) return; //CGContextFlush (context); // XXX not needed switch (image_format) { case PIX_FMT_RGB24: case PIX_FMT_RGBA32: { CGContextDrawImage (context, bounds, image); } break; case PIX_FMT_YUV420P: case PIX_FMT_YUYV422: case PIX_FMT_UYVY422: { OSErr qterr; CodecFlags flags = 0; qterr = DecompressSequenceFrameWhen(seqId, (char *)yuvbuf, image_buffer_size, 0, //codecFlagUseImageBuffer, &flags, NULL, NULL); if (qterr) { fprintf(stderr, "mac error: DecompressSequenceFrameWhen in flip_page (%d) flags:0x%08x\n", qterr, flags); } } break; } #if 1 if(!vo_mac_fs) { //render resize box CGContextBeginPath(context); CGContextSetAllowsAntialiasing(context, false); //CGContextSaveGState(context); //line white CGContextSetRGBStrokeColor (context, 0.2, 0.2, 0.2, 0.5); CGContextMoveToPoint( context, winRect.right-1, 1); CGContextAddLineToPoint( context, winRect.right-1, 1); CGContextMoveToPoint( context, winRect.right-1, 5); CGContextAddLineToPoint( context, winRect.right-5, 1); CGContextMoveToPoint( context, winRect.right-1, 9); CGContextAddLineToPoint( context, winRect.right-9, 1); CGContextStrokePath( context ); //line gray CGContextSetRGBStrokeColor (context, 0.4, 0.4, 0.4, 0.5); CGContextMoveToPoint( context, winRect.right-1, 2); CGContextAddLineToPoint( context, winRect.right-2, 1); CGContextMoveToPoint( context, winRect.right-1, 6); CGContextAddLineToPoint( context, winRect.right-6, 1); CGContextMoveToPoint( context, winRect.right-1, 10); CGContextAddLineToPoint( context, winRect.right-10, 1); CGContextStrokePath( context ); //line black CGContextSetRGBStrokeColor (context, 0.6, 0.6, 0.6, 0.5); CGContextMoveToPoint( context, winRect.right-1, 3); CGContextAddLineToPoint( context, winRect.right-3, 1); CGContextMoveToPoint( context, winRect.right-1, 7); CGContextAddLineToPoint( context, winRect.right-7, 1); CGContextMoveToPoint( context, winRect.right-1, 11); CGContextAddLineToPoint( context, winRect.right-11, 1); CGContextStrokePath( context ); //CGContextRestoreGState( context ); CGContextFlush (context); } #endif #if 0 //auto hide mouse cursor and futur on-screen control? if(vo_mac_fs && !mouseHide) { int curTime = TickCount()/60; static int lastTime = 0; if( ((curTime - lastTime) >= 5) || (lastTime == 0) ) { CGDisplayHideCursor(kCGDirectMainDisplay); mouseHide = TRUE; lastTime = curTime; } } #endif #if 1 //update activity every 30 seconds to prevent //screensaver from starting up. curTime = TickCount()/60; if( ((curTime - lastTime) >= 30) || (lastTime == 0) ) { UpdateSystemActivity(UsrActivity); lastTime = curTime; } #endif } static int draw_frame(uint8_t *src) { //printf("draw_frame\n"); switch (image_format) { case PIX_FMT_RGB24: case PIX_FMT_RGBA32: memcpy(image_data,src,image_size); return 0; case PIX_FMT_YUV420P: case PIX_FMT_YUYV422: case PIX_FMT_UYVY422: #ifdef CROPIMG { stride_memcpy(yuvbuf, src+(xoffset*2), movie_width*2,movie_height, movie_width*2, movie_width*4); } #else memcpy_pic(((char*)yuvbuf), src, imgRect.right * 2, imgRect.bottom, imgRect.right * 2, imgRect.right * 2); #endif return 0; } return -1; } /******************************************************************************* * xjadeo API */ int open_window_mac (void) { uint32_t width = movie_width; uint32_t height = movie_height; uint32_t d_height= ffctv_height; uint32_t d_width = ffctv_width; device_id = 0; image_format = PIX_FMT_YUV420P; //image_format = PIX_FMT_RGBA32; WindowAttributes windowAttrs; OSErr qterr = 0; int i; CGRect tmpBounds; deviceHdl = GetMainDevice(); for(i=0; igdRect; device_width = deviceRect.right-deviceRect.left; device_height = deviceRect.bottom-deviceRect.top; //misc setup///////////////////////////////////////////////////// SetRect(&imgRect, 0, 0, width, height); switch (image_format) { case PIX_FMT_RGBA32: image_depth = 32; break; case PIX_FMT_RGB24: image_depth = 24; break; case PIX_FMT_YUV420P: case PIX_FMT_YUYV422: case PIX_FMT_UYVY422: image_depth = 16; break; } image_size = ((imgRect.right*imgRect.bottom*image_depth)+7)/8; vo_fs = start_fullscreen; if(image_data) free(image_data); image_data = malloc(image_size); //Create player window////////////////////////////////////////////////// windowAttrs = kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute | kWindowInWindowMenuAttribute | kWindowAsyncDragAttribute | kWindowLiveResizeAttribute; windowAttrs &= (~kWindowResizableAttribute); if (theWindow == NULL) { mac_CreateWindow(d_width, d_height, windowAttrs); if (theWindow == NULL) { fprintf(stderr, "mac error: Couldn't create window !!!!!\n"); return -1; } #if 1 tmpBounds = CGRectMake( 0, 0, winRect.right, winRect.bottom); CreateCGContextForPort(GetWindowPort(theWindow),&context); CGContextFillRect(context, tmpBounds); #else SetWindowGroupLevel(winGroup, kCGDesktopIconWindowLevel - 1); SetWindowGroup(theWindow, winGroup); RGBColor black = { 0, 0, 0 }; SetWindowContentColor(theWindow, &black); #endif } else { //printf("re-set window\n"); #if 1 HideWindow(theWindow); ChangeWindowAttributes(theWindow, ~windowAttrs, windowAttrs); SetRect(&winRect, 0, 0, d_width, d_height); SetRect(&oldWinRect, 0, 0, d_width, d_height); SizeWindow (theWindow, d_width, d_height, 1); #endif } switch (image_format) { case PIX_FMT_RGB24: case PIX_FMT_RGBA32: { CreateCGContextForPort (GetWindowPort (theWindow), &context); dataProviderRef = CGDataProviderCreateWithData (0, image_data, imgRect.right * imgRect.bottom * 4, 0); image = CGImageCreate (imgRect.right, imgRect.bottom, 8, image_depth, ((imgRect.right*32)+7)/8, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipFirst, dataProviderRef, 0, 1, kCGRenderingIntentDefault); break; } case PIX_FMT_YUYV422: case PIX_FMT_UYVY422: case PIX_FMT_YUV420P: { SetIdentityMatrix(&matrix); if ((d_width != width) || (d_height != height)) { ScaleMatrix(&matrix, FixDiv(Long2Fix(d_width),Long2Fix(width)), FixDiv(Long2Fix(d_height),Long2Fix(height)), 0, 0); } yuv_qt_stuff.desc = (ImageDescriptionHandle)NewHandleClear( sizeof(ImageDescription) ); yuv_qt_stuff.extension_colr = NewHandleClear(sizeof(NCLCColorInfoImageDescriptionExtension)); ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->colorParamType = kVideoColorInfoImageDescriptionExtensionType; ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->primaries = 2; ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->transferFunction = 2; ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->matrix = 2; yuv_qt_stuff.extension_fiel = NewHandleClear(sizeof(FieldInfoImageDescriptionExtension)); ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldCount = 1; ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldOrderings = 0; yuv_qt_stuff.extension_clap = NewHandleClear(sizeof(CleanApertureImageDescriptionExtension)); ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthN = imgRect.right; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthD = 1; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightN = imgRect.bottom; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightD = 1; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffN = 0; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffD = 1; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffN = 0; ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffD = 1; yuv_qt_stuff.extension_pasp = NewHandleClear(sizeof(PixelAspectRatioImageDescriptionExtension)); ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->hSpacing = 1; ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->vSpacing = 1; (*yuv_qt_stuff.desc)->idSize = sizeof(ImageDescription); (*yuv_qt_stuff.desc)->cType = k422YpCbCr8CodecType; (*yuv_qt_stuff.desc)->version = 2; (*yuv_qt_stuff.desc)->revisionLevel = 0; (*yuv_qt_stuff.desc)->vendor = 'xj-5'; (*yuv_qt_stuff.desc)->width = imgRect.right; (*yuv_qt_stuff.desc)->height = imgRect.bottom; (*yuv_qt_stuff.desc)->hRes = Long2Fix(72); (*yuv_qt_stuff.desc)->vRes = Long2Fix(72); (*yuv_qt_stuff.desc)->temporalQuality = 0; (*yuv_qt_stuff.desc)->spatialQuality = codecLosslessQuality; (*yuv_qt_stuff.desc)->frameCount = 1; (*yuv_qt_stuff.desc)->dataSize = 0; (*yuv_qt_stuff.desc)->depth = 24; // (*yuv_qt_stuff.desc)->clutID = -1; qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_colr, kColorInfoImageDescriptionExtension); if (qterr) { fprintf(stderr, "mac error: AddImageDescriptionExtension [colr] (%d)\n", qterr); } qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_fiel, kFieldInfoImageDescriptionExtension); if (qterr) { fprintf(stderr, "mac error: AddImageDescriptionExtension [fiel] (%d)\n", qterr); } qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_clap, kCleanApertureImageDescriptionExtension); if (qterr) { fprintf(stderr, "mac error: AddImageDescriptionExtension [clap] (%d)\n", qterr); } qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_pasp, kCleanApertureImageDescriptionExtension); if (qterr) { fprintf(stderr, "mac error: AddImageDescriptionExtension [pasp] (%d)\n", qterr); } if (P != NULL) { // second or subsequent movie free(P); } P = calloc(1, sizeof(PlanarPixmapInfoYUV420)); if (yuvbuf != NULL) { // second or subsequent movie free(yuvbuf); } yuvbuf = calloc(1, image_size); #if 0 switch (image_format) { default: /* case IMGFMT_YV12: case IMGFMT_IYUV: case IMGFMT_I420: */ case PIX_FMT_YUV420P: //XXX P->componentInfoY.offset = be2me_32(sizeof(PlanarPixmapInfoYUV420)); P->componentInfoCb.offset = be2me_32(be2me_32(P->componentInfoY.offset) + image_size / 2); P->componentInfoCr.offset = be2me_32(be2me_32(P->componentInfoCb.offset) + image_size / 4); P->componentInfoY.rowBytes = be2me_32(imgRect.right); P->componentInfoCb.rowBytes = be2me_32(imgRect.right / 2); P->componentInfoCr.rowBytes = be2me_32(imgRect.right / 2); image_buffer_size = image_size + sizeof(PlanarPixmapInfoYUV420); break; /* case IMGFMT_UYVY: case IMGFMT_YUY2: */ case PIX_FMT_YUYV422 : //XXX case PIX_FMT_UYVY422: image_buffer_size = image_size; break; } #else image_buffer_size = image_size; #endif qterr = DecompressSequenceBeginS( &seqId, yuv_qt_stuff.desc, (char *) yuvbuf, // XXX use moviebuffer here? image_buffer_size, GetWindowPort(theWindow), NULL, NULL, ((d_width != width) || (d_height != height)) ? &matrix : NULL, srcCopy, NULL, 0, codecMinQuality, // codecLosslessQuality, bestSpeedCodec); if (qterr) { fprintf(stderr, "mac error: DecompressSequenceBeginS (%d)\n", qterr); return -1; } // Turn off gamma correction (TODO: unless requested) if (1) QTSetPixMapHandleRequestedGammaLevel(GetPortPixMap(GetWindowPort(theWindow)), kQTUseSourceGammaLevel); break; } // end case YUV default: fprintf(stderr, "unsupported Image format (%d).\n", qterr); return -1; } //Show window RepositionWindow(theWindow, NULL, kWindowCenterOnMainScreen); ShowWindow (theWindow); //SelectWindow (theWindow); SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel])); GetWindowBounds(theWindow, kWindowContentRgn, &oldWinBounds); if(vo_fs) window_fullscreen(); if(start_ontop) { winLevel=2; window_ontop(); } #if 0 if(vo_rootwin) { vo_fs = 1; winLevel = 0; SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel])); window_fullscreen(); } #endif window_resized_mac(); return 0; } void close_window_mac (void) { printf("close window\n"); if (1) { // XX ONLY YUV ... OSErr qterr; qterr = CDSequenceEnd(seqId); if (qterr) {;} } ShowMenuBar(); } void newsrc_mac (void) { close_window_mac(); open_window_mac(); } void resize_mac (unsigned int x, unsigned int y) { //printf("resize %i %i\n",x,y); if(vo_mac_fs) { vo_fs = (!(vo_fs)); window_fullscreen(); } SizeWindow(theWindow, x, y ,1); window_resized_mac(); } void getsize_mac (unsigned int *x, unsigned int *y) { static Rect rect; GetWindowPortBounds(theWindow, &rect); //GetPortBounds( GetWindowPort(theWindow), &rect ); //GetWindowBounds(theWindow, kWindowContentRgn, &rect); if(x)*x=rect.right; if(y)*y=rect.bottom; printf("getsize %i %i\n", *x, *y); } void position_mac (int x, int y) { printf("set position %i %i\n",x,y); MoveWindow(theWindow, x, y, 1); } void getpos_mac (int *x, int *y) { static Rect rect; //GetWindowPortBounds(theWindow, &rect); // OSX < 10.4/5 ?! GetWindowBounds(theWindow, kWindowContentRgn, &rect); // OSX 10.6 if(x)*x=rect.left; if(y)*y=rect.top; printf("get window pos %i %i\n", *x, *y); } void fullscreen_mac (int a) { vo_fs=a; if (vo_fs != vo_mac_fs) window_fullscreen(); } int get_fullscreen_mac() { return (vo_fs); } void mousepointer_mac (int a) { if (a>1) a=!mouseHide; printf("mouse cursor: %s\n",a?"hide":"show"); if (a) { CGDisplayHideCursor(kCGDirectMainDisplay); mouseHide = 1; } else { CGDisplayShowCursor(kCGDirectMainDisplay); mouseHide = 0; } } void ontop_mac (int a) { //printf("ontop %i\n",a?1:0); if (a) winLevel=2; else winLevel=1; window_ontop(); } int get_ontop_mac() { return(winLevel==2?1:0); } void render_mac (uint8_t *mybuffer) { //printf("render\n"); //imgRect.right= movie_width; //imgRect.bottom= movie_height; #if 1 draw_frame(mybuffer); #elif 0 // testing size_t Ylen= movie_width * movie_height; size_t UVlen= movie_width/2 * movie_height/2; memcpy(yuvbuf,mybuffer,Ylen+UVlen+UVlen); #else /* http://www.fourcc.org/indexyuv.htm */ uint8_t *Yptr=mybuffer; uint8_t *Uptr=Yptr + Ylen; uint8_t *Vptr=Uptr + UVlen; stride_memcpy(mac_overlay->pixels[0],Yptr,movie_width,movie_height,mac_overlay->pitches[0],movie_width);//Y stride_memcpy(mac_overlay->pixels[1],Vptr,movie_width/2,movie_height/2,mac_overlay->pitches[1],movie_width/2);//V stride_memcpy(mac_overlay->pixels[2],Uptr,movie_width/2,movie_height/2,mac_overlay->pitches[2],movie_width/2);//U #endif flip_page(); //printf("render done.\n"); } void handle_X_events_mac (void) { EventRef theEvent; EventTargetRef theTarget; OSStatus theErr; theTarget = GetEventDispatcherTarget(); theErr = ReceiveNextEvent(0, 0, kEventDurationNoWait,true, &theEvent); if(theErr == noErr && theEvent != NULL) { SendEventToEventTarget (theEvent, theTarget); ReleaseEvent(theEvent); } } void mac_put_key(UInt32 key, UInt32 charcode) { char c; switch (key) { case 0x35: if ((interaction_override&OVR_QUIT_KEY) == 0) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) 0xff1b); loop_flag=0; return; // ESCAPE } default: c= (char) charcode; } switch (c) { case 'q': if ((interaction_override&OVR_QUIT_KEY) == 0) loop_flag=0; return; case 'a': ontop_mac(winLevel==2?0:1); break; case 'f': fullscreen_mac(!vo_fs); break; case 'l': want_letterbox = !want_letterbox; force_redraw=1; window_resized_mac(); break; case 'o': { //'o' // OSD - offset in frames if (OSD_mode&OSD_OFFF) { OSD_mode&=~OSD_OFFF; OSD_mode|=OSD_OFFS; } else if (OSD_mode&OSD_OFFS) { OSD_mode^=OSD_OFFS; } else { OSD_mode^=OSD_OFFF; } force_redraw=1; } break; case 's': { OSD_mode^=OSD_SMPTE; force_redraw=1; } break; case 'v': { //'v' // OSD - current video frame OSD_mode^=OSD_FRAME; force_redraw=1; } break; case 'b': { //'b' // OSD - black box OSD_mode^=OSD_BOX; force_redraw=1; } break; case 'C': { //'C' // OSD - clear all OSD_mode=0; force_redraw=1; } break; case '+': { if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) charcode); break; } ts_offset++; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } break; case '-': { if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) charcode); break; } ts_offset--; force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } break; case '{': { if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) charcode); break; } if (framerate > 0) { ts_offset-= framerate *60; } else { ts_offset-= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } break; case '}': { if ((interaction_override&OVR_AVOFFSET) != 0 ) { remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) charcode); break; } if (framerate > 0) { ts_offset+= framerate *60; } else { ts_offset+= 25*60; } force_redraw=1; if (smpte_offset) free(smpte_offset); smpte_offset= calloc(15,sizeof(char)); frame_to_smptestring(smpte_offset,ts_offset); } break; case 'm': mousepointer_mac(2); break; case '.': { //'.' // resize 100% resize_mac(ffctv_width, ffctv_height); } break; case ',': { //',' // resize to aspect ratio unsigned int my_Width,my_Height; getsize_mac(&my_Width,&my_Height); if( movie_aspect < ((float)my_Width/(float)my_Height) ) my_Width=floor((float)my_Height * movie_aspect); else my_Height=floor((float)my_Width / movie_aspect); resize_mac(my_Width, my_Height); } break; case '<': { //'<' // resize *.83 unsigned int my_Width,my_Height; getsize_mac(&my_Width,&my_Height); float step=0.2*my_Height; my_Width-=floor(step*movie_aspect); my_Height-=step; resize_mac(my_Width, my_Height); } break; case '>': { //'>' // resize *1.2 unsigned int my_Width,my_Height; getsize_mac(&my_Width,&my_Height); float step=0.2*my_Height; my_Width+=floor(step*movie_aspect); my_Height+=step; resize_mac(my_Width, my_Height); } break; #ifdef CROPIMG case '[': { xoffset-=2; if (xoffset<0) xoffset=0; force_redraw=1; } break; case ']': { xoffset+=2; if (xoffset>movie_width) xoffset=movie_width; force_redraw=1; } break; #endif case 0x8: if ((interaction_override&OVR_JCONTROL) == 0) jackt_rewind(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # backspace", (unsigned int) 0xff08); break; case ' ': if ((interaction_override&OVR_JCONTROL) == 0) jackt_toggle(); remote_notify(NTY_KEYBOARD, 310, "keypress=%d # space", (unsigned int) 0x0020); break; default: remote_notify(NTY_KEYBOARD, 310, "keypress=%d", (unsigned int) charcode); //printf("yet unhandled keyboard event: '%c' 0x%x\n",c,c); break; } checkMyMenu(); } OSStatus mac_menu_cmd(OSStatus result, HICommand *acmd) { switch ( acmd->commandID ) { case kHICommandQuit: case mQuit: if ((interaction_override&OVR_QUIT_OSX) == 0 || ask_close()) loop_flag=0; break; case kHICommandAbout: break; case kHICommandClose: break; case kHICommandOpen: case mOpen: NavOpenDocument(); break; case kHICommandPreferences: case mSettings: NavOpenSettings(); break; case mHalfScreen: { resize_mac(ffctv_width/2, ffctv_height/2); } break; case mNormalScreen: { resize_mac(ffctv_width, ffctv_height); } break; //case kHICommandFullScreen: case mFullScreen: vo_fs = (!(vo_fs)); window_fullscreen(); break; case mDoubleScreen: { resize_mac(ffctv_width*2, ffctv_height*2); } break; case mKeepAspect: want_letterbox = !want_letterbox; force_redraw=1; window_resized_mac(); break; case mOSDFrame: OSD_mode^=OSD_FRAME; force_redraw=1; break; case mOSDSmpte: OSD_mode^=OSD_SMPTE; force_redraw=1; break; case mOSDOffO: OSD_mode&=~OSD_OFFF; OSD_mode&=~OSD_OFFS; force_redraw=1; break; case mOSDOffS: OSD_mode&=~OSD_OFFF; OSD_mode|=OSD_OFFS; force_redraw=1; break; case mOSDOffF: OSD_mode&=~OSD_OFFS; OSD_mode|=OSD_OFFF; force_redraw=1; break; case mOSDBox: OSD_mode^=OSD_BOX; force_redraw=1; break; case mSeekAny: seekflags=SEEK_ANY; force_redraw=1; break; case mSeekKeyFrame: seekflags=SEEK_KEY; force_redraw=1; break; case mSeekContinuous: seekflags=SEEK_CONTINUOUS; force_redraw=1; break; case mJackPlay: jackt_start(); break; case mJackRewind: jackt_rewind(); break; case mJackStop: jackt_stop(); break; case mSyncJack: open_jack(); #ifdef HAVE_MIDI if (midi_connected()) midi_close(); #endif #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) close_ltcjack(); #endif break; case mSyncLTC: if (jack_connected()) close_jack(); #ifdef HAVE_MIDI if (midi_connected()) midi_close(); #endif open_ltcjack(NULL); break; case mSyncJackMidi: case mSyncPortMidi: { if (jack_connected()) close_jack(); #if defined (HAVE_LTCSMPTE) || defined (HAVE_LTC) if (ltcjack_connected()) close_ltcjack(); #endif #ifdef HAVE_MIDI if (midi_connected()) midi_close(); if (acmd->commandID == mSyncPortMidi) { midi_choose_driver("portmidi"); } else { midi_choose_driver("jack"); } char *mp = "-1"; midi_open(mp); #endif if (!midi_connected()) { midiAlert(); } } break; case mSyncNone: if (jack_connected()) close_jack(); #ifdef HAVE_MIDI if (midi_connected()) midi_close(); #endif break; #if 1 case kHICommandNew: case kHICommandSave: case kHICommandSaveAs: case kHICommandUndo: case kHICommandCut: case kHICommandCopy: case kHICommandPaste: case kHICommandClear: case kHICommandSelectAll: DisableMenuItem(acmd->menu.menuRef, acmd->menu.menuItemIndex); break; #endif default: printf("yet unhandled menu entry id:%u\n",(unsigned int)acmd->commandID); result = eventNotHandledErr; break; } checkMyMenu(); // update checked menu items return result; } #endif /* HAVE_MAC */ // vim: sw=2 sts=2 ts=8 et xjadeo-0.7.6/src/Makefile.in0000644000175000017500000004244012200730266012555 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = xjadeo @ac_qtgui_dir@ MAINTAINERCLEANFILES = Makefile.in all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/src/qt-gui/0000755000175000017500000000000012200730321011762 500000000000000xjadeo-0.7.6/src/qt-gui/importdialog.cpp0000644000175000017500000000435711464664425015137 00000000000000#include #include #include #include #include #include "importdialog.h" ImportDialog::ImportDialog(QWidget* parent): QDialog(parent) { setupUi(this); retranslateUi(this); } void ImportDialog::importSrcSelect() { QString s = QFileDialog::getOpenFileName(this, tr("select video file to convert")); if(!s.isNull()) { SourceLineEdit->setText(s); if (DestLineEdit->text().isEmpty()) { QFileInfo qfi = QFileInfo(s); QString dstfolder; if (dstDir.isEmpty()) dstfolder = qfi.path(); else dstfolder = dstDir; DestLineEdit->setText(dstfolder+"/"+qfi.baseName()+"-xj.avi"); } } } void ImportDialog::importDstSelect() { QString s = QFileDialog::getSaveFileName(this, tr("choose a destinaton filename")); if(!s.isNull()) { DestLineEdit->setText(s); } } void ImportDialog::widthCheckBox_toggled( bool t) { widthSpinBox->setEnabled(t); if (!t)heightSpinBox->setEnabled(t); else if (aspectCheckBox->isChecked()) heightSpinBox->setEnabled(t); aspectCheckBox->setEnabled(t); } void ImportDialog::fpsCheckBox_toggled( bool t ) { fpsComboBox->setEnabled(t); } void ImportDialog::aspectCheckBox_toggled( bool t) { heightSpinBox->setEnabled(t); } void ImportDialog::readFromStdout() { avInfoLabel->setText( infoproc->readLine()); } void ImportDialog::importAvInfo() { infoproc = new QProcess( this ); QStringList argv; argv.append( "-v" ); argv.append( SourceLineEdit->text() ); infoproc->closeReadChannel(QProcess::StandardError); infoproc->setReadChannel(QProcess::StandardOutput); connect( infoproc, SIGNAL(readyReadStandardOutput ()), this, SLOT(readFromStdout()) ); connect( infoproc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(infoFinished())); infoproc->start(xjinfo, argv); if (!infoproc->waitForStarted()) { QMessageBox::warning( 0, "Warning", "Could not start the xjinfo command.", "OK" ); } } void ImportDialog::infoFinished() { if (infoproc->exitStatus() != 0) { avInfoLabel->setText(" "); QMessageBox::QMessageBox::warning(this, "xjinfo failed", "Error occured while detecting file informtaion.","aha.",QString::null,QString::null,0,-1); } } /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/qt-gui/images/0000755000175000017500000000000012200730321013227 500000000000000xjadeo-0.7.6/src/qt-gui/images/qjadeo.png0000644000175000017500000000473711464664425015161 00000000000000PNG  IHDRff9bsRGB IDATx{hT?7sh&FMcGljvQb@d!]ua5SŴ@tQAEDb"$v}E,@AmWmZB4@&39ct^wf=_{~P!TTE7$I= U(o*%ep@1ZF(G&ETLV$dT&#>~!CBUqFcŠA8qW/^̳(++9<۶m˶oNmm-OfȐ!,Xʛ̜9S۲e p88pnѣNvc60`Fjj*-Vl$1x`ɓ'\zH]]&L_RRСC6m^11§w!ǫ۷4iͫW4DΝ;Guu57oYpE|rO:ŋ)++'wCCO>K·)CiEQX,X,$&&RSS0vz&ӯ_?:;=ttZ`XX,vv;8RSSi~V>G鋻6wS;s C}owtp֭[dƍs=***;w.ׯ_dhjOdo|'Gff&f۷o1y>+"إ(x]..\( 233Ů]͛7Ųek׮;wC|]D~~n7k,QXX(^'f̘S6c tRjOYaaPUUPl{'+nܸ!߿/\.ȑ#şUUUX_߆ DQQH"2p@޾}KggLi*Vf|* Ɯ9sp:Gr_r Vk2uTvIɱRl$\.N[nQYYɨQX*>~Bii)6y1}t<ԩS;s**3joٴiNk׮o>LQQNrN8Avv?~rٻw/WNX4}Kr"(o(Oj e+{eR1R1ﷳ"Cd,+"{}׹0P>u]g(^"/ ]kևA1ꞯ ~J@ )&RD"5|? 2FV85G{5X=#vFbBsU-H>`{32: ؿʥ#ԍ>ݒ"cnDQLX.-i^⑫DaV4]0 :d8m=G1U˙р#7aQ:ĮPkzW)V14ꬻH-)&ڸHCCMHU#.1pu`PXl$`13C x4v ©3ݍ h0re>&$ |LK>H*{b>ʹh"M1$fOg;#!##!#!q##!!#!!!wl4FZ'ЩHNJgXڋ;W[h;z]-ÊÈxzJFTL&_)_G$:̨0z/O(Ԑ7saG":XjN: W@w:G#Nл|[q+VLo>ᣲXɟr1<[Sy<~M[A6d#Y0ގegIENDB`xjadeo-0.7.6/src/qt-gui/images/qjadeo.ico0000644000175000017500000012445611464664425015150 00000000000000ff (f   @@@;;;>>>\\\PPP&&&[[[...PPP|||888BBB|||&&&FFFoooOOO[[[+++[[[233\\\OOOiiiJJJ|||HHHXXXHHH\\\___\\\bbb________________________aaabbbrrr|||zzzvvvmmmmmmppp888PPPHHHFFFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHHH[[[___iiiWWWTSTXXXmmmOOO+++++++++++++++...10-10-&&&JJJzzz;;;oooFFF10-lilooo...HHH+++WWW___555iiivvv|||zzzFFF888UUU))) OOOUUU10-)))bbb \\\+++eccrrr222TSTlilLLLJJJWWWBBBFFFFFFaaaFFFWWWWWWBBB888ppp&&&vvvzzzooo LLLooo !!!&&&555233...888JJJSSS\\\iiivvv___zzz;;;>>>zzzbbb @@@LLLPPPUUUTSTPPPLLLSSSiiiiiifffrrriiiSSS[[[mmm___LLL[[[HHHSSSHHH >>>+++555usqvvv LLL233888pppxjadeo-0.7.6/src/qt-gui/images/fileopen.png0000644000175000017500000000032211464664425015501 00000000000000PNG  IHDRĴl;IDAT8A D_6?ƃׅDM8A!xG:½BcO#[J%V<q]E[}p:J$)=Cf+X̌.dfCץ8jfB ^ 7ixA!9nm E,`ȽIENDB`xjadeo-0.7.6/src/qt-gui/images/info.png0000644000175000017500000000145611464664425014644 00000000000000PNG  IHDRw=bKGD pHYs  tIME  V?tEXtCommentToolbar-sized icon ============ (c) 2003 Jakub 'jimmac' Steiner, http://jimmac.musichall.cz created with the GIMP, http://www.gimp.orgIDATxŕq?Nk^9F$F g p D^½?!n#^Z@-h~rdձTv#2 Ĺ,\@oy !pX=Ԅ7i}-^%*77F6t:7g`h4N"n}qt]q V&(FbH)I$A/(B!3L1 z=e*JU/EQ4 MӎW7TvwTU]́kT*M͠TLn Y_?KPfkkcy{{w|#Rw,xQ eXV!b!Br iROƶkSxQz"Ye^#61YES,\'OVѱwOculڬWs@pW?~߁o瓗J3IENDB`xjadeo-0.7.6/src/qt-gui/importdialog.h0000644000175000017500000000105011464664425014567 00000000000000#ifndef IMPORTDIALOG_H #define IMPORTDIALOG_H #include #include "ui_importdialog.h" class ImportDialog: public QDialog , public Ui::ImportDialog { Q_OBJECT public: ImportDialog(QWidget *parent = 0); QString xjinfo; QString dstDir; public slots: void importSrcSelect(); void importDstSelect(); void widthCheckBox_toggled( bool t); void fpsCheckBox_toggled( bool t ); void aspectCheckBox_toggled( bool t); void readFromStdout(); void importAvInfo(); void infoFinished(); private: QProcess *infoproc; }; #endif xjadeo-0.7.6/src/qt-gui/prefdialog.ui0000644000175000017500000003670011464664425014411 00000000000000 PrefDialog 0 0 393 401 Preferences true General Settings Autoconnect ALSA Midi port (MTC): false Qt::Horizontal QSizePolicy::Expanding 90 20 0 0 60 0 16 Autoconnect JACK Midi port (MTC): false Qt::Horizontal QSizePolicy::Expanding 0 20 1 0 160 0 64 xjadeo/xjremote executable: false Qt::Horizontal QSizePolicy::Expanding 10 20 1 0 160 0 xjinfo executable: false Qt::Horizontal QSizePolicy::Expanding 57 21 1 0 160 0 mencoder executable: false Qt::Horizontal QSizePolicy::Expanding 38 21 1 0 160 0 Import Settings Import to Codec: false Qt::Horizontal QSizePolicy::Fixed 32 8 Qt::Horizontal QSizePolicy::Expanding 21 8 true mpeg4 mjpeg msmpeg4 mpeg1video mpeg2video mencoder options: Qt::AlignVCenter false Qt::Horizontal QSizePolicy::Fixed 32 8 Qt::Horizontal QSizePolicy::Expanding 270 9 Default Import Destination Path: 0 0 32 32 :/images/fileopen.png:/images/fileopen.png Qt::Horizontal QSizePolicy::Expanding 41 14 Qt::Vertical QSizePolicy::Expanding 20 40 &Cancel true Qt::Horizontal QSizePolicy::Expanding 164 20 &OK true true qPixmapFromMimeSource buttonCancel clicked() PrefDialog reject() 20 20 20 20 buttonOk clicked() PrefDialog accept() 20 20 20 20 selDestPushButton clicked() PrefDialog selPrefsDest() 20 20 20 20 prefDirCheckBox toggled(bool) PrefDialog prefDirEnable(bool) 20 20 20 20 xjadeo-0.7.6/src/qt-gui/importprogress.h0000644000175000017500000000131711464664425015202 00000000000000#ifndef IMPORTPROGRESS_H #define IMPORTPROGRESS_H #include #include "ui_importprogress.h" class ImportProgress: public QDialog , public Ui::ImportProgress { Q_OBJECT public: ImportProgress(QWidget *parent = 0); public slots: int mencode(QString commandpath); int setEncoderFiles( QString src, QString dst); void setEncoderArgs( QString codec, QString fps, int w, int h ); void setExtraArgs( QString args ); void ImportCancel(); void readFromStderr(); void readFromStdout(); void encodeFinished(int, QProcess::ExitStatus); private: QProcess encoder; QString enc_codec; QString enc_xargs; QString enc_fps; int enc_w, enc_h; QString enc_dst; QString enc_src; }; #endif xjadeo-0.7.6/src/qt-gui/prefdialog.cpp0000644000175000017500000000215511464664425014553 00000000000000#include "prefdialog.h" #include #include #include /* * Constructs a PrefDialog as a child of 'parent', with the * name 'name' and widget flags set to 'f'. * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. */ PrefDialog::PrefDialog(QWidget* parent) : QDialog(parent) { setupUi(this); retranslateUi(this); } /* * Destroys the object and frees any allocated resources */ PrefDialog::~PrefDialog() { // no need to delete child widgets, Qt does it all for us } /* * Sets the strings of the subwidgets using the current * language. void PrefDialog::languageChange() { retranslateUi(this); } */ #include void PrefDialog::selPrefsDest() { QString s = QFileDialog::getExistingDirectory(this, tr("Select default destination folder"), "", QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks); if (!s.isEmpty()) { destDirLineEdit->setText(s); } } void PrefDialog::prefDirEnable( bool t) { destDirLineEdit->setEnabled(t); selDestPushButton->setEnabled(t); } xjadeo-0.7.6/src/qt-gui/Makefile.am0000644000175000017500000000465112157341461013762 00000000000000# quick hack - else make dist won't include these files. EXTRA_DIST= qjadeo.cpp qjadeo.pro.in mainwindow.ui qjadeo.h\ images/fileopen.png images/info.png images/qjadeo.png images/qjadeo.ico\ importdialog.ui prefdialog.ui importprogress.ui \ importdialog.h importprogress.h prefdialog.h \ importdialog.cpp importprogress.cpp prefdialog.cpp \ qjadeo_fr.ts qjadeo_ru.ts qjadeo_el_GR.ts qjadeo_cs.ts \ Makefile.am qjadeo.qrc qjadeo.rc qmake = @ac_qmake@ lrelease = @ac_lrelease@ qmakeargs = @ac_qmake_args@ COPY = /bin/cp DEL_FILE = /bin/rm MKDIR = /bin/mkdir name = qjadeo headers = qjadeo.h \ importdialog.h importprogress.h prefdialog.h sources = qjadeo.cpp \ mainwindow.ui \ importdialog.cpp importprogress.cpp prefdialog.cpp \ importdialog.ui prefdialog.ui importprogress.ui TRANSLATIONS = qjadeo_fr.ts qjadeo_ru.ts qjadeo_el_GR.ts qjadeo_cs.ts all: $(name) $(name).mak: $(name).pro $(qmake) -o $(name).mak $(name).pro $(qmakeargs) $(lrelease) $(TRANSLATIONS) $(name): $(name).mak $(sources) $(headers) mydirs.h $(MAKE) -f $(name).mak install: $(name) $(INSTALL) $(name) $(DESTDIR)/$(bindir)/ mkdir -p $(DESTDIR)/$(datadir)/qjadeo/locale/ $(INSTALL) -m 644 -t $(DESTDIR)/$(datadir)/qjadeo/locale/ $(subst .ts,.qm,$(TRANSLATIONS)) uninstall: $(DESTDIR)/$(bindir)/$(name) $(DEL_FILE) -vf $(DESTDIR)/$(bindir)/$(name) cd $(DESTDIR)/$(datadir)/qjadeo/locale/ && $(DEL_FILE) -vf *.qm rmdir $(DESTDIR)/$(datadir)/qjadeo/locale/ .PHONY: clean clean: $(name).mak $(MAKE) -f $(name).mak clean if test -d qt3; then \ $(COPY) -f qt3/* .; \ $(DEL_FILE) -rf qt3; \ fi $(DEL_FILE) -f $(name) $(name).mak $(DEL_FILE) -rf *.cache *.log *.status $(DEL_FILE) -rf .ui $(DEL_FILE) -rf .obj $(DEL_FILE) -rf .moc $(DEL_FILE) -f portinglog.txt $(DEL_FILE) -rf .tmp $(DEL_FILE) -f mydirs.h mainwindow.h distclean: clean maintainer-clean: clean $(DEL_FILE) -f Makefile $(DEL_FILE) -f Makefile.in $(DEL_FILE) -f $(name).pro mydirs.h: Makefile echo '#ifdef WIN32' >$@ echo '#define MENCODER "mencoder.exe"' >>$@ echo '#define XJREMOTE "xjremote.bat"' >>$@ echo '#define XJINFO "xjinfo.exe"' >>$@ echo '#define BINDIR ""' >>$@ echo '#define CONFIG_PREFIX ""' >>$@ echo '#else' >>$@ echo '#define MENCODER "mencoder"' >>$@ echo '#define XJREMOTE "xjremote"' >>$@ echo '#define XJINFO "xjinfo"' >>$@ echo '#define BINDIR "$(bindir)/"' >>$@ echo '#define CONFIG_PREFIX "$(datadir)/qjadeo/locale"' >>$@ echo '#endif' >>$@ xjadeo-0.7.6/src/qt-gui/importprogress.cpp0000644000175000017500000001004712144471723015526 00000000000000#include #include #include #include #include "qjadeo.h" #include "importprogress.h" ImportProgress::ImportProgress(QWidget* parent): QDialog(parent) { setupUi(this); retranslateUi(this); } void ImportProgress::ImportCancel() { encoder.terminate(); QTimer::singleShot(5000, &encoder, SLOT(kill())); //TODO: unlink file ?? close(); } int ImportProgress::mencode(QString commandpath) { QStringList argv; argv.append("-idx"); argv.append("-ovc"); argv.append("lavc"); argv.append("-lavcopts"); argv.append("vcodec="+enc_codec); if (!enc_fps.isEmpty()) { argv.append("-ofps"); argv.append(enc_fps); // qDebug("MENCODER OPTION: -ofps "+enc_fps); } argv.append("-nosound"); if (enc_w > 0 && enc_h == 0) { QString Temp; argv.append("-vf"); argv.append("scale"); argv.append("-zoom"); argv.append("-xy"); Temp.sprintf("%i",enc_w); argv.append(Temp); } else if (enc_w > 0 && enc_h > 0) { QString Temp; argv.append("-vf"); Temp.sprintf("scale=%i:%i",enc_w,enc_h); argv.append(Temp); // qDebug("MENCODER OPTION: -vf "+Temp); } { // split enc_xargs by space and add as arguments QStringList xargs = enc_xargs.simplified().split(" ",QString::SkipEmptyParts); for ( QStringList::Iterator it = xargs.begin(); it != xargs.end(); ++it ) { argv.append(*it); //qDebug("XOPTION: "+ *it); } } argv.append("-o"); argv.append(enc_dst); argv.append(enc_src); //encoder.setCommunication ( QProcess::Stdout|QProcess::Stderr ); //qDebug(argv.join(" ").toAscii().data()); encoder.start(commandpath, argv); if(!encoder.waitForStarted()) { QMessageBox::QMessageBox::warning( this, "Import Error","Could not launch encoder.","OK", QString::null, QString::null, 0, -1); return(1); } else { connect(&encoder, SIGNAL(readyReadStandardOutput ()), this, SLOT(readFromStdout())); connect(&encoder, SIGNAL(readyReadStandardError()), this, SLOT(readFromStderr())); connect(&encoder, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(encodeFinished(int, QProcess::ExitStatus))); return(0); } } void ImportProgress::readFromStderr() { //qDebug("mencoder:"+ encoder.readStderr()); encoder.setReadChannel(QProcess::StandardError); while(encoder.canReadLine()) { QString msg = encoder.readLine(); //qDebug(msg.toAscii().data()); } } void ImportProgress::readFromStdout() { encoder.setReadChannel(QProcess::StandardOutput); QString response = encoder.readLine(); QString output_text = response.simplified(); ushort indx = output_text.indexOf( '%'); indx = output_text.mid( indx - 2, 2 ).toInt(); if( indx > 99) indx = 100; importProgressBar->setRange(0,100 ); // XXX importProgressBar->setValue( indx ); } void ImportProgress::encodeFinished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) { if (encoder.exitStatus() != 0) { QMessageBox::QMessageBox::warning(this, "Import failed", "Transcode failed.","mmh.",QString::null,QString::null,0,-1); } else if ( QMessageBox::QMessageBox::information(this, "Import Finished", "Transcoding video file completed.","OK", "Open it", QString::null, 0, 0) == 1 ) { QJadeo *qj = (QJadeo*) parent(); qj->fileLoad(enc_dst); } close(); } int ImportProgress::setEncoderFiles( QString src, QString dst ) { if (!QFile::exists(src)) { QMessageBox::QMessageBox::warning(this, "Import Error","Source file does not exist","OK", QString::null, QString::null, 0, -1); return(1); } QFileInfo qfi = QFileInfo(dst); if ( qfi.exists() && QMessageBox::question(this, "Overwrite File?", "File exists. Do you want to overwrite it?", "&Yes", "&No", QString::null, 1, 1 ) ) return (1); QDir d( qfi.path() ); if (!d.exists()) d.mkpath(qfi.path()); enc_src=src; enc_dst=dst; return(0); } void ImportProgress::setEncoderArgs( QString codec, QString fps, int w, int h ) { enc_fps=fps; enc_codec=codec; enc_w=w; enc_h=h; } void ImportProgress::setExtraArgs( QString args ) { enc_xargs=args; } /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/qt-gui/importdialog.ui0000644000175000017500000003520311464664425014764 00000000000000 ImportDialog 0 0 303 389 Import - Convert Video File true Video File Source: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 0 0 32 32 :/images/fileopen.png:/images/fileopen.png 0 0 32 32 :/images/info.png:/images/info.png File Info: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false Destination: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 0 0 32 32 :/images/fileopen.png:/images/fileopen.png 1 0 Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter false Encoder Settings Width: false Qt::Horizontal QSizePolicy::Expanding 215 20 false 2048 Scale Height: false Qt::Horizontal QSizePolicy::Expanding 67 20 false 2048 false Break Aspect Ratio FPS: false Qt::Horizontal QSizePolicy::Expanding 141 20 false 0 0 true 1 100 false 24 25 29.97 30 Resample extra mencoder options Qt::Vertical QSizePolicy::Expanding 20 30 &Cancel true Qt::Horizontal QSizePolicy::Expanding 216 20 &OK true true qPixmapFromMimeSource pushButton11 SourceLineEdit DestLineEdit pushButton11_2 widthSpinBox heightSpinBox buttonCancel buttonOk buttonOk clicked() ImportDialog accept() 20 20 20 20 buttonCancel clicked() ImportDialog reject() 20 20 20 20 pushButton11 clicked() ImportDialog importSrcSelect() 20 20 20 20 pushButton11_2 clicked() ImportDialog importDstSelect() 20 20 20 20 widthCheckBox toggled(bool) ImportDialog widthCheckBox_toggled(bool) 20 20 20 20 fpsCheckBox toggled(bool) ImportDialog fpsCheckBox_toggled(bool) 20 20 20 20 aspectCheckBox toggled(bool) ImportDialog aspectCheckBox_toggled(bool) 20 20 20 20 pushButton5 clicked() ImportDialog importAvInfo() 20 20 20 20 xjadeo-0.7.6/src/qt-gui/importprogress.ui0000644000175000017500000000321311464664425015365 00000000000000 ImportProgress 0 0 347 54 Transcoding Video File 100 0 0 0 Cancel qPixmapFromMimeSource ImportCancelButton ImportCancelButton clicked() ImportProgress ImportCancel() 20 20 20 20 xjadeo-0.7.6/src/qt-gui/qjadeo.cpp0000644000175000017500000005037111472266103013673 00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "qjadeo.h" #include "mydirs.h" #include // Global variables //QProcess xjadeo; /////////////////////////////////////////////////////// // QJadeo window /////////////////////////////////////////////////////// // Constructor QJadeo::QJadeo() { setupUi(this); retranslateUi(this); QSettings m_settings("rss", "jadeo"); int windowWidth = m_settings.value("WindowWidth", 460).toInt(); int windowHeight = m_settings.value("WindowHeight", 100).toInt(); int windowX = m_settings.value("WindowX", -1).toInt(); int windowY = m_settings.value("WindowY", -1).toInt(); resize(windowWidth, windowHeight); if(windowX != -1 || windowY != -1) move(windowX, windowY); for(int i = 0; i < MAX_RECENTFILES; ++i) { QString filename = m_settings.value("File" + QString::number(i + 1)).toString(); if(!filename.isEmpty()) m_recentFiles.push_back(filename); } m_alsamidiport = m_settings.value("ALSA MIDI port").toString(); m_jackmidiport = m_settings.value("JACK MIDI port").toString(); m_importdir = m_settings.value("Import Directory").toString(); m_importdestination = m_settings.value("Import Destination").toBool(); m_importcodec = m_settings.value("Import Codec").toString(); m_xjadeopath = m_settings.value("XJADEO Path").toString(); m_mencoderpath = m_settings.value("MENCODER Path").toString(); m_mencoderopts = m_settings.value("MENCODER Options").toString(); m_xjinfopath = m_settings.value("XJINFO Path").toString(); // TODO: detect portmidi / alsamidi default. 'midi library' if (m_alsamidiport.isEmpty()) m_alsamidiport = QString("24"); if (m_jackmidiport.isEmpty()) m_jackmidiport = QString(""); if (m_importcodec.isEmpty()) m_importcodec = QString("mpeg4"); if (m_mencoderpath.isEmpty()) m_mencoderpath = QString(MENCODER); if (m_xjadeopath.isEmpty()) m_xjadeopath = QString(BINDIR XJREMOTE); if (m_xjinfopath.isEmpty()) m_xjinfopath = QString(BINDIR XJINFO); m_osdfont = m_settings.value("OSD font").toString(); fileImportAction->setEnabled(testexec(m_mencoderpath)); for (int i = 0; i < MAX_RECENTFILES; ++i) { recentFileActs[i] = new QAction(this); recentFileActs[i]->setVisible(false); connect(recentFileActs[i], SIGNAL(triggered()), this, SLOT(fileOpenRecent())); fileMenu->addAction(recentFileActs[i]); } if(m_recentFiles.size()) updateRecentFilesMenu(); } void QJadeo::initialize () { if (!m_osdfont.isEmpty()) { xjadeo->write(QString("osd font " + m_osdfont + "\n").toUtf8()); } xjadeo->write(QByteArray("set seekmode 1\n")); xjadeo->write(QByteArray("osd notext\n")); xjadeo->write(QByteArray("get width\n")); xjadeo->write(QByteArray("get height\n")); xjadeo->write(QByteArray("get frames\n")); xjadeo->write(QByteArray("get framerate\n")); xjadeo->write(QByteArray("get offset\n")); xjadeo->write(QByteArray("get osdcfg\n")); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); xjadeo->write(QByteArray("get position\n")); xjadeo->write(QByteArray("get seekmode\n")); xjadeo->write(QByteArray("get letterbox\n")); xjadeo->write(QByteArray("notify frame\n")); } /* search for external executable * returns true if file is found in env(PATH) * and is executable. */ bool QJadeo::testexec(QString exe) { return 1; //int timeout=10; QProcess testbin; /* FIXME: there MUST be a better way * than to simply try exeute it .. */ //testbin.setCommunication(0); testbin.start(exe,QStringList("-V")); if(!testbin.waitForStarted()) { testbin.kill(); return (0); } //while (testbin.state() && timeout--) usleep (10000); //if (timeout<1) testbin.kill(); //if (testbin.exitStatus() != 0) return(0); return(1); } // Recent files list void QJadeo::updateRecentFilesMenu() { int numRecentFiles = qMin(m_recentFiles.size(), MAX_RECENTFILES); for (int i = 0; i < numRecentFiles; ++i) { QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(m_recentFiles[i]).fileName()); recentFileActs[i]->setText(text); recentFileActs[i]->setData(m_recentFiles[i]); recentFileActs[i]->setVisible(true); } for (int j = numRecentFiles; j < MAX_RECENTFILES; ++j) recentFileActs[j]->setVisible(false); //separatorAct->setVisible(numRecentFiles > 0); } void QJadeo::updateRecentFiles(const QString & filename) { m_recentFiles.removeAll(filename); m_recentFiles.prepend(filename); while (m_recentFiles.size() > MAX_RECENTFILES) m_recentFiles.removeLast(); updateRecentFilesMenu(); } void QJadeo::fileOpenRecent() { QAction *action = qobject_cast(sender()); if (action) fileLoad(action->data().toString()); } void QJadeo::saveOptions() { QSettings m_settings("rss", "jadeo"); m_settings.setValue("WindowWidth", width()); m_settings.setValue("WindowHeight", height()); m_settings.setValue("WindowX", x()); m_settings.setValue("WindowY", y()); for(int i = 0; i < int (m_recentFiles.size()); ++i) m_settings.setValue("File" + QString::number(i + 1), m_recentFiles[i]); m_settings.setValue("OSD font", m_osdfont); m_settings.setValue("JACK MIDI port", m_jackmidiport); m_settings.setValue("ALSA MIDI port", m_alsamidiport); m_settings.setValue("Import Codec", m_importcodec); m_settings.setValue("Import Directory", m_importdir); m_settings.setValue("Import Destination", m_importdestination); m_settings.setValue("XJADEO Path", m_xjadeopath); m_settings.setValue("XJINFO Path", m_xjinfopath); m_settings.setValue("MENCODER Path", m_mencoderpath); m_settings.setValue("MENCODER Options", m_mencoderopts); } void QJadeo::fileOpen() { QString s = QFileDialog::getOpenFileName(this, tr("Choose video file"), "", 0); if(!s.isNull()) { fileLoad(s); } } void QJadeo::fileDisconnect() { xjadeo->write(QByteArray("notify disable\n")); xjadeo->write(QByteArray("exit\n")); saveOptions(); // xjremote will exit and we'll go down with it // xjadeo will return a @489 error message //close(); } void QJadeo::fileExit() { xjadeo->write(QByteArray("quit\n")); xjadeo->write(QByteArray("exit\n")); saveOptions(); //close(); // we will terminate when xjadeo/xjremote does. } void QJadeo::filePreferences() { PrefDialog *pdialog = new PrefDialog(this); if (pdialog) { /* set values */ pdialog->prefLineJackMidi->setText(m_jackmidiport); pdialog->prefLineAlsaMidi->setText(m_alsamidiport); pdialog->prefLineXjadeo->setText(m_xjadeopath); pdialog->prefLineXjinfo->setText(m_xjinfopath); pdialog->prefLineMencoder->setText(m_mencoderpath); pdialog->prefLineMcOptions->setText(m_mencoderopts); pdialog->codecComboBox->setEditText(m_importcodec); pdialog->destDirLineEdit->setText(m_importdir); if (m_importdestination) pdialog->prefDirCheckBox->toggle(); pdialog->destDirLineEdit->setEnabled(m_importdestination); /* exec dialog */ if( pdialog->exec()) { /* apply settings */ m_importcodec = pdialog->codecComboBox->currentText(); m_importdestination = pdialog->prefDirCheckBox->isChecked(); m_mencoderpath = pdialog->prefLineMencoder->text(); fileImportAction->setEnabled(testexec(m_mencoderpath)); m_mencoderopts = pdialog->prefLineMcOptions->text(); if (!pdialog->prefLineXjadeo->text().isEmpty()) m_xjadeopath = pdialog->prefLineXjadeo->text(); if (!pdialog->prefLineXjinfo->text().isEmpty()) m_xjinfopath = pdialog->prefLineXjinfo->text(); if (!pdialog->prefLineAlsaMidi->text().isEmpty()) m_alsamidiport = pdialog->prefLineAlsaMidi->text(); if (!pdialog->prefLineJackMidi->text().isEmpty()) m_jackmidiport = pdialog->prefLineJackMidi->text(); if (pdialog->prefDirCheckBox->isChecked() && !pdialog->destDirLineEdit->text().isEmpty()) m_importdir = pdialog->destDirLineEdit->text(); /* and save */ saveOptions(); } delete pdialog; } } void QJadeo::fileImport() { ImportDialog *idialog = new ImportDialog(this); if (idialog) { QString src, dst; QString fps = QString(""); QString xargs = QString(""); ImportProgress *iprog = NULL; int w,h; w=h=0; if (m_importdestination) idialog->dstDir = m_importdir; idialog->mcOptionsLineEdit->setText(m_mencoderopts); idialog->xjinfo = m_xjinfopath; /* get settings */ if(idialog->exec()) { src = idialog->SourceLineEdit->text(); dst = idialog->DestLineEdit->text(); xargs = idialog->mcOptionsLineEdit->text(); if (idialog->widthCheckBox->isChecked()) { w = idialog->widthSpinBox->value(); if (idialog->aspectCheckBox->isChecked()) h = idialog->heightSpinBox->value(); } if (idialog->fpsCheckBox->isChecked()) fps = idialog->fpsComboBox->currentText(); } /* start encoding */ if(!src.isEmpty() && !dst.isEmpty()) iprog = new ImportProgress(this); if(iprog) { if(!iprog->setEncoderFiles(src,dst)) { iprog->setEncoderArgs(m_importcodec,fps,w,h); iprog->setExtraArgs(xargs); iprog->mencode(m_mencoderpath); iprog->setModal(FALSE); iprog->show(); } else delete iprog; } delete idialog; } } void QJadeo::helpAbout() { QMessageBox::about( this, "About qjadeo", "(c) 2006-2010 Robin Gareus & Luis Garrido\n" "http://xjadeo.sf.net" ); } void QJadeo::seekAnyFrame() { xjadeo->write(QByteArray("set seekmode 2\n")); } void QJadeo::seekContinuously() { xjadeo->write(QByteArray("set seekmode 1\n")); } void QJadeo::seekKeyFrames() { xjadeo->write(QByteArray("set seekmode 3\n")); } void QJadeo::zoom50() { xjadeo->write(QByteArray("window resize 50\n")); } void QJadeo::zoom100() { xjadeo->write(QByteArray("window resize 100\n")); } void QJadeo::zoom200() { xjadeo->write(QByteArray("window resize 200\n")); } void QJadeo::zoomFullScreen() { QDesktopWidget *d = QApplication::desktop(); xjadeo->write(QByteArray("window position 0x0\n")); xjadeo->write(QString( "window resize " + QString::number(d->width()) + "x" + QString::number(d->height()) + "\n" ).toAscii()); } void QJadeo::zoomAspect() { xjadeo->write(QByteArray("window fixaspect\n")); } void QJadeo::zoomLetterbox(bool value) { if (value) { xjadeo->write(QByteArray("window letterbox on\n")); } else { xjadeo->write(QByteArray("window letterbox off\n")); } } void QJadeo::syncJack() { xjadeo->write(QByteArray("ltc disconnect\n")); xjadeo->write(QByteArray("midi disconnect\n")); xjadeo->write(QByteArray("jack connect\n")); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); } void QJadeo::syncLTCJack() { xjadeo->write(QByteArray("midi disconnect\n")); xjadeo->write(QByteArray("jack disconnect\n")); xjadeo->write(QByteArray("ltc connect\n")); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); } void QJadeo::syncMTCalsa() { xjadeo->write(QByteArray("ltc disconnect\n")); xjadeo->write(QByteArray("jack disconnect\n")); xjadeo->write(QByteArray("midi disconnect\n")); xjadeo->write(QByteArray("midi driver alsa-seq\n")); xjadeo->write(QString("midi connect "+ m_alsamidiport +"\n").toAscii()); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); } void QJadeo::syncMTCjack() { xjadeo->write(QByteArray("ltc disconnect\n")); xjadeo->write(QByteArray("jack disconnect\n")); xjadeo->write(QByteArray("midi disconnect\n")); xjadeo->write(QByteArray("midi driver jack\n")); xjadeo->write(QString("midi connect "+ m_jackmidiport +"\n").toAscii()); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); } void QJadeo::syncOff() { xjadeo->write(QByteArray("ltc disconnect\n")); xjadeo->write(QByteArray("jack disconnect\n")); xjadeo->write(QByteArray("midi disconnect\n")); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); } void QJadeo::setFPS(const QString &fps) { xjadeo->write(QString("set fps " + fps + "\n").toAscii()); } void QJadeo::setOffset(const QString &offset) { xjadeo->write(QString("set offset " + offset + "\n").toAscii()); } void QJadeo::osdFrameToggled(bool value) { if(value) xjadeo->write(QByteArray("osd frame 0\n")); else xjadeo->write(QByteArray("osd frame -1\n")); } void QJadeo::osdSMPTEToggled(bool value) { if(value) xjadeo->write(QByteArray("osd smpte 100\n")); else xjadeo->write(QByteArray("osd smpte -1\n")); } void QJadeo::osdTextOff() { QJadeo::osdTextToggled(false); xjadeo->write(QByteArray("get osdcfg\n")); } void QJadeo::osdTextToggled(bool value) { if(value) xjadeo->write(QByteArray("osd text\n")); else xjadeo->write(QByteArray("osd notext\n")); } void QJadeo::osdBoxToggled(bool value) { if(value) xjadeo->write(QByteArray("osd box\n")); else xjadeo->write(QByteArray("osd nobox\n")); } void QJadeo::seekBarChanged( int value ) { int frame=0; QString Temp; if(m_frames > 0) { frame = value*m_frames/1000; } Temp.sprintf("seek %i\n",frame); xjadeo->write(Temp.toAscii()); } void QJadeo::osdFont() { QString s = QFileDialog::getOpenFileName(this, tr("Choose a font"), "", "TrueType fonts (*.ttf)"); if(!s.isNull()) { m_osdfont = s; xjadeo->write(QString("osd font " + s + "\n").toUtf8()); xjadeo->write(QByteArray("osd text \n")); } } // Called when xjadeo outputs to stdout void QJadeo::readFromStdout() { while(xjadeo->canReadLine()) { QString response = xjadeo->readLine(); //qDebug(QString("ResponseLine: '" + response+ "'").toAscii().data()); int status = response.mid(1, 3).toInt(); switch(status / 100) { case 4: { switch(status) { case 410: // get filename -> no open video file break; case 489: // -> tried "exit" on xjadeo (not xjremote) xjadeo->write(QByteArray("quit\n")); break; default: QMessageBox::critical( this, "qjadeo", "Error " + response, "&Close" ); } break; } case 2: case 3: { int equalsign = response.indexOf('='); int comment = response.indexOf('#'); if (comment > 0) response.truncate(comment); QString name = response.mid(5, equalsign - 5); QString value = response.right(response.length() - equalsign - 1).trimmed(); //qDebug(QString("Response: name='" + name + "' value='" +value +"'").toAscii().data()); if(name == "position") { if(m_frames > 0) { progressBar->setRange(0, m_frames); progressBar->setValue(value.toInt() + 1); } } else if(name == "filename") updateRecentFiles(QString::fromUtf8(value.toAscii().data(),-1)); else if(name == "movie_width") m_movie_width = value.toInt(); else if(name == "movie_height") m_movie_height = value.toInt(); else if(name == "seekmode") { seekany_frameAction->setChecked(FALSE); seekKeyFramesAction->setChecked(FALSE); seekcontinuouslyAction->setChecked(FALSE); if (value.toInt()==3) { // key seekKeyFramesAction->setChecked(TRUE); } else if (value.toInt()==1) { // cont seekcontinuouslyAction->setChecked(TRUE); } else { seekany_frameAction->setChecked(TRUE); } } else if(name == "mididrv") { m_mididrv = 0; if (value == "JACK-MIDI") m_mididrv = 1; } else if(name == "syncsource") { syncJackAction->setChecked(FALSE); syncLTCJackAction->setChecked(FALSE); syncMTCJackAction->setChecked(FALSE); syncMTCAlsaAction->setChecked(FALSE); syncOffAction->setChecked(FALSE); if (value.toInt()==0) { // off seekBar->setEnabled(TRUE); syncOffAction->setChecked(TRUE); } else if (value.toInt()==3) { // LTC syncLTCJackAction->setChecked(TRUE); } else if (value.toInt()==2) { // MIDI seekBar->setEnabled(FALSE); if (m_mididrv == 1) syncMTCJackAction->setChecked(TRUE); else syncMTCAlsaAction->setChecked(TRUE); } else { seekBar->setEnabled(FALSE); //JACK syncJackAction->setChecked(TRUE); } } else if(name == "osdfont") { ;// set default folder and file in // File selection dialog. } else if(name == "letterbox") { int v= value.toInt(); actionLetterbox->setChecked(v&1); } else if(name == "osdmode") { int v= value.toInt(); osdBoxAction->setChecked(v&8); osdTextAction->setChecked(v&4); osdSMPTEAction->setChecked(v&2); osdFrameAction->setChecked(v&1); } else if(name == "frames") { m_frames = value.toInt(); } else if(name == "offset") { m_offset = value.toInt(); offsetSpinBox->setValue(m_offset); } else if(name == "framerate") { m_framerate = (int)rint(value.toDouble()); // TODO: round value / allow fpsSpinBox->setValue(m_framerate); xjadeo->write(QString("set fps " + value + "\n").toAscii()); } else if(name == "updatefps") m_updatefps = value.toInt(); break; } case 1: if(status==129) { xjadeo->write(QByteArray("get filename\n")); xjadeo->write(QByteArray("get width\n")); xjadeo->write(QByteArray("get height\n")); xjadeo->write(QByteArray("get frames\n")); xjadeo->write(QByteArray("get framerate\n")); xjadeo->write(QByteArray("notify frame\n")); xjadeo->write(QByteArray("get offset\n")); xjadeo->write(QByteArray("get osdcfg\n")); xjadeo->write(QByteArray("midi driver\n")); xjadeo->write(QByteArray("get syncsource\n")); xjadeo->write(QByteArray("get position\n")); xjadeo->write(QByteArray("get letterbox\n")); } } } } void QJadeo::fileLoad(const QString & filename) { m_movie_width = 0; m_movie_height = 0; m_updatefps = 0; m_frames = 0; m_offset = 0; m_framerate = 0; m_mididrv = 0; bool showtext = osdTextAction->isChecked(); xjadeo->write(QString("load " + filename + "\n").toUtf8()); xjadeo->write(QString("osd text " + filename + "\n").toUtf8()); xjadeo->write(QByteArray("get filename\n")); if (!showtext) { QTimer::singleShot(3000, this, SLOT(osdTextOff())); } } int main(int argc, char **argv) { QApplication a(argc, argv); QString sLocale = QLocale::system().name(); QTranslator translator; if (sLocale != "C") { QString sLocName = "qjadeo_" + sLocale; if (!translator.load(sLocName, ".")) { QString sLocPath = CONFIG_PREFIX; if (!translator.load(sLocName, sLocPath)) { fprintf(stderr, "Warning: no locale found: %s/%s.qm\n", sLocPath.toAscii().data(), sLocName.toAscii().data()); } } a.installTranslator(&translator); } QJadeo w; QString xjadeoPath(getenv("XJREMOTE")); if(xjadeoPath.isEmpty()) xjadeoPath = w.m_xjadeopath; else w.m_xjadeopath = xjadeoPath; if(xjadeoPath.isEmpty()) xjadeoPath = BINDIR XJREMOTE; w.xjadeo = new QProcess(&w); w.xjadeo->start(xjadeoPath, QStringList("-R")); if(!w.xjadeo->waitForStarted()) { QMessageBox::QMessageBox::critical( &w, "qjadeo", "can not execute xjadeo/xjremote." ,"Exit", QString::null, QString::null, 0, -1); //qFatal("Could not start xjadeo executable: " + xjadeoPath); //qFatal("Try to set the XJREMOTE environment variable to point to xjadeo."); exit(1); } w.xjadeo->closeReadChannel(QProcess::StandardError); w.xjadeo->setReadChannel(QProcess::StandardOutput); w.connect(w.xjadeo, SIGNAL(readyReadStandardOutput()), &w, SLOT(readFromStdout())); w.connect(w.xjadeo, SIGNAL(finished(int, QProcess::ExitStatus)), &w, SLOT(close())); w.show(); a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); w.initialize(); a.exec(); if (w.xjadeo->state()){ qDebug("xjadeo is still running.\n"); w.xjadeo->write(QByteArray("notify disable\n")); w.xjadeo->write(QByteArray("exit\n")); QTest::qWait(1000); } while (w.xjadeo->state()){ qDebug("terminate xjadeo/xjremote process.\n"); w.xjadeo->close(); QTest::qWait(1000); w.xjadeo->kill(); } } /* vi:set ts=8 sts=2 sw=2: */ xjadeo-0.7.6/src/qt-gui/qjadeo.qrc0000644000175000017500000000022311464664425013677 00000000000000 images/qjadeo.png images/fileopen.png images/info.png xjadeo-0.7.6/src/qt-gui/prefdialog.h0000644000175000017500000000043011464664425014212 00000000000000#ifndef PREFDIALOG_H #define PREFDIALOG_H #include "ui_prefdialog.h" class PrefDialog: public QDialog , public Ui::PrefDialog { Q_OBJECT public: PrefDialog(QWidget *parent = 0); ~PrefDialog(); private slots: void selPrefsDest(); void prefDirEnable( bool t); }; #endif xjadeo-0.7.6/src/qt-gui/mainwindow.ui0000644000175000017500000006315611472266103014444 00000000000000 MainWindow 0 0 400 120 qjadeo :/images/qjadeo.png:/images/qjadeo.png 2 2 screen updates per sec. false 1 99 10 Qt::Horizontal QSizePolicy::Expanding 125 20 time offset in video-frames: false -999999999 999999999 0 Qt::Horizontal QSizePolicy::Expanding 2 6 5 0 0 4 32767 10 1000 false Qt::Horizontal QSizePolicy::Expanding 3 6 0 false 5 0 32767 14 1000 Qt::Horizontal Qt::Horizontal QSizePolicy::Expanding 1 6 0 0 400 21 &File &Sync &Zoom &OSD &Seek &Help &Open... Open Ctrl+O fileOpenAction &Close xjadeo and Exit Exit Ctrl+Q fileExitAction &About About helpAboutAction true Frame number Frame number osdFrameAction true SMPTE SMPTE osdSMPTEAction true Filename Filename osdTextAction true Box Box osdBoxAction Font... Font... osdFontAction &Import Import Convert video files. fileImportAction &Configure qjadeo Configure qjadeo filePreferencesAction Disconnect and &Exit Disconnect Ctrl+W fileDisconnectAction true Letterbox Resize to aspect-ratio true to any frame to any frame seekany_frameAction true keyframes only keyframes only seekKeyFramesAction true continuously continuously seekcontinuouslyAction true JACK Transport JACK Transport syncJackAction true LTC (JACK) LTC (JACK) syncLTCJackAction true MTC (JACK MIDI) MTC (JACK MIDI) syncMTCJackAction true MTC (ALSA SEQ) MTC (ALSA SEQ) syncMTCAlsaAction true off (slider) off syncOffAction syncAction 50% 50% zoom50Action 100% 100% zoom100Action 200% 200% zoom200Action Maximize Maximize zoomFullScreenAction zoomAction qPixmapFromMimeSource fileOpenAction activated() MainWindow fileOpen() -1 -1 20 20 fileExitAction activated() MainWindow fileExit() -1 -1 20 20 helpAboutAction activated() MainWindow helpAbout() -1 -1 20 20 zoom50Action activated() MainWindow zoom50() -1 -1 20 20 zoom100Action activated() MainWindow zoom100() -1 -1 20 20 zoom200Action activated() MainWindow zoom200() -1 -1 20 20 zoomFullScreenAction activated() MainWindow zoomFullScreen() -1 -1 20 20 actionResize_to_aspect_ratio activated() MainWindow zoomAspect() -1 -1 20 20 actionLetterbox toggled(bool) MainWindow zoomLetterbox(bool) -1 -1 20 20 syncOffAction activated() MainWindow syncOff() -1 -1 20 20 syncLTCJackAction activated() MainWindow syncLTCJack() -1 -1 20 20 syncMTCAlsaAction activated() MainWindow syncMTCalsa() -1 -1 20 20 syncMTCJackAction activated() MainWindow syncMTCjack() -1 -1 20 20 syncJackAction activated() MainWindow syncJack() -1 -1 20 20 offsetSpinBox valueChanged(QString) MainWindow setOffset(QString) 20 20 20 20 fpsSpinBox valueChanged(QString) MainWindow setFPS(QString) 20 20 20 20 osdTextAction toggled(bool) MainWindow osdTextToggled(bool) -1 -1 20 20 osdBoxAction toggled(bool) MainWindow osdBoxToggled(bool) -1 -1 20 20 osdSMPTEAction toggled(bool) MainWindow osdSMPTEToggled(bool) -1 -1 20 20 osdFrameAction toggled(bool) MainWindow osdFrameToggled(bool) -1 -1 20 20 osdFontAction activated() MainWindow osdFont() -1 -1 20 20 seekBar valueChanged(int) MainWindow seekBarChanged(int) 20 20 20 20 filePreferencesAction activated() MainWindow filePreferences() -1 -1 20 20 fileDisconnectAction activated() MainWindow fileDisconnect() -1 -1 20 20 fileImportAction activated() MainWindow fileImport() -1 -1 20 20 seekany_frameAction activated() MainWindow seekAnyFrame() -1 -1 20 20 seekcontinuouslyAction activated() MainWindow seekContinuously() -1 -1 20 20 seekKeyFramesAction activated() MainWindow seekKeyFrames() -1 -1 20 20 xjadeo-0.7.6/src/qt-gui/qjadeo_fr.ts0000644000175000017500000002561011610266354014226 00000000000000 ImportDialog Import - Convert Video File Importer - Convertir Fichier Video Video File Fichier Video Source: Source : File Info: Info Fichier : Destination: Destination : Encoder Settings Paramètres de l'Encodeur Width: Largeur : Scale Echelle Height: Hauteur : Break Aspect Ratio Casser le Ratio d'Aspect FPS: FPS : 24 24 25 25 29.97 29.97 30 30 Resample Rééchantillonner extra mencoder options options supplémentaires mencoder &Cancel &Annuler &OK &OK select video file to convert choisir le fichier vidéo à convertir choose a destinaton filename choisir un nom de fichier de destination ImportProgress Transcoding Video File Transcodage du Fichier Video Cancel Annuler MainWindow qjadeo qjadeo screen updates per sec. rafraîchissements de l'écran par sec. time offset in video-frames: décalage temporel dans les trames vidéo : &File &Fichier &Sync &Syncro &Zoom &Zoom &OSD &Affichage &Seek &Suivre &Help &Aide Open Ouvrir &Open... &Ouvrir... Ctrl+O Ctrl+O Exit Quitter &Close xjadeo and Exit &Fermer xjadeo et Quitter About À propos &About &À propos JACK Transport Transport JACK MTC (ALSA SEQ) MTC (ALSA SEQ) MTC (JACK MIDI) MTC (JACK MIDI) off éteinte off (slider) éteinte (glissière) 50% 50% 100% 100% 200% 200% Maximize Maximiser Frame number Numéro de Trame Box Cadre SMPTE SMPTE Font... Police... Import Importer &Import &Importer Convert video files. Converti des fichiers vidéo. Configure qjadeo Configurer qjadeo &Configure qjadeo &Configurer qjadeo Disconnect Déconnecter Disconnect and &Exit Déconnecter et &Quitter to any frame à n'importe quelle trame keyframes only seulement aux images clef continuously continuellement Ctrl+Q Ctrl+Q Filename Nom de fichier Ctrl+W Ctrl+W Letterbox Letterbox Resize to aspect-ratio Redimensionner au ratio d'aspect LTC (JACK) LTC (JACK) PrefDialog Preferences Préférences General Settings Paramètres généraux Autoconnect ALSA Midi port (MTC): Se connecter automatiquement ce port ALSA Midi (MTC) : Autoconnect JACK Midi port (MTC): Se connecter automatiquement ce port JACK Midi (MTC) : xjadeo/xjremote executable: Exécutable xjadeo/xjremote : xjinfo executable: Exécutable xjinfo : mencoder executable: Exécutable mencoder : Import Settings Paramètres d'Importation Import to Codec: Importer vers le Codec : mpeg4 mpeg4 mjpeg mjpeg msmpeg4 msmpeg4 mpeg1video mpeg1video mpeg2video mpeg2video mencoder options: Options de mencoder : Default Import Destination Path: Chemin de destination par défaut : &Cancel &Annuler &OK &OK Select default destination folder Choisir le dossier de destination par défaut QJadeo &%1 %2 &%1 %2 Choose video file Choisir le fichier vidéo Choose a font Choisir une police xjadeo-0.7.6/src/qt-gui/Makefile.in0000644000175000017500000003101212200730266013754 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/qt-gui DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/qjadeo.pro.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = qjadeo.pro CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FFMPEG_CFLAGS = @FFMPEG_CFLAGS@ FFMPEG_LIBS = @FFMPEG_LIBS@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ FREETYPE_LIBS = @FREETYPE_LIBS@ GREP = @GREP@ IMLIB2_CFLAGS = @IMLIB2_CFLAGS@ IMLIB2_LIBS = @IMLIB2_LIBS@ IMLIB_CFLAGS = @IMLIB_CFLAGS@ IMLIB_LIBS = @IMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ISODATE = @ISODATE@ JACK_CFLAGS = @JACK_CFLAGS@ JACK_LIBS = @JACK_LIBS@ LASH_CFLAGS = @LASH_CFLAGS@ LASH_LIBS = @LASH_LIBS@ LDFLAGS = @LDFLAGS@ LIBLO_CFLAGS = @LIBLO_CFLAGS@ LIBLO_LIBS = @LIBLO_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTCSMPTE_CFLAGS = @LTCSMPTE_CFLAGS@ LTCSMPTE_LIBS = @LTCSMPTE_LIBS@ LTC_CFLAGS = @LTC_CFLAGS@ LTC_LIBS = @LTC_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIDI_CFLAGS = @MIDI_CFLAGS@ MIDI_LIBS = @MIDI_LIBS@ MKDIR_P = @MKDIR_P@ MQ_LIBS = @MQ_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWSCALE_CFLAGS = @SWSCALE_CFLAGS@ SWSCALE_LIBS = @SWSCALE_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_LIBS = @TIFF_LIBS@ VERSION = @VERSION@ XJINFO_BIN = @XJINFO_BIN@ XV_CFLAGS = @XV_CFLAGS@ XV_LIBS = @XV_LIBS@ Xpm_CFLAGS = @Xpm_CFLAGS@ Xpm_LIBS = @Xpm_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_contrib_dir = @ac_contrib_dir@ ac_ct_CC = @ac_ct_CC@ ac_lrelease = @ac_lrelease@ ac_qmake = @ac_qmake@ ac_qmake_args = @ac_qmake_args@ ac_qtgui_dir = @ac_qtgui_dir@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # quick hack - else make dist won't include these files. EXTRA_DIST = qjadeo.cpp qjadeo.pro.in mainwindow.ui qjadeo.h\ images/fileopen.png images/info.png images/qjadeo.png images/qjadeo.ico\ importdialog.ui prefdialog.ui importprogress.ui \ importdialog.h importprogress.h prefdialog.h \ importdialog.cpp importprogress.cpp prefdialog.cpp \ qjadeo_fr.ts qjadeo_ru.ts qjadeo_el_GR.ts qjadeo_cs.ts \ Makefile.am qjadeo.qrc qjadeo.rc qmake = @ac_qmake@ lrelease = @ac_lrelease@ qmakeargs = @ac_qmake_args@ COPY = /bin/cp DEL_FILE = /bin/rm MKDIR = /bin/mkdir name = qjadeo headers = qjadeo.h \ importdialog.h importprogress.h prefdialog.h sources = qjadeo.cpp \ mainwindow.ui \ importdialog.cpp importprogress.cpp prefdialog.cpp \ importdialog.ui prefdialog.ui importprogress.ui TRANSLATIONS = qjadeo_fr.ts qjadeo_ru.ts qjadeo_el_GR.ts qjadeo_cs.ts all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/qt-gui/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/qt-gui/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): qjadeo.pro: $(top_builddir)/config.status $(srcdir)/qjadeo.pro.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean-am: clean-generic mostlyclean-am distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am all: $(name) $(name).mak: $(name).pro $(qmake) -o $(name).mak $(name).pro $(qmakeargs) $(lrelease) $(TRANSLATIONS) $(name): $(name).mak $(sources) $(headers) mydirs.h $(MAKE) -f $(name).mak install: $(name) $(INSTALL) $(name) $(DESTDIR)/$(bindir)/ mkdir -p $(DESTDIR)/$(datadir)/qjadeo/locale/ $(INSTALL) -m 644 -t $(DESTDIR)/$(datadir)/qjadeo/locale/ $(subst .ts,.qm,$(TRANSLATIONS)) uninstall: $(DESTDIR)/$(bindir)/$(name) $(DEL_FILE) -vf $(DESTDIR)/$(bindir)/$(name) cd $(DESTDIR)/$(datadir)/qjadeo/locale/ && $(DEL_FILE) -vf *.qm rmdir $(DESTDIR)/$(datadir)/qjadeo/locale/ .PHONY: clean clean: $(name).mak $(MAKE) -f $(name).mak clean if test -d qt3; then \ $(COPY) -f qt3/* .; \ $(DEL_FILE) -rf qt3; \ fi $(DEL_FILE) -f $(name) $(name).mak $(DEL_FILE) -rf *.cache *.log *.status $(DEL_FILE) -rf .ui $(DEL_FILE) -rf .obj $(DEL_FILE) -rf .moc $(DEL_FILE) -f portinglog.txt $(DEL_FILE) -rf .tmp $(DEL_FILE) -f mydirs.h mainwindow.h distclean: clean maintainer-clean: clean $(DEL_FILE) -f Makefile $(DEL_FILE) -f Makefile.in $(DEL_FILE) -f $(name).pro mydirs.h: Makefile echo '#ifdef WIN32' >$@ echo '#define MENCODER "mencoder.exe"' >>$@ echo '#define XJREMOTE "xjremote.bat"' >>$@ echo '#define XJINFO "xjinfo.exe"' >>$@ echo '#define BINDIR ""' >>$@ echo '#define CONFIG_PREFIX ""' >>$@ echo '#else' >>$@ echo '#define MENCODER "mencoder"' >>$@ echo '#define XJREMOTE "xjremote"' >>$@ echo '#define XJINFO "xjinfo"' >>$@ echo '#define BINDIR "$(bindir)/"' >>$@ echo '#define CONFIG_PREFIX "$(datadir)/qjadeo/locale"' >>$@ echo '#endif' >>$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xjadeo-0.7.6/src/qt-gui/qjadeo.rc0000644000175000017500000000007411464664425013522 00000000000000IDI_ICON1 ICON DISCARDABLE "images/qjadeo.ico" xjadeo-0.7.6/src/qt-gui/qjadeo_ru.ts0000644000175000017500000004262411542731746014257 00000000000000 ImportDialog Import - Convert Video File Импорт — Конвертирование видеофайла Video File Видеофайл Source: Источник: File Info: Информация: Destination: Конечный файл: Encoder Settings Параметры кодировщика Width: Ширина: Scale Масштабировать Height: Высота: Break Aspect Ratio Без учёта соотношения сторон FPS: Кадров в секунду: 24 24 25 25 29.97 29.97 30 30 Resample Выполнять ресэмплинг extra mencoder options Дополнительные ключи mencoder &Cancel О&тменить &OK &OK select video file to convert Выберите конвертируемый видеофайл choose a destinaton filename Выберите имя конечного файла ImportProgress Transcoding Video File Выполняется конвертирование файла Cancel Отменить MainWindow qjadeo qjadeo screen updates per sec. Обновлений в секунду: time offset in video-frames: Смещение времени в видеокадрах: &File &Файл &Sync С&инхронизация &Zoom &Масштаб &OSD &OSD &Seek Пере&ход &Help &Справка &Open... &Открыть... Open Открыть Ctrl+O Ctrl+O &Close xjadeo and Exit &Закрыть xjadeo и выйти Exit Выход Ctrl+Q &About &О программе About О программе Frame number Номер кадра SMPTE SMPTE Filename Имя файла Box Рисовать фон Font... Шрифт... &Import &Импортировать Import Импортировать Convert video files. Сконвертировать видеофайлы &Configure qjadeo &Настроить qjadeo Configure qjadeo Настроить qjadeo Disconnect and &Exit Отсоединиться и в&ыйти Disconnect Отсоединиться Ctrl+W Letterbox Resize to aspect-ratio to any frame К любому кадру keyframes only Только по ключевым кадрам continuously Непрерывно JACK Transport Транспорт JACK LTC (JACK) LTC (JACK) MTC (JACK MIDI) MTC (JACK MIDI) MTC (ALSA SEQ) MTC (ALSA SEQ) off (slider) Выкл (ползунок) off Выкл 50% 50% 100% 100% 200% 200% Maximize Во весь экран PrefDialog Preferences Параметры General Settings Общие Autoconnect ALSA Midi port (MTC): Автосоединение с портом ALSA MIDI (MTC): Autoconnect JACK Midi port (MTC): Автосоединение с портом JACK MIDI (MTC): xjadeo/xjremote executable: Файл xjadeo/xjremote: xjinfo executable: Файл xjinfo: mencoder executable: Файл mencoder: Import Settings Импорт Import to Codec: Используемый кодек: mpeg4 mpeg4 mjpeg mjpeg msmpeg4 msmpeg4 mpeg1video mpeg1video mpeg2video mpeg2video mencoder options: Параметры mencoder: Default Import Destination Path: Каталог хранения импортированных файлов &Cancel О&тменить &OK &OK Select default destination folder Выберите папку для хранения импортированных файлов QJadeo &%1 %2 &%1 %2 Choose video file Choose a font xjadeo-0.7.6/src/qt-gui/qjadeo_cs.ts0000644000175000017500000004113412157341461014223 00000000000000 ImportDialog Import - Convert Video File Zavedení - Převést videosoubor Video File Videosoubor Source: Zdroj: File Info: Informace o souboru: Destination: Cíl: Encoder Settings Nastavení kodéru Width: Šířka: Scale Měřítko Height: Výška: Break Aspect Ratio Rozbít poměr stran FPS: FPS: 24 24 25 25 29.97 29,97 30 30 Resample Převzorkovat extra mencoder options Další volby pro mencoder &Cancel &Zrušit &OK &OK select video file to convert Vybrat videosoubor k převedení choose a destinaton filename Vybrat cílový název souboru ImportProgress Transcoding Video File Překódování videosouboru Cancel Zrušit MainWindow qjadeo qjadeo screen updates per sec. Obnovení obrazovky za sekundu. time offset in video-frames: Časový posun ve snímcích videa: &File &Soubor &Sync S&eřízení &Zoom &Zvětšení &OSD Zo&brazení &Seek &Hledání &Help &Nápověda &Open... &Otevřít... Open Otevřít Ctrl+O Ctrl+O &Close xjadeo and Exit &Zavřít xjadeo a ukončit Exit Ukončit Ctrl+Q Ctrl+Q &About &O programu About O programu Frame number Číslo snímku SMPTE SMPTE Filename Název souboru Box Box Font... Písmo... &Import &Zavést Import Zavést Convert video files. Převést videosoubory. &Configure qjadeo &Nastavit qjadeo Configure qjadeo Nastavit qjadeo Disconnect and &Exit Odpojit a &ukončit Disconnect Odpojit Ctrl+W Ctrl+W Letterbox Širokoúhlý formát Resize to aspect-ratio Změnit velikost na poměr stran to any frame k jakémukoli snímku keyframes only pouze klíčové snímky continuously spojitě JACK Transport Transport JACK LTC (JACK) LTC (JACK) MTC (JACK MIDI) MTC (JACK MIDI) MTC (ALSA SEQ) MTC (ALSA SEQ) off (slider) Vypnuto (posuvník) off Vypnuto 50% 50% 100% 100% 200% 200% Maximize Zvětšit PrefDialog Preferences Nastavení General Settings Obecná nastavení Autoconnect ALSA Midi port (MTC): Automaticky spojit přípojku MIDI ALSA (MTC): Autoconnect JACK Midi port (MTC): Automaticky spojit přípojku MIDI JACK (MTC): xjadeo/xjremote executable: Spustitelný soubor xjadeo/xjremote: xjinfo executable: Spustitelný soubor xjinfo: mencoder executable: Spustitelný soubor mencoder: Import Settings Nastavení zavedení Import to Codec: Zavést ke kodeku: mpeg4 mpeg4 mjpeg mjpeg msmpeg4 msmpeg4 mpeg1video mpeg1video mpeg2video mpeg2video mencoder options: Volby pro mencoder: Default Import Destination Path: Výchozí cílová cesta pro zavedení: &Cancel &Zrušit &OK &OK Select default destination folder Vybrat výchozí cílovou složku QJadeo &%1 %2 &%1 %2 Choose video file Vybrat videosoubor Choose a font Vybrat písmo xjadeo-0.7.6/src/qt-gui/qjadeo.pro.in0000644000175000017500000000104312157341461014310 00000000000000TEMPLATE = app LANGUAGE = C++ TARGET = qjadeo CONFIG += qt warn_on release CONFIG += qtestlib RESOURCES += qjadeo.qrc HEADERS += qjadeo.h prefdialog.h importdialog.h importprogress.h SOURCES += qjadeo.cpp prefdialog.cpp importdialog.cpp importprogress.cpp FORMS = mainwindow.ui prefdialog.ui importdialog.ui importprogress.ui #QMAKE_CXXFLAGS_WARN_ON += -Wno-non-virtual-dtor TRANSLATIONS = qjadeo_fr.ts qjadeo_ru.ts qjadeo_cs.ts DEFINES += QT_NO_DEBUG_OUTPUT #win32-x-g++:DEFINES += QT_NO_DEBUG_OUTPUT win32-x-g++:RC_FILE = qjadeo.rc xjadeo-0.7.6/src/qt-gui/qjadeo.h0000644000175000017500000000331211472266103013331 00000000000000#ifndef QJADEO_H #define QJADEO_H #include "ui_mainwindow.h" #include #include "prefdialog.h" #include "importprogress.h" #include "importdialog.h" #define MAX_RECENTFILES 5 class QJadeo: public QMainWindow , public Ui::MainWindow { Q_OBJECT public: QJadeo(); void fileLoad(const QString & filename); void initialize(); QString m_xjadeopath; QProcess *xjadeo; private: QStringList m_recentFiles; int m_movie_width; int m_movie_height; int m_updatefps; int m_frames; int m_offset; int m_framerate; QString m_osdfont; QString m_alsamidiport; QString m_jackmidiport; QString m_importdir; bool m_importdestination; QString m_importcodec; QString m_mencoderpath; QString m_mencoderopts; QString m_xjinfopath; int m_mididrv; void updateRecentFilesMenu(); void updateRecentFiles(const QString & filename); void saveOptions(); bool testexec(QString exe); QAction *recentFileActs[MAX_RECENTFILES]; public slots: void fileOpen(); void fileExit(); void fileImport(); void filePreferences(); void fileDisconnect(); void helpAbout(); void zoom50(); void zoom100(); void zoom200(); void zoomFullScreen(); void zoomAspect(); void zoomLetterbox(bool); void syncJack(); void syncLTCJack(); void syncMTCalsa(); void syncMTCjack(); void syncOff(); void seekContinuously(); void seekAnyFrame(); void seekKeyFrames(); void setFPS(const QString &); void setOffset(const QString &); void fileOpenRecent(); void readFromStdout (); void osdFrameToggled(bool); void osdSMPTEToggled(bool); void osdTextToggled(bool); void osdBoxToggled(bool); void osdFont(); void seekBarChanged( int ); void osdTextOff(); }; #endif xjadeo-0.7.6/src/qt-gui/qjadeo_el_GR.ts0000644000175000017500000002721411566270700014611 00000000000000 ImportDialog Import - Convert Video File Εισαγωγή - Μετατροπή αρχείου Video File Αρχείο Video Source: Πηγή: File Info: Πληροφορίες αρχείου: Destination: Προορισμός: Encoder Settings Παράμετροι κωδικοποιητή Width: Πλάτος: Scale Κλίμακα Height: Ύψος: Break Aspect Ratio Διακοπή αναλογίας FPS: FPS: 24 24 25 25 29.97 29.97 30 30 Resample Αναδειγματοληψία extra mencoder options επιπλέον επιλογές mencoder &Cancel &Ακύρωση &OK &OK select video file to convert choose a destinaton filename ImportProgress Transcoding Video File Επανακωδικοποιήση video Cancel Ακύρωση MainWindow qjadeo qjadeo screen updates per sec. Ανανέωση ανά δευτερόλεπτο: time offset in video-frames: Διαφορά χρόνου σε καρέ: &File &Αρχείο &Sync &Συγχρονισμός &Zoom &Μεγέθυνση &OSD &OSD &Seek &Seek &Help &Βοήθεια Open Άνοιγμα &Open... &Άνοιγμα... Ctrl+O Ctrl+O Exit Έξοδος &Close xjadeo and Exit &Κλείσιμο xjadeo και έξοδος About Περί &About &Περί ActionGroup ActionGroup Sync Sync JACK Transport Μεταφορά JACK MTC (ALSA SEQ) MTC (ALSA SEQ) MTC (JACK MIDI) MTC (JACK MIDI) off απενεργοποίηση off (slider) Απενεργοποίηση (slider) Zoom Zoom 50% 50% 100% 100% 200% 200% Maximize Μεγιστοποίηση Frame number Αριθμός καρέ Box Περίμετρος SMPTE SMPTE Font... Γραμματοσειρά... Import Εισαγωγή &Import &Εισαγωγή Convert video files. Μετατροπή αρχείων. Configure qjadeo Ρύθμιση qjadeo &Configure qjadeo &Ρύθμιση qjadeo Disconnect Αποσύνδεση Disconnect and &Exit Αποσύνδεση και &Έξοδος to any frame σε οποιοδήποτε καρέ keyframes only μόνο καίρια καρέ continuously continuellement Ctrl+Q Filename Ctrl+W Letterbox Resize to aspect-ratio LTC (JACK) PrefDialog Preferences Προτιμήσεις General Settings Γενικές Ρυθμίσεις Autoconnect ALSA Midi port (MTC): Αυτόματη επανεσύνδεση ALSA Midi (MTC): Autoconnect JACK Midi port (MTC): Αυτόματη επανεσύνδεση JACK Midi (MTC): xjadeo/xjremote executable: Εκτελέσιμο xjadeo/xjremote: xjinfo executable: Εκτελέσιμο xjinfo: mencoder executable: Εκτελέσιμο mencoder: Import Settings Παράμετροι Εισαγωγής Import to Codec: Κωδικοποιητής: mpeg4 mpeg4 mjpeg mjpeg msmpeg4 msmpeg4 mpeg1video mpeg1video mpeg2video mpeg2video mencoder options: Επιλογές mencoder: Default Import Destination Path: Προεπιλεγμένος προορισμός για εισαγωγόμενα αρχεία: &Cancel &Ακύρωση &OK &OK Select default destination folder QJadeo &%1 %2 Choose video file Choose a font xjadeo-0.7.6/AUTHORS0000644000175000017500000000025712157341461010777 00000000000000Luis Garrido Robin Gareus Translations: * French: R. Doursenaud * Russian: Alexandre Prokoudine * Czech: Pavel Fric xjadeo-0.7.6/xjadeo.lsm.in0000644000175000017500000000227111464664425012331 00000000000000Begin4 Title: xjadeo Version: @VERSION@ Entered-date: @ISODATE@ Description: jack video monitor xjadeo is a software video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport). It has applications in soundtrack composition, video monitoring or any task that requires to associate movie frames with audio events. For instance when a JACK-client (like Muse, Rosegarden or Ardour) acts as timebase master, xjadeo will display the video in sync. xjadeo supports a multitude of video file formats, display libraries and sync sources. It includes an optional GUI that provides file-history and allows to modify settings of a running instance. see http://xjadeo.sourceforge.net/ for further information. @configure_input@ Authors: luisgarrido@users.sourceforge.net, robin@gareus.org Keywords: jack video monitor Author: luisgarrido@users.sourceforge.net, robin@gareus.org Maintained-by: robin@gareus.org Primary-site: http://xjadeo.sourceforge.net/ 212K xjadeo-@VERSION@.tar.gz 500 xjadeo.lsm Alternate-site: https://sourceforge.net/projects/xjadeo/ Original-site: Platforms: Copying-policy: Gnu General Public License (GPL) 2.0 End xjadeo-0.7.6/config.h.in0000644000175000017500000001557312200730320011742 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define as 1 to enable ALSA-raw midi driver */ #undef ALSA_RAW_MIDI /* Define as 1 to enable ALSA sequencer midi */ #undef ALSA_SEQ_MIDI /* errors in the resource config file only result in a warning message instead of forcing xjadeo to exit. */ #undef CFG_WARN_ONLY /* enable XV and imlib2 color equalizer */ #undef COLOREQ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* enable frame cropping */ #undef CROPIMG /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* enable xjadeo x11 drag and drop */ #undef DND /* paint a X on screen when unable to decode or display a frame. */ #undef DRAW_CROSS /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_ALSA_ASOUNDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_FFMPEG_AVCODEC_H /* Have FreeType2 include files */ #undef HAVE_FREETYPE_H /* Use freetype for OSD */ #undef HAVE_FT /* Define as 1 if you have imlib2 */ #undef HAVE_IMLIB2 /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define as 1 if you have IPC message queues (system-V) */ #undef HAVE_IPCMSG /* Define as 1 to enable JACK-MIDI */ #undef HAVE_JACKMIDI /* Define to 1 if you have the header file. */ #undef HAVE_JACK_MIDIPORT_H /* Define to 1 if you have the header file. */ #undef HAVE_JACK_SESSION_H /* experimental code to use jack_video, jack-svn >= r591 */ #undef HAVE_JACK_VIDEO /* Define as 1 if you have lash */ #undef HAVE_LASH /* Define as 1 if you have the loblo OSC library */ #undef HAVE_LIBLO /* Define to 1 if you have the header file. */ #undef HAVE_LIBSWSCALE_SWSCALE_H /* Define as 1 if you have the Xv library (-lXv) */ #undef HAVE_LIBXV /* Define as 1 if you have libltc - http://github.com/x42/libltc */ #undef HAVE_LTC /* Define as 1 if you have ltcsmpte.sf.net */ #undef HAVE_LTCSMPTE /* use macintosh native display */ #undef HAVE_MACOSX /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define as 1 if to enable MIDI in general */ #undef HAVE_MIDI /* Define as 1 if you have POSIX message queues (libc, librt) */ #undef HAVE_MQ /* Define as 1 if to enable the portmidi driver */ #undef HAVE_PORTMIDI /* Define to 1 if you have the header file. */ #undef HAVE_PORTMIDI_H /* Define to 1 if you have the header file. */ #undef HAVE_PORTTIME_H /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define as 1 if you have the SDL toolkit */ #undef HAVE_SDL /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define as 1 if you have ffmpeg with swscale support */ #undef HAVE_SWSCALE /* Define to 1 if you have the header file. */ #undef HAVE_SWSCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IPC_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MSG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define as 1 if you have libtiff (contrib/tsmm) */ #undef HAVE_TIFF /* Define to 1 if you have the header file. */ #undef HAVE_TIFFIO_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* windows SDL version */ #undef HAVE_WINDOWS /* Define to 1 if you have the header file. */ #undef HAVE_X11_XLIB_H /* Define as 1 if you have libXpm */ #undef HAVE_XPM /* use native RGB32 ffmpeg -> imlib. */ #undef IMLIB2RGBA /* Define as 1 to enable JACK Session support */ #undef JACK_SESSION /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #undef MAJOR_IN_MKDEV /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #undef MAJOR_IN_SYSMACROS /* max length of a remote control line. */ #undef MQLEN /* use new JACK latency API */ #undef NEW_JACK_LATENCY_API /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Define as 1 if you older versions of ffmpeg that provide all include headers in one folder. */ #undef OLD_FFMPEG /* 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 /* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE /* The size of `float', as computed by sizeof. */ #undef SIZEOF_FLOAT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `unsigned long', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_LONG /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* enable dynamic time scaling */ #undef TIMEMAP /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* absolute path to truetype default OSD font file */ #undef TTFFONTFILE /* 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 /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `unsigned int' if does not define. */ #undef size_t xjadeo-0.7.6/install-sh0000755000175000017500000003253711437010433011731 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xjadeo-0.7.6/COPYING0000644000175000017500000004311011436273050010752 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.