diff --git a/veejay-current/plugin-packs/lvdcrop/configure.ac b/veejay-current/plugin-packs/lvdcrop/configure.ac index 4ba9fc4d..dc09bdc7 100644 --- a/veejay-current/plugin-packs/lvdcrop/configure.ac +++ b/veejay-current/plugin-packs/lvdcrop/configure.ac @@ -92,9 +92,6 @@ AM_PROG_AS AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_STDINT_H]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_INTTYPES_H]) - AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp]) AC_CHECK_FUNCS([sched_get_priority_max]) AC_CHECK_FUNCS([select socket getpagesize memcpy]) @@ -494,18 +491,18 @@ if test x"$with_extra_cflags" != "x"; then CXXFLAGS="$CXXFLAGS $with_extra_cflags" fi dnl Check for Veejay -have_veejay=false -PKG_CHECK_MODULES( VEEJAY, [veejay >= 1.5.50 ], +have_veejaycore=false +PKG_CHECK_MODULES( VEEJAYCORE, [veejaycore >= 1.5.65 ], [ - AC_SUBST(VEEJAY_CFLAGS) - AC_SUBST(VEEJAY_LIBS) - have_veejay=true - AC_DEFINE(HAVE_VEEJAY,1, [Veejay 1.5.50 installed])] + AC_SUBST(VEEJAYCORE_CFLAGS) + AC_SUBST(VEEJAYCORE_LIBS) + have_veejaycore=true + AC_DEFINE(HAVE_VEEJAYCORE,1, [Veejay Core 1.5.65 installed])] , - [have_veejay=false]) + [have_veejaycore=false]) -if test x$have_veejay != xtrue ; then - AC_MSG_ERROR([Cannot find veejay 1.5.50 or later]) +if test x$have_veejaycore != xtrue ; then + AC_MSG_ERROR([Cannot find Veejay Core 1.5.65 or later]) fi AC_CONFIG_FILES([ Makefile @@ -536,7 +533,7 @@ AC_MSG_NOTICE([]) AC_MSG_NOTICE([ - FFmpeg/AV Swscaler : ${have_swscale} ]) AC_MSG_NOTICE([ - FFmpeg/AV AVUtil : ${have_avutil} ]) -AC_MSG_NOTICE([ - Veejay : ${have_veejay} ]) +AC_MSG_NOTICE([ - Veejay Core : ${have_veejaycore} ]) if test "$have_linux" = "true" ; then AC_MSG_NOTICE([ Platform: Linux]) fi diff --git a/veejay-current/plugin-packs/lvdcrop/plugins/Makefile.am b/veejay-current/plugin-packs/lvdcrop/plugins/Makefile.am index e5f0d4fa..0ee0301f 100644 --- a/veejay-current/plugin-packs/lvdcrop/plugins/Makefile.am +++ b/veejay-current/plugin-packs/lvdcrop/plugins/Makefile.am @@ -10,7 +10,7 @@ if HAVE_GAVL lvd_scale0tilt_la_SOURCES = lvd_scale0tilt.c endif -INCLUDES=$(FFMPEG_CFLAGS) $(GAVL_CFLAGS) $(VEEJAY_CFLAGS) -I$(top_srcdir)/lvdcrop +AM_CPPFLAGS=$(FFMPEG_CFLAGS) $(GAVL_CFLAGS) $(VEEJAYCORE_CFLAGS) -I$(top_srcdir)/lvdcrop AM_CFLAGS=-I@top_srcdir@/include $(OPTCFLAGS) -DSILENT AM_LDFLAGS=-module -avoid-version -lm -export-dynamic -lstdc++ -DDYNAMIC -rdynamic $(FFMPEG_LIBS) $(GAVL_LIBS) AM_LIBTOOLFLAGS = --tag=disable-static diff --git a/veejay-current/plugin-packs/lvdcrop/plugins/lvd_cropscale.c b/veejay-current/plugin-packs/lvdcrop/plugins/lvd_cropscale.c index f00f3cb9..29dcf524 100644 --- a/veejay-current/plugin-packs/lvdcrop/plugins/lvd_cropscale.c +++ b/veejay-current/plugin-packs/lvdcrop/plugins/lvd_cropscale.c @@ -18,7 +18,7 @@ LIVIDO_PLUGIN #include #include -#include +#include typedef struct { struct SwsContext *sws; diff --git a/veejay-current/plugin-packs/lvdgmic/configure.ac b/veejay-current/plugin-packs/lvdgmic/configure.ac index 2825b874..8460e4d0 100644 --- a/veejay-current/plugin-packs/lvdgmic/configure.ac +++ b/veejay-current/plugin-packs/lvdgmic/configure.ac @@ -10,7 +10,6 @@ LVDGMICMICRO_VERSION=1 LVDGMICVERSION=$LVDGMICMAJOR_VERSION.$LVDGMICMINOR_VERSION.$LVDGMICMICRO_VERSION LVDGMICCODENAME="Livido GMIC filters - build $LVDGMICMINOR_VERSION $LVDGMICMICRO_VERSION" AC_CONFIG_HEADERS([config.h]) -dnl AX_CONFIG_PREFIXED_HEADER([veejay-config.h], [VEEJAY], [config.h]) AC_CANONICAL_HOST AC_CANONICAL_TARGET @@ -99,9 +98,6 @@ then AC_MSG_ERROR([gmic.h not found - please install gmic]) fi -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_STDINT_H]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_INTTYPES_H]) - AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp]) AC_CHECK_FUNCS([sched_get_priority_max]) AC_CHECK_FUNCS([select socket getpagesize memcpy]) diff --git a/veejay-current/plugin-packs/lvdgmic/liblvdgmic/Makefile.am b/veejay-current/plugin-packs/lvdgmic/liblvdgmic/Makefile.am index 6e3d76e2..c4b5d1e2 100644 --- a/veejay-current/plugin-packs/lvdgmic/liblvdgmic/Makefile.am +++ b/veejay-current/plugin-packs/lvdgmic/liblvdgmic/Makefile.am @@ -1,5 +1,5 @@ MAINTAINERCLEANFILES = Makefile.in -INCLUDES = $(CFLAGS) +AM_CPPFLAGS = $(CFLAGS) LIBLVDGMIC = liblvdgmic.la noinst_LTLIBRARIES = $(LIBLVDGMIC) diff --git a/veejay-current/plugin-packs/lvdgmic/plugins/Makefile.am b/veejay-current/plugin-packs/lvdgmic/plugins/Makefile.am index 6b43281d..e854a365 100644 --- a/veejay-current/plugin-packs/lvdgmic/plugins/Makefile.am +++ b/veejay-current/plugin-packs/lvdgmic/plugins/Makefile.am @@ -145,7 +145,7 @@ gmic_lightrelief_la_LIBADD = -L$(top_builddir)/liblvdgmic -llvdgmic #gmic_sketchbw_la_SOURCES = gmic_sketchbw.c #gmic_sketchbw_la_LIBADD = -L$(top_builddir)/liblvdgmic -llvdgmic -INCLUDES=$(FFMPEG_CFLAGS) -I$(top_srcdir)/liblvdgmic +AM_CPPFLAGS=$(FFMPEG_CFLAGS) -I$(top_srcdir)/liblvdgmic AM_CFLAGS=-I@top_srcdir@/include $(OPTCFLAGS) -DSILENT AM_LDFLAGS=-module -avoid-version -lm -export-dynamic -lgmic -lstdc++ -DDYNAMIC -rdynamic AM_LIBTOOLFLAGS = --tag=disable-static diff --git a/veejay-current/plugin-packs/lvdshared/configure.ac b/veejay-current/plugin-packs/lvdshared/configure.ac index 80136ce2..bc86ee72 100644 --- a/veejay-current/plugin-packs/lvdshared/configure.ac +++ b/veejay-current/plugin-packs/lvdshared/configure.ac @@ -89,9 +89,6 @@ AM_PROG_AS AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_STDINT_H]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_INTTYPES_H]) - AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp]) AC_CHECK_FUNCS([sched_get_priority_max]) AC_CHECK_FUNCS([select socket getpagesize memcpy]) @@ -330,17 +327,17 @@ if test x"$with_extra_cflags" != "x"; then fi dnl Check for Veejay have_veejay=false -PKG_CHECK_MODULES( VEEJAY, [veejay >= 1.5.50 ], +PKG_CHECK_MODULES( VEEJAYCORE, [veejaycore >= 1.5.65 ], [ - AC_SUBST(VEEJAY_CFLAGS) - AC_SUBST(VEEJAY_LIBS) - have_veejay=true - AC_DEFINE(HAVE_VEEJAY,1, [Veejay 1.5.50 installed])] + AC_SUBST(VEEJAYCORE_CFLAGS) + AC_SUBST(VEEJAYCORE_LIBS) + have_veejaycore=true + AC_DEFINE(HAVE_VEEJAYCORE,1, [Veejay Core 1.5.65 installed])] , - [have_veejay=false]) + [have_veejaycore=false]) -if test x$have_veejay != xtrue ; then - AC_MSG_ERROR([Cannot find veejay 1.5.50 or later]) +if test x$have_veejaycore != xtrue ; then + AC_MSG_ERROR([Cannot find Veejay Core 1.5.65 or later]) fi AC_CONFIG_FILES([ @@ -360,7 +357,7 @@ AC_MSG_NOTICE([ Architecture: ${host_cpu} ]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ - FFmpeg/AV Swscaler : ${have_swscale} ]) AC_MSG_NOTICE([ - FFmpeg/AV AVUtil : ${have_avutil} ]) -AC_MSG_NOTICE([ - Veejay : ${have_veejay} ]) +AC_MSG_NOTICE([ - Veejay Core : ${have_veejaycore} ]) if test "$have_linux" = "true" ; then AC_MSG_NOTICE([ Platform: Linux]) fi diff --git a/veejay-current/plugin-packs/lvdshared/plugins/Makefile.am b/veejay-current/plugin-packs/lvdshared/plugins/Makefile.am index 93f40732..8472a415 100644 --- a/veejay-current/plugin-packs/lvdshared/plugins/Makefile.am +++ b/veejay-current/plugin-packs/lvdshared/plugins/Makefile.am @@ -3,7 +3,7 @@ lividoplugin_LTLIBRARIES = lvd_shmin.la lvd_shmout.la lvd_shmin_la_SOURCES = lvd_shmin.c lvd_shmout_la_SOURCES = lvd_shmout.c -INCLUDES=$(FFMPEG_CFLAGS) $(VEEJAY_CFLAGS) -I$(top_srcdir)/lvdshm +AM_CPPFLAGS=$(FFMPEG_CFLAGS) $(VEEJAYCORE_CFLAGS) -I$(top_srcdir)/lvdshm AM_CFLAGS=-I@top_srcdir@/include $(OPTCFLAGS) -DSILENT AM_LDFLAGS=-module -avoid-version -lm -export-dynamic -lstdc++ -DDYNAMIC -rdynamic $(FFMPEG_LIBS) AM_LIBTOOLFLAGS = --tag=disable-static diff --git a/veejay-current/plugin-packs/lvdshared/plugins/lvd_shmin.c b/veejay-current/plugin-packs/lvdshared/plugins/lvd_shmin.c index ca4908e7..387246bc 100644 --- a/veejay-current/plugin-packs/lvdshared/plugins/lvd_shmin.c +++ b/veejay-current/plugin-packs/lvdshared/plugins/lvd_shmin.c @@ -41,7 +41,7 @@ LIVIDO_PLUGIN #include "utils.h" #include "livido-utils.c" -#include +#include typedef struct { diff --git a/veejay-current/sendVIMS/README b/veejay-current/sendVIMS/README index f6f70091..55daa1a7 100644 --- a/veejay-current/sendVIMS/README +++ b/veejay-current/sendVIMS/README @@ -9,8 +9,7 @@ requirements: veejay-1.5.50 pre build (optional): - copy the vims.h file from veejay-current/veejay-server/veejay/vims.h - The vims.h is taken from veejay 1.5.50 + copy the vims.h file from veejay-core/veejaycore/vims.h perl parse-vims.pl vims.h diff --git a/veejay-current/veejay-client/.gitignore b/veejay-current/veejay-client/.gitignore deleted file mode 100644 index 425c309d..00000000 --- a/veejay-current/veejay-client/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -/INSTALL -/Makefile -/Makefile.in -/aclocal.m4 -/autom4te.cache/ -/compile -/config.guess -/config.h -/config.h.in -/config.log -/config.status -/config.sub -/configure -/depcomp -/gveejay-paths.h -/gveejay-paths.sh -/install-sh -/libtool -/ltmain.sh -/m4/ -/missing -/src/.deps/ -/src/Makefile -/src/Makefile.in -/src/cellrendererspin.o -/src/curve.o -/src/gtkcolorsel.o -/src/gtkknob.o -/src/gtktimeselection.o -/src/gveejay.o -/src/keyboard.o -/src/mjpeg_logging.o -/src/mpegconsts.o -/src/mpegtimecode.o -/src/multitrack.o -/src/reloaded -/src/sequence.o -/src/tracksources.o -/src/utils.o -/src/vj-api.o -/src/vj-midi.o -/src/yuv4mpeg.o -/src/yuv4mpeg_ratio.o -/stamp-h1 diff --git a/veejay-current/veejay-client/AUTHORS b/veejay-current/veejay-client/AUTHORS deleted file mode 100644 index eb78d521..00000000 --- a/veejay-current/veejay-client/AUTHORS +++ /dev/null @@ -1,29 +0,0 @@ -Tim Philipp Mόller - (CellRendererSpin 15 minute hack - good enough) - -Matthijs v. Henten - Glade-2 interface design - Icon/picture design - -Thomas Reinhold - Samplebank - -Dursun Koca - Veejay Logo (V) design - -Niels Elburg - Lead programming - -Contributions by: - Toni < oc2pus@arcor.de > - (making gveejay happen on GTK 2.4, veejay.spec file) - - d/j/a/y - (reloaded interface improvements) - - -Icons: - - share/multicast.ico - - icons8.com as Creative Commons Attribution-NoDerivs 3.0 Unported diff --git a/veejay-current/veejay-client/COPYING b/veejay-current/veejay-client/COPYING deleted file mode 100644 index d60c31a9..00000000 --- a/veejay-current/veejay-client/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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. diff --git a/veejay-current/veejay-client/Makefile.am b/veejay-current/veejay-client/Makefile.am deleted file mode 100644 index f0492efe..00000000 --- a/veejay-current/veejay-client/Makefile.am +++ /dev/null @@ -1,181 +0,0 @@ -# Process with automake to produce Makefile.in -SUBDIRS = src - -ACLOCAL_AMFLAGS = -I m4 - -EXTRA_DIST = \ - autogen.sh\ - depcomp \ - cpuinfo.sh \ - autogen.sh \ - debian/copyright \ - debian/changelog \ - debian/control \ - debian/rules \ - share/bg.png \ - share/bg_black.png \ - share/bg_blue.png \ - share/bg_green.png \ - share/bg_grey.png \ - share/bg_red.png \ - share/bg_yellow.png \ - share/blackwhite.rc \ - share/button_back.png \ - share/button_bounce.png \ - share/button_dec.png \ - share/button_down.png \ - share/button_fbw.png \ - share/button_ffw.png \ - share/button_gotoend.png \ - share/button_gotostart.png \ - share/button_inc.png \ - share/button_loop.png \ - share/button_looponce.png \ - share/button_mini_decrement.png \ - share/button_mini_increment.png \ - share/button_next.png \ - share/button_pause.png \ - share/button_play.png \ - share/button_playmode.png \ - share/button_prev.png \ - share/button_rand.png \ - share/button_reverse.png \ - share/button_right.png \ - share/button_skip.png \ - share/button_skull.png \ - share/button_text.png \ - share/button_up.png \ - share/fx_entry_off.png \ - share/fx_entry_on.png \ - share/gveejay-default.rc \ - share/gveejay.glade \ - share/gveejay.rc \ - share/gveejay.reloaded.glade \ - share/gveejay.reloaded.glade.bak \ - share/gveejay.reloaded.gladep \ - share/gveejay.reloaded.gladep.bak \ - share/gveejay.reloaded.glade~ \ - share/high_contrast.rc \ - share/icon_apply.png \ - share/icon_berserk.png \ - share/icon_bezerk.png \ - share/icon_bounce.png \ - share/icon_bug.png \ - share/icon_bundle.png \ - share/icon_cache.png \ - share/icon_clear.png \ - share/icon_clearall.png \ - share/icon_color.png \ - share/icon_connect.png \ - share/icon_copy.png \ - share/icon_crop.png \ - share/icon_cut.png \ - share/icon_disconnect.png \ - share/icon_fadein.png \ - share/icon_fadeout.png \ - share/icon_jack.png \ - share/icon_keybind.png \ - share/icon_keydetach.png \ - share/icon_keyframe.png \ - share/icon_launch.png \ - share/icon_loop.png \ - share/icon_looponce.png \ - share/icon_macroclear.png \ - share/icon_macropause.png \ - share/icon_macroplay.png \ - share/icon_macrorec.png \ - share/icon_mask.png \ - share/icon_minus.png \ - share/icon_new.png \ - share/icon_noloop.png \ - share/icon_open.png \ - share/icon_openlist.png \ - share/icon_openstream.png \ - share/icon_osd.png \ - share/icon_paste.png \ - share/icon_plarge.png \ - share/icon_playmode.png \ - share/icon_plus.png \ - share/icon_psmall.png \ - share/icon_question.png \ - share/icon_record.png \ - share/icon_recordstop.png \ - share/icon_recstop.png \ - share/icon_refresh.png \ - share/icon_render.png \ - share/icon_save.png \ - share/icon_saveas.png \ - share/icon_screenshot.png \ - share/icon_send.png \ - share/icon_skull.png \ - share/icon_stream.png \ - share/icon_trash.png \ - share/icon_video.png \ - share/knob.png \ - share/reloaded_classic.glade \ - share/smooth.rc \ - share/sync.png \ - share/veejay-icon.png \ - share/veejay-logo-small.png \ - share/veejay-logo.png \ - gveejay-paths.sh.in - -DISTCLEANFILES = \ - confdefs.h \ - config.cache \ - config.status \ - config.log \ - gveejay-paths.h - - -MAINTAINERCLEANFILES = \ - compile \ - depcomp \ - install-sh \ - missing \ - mkinstalldirs \ - Makefile.in \ - aclocal.m4 \ - config.guess \ - config.h.in \ - config.sub \ - configure \ - ltmain.sh \ - stamp-h.in - -## .glade files must be in same directory as pixmaps ?!! -install-data-local: - @$(NORMAL_INSTALL) - if test -d $(srcdir)/share; then \ - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir); \ - for dialog in $(srcdir)/share/*; do \ - if test -f $$dialog; then \ - $(INSTALL_DATA) $$dialog $(DESTDIR)$(pkgdatadir); \ - fi \ - done \ - fi; - - - -gveejay-path.h: gveejay-paths.sh - @sh $< > $@.tmp ; - if cmp -s $@.tmp $@; then - rm $@.tmp; - else - mv $@.tmp $@ ; echo updated gveejay-paths.h; - fi - -dist-hook: - rm -f $(distdir)/gveejay-paths.sh - -## make rpms -rpm: Makefile - $(MAKE) dist - rpmbuild -ta --clean $(PACKAGE)-$(VERSION).tar.gz - -## make debs -deb: Makefile dist - -chmod -R +w $(PACKAGE)-$(VERSION) - rm -rf $(PACKAGE)-$(VERSION) - tar xzf $(PACKAGE)-$(VERSION).tar.gz - cd $(PACKAGE)-$(VERSION); dpkg-buildpackage -rfakeroot diff --git a/veejay-current/veejay-client/PKGBUILD b/veejay-current/veejay-client/PKGBUILD deleted file mode 100644 index 07b38372..00000000 --- a/veejay-current/veejay-client/PKGBUILD +++ /dev/null @@ -1,31 +0,0 @@ -# Contributor: Luciano A. Ferrer -# Modified for ArchLinux by Niels -pkgname=reloaded -pkgrel=1 -pkgver=1.5.9 -pkgdesc="Reloaded is the graphical user interface for Veejay" -arch=('i686' 'x86_64') -url="http://www.veejayhq.net" -license=('GPL') -groups=() -conflicts=('reloaded') -depends=('libxml2' 'veejay' 'gtk2' 'glib2' 'glade' 'alsa-lib' ) -optdepends=() -source=() -md5sums=() -changelog=('ChangeLog') -backup=() -replaces=() - -build() { - export PKG_CONFIG_PATH=/usr/lib/pkgconfig - cd $startdir - ./autogen.sh - ./configure --prefix=/usr - make || return 1 -} - -package() { - cd $startdir - make DESTDIR="$pkgdir/" install -} diff --git a/veejay-current/veejay-client/README b/veejay-current/veejay-client/README deleted file mode 100644 index ab911c29..00000000 --- a/veejay-current/veejay-client/README +++ /dev/null @@ -1,113 +0,0 @@ - - ~== - ~==== - :... ~~==== - :...... ~~~~==== - :.....: ~~~~==== - :...... -~~~~=== - :....... --~~~~~== - :....... ::~~~~~~= - :...... "::~~~~== - :....., :::~~~=== - :..... =::~~~~=== - :...... :::~~~==== - ....... ::~~~~~=== - ....... :::~~~~~~== - ...... ~::~~~~~~== - ...... |::~~~=| - ..... :::|:~==| - ..::: |:=|||==+ - ., :., :|||?||+= - ..::,,.: :||=~=.|| - ,...::,,, |~:=|||||+| - :..,:::||||~~~====++ - ,:,,,:::~~~~~===++++ Reloaded - ,::::~~~====++++ - ~~~~~===+++++ version 1.5.50 - ~~===+++++++: - N=++++++++++ June 2015 - +++++++++ - ++++:::: - ::::: - || - - - :: Reloaded, a graphical interface for Veejay :: - - - FEATURE OVERVIEW - - -General: - - # Thin client (TCP/IP) - # MIDI support (auto learning) - # Slick interface designed for live performing - # Tracks multiple veejay servers - -Install -======= - -See file 'INSTALL' - -See doc/Howto_Compile.html -See doc/Howto_Compile_on_Ubuntu.html - -Documentation -============= - -See source code. - -Running -======= - -$ reloaded - - -To use a midi controller with veejay you must connect -the veejay's sequencer port to the MIDI controller port. -There is a utility 'aconnect' (comes with ALSA) that does this. - -1. List inputs (midi keyboards) - $ aconnect -i - - client 129: 'Virtual Keyboard' [type=user] - - -2. List outputs (Veejay) - $ aconnect -o - - client 128: 'Veejay' [type=user] - - -3. Connect the ports - - $ aconnect 129 128 - - -4. Launch reloaded - - - -Know bugs -========= -- Multitracker crashes when using very high resolution video - - - - -About -===== - -GveejayReloaded is a client for veejay. As long as veejay (the server) -is running, you can connect and disconnect from it with reloaded. - - - - - - - - - - diff --git a/veejay-current/veejay-client/autogen.sh b/veejay-current/veejay-client/autogen.sh deleted file mode 100755 index ee01832f..00000000 --- a/veejay-current/veejay-client/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -# if you use autoconf 2.64 or earlier, -# you may have to create the m4 directory yourself -# - -if [ ! -d m4 ]; then - mkdir m4 -fi - -autoreconf -v -fi -I m4 diff --git a/veejay-current/veejay-client/debian/README b/veejay-current/veejay-client/debian/README deleted file mode 100644 index d9ccebe4..00000000 --- a/veejay-current/veejay-client/debian/README +++ /dev/null @@ -1,117 +0,0 @@ - - ~== - ~==== - :... ~~==== - :...... ~~~~==== - :.....: ~~~~==== - :...... -~~~~=== - :....... --~~~~~== - :....... ::~~~~~~= - :...... "::~~~~== - :....., :::~~~=== - :..... =::~~~~=== - :...... :::~~~==== - ....... ::~~~~~=== - ....... :::~~~~~~== - ...... ~::~~~~~~== - ...... |::~~~=| - ..... :::|:~==| - ..::: |:=|||==+ - ., :., :|||?||+= - ..::,,.: :||=~=.|| - ,...::,,, |~:=|||||+| - :..,:::||||~~~====++ - ,:,,,:::~~~~~===++++ Reloaded - ,::::~~~====++++ - ~~~~~===+++++ version 1.5.47 - ~~===+++++++: - N=++++++++++ Feb. 2015. - +++++++++ - ++++:::: - ::::: - || - - - :: Reloaded, a graphical interface for Veejay :: - - - FEATURE OVERVIEW - - -General: - - # Thin client (TCP/IP) - # MIDI support (auto learning) - # Slick interface designed for live performing - # Tracks multiple veejay servers - -Install -======= - -See file 'INSTALL' - -See doc/Howto_Compile.html -See doc/Howto_Compile_on_Ubuntu.html - -Documentation -============= - -See source code. - -Running -======= - -Reloaded requires a running veejay - -$ reloaded - -$ reloaded -h hostname -p portnumber - - -To use a midi controller with veejay you must connect -the veejay's sequencer port to the MIDI controller port. -There is a utility 'aconnect' (comes with ALSA) that does this. - -1. List inputs (midi keyboards) - $ aconnect -i - - client 129: 'Virtual Keyboard' [type=user] - - -2. List outputs (Veejay) - $ aconnect -o - - client 128: 'Veejay' [type=user] - - -3. Connect the ports - - $ aconnect 129 128 - - -4. Launch reloaded - - - -Know bugs -========= -- Multitracker crashes when using very high resolution video - - - - -About -===== - -GveejayReloaded is a client for veejay. As long as veejay (the server) -is running, you can connect and disconnect from it with reloaded. - - - - - - - - - - diff --git a/veejay-current/veejay-client/debian/changelog b/veejay-current/veejay-client/debian/changelog deleted file mode 100644 index 96c948eb..00000000 --- a/veejay-current/veejay-client/debian/changelog +++ /dev/null @@ -1,5 +0,0 @@ -veejay-client (1.5.47-1) unstable; urgency=low - - * New release - - -- Niels Elburg Sat, 07 Feb 2015 19:18:35 +0100 diff --git a/veejay-current/veejay-client/debian/compat b/veejay-current/veejay-client/debian/compat deleted file mode 100644 index ec635144..00000000 --- a/veejay-current/veejay-client/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/veejay-current/veejay-client/debian/control b/veejay-current/veejay-client/debian/control deleted file mode 100644 index d9955730..00000000 --- a/veejay-current/veejay-client/debian/control +++ /dev/null @@ -1,21 +0,0 @@ -Source: veejay-client -Section: video -Priority: optional -Maintainer: Niels Elburg -Build-Depends: debhelper (>= 8.0.0), autotools-dev, libavcodec-dev,libavformat-dev,libavutil-dev,libswscale-dev,libgtk2.0-dev,libsdl1.2-dev,libxml2-dev,libx11-dev,libmjpegtools-dev,libasound2-dev,libglade2-dev,libgtk2.0-dev,libx11-dev,veejay (>= 1.5.47) -Standards-Version: 3.9.4 -Homepage: http://www.veejayhq.net -Vcs-Git: git://code.dyne.org/veejay.git - -Package: veejay-client -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, veejay (>= 1.5.47) -Description: Reloaded, a graphical interface for veejay. - This program requires a running veejay. - Features: - * Thin client (TCP/IP) - * MIDI support (auto learning) - * Slick interface designed for live performing - * Tracks multiple veejay servers - - diff --git a/veejay-current/veejay-client/debian/copyright b/veejay-current/veejay-client/debian/copyright deleted file mode 100644 index 9a91f8d3..00000000 --- a/veejay-current/veejay-client/debian/copyright +++ /dev/null @@ -1,53 +0,0 @@ -Upstream Author(s): - - Glade-2 interface design - Icon/picture design - Matthijs v. Henten - - Samplebank - Thomas Reinhold - - Veejay Logo (V) design - Dursun Koca - - Lead programming - Niels Elburg - - Contributions by: - Toni < oc2pus@arcor.de > - (making gveejay happen on GTK 2.4, veejay.spec file) - - CellRendererSpin 15 minute hack - good enough - Tim Philipp MΓΌller - - Initial debian packaging by - Jof Thibaut - - -Copyright: - - Copyright (C) 2008-2015, Niels Elburg VeejayHQ. - -License: - - 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., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - On Debian systems, the complete text of the GNU General - Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. - -The Debian packaging is: - - Copyright (C) 2010 Jof Thibaut - and is licensed under the GPL version 3, - see `/usr/share/common-licenses/GPL-3'. diff --git a/veejay-current/veejay-client/debian/docs b/veejay-current/veejay-client/debian/docs deleted file mode 100644 index e845566c..00000000 --- a/veejay-current/veejay-client/debian/docs +++ /dev/null @@ -1 +0,0 @@ -README diff --git a/veejay-current/veejay-client/debian/rules b/veejay-current/veejay-client/debian/rules deleted file mode 100755 index ff1f80f2..00000000 --- a/veejay-current/veejay-client/debian/rules +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This has to be exported to make some magic below work. -export DH_OPTIONS - - -%: - dh $@ --with autotools-dev diff --git a/veejay-current/veejay-client/debian/source/format b/veejay-current/veejay-client/debian/source/format deleted file mode 100644 index 89ae9db8..00000000 --- a/veejay-current/veejay-client/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (native) diff --git a/veejay-current/veejay-client/doc/FXAnim.txt b/veejay-current/veejay-client/doc/FXAnim.txt deleted file mode 100644 index 93a91322..00000000 --- a/veejay-current/veejay-client/doc/FXAnim.txt +++ /dev/null @@ -1,29 +0,0 @@ -..................................................................................................... -..β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–ˆβ–ˆ...β–ˆβ–ˆβ–’.......β–„β–„β–„.......β–ˆβ–ˆβ–ˆβ–„....β–ˆ..β–ˆβ–ˆβ–“.β–ˆβ–ˆβ–ˆβ–„.β–„β–ˆβ–ˆβ–ˆβ–“.β–„β–„β–„.....β–„β–„β–„β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–“.β–ˆβ–ˆβ–“.β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ...β–ˆβ–ˆβ–ˆβ–„....β–ˆ. -β–“β–ˆβ–ˆ...β–’.β–’β–’.β–ˆ.β–ˆ.β–’β–‘......β–’β–ˆβ–ˆβ–ˆβ–ˆβ–„.....β–ˆβ–ˆ.β–€β–ˆ...β–ˆ.β–“β–ˆβ–ˆβ–’β–“β–ˆβ–ˆβ–’β–€β–ˆβ–€.β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–„...β–“..β–ˆβ–ˆβ–’.β–“β–’β–“β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’..β–ˆβ–ˆβ–’.β–ˆβ–ˆ.β–€β–ˆ...β–ˆ. -β–’β–ˆβ–ˆβ–ˆβ–ˆ.β–‘.β–‘β–‘..β–ˆ...β–‘......β–’β–ˆβ–ˆ..β–€β–ˆβ–„..β–“β–ˆβ–ˆ..β–€β–ˆ.β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–“β–ˆβ–ˆ....β–“β–ˆβ–ˆβ–‘β–’β–ˆβ–ˆ..β–€β–ˆβ–„.β–’.β–“β–ˆβ–ˆβ–‘.β–’β–‘β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–‘..β–ˆβ–ˆβ–’β–“β–ˆβ–ˆ..β–€β–ˆ.β–ˆβ–ˆβ–’ -β–‘β–“β–ˆβ–’..β–‘..β–‘.β–ˆ.β–ˆ.β–’.......β–‘β–ˆβ–ˆβ–„β–„β–„β–„β–ˆβ–ˆ.β–“β–ˆβ–ˆβ–’..β–β–Œβ–ˆβ–ˆβ–’β–‘β–ˆβ–ˆβ–‘β–’β–ˆβ–ˆ....β–’β–ˆβ–ˆ.β–‘β–ˆβ–ˆβ–„β–„β–„β–„β–ˆβ–ˆβ–‘.β–“β–ˆβ–ˆβ–“.β–‘.β–‘β–ˆβ–ˆβ–‘β–’β–ˆβ–ˆ...β–ˆβ–ˆβ–‘β–“β–ˆβ–ˆβ–’..β–β–Œβ–ˆβ–ˆβ–’ -β–‘β–’β–ˆβ–‘....β–’β–ˆβ–ˆβ–’.β–’β–ˆβ–ˆβ–’.......β–“β–ˆ...β–“β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–‘...β–“β–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–‘β–’β–ˆβ–ˆβ–’...β–‘β–ˆβ–ˆβ–’.β–“β–ˆ...β–“β–ˆβ–ˆβ–’.β–’β–ˆβ–ˆβ–’.β–‘.β–‘β–ˆβ–ˆβ–‘β–‘.β–ˆβ–ˆβ–ˆβ–ˆβ–“β–’β–‘β–’β–ˆβ–ˆβ–‘...β–“β–ˆβ–ˆβ–‘ -.β–’.β–‘....β–’β–’.β–‘.β–‘β–“.β–‘.......β–’β–’...β–“β–’β–ˆβ–‘β–‘.β–’β–‘...β–’.β–’.β–‘β–“..β–‘.β–’β–‘...β–‘..β–‘.β–’β–’...β–“β–’β–ˆβ–‘.β–’.β–‘β–‘...β–‘β–“..β–‘.β–’β–‘β–’β–‘β–’β–‘.β–‘.β–’β–‘...β–’.β–’. -.β–‘......β–‘β–‘...β–‘β–’.β–‘........β–’...β–’β–’.β–‘β–‘.β–‘β–‘...β–‘.β–’β–‘.β–’.β–‘β–‘..β–‘......β–‘..β–’...β–’β–’.β–‘...β–‘.....β–’.β–‘..β–‘.β–’.β–’β–‘.β–‘.β–‘β–‘...β–‘.β–’β–‘ -.β–‘.β–‘.....β–‘....β–‘..........β–‘...β–’......β–‘...β–‘.β–‘..β–’.β–‘β–‘......β–‘.....β–‘...β–’....β–‘.......β–’.β–‘β–‘.β–‘.β–‘.β–’.....β–‘...β–‘.β–‘. -.........β–‘....β–‘..............β–‘..β–‘.........β–‘..β–‘.........β–‘.........β–‘..β–‘.........β–‘......β–‘.β–‘...........β–‘. -..................................................................................................... - -== Effects Animation -Because of a new veejay functionality, the fx parameters anim "workflow" (using reloaded) have changed: -. From _Fx List_ panel, Add an fx you like. -. From _Fx Chain_ panel, toggle _keyframing for this fx chain entry_ -. From _Fx Anim_ panel, choose a parameter and toogle _keyframe animation for this param_ -. From _Fx Anim_ panel, draw the curve and hit [OK] _apply this keyframe_ - -.Taddam the fx' param is animated ! - -=== Now, what else you can do ? -.Play with the automation -* toggle the full fx automation hitting _keyframing for this fx chain entry_ button (VIMS 145 / keybinding TBD) -* toggle by parameters hitting accordingly the _keyframe animation for this param_ button (VIMS 142 / keybinding TBD) - -.Clear the automation -* full automation, using the _reset_ button, from the _Fx Anim_ panel (VIMS ? / keybinding TBD), -* by parameters the _clear selected param_, from the _Fx Anim_ panel (VIMS ? / keybinding TBD). diff --git a/veejay-current/veejay-client/gveejay-paths.sh.in b/veejay-current/veejay-client/gveejay-paths.sh.in deleted file mode 100644 index 7fcc6a1b..00000000 --- a/veejay-current/veejay-client/gveejay-paths.sh.in +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -e -reloaded_datadir="@reloaded_datadir@" - -cat << EOF -/* - This file has been automatically generated. Do not edit - -*/ -#ifndef GVEEJAY_PATHS_H -#define GVEEJAY_PATHS_H - -#define RELOADED_DATADIR "$reloaded_datadir" - -#endif /* GVEEJAY_PATHS_H */ -EOF - diff --git a/veejay-current/veejay-client/gveejay.spec.in b/veejay-current/veejay-client/gveejay.spec.in deleted file mode 100644 index 268565bf..00000000 --- a/veejay-current/veejay-client/gveejay.spec.in +++ /dev/null @@ -1,115 +0,0 @@ -# norootforbuild -# neededforbuild update-desktop-files gtk2-devel-packages glib2 gtk2 libglade3 gtk2-devel glib2-devel libglade-devel libxml2-devel pkgconfig - -%define name reloaded -%define version 1.5.2 -%define release reloaded -%define prefix /usr - -%define builddir $RPM_BUILD_DIR/%{name}-%{version} - -Summary: Video Mixing/Editing Instrument -Name: %{name} -Version: %{version} -Release: %{release} -Prefix: %{prefix} -Copyright: GNU GPL -URL: http://veejayq.net -Packager: nelburg -Group: Productivity/Multimedia/Video/Editors and Convertors -Source: %{name}-%{version}.tar.bz2 -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Prereq: /sbin/ldconfig -#Requires: libxml2 >= 2.5.4 -#Requires: gtk2 -#Requires: glib2 -#Requires: libglade2 -#Requires: libxml2 >= 2.5.4 -#Requires: cairo -#BuildRequires: pkgconfig -#BuildRequires: gtk2-devel -#BuildRequires: glib2-devel -#BuildRequires: libglade2-devel - -%description -Veejay is a visual instrument and realtime video sampler. -It allows you to 'play' the video like you would play a Piano and it allows -you to record the resulting video directly to disk for immediate playback (video sampling). - -GVeejayReloaded is the graphical interface for Veejay. - -Author: Niels Elburg - -Requires: gtk2 -Requires: glib2 -Requires: libglade2 -Requires: libxml2 >= 2.5.4 - -%prep -%setup -q -n %{name}-%{version} - -./autogen.sh -%{?suse_update_config:%{suse_update_config -f}} - -CFLAGS="$RPM_OPT_FLAGS" \ -CXXFLAGS="$RPM_OPT_FLAGS" \ -./configure \ - --with-arch-target=generic \ - --prefix=%{prefix} \ - --mandir=%{_mandir} - -%build -# Setup for parallel builds -numprocs=`egrep -c ^cpu[0-9]+ /proc/stat || :` -if [ "$numprocs" = "0" ]; then - numprocs=1 -fi -make -j$numprocs - -%install -[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot} - -make install-strip \ - DESTDIR=%{buildroot} - -# icon and menu-entry -mkdir -p %{buildroot}%{_datadir}/pixmaps -install -m 644 share/%{name}-logo.png %{buildroot}%{_datadir}/pixmaps/gveejay.png -cat > gveejay.desktop << EOF -[Desktop Entry] -Comment=Video Mixing/Editing Instrument -Exec=reloaded -GenericName= -Icon=%{name} -MimeType= -Name=Reloaded -Path= -StartupNotify=true -Terminal=false -Type=Application -EOF -%suse_update_desktop_file -i reloaded AudioVideo Player - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%clean -[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot} - -%files -%defattr(-, root, root) -%doc AUTHORS BUGS COPYING ChangeLog INSTALL README* -%doc doc -%{_bindir}/%{name} -%{_datadir}/%{name}/*.png -# reloaded -%{_bindir}/src -%{_datadir}/%{name}/gveejay-reloaded-2.glade -%{_datadir}/%{name}/gveejay.rc -%{_datadir}/pixmaps/gveejay.png -%{_datadir}/applications/gveejay.desktop - -%changelog -n veejay -Dec 20, 2009. Updated rpm spec for reloaded 1.5.2 -Mar 21, 2007. Initial rpm spec for gveejayreloaded diff --git a/veejay-current/veejay-client/menu/gveejayreloaded.desktop b/veejay-current/veejay-client/menu/gveejayreloaded.desktop deleted file mode 100644 index 299dc2b3..00000000 --- a/veejay-current/veejay-client/menu/gveejayreloaded.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=GVeejayReloaded -Comment=Graphical Veejay Client -Exec=gveejayreloaded -Terminal=false -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/veejay-client/menu/veejay1.desktop b/veejay-current/veejay-client/menu/veejay1.desktop deleted file mode 100644 index 31bce654..00000000 --- a/veejay-current/veejay-client/menu/veejay1.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=Veejay (720x576 with audio) -Comment=Start new veejay project, 720x576 with default audio settings -Exec=veejay -v -W720 -H576 -a1 -d -Terminal=true -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/veejay-client/menu/veejay2.desktop b/veejay-current/veejay-client/menu/veejay2.desktop deleted file mode 100644 index 8f9c8ff1..00000000 --- a/veejay-current/veejay-client/menu/veejay2.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=Veejay (720x576 without audio) -Comment=Start new Veejay project, 720x576 without audio -Exec=veejay -v -W720 -H576 -a0 -d -Terminal=true -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/veejay-client/menu/veejay3.desktop b/veejay-current/veejay-client/menu/veejay3.desktop deleted file mode 100644 index c0e53f5e..00000000 --- a/veejay-current/veejay-client/menu/veejay3.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=Veejay (640x480, /dev/video0) -Comment=Start veejay server with capture device #0 in 640x480 -Exec=veejay -A1 -v -W640 -H480 -Terminal=true -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/veejay-client/menu/veejay4.desktop b/veejay-current/veejay-client/menu/veejay4.desktop deleted file mode 100644 index 53e6a3e6..00000000 --- a/veejay-current/veejay-client/menu/veejay4.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=Veejay (720x576, /dev/video0) -Comment=Start veejay server from capture device #0 in 720x576 -Exec=veejay -A1 -v -W720 -H576 -Terminal=true -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/veejay-client/menu/veejay5.desktop b/veejay-current/veejay-client/menu/veejay5.desktop deleted file mode 100644 index 5371c744..00000000 --- a/veejay-current/veejay-client/menu/veejay5.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Name=Veejay (352x288, /dev/video0) -Comment=Start veejay server with capture device #0 in 352x288 -Exec=veejay -A1 -v -W352 -H288 -Terminal=true -Type=Application -Icon=veejay-icon.png -Categories=AudioVideoEditing;AudioVideo; diff --git a/veejay-current/reloaded-gtk3/.gitignore b/veejay-current/veejay-client/reloaded-gtk3/.gitignore similarity index 100% rename from veejay-current/reloaded-gtk3/.gitignore rename to veejay-current/veejay-client/reloaded-gtk3/.gitignore diff --git a/veejay-current/reloaded-gtk3/AUTHORS b/veejay-current/veejay-client/reloaded-gtk3/AUTHORS similarity index 100% rename from veejay-current/reloaded-gtk3/AUTHORS rename to veejay-current/veejay-client/reloaded-gtk3/AUTHORS diff --git a/veejay-current/reloaded-gtk3/COPYING b/veejay-current/veejay-client/reloaded-gtk3/COPYING similarity index 100% rename from veejay-current/reloaded-gtk3/COPYING rename to veejay-current/veejay-client/reloaded-gtk3/COPYING diff --git a/veejay-current/reloaded-gtk3/ChangeLog b/veejay-current/veejay-client/reloaded-gtk3/ChangeLog similarity index 100% rename from veejay-current/reloaded-gtk3/ChangeLog rename to veejay-current/veejay-client/reloaded-gtk3/ChangeLog diff --git a/veejay-current/reloaded-gtk3/Makefile.am b/veejay-current/veejay-client/reloaded-gtk3/Makefile.am similarity index 100% rename from veejay-current/reloaded-gtk3/Makefile.am rename to veejay-current/veejay-client/reloaded-gtk3/Makefile.am diff --git a/veejay-current/reloaded-gtk3/NEWS b/veejay-current/veejay-client/reloaded-gtk3/NEWS similarity index 100% rename from veejay-current/reloaded-gtk3/NEWS rename to veejay-current/veejay-client/reloaded-gtk3/NEWS diff --git a/veejay-current/reloaded-gtk3/PKGBUILD b/veejay-current/veejay-client/reloaded-gtk3/PKGBUILD similarity index 100% rename from veejay-current/reloaded-gtk3/PKGBUILD rename to veejay-current/veejay-client/reloaded-gtk3/PKGBUILD diff --git a/veejay-current/reloaded-gtk3/README b/veejay-current/veejay-client/reloaded-gtk3/README similarity index 100% rename from veejay-current/reloaded-gtk3/README rename to veejay-current/veejay-client/reloaded-gtk3/README diff --git a/veejay-current/reloaded-gtk3/autogen.sh b/veejay-current/veejay-client/reloaded-gtk3/autogen.sh similarity index 100% rename from veejay-current/reloaded-gtk3/autogen.sh rename to veejay-current/veejay-client/reloaded-gtk3/autogen.sh diff --git a/veejay-current/reloaded-gtk3/configure.ac b/veejay-current/veejay-client/reloaded-gtk3/configure.ac similarity index 97% rename from veejay-current/reloaded-gtk3/configure.ac rename to veejay-current/veejay-client/reloaded-gtk3/configure.ac index 0ee897e3..cadba383 100644 --- a/veejay-current/reloaded-gtk3/configure.ac +++ b/veejay-current/veejay-client/reloaded-gtk3/configure.ac @@ -186,19 +186,19 @@ if test "$ac_cv_lib_dl_dlopen" = "yes"; then have_dl_dlopen=true fi -dnl Check for Veejay -have_veejay=false -PKG_CHECK_MODULES( VEEJAY, [veejay >= 1.5.60 ], +dnl Check for Veejay Core +have_veejaycore=false +PKG_CHECK_MODULES( VEEJAYCORE, [veejaycore >= 1.5.65 ], [ - AC_SUBST(VEEJAY_CFLAGS) - AC_SUBST(VEEJAY_LIBS) - have_veejay=true - AC_DEFINE(HAVE_VEEJAY,1, [Veejay 1.5.60 installed])] + AC_SUBST(VEEJAYCORE_CFLAGS) + AC_SUBST(VEEJAYCORE_LIBS) + have_veejaycore=true + AC_DEFINE(HAVE_VEEJAYCORE,1, [Veejay Core 1.5.65 installed])] , - [have_veejay=false]) + [have_veejaycore=false]) -if test x$have_veejay != xtrue ; then - AC_MSG_ERROR([Cannot find veejay 1.5.60 or later]) +if test x$have_veejaycore != xtrue ; then + AC_MSG_ERROR([Cannot find Veejay Core 1.5.65 or later]) fi have_sdl=false @@ -233,7 +233,7 @@ fi dnl Look for X AC_PATH_XTRA AM_CONDITIONAL(HAVE_X, test x$have_x = xyes) - +AM_CONDITIONAL(HAVE_ALSA, test x$have_alsa = xyes) debugCFLAGS="" debug_or_profiling="" @@ -754,7 +754,7 @@ AC_MSG_NOTICE([ Good luck! You can be the first! ]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Required dependencies:]) -AC_MSG_NOTICE([ - Veejay 1.5.60 : ${have_veejay}]) +AC_MSG_NOTICE([ - Veejay Core 1.5.65 : ${have_veejaycore}]) AC_MSG_NOTICE([ - POSIX Threads (pthread) : ${have_pthread}]) AC_MSG_NOTICE([ - Gtk3 support (gui) : ${have_gtk3}]) AC_MSG_NOTICE([ - Alsa support (midi sequencer) : ${have_alsa}]) diff --git a/veejay-current/reloaded-gtk3/cpuinfo.sh b/veejay-current/veejay-client/reloaded-gtk3/cpuinfo.sh similarity index 100% rename from veejay-current/reloaded-gtk3/cpuinfo.sh rename to veejay-current/veejay-client/reloaded-gtk3/cpuinfo.sh diff --git a/veejay-current/reloaded-gtk3/debian/README b/veejay-current/veejay-client/reloaded-gtk3/debian/README similarity index 100% rename from veejay-current/reloaded-gtk3/debian/README rename to veejay-current/veejay-client/reloaded-gtk3/debian/README diff --git a/veejay-current/reloaded-gtk3/debian/changelog b/veejay-current/veejay-client/reloaded-gtk3/debian/changelog similarity index 100% rename from veejay-current/reloaded-gtk3/debian/changelog rename to veejay-current/veejay-client/reloaded-gtk3/debian/changelog diff --git a/veejay-current/reloaded-gtk3/debian/compat b/veejay-current/veejay-client/reloaded-gtk3/debian/compat similarity index 100% rename from veejay-current/reloaded-gtk3/debian/compat rename to veejay-current/veejay-client/reloaded-gtk3/debian/compat diff --git a/veejay-current/reloaded-gtk3/debian/control b/veejay-current/veejay-client/reloaded-gtk3/debian/control similarity index 100% rename from veejay-current/reloaded-gtk3/debian/control rename to veejay-current/veejay-client/reloaded-gtk3/debian/control diff --git a/veejay-current/reloaded-gtk3/debian/copyright b/veejay-current/veejay-client/reloaded-gtk3/debian/copyright similarity index 100% rename from veejay-current/reloaded-gtk3/debian/copyright rename to veejay-current/veejay-client/reloaded-gtk3/debian/copyright diff --git a/veejay-current/reloaded-gtk3/debian/docs b/veejay-current/veejay-client/reloaded-gtk3/debian/docs similarity index 100% rename from veejay-current/reloaded-gtk3/debian/docs rename to veejay-current/veejay-client/reloaded-gtk3/debian/docs diff --git a/veejay-current/reloaded-gtk3/debian/rules b/veejay-current/veejay-client/reloaded-gtk3/debian/rules similarity index 100% rename from veejay-current/reloaded-gtk3/debian/rules rename to veejay-current/veejay-client/reloaded-gtk3/debian/rules diff --git a/veejay-current/reloaded-gtk3/debian/source/format b/veejay-current/veejay-client/reloaded-gtk3/debian/source/format similarity index 100% rename from veejay-current/reloaded-gtk3/debian/source/format rename to veejay-current/veejay-client/reloaded-gtk3/debian/source/format diff --git a/veejay-current/reloaded-gtk3/doc/FXAnim.txt b/veejay-current/veejay-client/reloaded-gtk3/doc/FXAnim.txt similarity index 100% rename from veejay-current/reloaded-gtk3/doc/FXAnim.txt rename to veejay-current/veejay-client/reloaded-gtk3/doc/FXAnim.txt diff --git a/veejay-current/reloaded-gtk3/gveejay-paths.sh.in b/veejay-current/veejay-client/reloaded-gtk3/gveejay-paths.sh.in similarity index 100% rename from veejay-current/reloaded-gtk3/gveejay-paths.sh.in rename to veejay-current/veejay-client/reloaded-gtk3/gveejay-paths.sh.in diff --git a/veejay-current/reloaded-gtk3/gveejay.spec.in b/veejay-current/veejay-client/reloaded-gtk3/gveejay.spec.in similarity index 100% rename from veejay-current/reloaded-gtk3/gveejay.spec.in rename to veejay-current/veejay-client/reloaded-gtk3/gveejay.spec.in diff --git a/veejay-current/reloaded-gtk3/menu/gveejayreloaded.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/gveejayreloaded.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/gveejayreloaded.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/gveejayreloaded.desktop diff --git a/veejay-current/reloaded-gtk3/menu/veejay1.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/veejay1.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/veejay1.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/veejay1.desktop diff --git a/veejay-current/reloaded-gtk3/menu/veejay2.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/veejay2.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/veejay2.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/veejay2.desktop diff --git a/veejay-current/reloaded-gtk3/menu/veejay3.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/veejay3.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/veejay3.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/veejay3.desktop diff --git a/veejay-current/reloaded-gtk3/menu/veejay4.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/veejay4.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/veejay4.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/veejay4.desktop diff --git a/veejay-current/reloaded-gtk3/menu/veejay5.desktop b/veejay-current/veejay-client/reloaded-gtk3/menu/veejay5.desktop similarity index 100% rename from veejay-current/reloaded-gtk3/menu/veejay5.desktop rename to veejay-current/veejay-client/reloaded-gtk3/menu/veejay5.desktop diff --git a/veejay-current/reloaded-gtk3/share/bg.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg.png diff --git a/veejay-current/reloaded-gtk3/share/bg_black.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_black.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_black.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_black.png diff --git a/veejay-current/reloaded-gtk3/share/bg_blue.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_blue.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_blue.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_blue.png diff --git a/veejay-current/reloaded-gtk3/share/bg_green.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_green.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_green.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_green.png diff --git a/veejay-current/reloaded-gtk3/share/bg_grey.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_grey.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_grey.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_grey.png diff --git a/veejay-current/reloaded-gtk3/share/bg_red.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_red.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_red.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_red.png diff --git a/veejay-current/reloaded-gtk3/share/bg_yellow.png b/veejay-current/veejay-client/reloaded-gtk3/share/bg_yellow.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/bg_yellow.png rename to veejay-current/veejay-client/reloaded-gtk3/share/bg_yellow.png diff --git a/veejay-current/reloaded-gtk3/share/blackwhite.rc b/veejay-current/veejay-client/reloaded-gtk3/share/blackwhite.rc similarity index 100% rename from veejay-current/reloaded-gtk3/share/blackwhite.rc rename to veejay-current/veejay-client/reloaded-gtk3/share/blackwhite.rc diff --git a/veejay-current/reloaded-gtk3/share/button_back.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_back.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_back.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_back.png diff --git a/veejay-current/reloaded-gtk3/share/button_bounce.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_bounce.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_bounce.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_bounce.png diff --git a/veejay-current/reloaded-gtk3/share/button_dec.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_dec.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_dec.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_dec.png diff --git a/veejay-current/reloaded-gtk3/share/button_down.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_down.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_down.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_down.png diff --git a/veejay-current/reloaded-gtk3/share/button_fbw.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_fbw.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_fbw.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_fbw.png diff --git a/veejay-current/reloaded-gtk3/share/button_ffw.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_ffw.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_ffw.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_ffw.png diff --git a/veejay-current/reloaded-gtk3/share/button_gotoend.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_gotoend.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_gotoend.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_gotoend.png diff --git a/veejay-current/reloaded-gtk3/share/button_gotostart.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_gotostart.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_gotostart.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_gotostart.png diff --git a/veejay-current/reloaded-gtk3/share/button_inc.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_inc.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_inc.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_inc.png diff --git a/veejay-current/reloaded-gtk3/share/button_loop.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_loop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_loop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_loop.png diff --git a/veejay-current/reloaded-gtk3/share/button_looponce.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_looponce.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_looponce.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_looponce.png diff --git a/veejay-current/reloaded-gtk3/share/button_mini_decrement.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_mini_decrement.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_mini_decrement.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_mini_decrement.png diff --git a/veejay-current/reloaded-gtk3/share/button_mini_increment.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_mini_increment.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_mini_increment.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_mini_increment.png diff --git a/veejay-current/reloaded-gtk3/share/button_next.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_next.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_next.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_next.png diff --git a/veejay-current/reloaded-gtk3/share/button_pause.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_pause.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_pause.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_pause.png diff --git a/veejay-current/reloaded-gtk3/share/button_play.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_play.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_play.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_play.png diff --git a/veejay-current/reloaded-gtk3/share/button_playmode.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_playmode.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_playmode.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_playmode.png diff --git a/veejay-current/reloaded-gtk3/share/button_prev.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_prev.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_prev.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_prev.png diff --git a/veejay-current/reloaded-gtk3/share/button_rand.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_rand.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_rand.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_rand.png diff --git a/veejay-current/reloaded-gtk3/share/button_reverse.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_reverse.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_reverse.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_reverse.png diff --git a/veejay-current/reloaded-gtk3/share/button_right.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_right.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_right.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_right.png diff --git a/veejay-current/reloaded-gtk3/share/button_skip.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_skip.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_skip.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_skip.png diff --git a/veejay-current/reloaded-gtk3/share/button_skull.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_skull.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_skull.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_skull.png diff --git a/veejay-current/reloaded-gtk3/share/button_text.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_text.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_text.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_text.png diff --git a/veejay-current/reloaded-gtk3/share/button_up.png b/veejay-current/veejay-client/reloaded-gtk3/share/button_up.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/button_up.png rename to veejay-current/veejay-client/reloaded-gtk3/share/button_up.png diff --git a/veejay-current/reloaded-gtk3/share/fx_entry_off.png b/veejay-current/veejay-client/reloaded-gtk3/share/fx_entry_off.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/fx_entry_off.png rename to veejay-current/veejay-client/reloaded-gtk3/share/fx_entry_off.png diff --git a/veejay-current/reloaded-gtk3/share/fx_entry_on.png b/veejay-current/veejay-client/reloaded-gtk3/share/fx_entry_on.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/fx_entry_on.png rename to veejay-current/veejay-client/reloaded-gtk3/share/fx_entry_on.png diff --git a/veejay-current/reloaded-gtk3/share/gveejay-default.rc b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay-default.rc similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay-default.rc rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay-default.rc diff --git a/veejay-current/reloaded-gtk3/share/gveejay.glade b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.glade similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.glade rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.glade diff --git a/veejay-current/reloaded-gtk3/share/gveejay.rc b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.rc similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.rc rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.rc diff --git a/veejay-current/reloaded-gtk3/share/gveejay.reloaded.css b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.css similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.reloaded.css rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.css diff --git a/veejay-current/reloaded-gtk3/share/gveejay.reloaded.djay.css b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.djay.css similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.reloaded.djay.css rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.djay.css diff --git a/veejay-current/reloaded-gtk3/share/gveejay.reloaded.glade b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.glade similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.reloaded.glade rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.glade diff --git a/veejay-current/reloaded-gtk3/share/gveejay.reloaded.gladep b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.gladep similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.reloaded.gladep rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.gladep diff --git a/veejay-current/reloaded-gtk3/share/gveejay.reloaded.xml b/veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.xml similarity index 100% rename from veejay-current/reloaded-gtk3/share/gveejay.reloaded.xml rename to veejay-current/veejay-client/reloaded-gtk3/share/gveejay.reloaded.xml diff --git a/veejay-current/reloaded-gtk3/share/high_contrast.rc b/veejay-current/veejay-client/reloaded-gtk3/share/high_contrast.rc similarity index 100% rename from veejay-current/reloaded-gtk3/share/high_contrast.rc rename to veejay-current/veejay-client/reloaded-gtk3/share/high_contrast.rc diff --git a/veejay-current/reloaded-gtk3/share/icon_255.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_255.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_255.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_255.png diff --git a/veejay-current/reloaded-gtk3/share/icon_alpha.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_alpha.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_alpha.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_alpha.png diff --git a/veejay-current/reloaded-gtk3/share/icon_apply.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_apply.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_apply.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_apply.png diff --git a/veejay-current/reloaded-gtk3/share/icon_berserk.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_berserk.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_berserk.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_berserk.png diff --git a/veejay-current/reloaded-gtk3/share/icon_bezerk.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_bezerk.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_bezerk.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_bezerk.png diff --git a/veejay-current/reloaded-gtk3/share/icon_bounce.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_bounce.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_bounce.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_bounce.png diff --git a/veejay-current/reloaded-gtk3/share/icon_bug.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_bug.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_bug.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_bug.png diff --git a/veejay-current/reloaded-gtk3/share/icon_bundle.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_bundle.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_bundle.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_bundle.png diff --git a/veejay-current/reloaded-gtk3/share/icon_cache.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_cache.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_cache.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_cache.png diff --git a/veejay-current/reloaded-gtk3/share/icon_clear.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_clear.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_clear.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_clear.png diff --git a/veejay-current/reloaded-gtk3/share/icon_clearall.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_clearall.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_clearall.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_clearall.png diff --git a/veejay-current/reloaded-gtk3/share/icon_color.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_color.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_color.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_color.png diff --git a/veejay-current/reloaded-gtk3/share/icon_connect.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_connect.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_connect.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_connect.png diff --git a/veejay-current/reloaded-gtk3/share/icon_copy.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_copy.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_copy.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_copy.png diff --git a/veejay-current/reloaded-gtk3/share/icon_crop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_crop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_crop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_crop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_cut.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_cut.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_cut.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_cut.png diff --git a/veejay-current/reloaded-gtk3/share/icon_disconnect.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_disconnect.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_disconnect.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_disconnect.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fadein.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fadein.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fadein.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fadein.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fadeout.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fadeout.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fadeout.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fadeout.png diff --git a/veejay-current/reloaded-gtk3/share/icon_follow.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_follow.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_follow.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_follow.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fxm1.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm1.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fxm1.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm1.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fxm2.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm2.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fxm2.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm2.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fxm3.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm3.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fxm3.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm3.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fxm4.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm4.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fxm4.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fxm4.png diff --git a/veejay-current/reloaded-gtk3/share/icon_fxmnone.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_fxmnone.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_fxmnone.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_fxmnone.png diff --git a/veejay-current/reloaded-gtk3/share/icon_generator.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_generator.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_generator.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_generator.png diff --git a/veejay-current/reloaded-gtk3/share/icon_jack.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_jack.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_jack.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_jack.png diff --git a/veejay-current/reloaded-gtk3/share/icon_keybind.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_keybind.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_keybind.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_keybind.png diff --git a/veejay-current/reloaded-gtk3/share/icon_keydetach.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_keydetach.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_keydetach.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_keydetach.png diff --git a/veejay-current/reloaded-gtk3/share/icon_keyframe.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_keyframe.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_keyframe.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_keyframe.png diff --git a/veejay-current/reloaded-gtk3/share/icon_launch.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_launch.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_launch.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_launch.png diff --git a/veejay-current/reloaded-gtk3/share/icon_loop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_loop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_loop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_loop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_looponce.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_looponce.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_looponce.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_looponce.png diff --git a/veejay-current/reloaded-gtk3/share/icon_looponcenop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_looponcenop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_looponcenop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_looponcenop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_macroclear.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_macroclear.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_macroclear.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_macroclear.png diff --git a/veejay-current/reloaded-gtk3/share/icon_macropause.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_macropause.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_macropause.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_macropause.png diff --git a/veejay-current/reloaded-gtk3/share/icon_macroplay.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_macroplay.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_macroplay.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_macroplay.png diff --git a/veejay-current/reloaded-gtk3/share/icon_macrorec.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_macrorec.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_macrorec.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_macrorec.png diff --git a/veejay-current/reloaded-gtk3/share/icon_mask.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_mask.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_mask.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_mask.png diff --git a/veejay-current/reloaded-gtk3/share/icon_minus.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_minus.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_minus.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_minus.png diff --git a/veejay-current/reloaded-gtk3/share/icon_new.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_new.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_new.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_new.png diff --git a/veejay-current/reloaded-gtk3/share/icon_noloop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_noloop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_noloop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_noloop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_open.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_open.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_open.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_open.png diff --git a/veejay-current/reloaded-gtk3/share/icon_openlist.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_openlist.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_openlist.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_openlist.png diff --git a/veejay-current/reloaded-gtk3/share/icon_openstream.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_openstream.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_openstream.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_openstream.png diff --git a/veejay-current/reloaded-gtk3/share/icon_osd.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_osd.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_osd.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_osd.png diff --git a/veejay-current/reloaded-gtk3/share/icon_paste.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_paste.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_paste.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_paste.png diff --git a/veejay-current/reloaded-gtk3/share/icon_plarge.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_plarge.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_plarge.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_plarge.png diff --git a/veejay-current/reloaded-gtk3/share/icon_playmode.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_playmode.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_playmode.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_playmode.png diff --git a/veejay-current/reloaded-gtk3/share/icon_plus.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_plus.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_plus.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_plus.png diff --git a/veejay-current/reloaded-gtk3/share/icon_psmall.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_psmall.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_psmall.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_psmall.png diff --git a/veejay-current/reloaded-gtk3/share/icon_question.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_question.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_question.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_question.png diff --git a/veejay-current/reloaded-gtk3/share/icon_record.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_record.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_record.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_record.png diff --git a/veejay-current/reloaded-gtk3/share/icon_recordstop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_recordstop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_recordstop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_recordstop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_recstop.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_recstop.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_recstop.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_recstop.png diff --git a/veejay-current/reloaded-gtk3/share/icon_refresh.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_refresh.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_refresh.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_refresh.png diff --git a/veejay-current/reloaded-gtk3/share/icon_render.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_render.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_render.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_render.png diff --git a/veejay-current/reloaded-gtk3/share/icon_save.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_save.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_save.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_save.png diff --git a/veejay-current/reloaded-gtk3/share/icon_saveas.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_saveas.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_saveas.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_saveas.png diff --git a/veejay-current/reloaded-gtk3/share/icon_screenshot.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_screenshot.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_screenshot.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_screenshot.png diff --git a/veejay-current/reloaded-gtk3/share/icon_send.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_send.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_send.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_send.png diff --git a/veejay-current/reloaded-gtk3/share/icon_skull.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_skull.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_skull.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_skull.png diff --git a/veejay-current/reloaded-gtk3/share/icon_stream.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_stream.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_stream.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_stream.png diff --git a/veejay-current/reloaded-gtk3/share/icon_trash.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_trash.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_trash.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_trash.png diff --git a/veejay-current/reloaded-gtk3/share/icon_video.png b/veejay-current/veejay-client/reloaded-gtk3/share/icon_video.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/icon_video.png rename to veejay-current/veejay-client/reloaded-gtk3/share/icon_video.png diff --git a/veejay-current/reloaded-gtk3/share/knob.png b/veejay-current/veejay-client/reloaded-gtk3/share/knob.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/knob.png rename to veejay-current/veejay-client/reloaded-gtk3/share/knob.png diff --git a/veejay-current/reloaded-gtk3/share/multicast.ico b/veejay-current/veejay-client/reloaded-gtk3/share/multicast.ico similarity index 100% rename from veejay-current/reloaded-gtk3/share/multicast.ico rename to veejay-current/veejay-client/reloaded-gtk3/share/multicast.ico diff --git a/veejay-current/reloaded-gtk3/share/reloaded_classic.glade b/veejay-current/veejay-client/reloaded-gtk3/share/reloaded_classic.glade similarity index 100% rename from veejay-current/reloaded-gtk3/share/reloaded_classic.glade rename to veejay-current/veejay-client/reloaded-gtk3/share/reloaded_classic.glade diff --git a/veejay-current/reloaded-gtk3/share/smooth.rc b/veejay-current/veejay-client/reloaded-gtk3/share/smooth.rc similarity index 100% rename from veejay-current/reloaded-gtk3/share/smooth.rc rename to veejay-current/veejay-client/reloaded-gtk3/share/smooth.rc diff --git a/veejay-current/reloaded-gtk3/share/sync.png b/veejay-current/veejay-client/reloaded-gtk3/share/sync.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/sync.png rename to veejay-current/veejay-client/reloaded-gtk3/share/sync.png diff --git a/veejay-current/reloaded-gtk3/share/veejay-icon.png b/veejay-current/veejay-client/reloaded-gtk3/share/veejay-icon.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/veejay-icon.png rename to veejay-current/veejay-client/reloaded-gtk3/share/veejay-icon.png diff --git a/veejay-current/reloaded-gtk3/share/veejay-logo-small.png b/veejay-current/veejay-client/reloaded-gtk3/share/veejay-logo-small.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/veejay-logo-small.png rename to veejay-current/veejay-client/reloaded-gtk3/share/veejay-logo-small.png diff --git a/veejay-current/reloaded-gtk3/share/veejay-logo.png b/veejay-current/veejay-client/reloaded-gtk3/share/veejay-logo.png similarity index 100% rename from veejay-current/reloaded-gtk3/share/veejay-logo.png rename to veejay-current/veejay-client/reloaded-gtk3/share/veejay-logo.png diff --git a/veejay-current/reloaded-gtk3/src/Makefile.am b/veejay-current/veejay-client/reloaded-gtk3/src/Makefile.am similarity index 86% rename from veejay-current/reloaded-gtk3/src/Makefile.am rename to veejay-current/veejay-client/reloaded-gtk3/src/Makefile.am index 024b724f..4b2f834d 100644 --- a/veejay-current/reloaded-gtk3/src/Makefile.am +++ b/veejay-current/veejay-client/reloaded-gtk3/src/Makefile.am @@ -2,19 +2,16 @@ MAINTAINERCLEANFILES = Makefile.in AM_CFLAGS=$(OP_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src \ - $(VEEJAY_CFLAGS) $(GTK_CFLAGS) \ + $(VEEJAYCORE_CFLAGS) $(GTK_CFLAGS) \ $(FFMPEG_CFLAGS) \ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ -DRELOADED_DATADIR=\""$(reloaded_datadir)"\" RELOADED_BIN=reloaded reloaded_SOURCES = cellrendererspin.c gtktimeselection.c curve.c utils.c tracksources.c gveejay.c keyboard.c sequence.c multitrack.c vj-api.c mjpeg_logging.c mpegconsts.c mpegtimecode.c yuv4mpeg.c yuv4mpeg_ratio.c gtk3curve.c ${reloaded_headers} - -if HAVE_ALSA reloaded_SOURCES += vj-midi.c -endif bin_PROGRAMS = $(RELOADED_BIN) -reloaded_LDFLAGS = $(VEEJAY_LIBS) $(GTK_LIBS) \ +reloaded_LDFLAGS = $(VEEJAYCORE_LIBS) $(GTK_LIBS) \ $(ALSA_LIBS) $(LIBM_LIBS) $(DEBUGLIBS) -export-dynamic -lgmodule-2.0 -lgthread-2.0 diff --git a/veejay-current/reloaded-gtk3/src/callback.c b/veejay-current/veejay-client/reloaded-gtk3/src/callback.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/callback.c rename to veejay-current/veejay-client/reloaded-gtk3/src/callback.c index 32b31008..e33d8461 100644 --- a/veejay-current/reloaded-gtk3/src/callback.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/callback.c @@ -18,9 +18,9 @@ */ #include -#include +#include #include -#include +#include #include "callback.h" static int config_file_status = 0; @@ -2710,7 +2710,7 @@ void on_about_activate(GtkWidget *widget, gpointer user_data) void on_report_a_bug_activate(GtkWidget *w, gpointer user_data ) { - reportbug(); + reportbug(); } void on_donate_activate( GtkWidget *w, gpointer user_data ) { diff --git a/veejay-current/reloaded-gtk3/src/callback.h b/veejay-current/veejay-client/reloaded-gtk3/src/callback.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/callback.h rename to veejay-current/veejay-client/reloaded-gtk3/src/callback.h diff --git a/veejay-current/reloaded-gtk3/src/cellrendererspin.c b/veejay-current/veejay-client/reloaded-gtk3/src/cellrendererspin.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/cellrendererspin.c rename to veejay-current/veejay-client/reloaded-gtk3/src/cellrendererspin.c diff --git a/veejay-current/reloaded-gtk3/src/cellrendererspin.h b/veejay-current/veejay-client/reloaded-gtk3/src/cellrendererspin.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/cellrendererspin.h rename to veejay-current/veejay-client/reloaded-gtk3/src/cellrendererspin.h diff --git a/veejay-current/reloaded-gtk3/src/common.h b/veejay-current/veejay-client/reloaded-gtk3/src/common.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/common.h rename to veejay-current/veejay-client/reloaded-gtk3/src/common.h diff --git a/veejay-current/reloaded-gtk3/src/curve.c b/veejay-current/veejay-client/reloaded-gtk3/src/curve.c similarity index 98% rename from veejay-current/reloaded-gtk3/src/curve.c rename to veejay-current/veejay-client/reloaded-gtk3/src/curve.c index 018b022e..853b7104 100644 --- a/veejay-current/reloaded-gtk3/src/curve.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/curve.c @@ -20,8 +20,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include "curve.h" diff --git a/veejay-current/reloaded-gtk3/src/curve.h b/veejay-current/veejay-client/reloaded-gtk3/src/curve.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/curve.h rename to veejay-current/veejay-client/reloaded-gtk3/src/curve.h diff --git a/veejay-current/reloaded-gtk3/src/format_codes.h b/veejay-current/veejay-client/reloaded-gtk3/src/format_codes.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/format_codes.h rename to veejay-current/veejay-client/reloaded-gtk3/src/format_codes.h diff --git a/veejay-current/reloaded-gtk3/src/gtk3curve.c b/veejay-current/veejay-client/reloaded-gtk3/src/gtk3curve.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/gtk3curve.c rename to veejay-current/veejay-client/reloaded-gtk3/src/gtk3curve.c diff --git a/veejay-current/reloaded-gtk3/src/gtk3curve.h b/veejay-current/veejay-client/reloaded-gtk3/src/gtk3curve.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/gtk3curve.h rename to veejay-current/veejay-client/reloaded-gtk3/src/gtk3curve.h diff --git a/veejay-current/reloaded-gtk3/src/gtktimeselection.c b/veejay-current/veejay-client/reloaded-gtk3/src/gtktimeselection.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/gtktimeselection.c rename to veejay-current/veejay-client/reloaded-gtk3/src/gtktimeselection.c diff --git a/veejay-current/reloaded-gtk3/src/gtktimeselection.h b/veejay-current/veejay-client/reloaded-gtk3/src/gtktimeselection.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/gtktimeselection.h rename to veejay-current/veejay-client/reloaded-gtk3/src/gtktimeselection.h diff --git a/veejay-current/reloaded-gtk3/src/gveejay.c b/veejay-current/veejay-client/reloaded-gtk3/src/gveejay.c similarity index 98% rename from veejay-current/reloaded-gtk3/src/gveejay.c rename to veejay-current/veejay-client/reloaded-gtk3/src/gveejay.c index d2801b8b..75b782cc 100644 --- a/veejay-current/reloaded-gtk3/src/gveejay.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/gveejay.c @@ -30,10 +30,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include extern int mt_get_max_tracks(); diff --git a/veejay-current/reloaded-gtk3/src/keyboard.c b/veejay-current/veejay-client/reloaded-gtk3/src/keyboard.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/keyboard.c rename to veejay-current/veejay-client/reloaded-gtk3/src/keyboard.c diff --git a/veejay-current/reloaded-gtk3/src/keyboard.h b/veejay-current/veejay-client/reloaded-gtk3/src/keyboard.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/keyboard.h rename to veejay-current/veejay-client/reloaded-gtk3/src/keyboard.h diff --git a/veejay-current/reloaded-gtk3/src/mjpeg_logging.c b/veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_logging.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/mjpeg_logging.c rename to veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_logging.c diff --git a/veejay-current/reloaded-gtk3/src/mjpeg_logging.h b/veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_logging.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/mjpeg_logging.h rename to veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_logging.h diff --git a/veejay-current/reloaded-gtk3/src/mjpeg_types.h b/veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_types.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/mjpeg_types.h rename to veejay-current/veejay-client/reloaded-gtk3/src/mjpeg_types.h diff --git a/veejay-current/reloaded-gtk3/src/mpegconsts.c b/veejay-current/veejay-client/reloaded-gtk3/src/mpegconsts.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/mpegconsts.c rename to veejay-current/veejay-client/reloaded-gtk3/src/mpegconsts.c diff --git a/veejay-current/reloaded-gtk3/src/mpegconsts.h b/veejay-current/veejay-client/reloaded-gtk3/src/mpegconsts.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/mpegconsts.h rename to veejay-current/veejay-client/reloaded-gtk3/src/mpegconsts.h diff --git a/veejay-current/reloaded-gtk3/src/mpegtimecode.c b/veejay-current/veejay-client/reloaded-gtk3/src/mpegtimecode.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/mpegtimecode.c rename to veejay-current/veejay-client/reloaded-gtk3/src/mpegtimecode.c diff --git a/veejay-current/reloaded-gtk3/src/mpegtimecode.h b/veejay-current/veejay-client/reloaded-gtk3/src/mpegtimecode.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/mpegtimecode.h rename to veejay-current/veejay-client/reloaded-gtk3/src/mpegtimecode.h diff --git a/veejay-current/reloaded-gtk3/src/multitrack.c b/veejay-current/veejay-client/reloaded-gtk3/src/multitrack.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/multitrack.c rename to veejay-current/veejay-client/reloaded-gtk3/src/multitrack.c index 6ae0a460..e5fac550 100644 --- a/veejay-current/reloaded-gtk3/src/multitrack.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/multitrack.c @@ -20,17 +20,17 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include #include #include -#include +#include #include #include "sequence.h" #include "tracksources.h" diff --git a/veejay-current/reloaded-gtk3/src/multitrack.h b/veejay-current/veejay-client/reloaded-gtk3/src/multitrack.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/multitrack.h rename to veejay-current/veejay-client/reloaded-gtk3/src/multitrack.h diff --git a/veejay-current/reloaded-gtk3/src/sequence.c b/veejay-current/veejay-client/reloaded-gtk3/src/sequence.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/sequence.c rename to veejay-current/veejay-client/reloaded-gtk3/src/sequence.c index 76830fe5..ee089952 100644 --- a/veejay-current/reloaded-gtk3/src/sequence.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/sequence.c @@ -23,20 +23,19 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include -#include +#include #include #include -#include -#include +#include #include #include "common.h" diff --git a/veejay-current/reloaded-gtk3/src/sequence.h b/veejay-current/veejay-client/reloaded-gtk3/src/sequence.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/sequence.h rename to veejay-current/veejay-client/reloaded-gtk3/src/sequence.h diff --git a/veejay-current/reloaded-gtk3/src/tracksources.c b/veejay-current/veejay-client/reloaded-gtk3/src/tracksources.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/tracksources.c rename to veejay-current/veejay-client/reloaded-gtk3/src/tracksources.c index b87b6480..dda66639 100644 --- a/veejay-current/reloaded-gtk3/src/tracksources.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/tracksources.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "multitrack.h" extern void veejay_release_track(int id, int release_this); diff --git a/veejay-current/reloaded-gtk3/src/tracksources.h b/veejay-current/veejay-client/reloaded-gtk3/src/tracksources.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/tracksources.h rename to veejay-current/veejay-client/reloaded-gtk3/src/tracksources.h diff --git a/veejay-current/reloaded-gtk3/src/utils.c b/veejay-current/veejay-client/reloaded-gtk3/src/utils.c similarity index 98% rename from veejay-current/reloaded-gtk3/src/utils.c rename to veejay-current/veejay-client/reloaded-gtk3/src/utils.c index c5b1908f..e7d7130c 100644 --- a/veejay-current/reloaded-gtk3/src/utils.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/utils.c @@ -23,7 +23,7 @@ #include "mpegconsts.h" #include "mpegtimecode.h" -#include +#include #include int status_to_arr( char *status, int *array ) diff --git a/veejay-current/reloaded-gtk3/src/utils.h b/veejay-current/veejay-client/reloaded-gtk3/src/utils.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/utils.h rename to veejay-current/veejay-client/reloaded-gtk3/src/utils.h diff --git a/veejay-current/reloaded-gtk3/src/videodev_mjpeg.h b/veejay-current/veejay-client/reloaded-gtk3/src/videodev_mjpeg.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/videodev_mjpeg.h rename to veejay-current/veejay-client/reloaded-gtk3/src/videodev_mjpeg.h diff --git a/veejay-current/reloaded-gtk3/src/vj-api.c b/veejay-current/veejay-client/reloaded-gtk3/src/vj-api.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/vj-api.c rename to veejay-current/veejay-client/reloaded-gtk3/src/vj-api.c index 084736f0..0fd0037b 100644 --- a/veejay-current/reloaded-gtk3/src/vj-api.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/vj-api.c @@ -42,17 +42,19 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include "mpegconsts.h" -#include "mpegtimecode.h" +#include +#include +#include +#include #include #include #include @@ -68,9 +70,8 @@ #include #include #include -#include -#include -#include +#include +#include #include #ifdef STRICT_CHECKING #include @@ -1333,6 +1334,8 @@ static void vj_kf_refresh(); static void vj_kf_reset(); static void veejay_stop_connecting(vj_gui_t *gui); void reload_macros(); +void reportbug(); + GtkWidget *glade_xml_get_widget_( GtkBuilder *m, const char *name ); gboolean gveejay_idle(gpointer data) @@ -2894,7 +2897,6 @@ void gveejay_popup_err( const char *type, char *msg ) } void donatenow(); -void reportbug(); void update_gui(); int veejay_get_sample_image(int id, int type, int wid, int hei) @@ -8180,7 +8182,6 @@ static void veejay_backtrace_handler(int n , siginfo_t *si, void *ptr) //@ Bye veejay_msg(VEEJAY_MSG_ERROR, "Bugs compromised the system."); - report_bug(); exit(EX_SOFTWARE); } diff --git a/veejay-current/reloaded-gtk3/src/vj-api.h b/veejay-current/veejay-client/reloaded-gtk3/src/vj-api.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/vj-api.h rename to veejay-current/veejay-client/reloaded-gtk3/src/vj-api.h diff --git a/veejay-current/reloaded-gtk3/src/vj-midi.c b/veejay-current/veejay-client/reloaded-gtk3/src/vj-midi.c similarity index 99% rename from veejay-current/reloaded-gtk3/src/vj-midi.c rename to veejay-current/veejay-client/reloaded-gtk3/src/vj-midi.c index b2aea661..b48c6dcf 100644 --- a/veejay-current/reloaded-gtk3/src/vj-midi.c +++ b/veejay-current/veejay-client/reloaded-gtk3/src/vj-midi.c @@ -16,18 +16,19 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include +#ifdef HAVE_ALSA #include #include #include #include #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include extern GtkWidget *glade_xml_get_widget_( GtkBuilder *m, const char *name ); @@ -596,4 +597,4 @@ void *vj_midi_new(void *mw) return (void*) v; } - +#endif diff --git a/veejay-current/reloaded-gtk3/src/vmidi.h b/veejay-current/veejay-client/reloaded-gtk3/src/vmidi.h similarity index 65% rename from veejay-current/reloaded-gtk3/src/vmidi.h rename to veejay-current/veejay-client/reloaded-gtk3/src/vmidi.h index 69175639..d5b2e418 100644 --- a/veejay-current/reloaded-gtk3/src/vmidi.h +++ b/veejay-current/veejay-client/reloaded-gtk3/src/vmidi.h @@ -33,20 +33,20 @@ void vj_midi_learning_vims_msg2(void *vv, char *widget, int id, int arg, int void vj_midi_learning_vims_msg( void *vv, char *widget, int id, int arg ); void vj_midi_learning_vims_spin( void *vv, char *widget, int id ); #else -#define vj_midi_new(a) NULL -#define vj_midi_handle_events(a) -#define vj_midi_play(a) -#define vj_midi_learn(a) -#define vj_midi_load(a,b) -#define vj_midi_save(a,b) -#define vj_midi_reset(a) -#define vj_midi_learning_vims(a,b,c,d) -#define vj_midi_learning_vims_simple(a,b,c) -#define vj_midi_learning_vims_complex(a,b,c,d,e) -#define vj_midi_learning_vims_fx(a,b,c,d,e,f,g) -#define vj_midi_learning_vims_msg2(a,b,c,d,e) -#define vj_midi_learning_vims_msg(a,b,c,d) -#define vj_midi_learning_vims_spin(a,b,c) +void *vj_midi_new(void *mw) { return NULL; } +int vj_midi_handle_events(void *vv) { return 0; } +void vj_midi_play(void *vv ) {} +void vj_midi_learn( void *vv ) {} +void vj_midi_load(void *vv, const char *filename) {} +void vj_midi_save(void *vv, const char *filename) {} +void vj_midi_reset( void *vv ) {} +void vj_midi_learning_vims( void *vv, char *widget, char *msg, int extra ) {} +void vj_midi_learning_vims_simple( void *vv, char *widget, int id ) {} +void vj_midi_learning_vims_complex( void *vv, char *widget, int id, int first , int extra ) {} +void vj_midi_learning_vims_fx( void *vv, int widget, int id, int a, int b, int c, int extra ) {} +void vj_midi_learning_vims_msg2(void *vv, char *widget, int id, int arg, int b ) {} +void vj_midi_learning_vims_msg( void *vv, char *widget, int id, int arg ) {} +void vj_midi_learning_vims_spin( void *vv, char *widget, int id ) {} #endif #endif diff --git a/veejay-current/reloaded-gtk3/src/yuv4mpeg.c b/veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/yuv4mpeg.c rename to veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg.c diff --git a/veejay-current/reloaded-gtk3/src/yuv4mpeg.h b/veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/yuv4mpeg.h rename to veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg.h diff --git a/veejay-current/reloaded-gtk3/src/yuv4mpeg_intern.h b/veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg_intern.h similarity index 100% rename from veejay-current/reloaded-gtk3/src/yuv4mpeg_intern.h rename to veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg_intern.h diff --git a/veejay-current/reloaded-gtk3/src/yuv4mpeg_ratio.c b/veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg_ratio.c similarity index 100% rename from veejay-current/reloaded-gtk3/src/yuv4mpeg_ratio.c rename to veejay-current/veejay-client/reloaded-gtk3/src/yuv4mpeg_ratio.c diff --git a/veejay-current/veejay-client/share/bg.png b/veejay-current/veejay-client/share/bg.png deleted file mode 100644 index 92c332d4..00000000 Binary files a/veejay-current/veejay-client/share/bg.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_black.png b/veejay-current/veejay-client/share/bg_black.png deleted file mode 100644 index acc56362..00000000 Binary files a/veejay-current/veejay-client/share/bg_black.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_blue.png b/veejay-current/veejay-client/share/bg_blue.png deleted file mode 100644 index f1f1b98d..00000000 Binary files a/veejay-current/veejay-client/share/bg_blue.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_green.png b/veejay-current/veejay-client/share/bg_green.png deleted file mode 100644 index af8aa721..00000000 Binary files a/veejay-current/veejay-client/share/bg_green.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_grey.png b/veejay-current/veejay-client/share/bg_grey.png deleted file mode 100644 index 20ba15d7..00000000 Binary files a/veejay-current/veejay-client/share/bg_grey.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_red.png b/veejay-current/veejay-client/share/bg_red.png deleted file mode 100644 index 16e4811c..00000000 Binary files a/veejay-current/veejay-client/share/bg_red.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/bg_yellow.png b/veejay-current/veejay-client/share/bg_yellow.png deleted file mode 100644 index c245dd3b..00000000 Binary files a/veejay-current/veejay-client/share/bg_yellow.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/blackwhite.rc b/veejay-current/veejay-client/share/blackwhite.rc deleted file mode 100644 index 11331dcc..00000000 --- a/veejay-current/veejay-client/share/blackwhite.rc +++ /dev/null @@ -1,118 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ - engine "hcengine" {} - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_OUT - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 10 - - font_name = "Sans 8" - - fg[NORMAL] = "#ffffff" # borders etc. - fg[PRELIGHT] = "#000000" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#000000" - fg[INSENSITIVE] = "#505050" - - bg[NORMAL] = "#303030" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#202020" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#00ff00" - bg[INSENSITIVE] = "#000000" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#c0c0c0" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#303060"# achtergrond van lists, status bars - base[PRELIGHT] = "#00fff0" - base[ACTIVE] = "#0000ff" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - -style "text" -{ - font_name = "Sans 8" - - fg[NORMAL] = "#ffffff" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#ffffff" - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - -style "buttons" -{ - - font_name = "Sans 8" - - fg[NORMAL] = "#888888" - fg[PRELIGHT] = "#888888" - fg[ACTIVE] = "#888888" - fg[SELECTED] = "#888888" - fg[INSENSITIVE] = "#888888" - - bg[NORMAL] = "#27282F" - bg[PRELIGHT] = "#aaacc1" - bg[ACTIVE] = "#454f60" - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - - -class "GtkButton" style "default" -class "GtkSpinButton" style "default" -class "GtkToggleButton" style "default" -class "GtkCheckBox" style "default" - -class "GtkLabel" style "default" - -class "GtkWidget" style "default" diff --git a/veejay-current/veejay-client/share/button_back.png b/veejay-current/veejay-client/share/button_back.png deleted file mode 100644 index c2295b5b..00000000 Binary files a/veejay-current/veejay-client/share/button_back.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_bounce.png b/veejay-current/veejay-client/share/button_bounce.png deleted file mode 100644 index 82bbce6a..00000000 Binary files a/veejay-current/veejay-client/share/button_bounce.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_dec.png b/veejay-current/veejay-client/share/button_dec.png deleted file mode 100644 index 4fc75576..00000000 Binary files a/veejay-current/veejay-client/share/button_dec.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_down.png b/veejay-current/veejay-client/share/button_down.png deleted file mode 100644 index 99621523..00000000 Binary files a/veejay-current/veejay-client/share/button_down.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_fbw.png b/veejay-current/veejay-client/share/button_fbw.png deleted file mode 100644 index 32e6b085..00000000 Binary files a/veejay-current/veejay-client/share/button_fbw.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_ffw.png b/veejay-current/veejay-client/share/button_ffw.png deleted file mode 100644 index 50108d46..00000000 Binary files a/veejay-current/veejay-client/share/button_ffw.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_gotoend.png b/veejay-current/veejay-client/share/button_gotoend.png deleted file mode 100644 index d7d362f0..00000000 Binary files a/veejay-current/veejay-client/share/button_gotoend.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_gotostart.png b/veejay-current/veejay-client/share/button_gotostart.png deleted file mode 100644 index c0ed75cc..00000000 Binary files a/veejay-current/veejay-client/share/button_gotostart.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_inc.png b/veejay-current/veejay-client/share/button_inc.png deleted file mode 100644 index 862e48ee..00000000 Binary files a/veejay-current/veejay-client/share/button_inc.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_loop.png b/veejay-current/veejay-client/share/button_loop.png deleted file mode 100644 index aacf503f..00000000 Binary files a/veejay-current/veejay-client/share/button_loop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_looponce.png b/veejay-current/veejay-client/share/button_looponce.png deleted file mode 100644 index 3e2e20d9..00000000 Binary files a/veejay-current/veejay-client/share/button_looponce.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_mini_decrement.png b/veejay-current/veejay-client/share/button_mini_decrement.png deleted file mode 100644 index 46dbe3ea..00000000 Binary files a/veejay-current/veejay-client/share/button_mini_decrement.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_mini_increment.png b/veejay-current/veejay-client/share/button_mini_increment.png deleted file mode 100644 index f307df4c..00000000 Binary files a/veejay-current/veejay-client/share/button_mini_increment.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_next.png b/veejay-current/veejay-client/share/button_next.png deleted file mode 100644 index d5902fb0..00000000 Binary files a/veejay-current/veejay-client/share/button_next.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_pause.png b/veejay-current/veejay-client/share/button_pause.png deleted file mode 100644 index 50b227a8..00000000 Binary files a/veejay-current/veejay-client/share/button_pause.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_play.png b/veejay-current/veejay-client/share/button_play.png deleted file mode 100644 index e63e771f..00000000 Binary files a/veejay-current/veejay-client/share/button_play.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_playmode.png b/veejay-current/veejay-client/share/button_playmode.png deleted file mode 100644 index cdc841b0..00000000 Binary files a/veejay-current/veejay-client/share/button_playmode.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_prev.png b/veejay-current/veejay-client/share/button_prev.png deleted file mode 100644 index 653c503f..00000000 Binary files a/veejay-current/veejay-client/share/button_prev.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_rand.png b/veejay-current/veejay-client/share/button_rand.png deleted file mode 100644 index f2dd61cc..00000000 Binary files a/veejay-current/veejay-client/share/button_rand.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_reverse.png b/veejay-current/veejay-client/share/button_reverse.png deleted file mode 100644 index 59bd29e0..00000000 Binary files a/veejay-current/veejay-client/share/button_reverse.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_right.png b/veejay-current/veejay-client/share/button_right.png deleted file mode 100644 index 3ec7b43f..00000000 Binary files a/veejay-current/veejay-client/share/button_right.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_skip.png b/veejay-current/veejay-client/share/button_skip.png deleted file mode 100644 index 7d649bb5..00000000 Binary files a/veejay-current/veejay-client/share/button_skip.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_skull.png b/veejay-current/veejay-client/share/button_skull.png deleted file mode 100644 index bbed6da0..00000000 Binary files a/veejay-current/veejay-client/share/button_skull.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_text.png b/veejay-current/veejay-client/share/button_text.png deleted file mode 100644 index bfd19e8d..00000000 Binary files a/veejay-current/veejay-client/share/button_text.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/button_up.png b/veejay-current/veejay-client/share/button_up.png deleted file mode 100644 index 862e48ee..00000000 Binary files a/veejay-current/veejay-client/share/button_up.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/fx_entry_off.png b/veejay-current/veejay-client/share/fx_entry_off.png deleted file mode 100644 index adb5cafb..00000000 Binary files a/veejay-current/veejay-client/share/fx_entry_off.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/fx_entry_on.png b/veejay-current/veejay-client/share/fx_entry_on.png deleted file mode 100644 index 8de23e6c..00000000 Binary files a/veejay-current/veejay-client/share/fx_entry_on.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/gveejay-default.rc b/veejay-current/veejay-client/share/gveejay-default.rc deleted file mode 100644 index 9fb9e798..00000000 --- a/veejay-current/veejay-client/share/gveejay-default.rc +++ /dev/null @@ -1,21 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_OUT - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 10 - font_name = "Sans 8" -} - - -class "GtkWidget" style "default" diff --git a/veejay-current/veejay-client/share/gveejay.glade b/veejay-current/veejay-client/share/gveejay.glade deleted file mode 100644 index 7a8745eb..00000000 --- a/veejay-current/veejay-client/share/gveejay.glade +++ /dev/null @@ -1,9693 +0,0 @@ - - - - - - - True - gveejay - graphical veejay - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_EAST - True - - - - True - False - 3 - - - - True - False - 0 - - - - True - False - 3 - - - - True - True - False - 0 - - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - True - True - 0 - localhost - True - * - False - - - 0 - True - True - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 3490 1024 65535 1 4 4 - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - True - True - 0 - - True - * - False - - - 0 - True - True - - - - - - True - Open EditList/Videofile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - - - - - - - - True - veejay launch/connect - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - Launch/reconnect - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Cancel - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Screenshot - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_screenshot.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Toggle Bezerk Mode - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_berserk.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Display Debug - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_bug.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Change Playback Mode - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_playmode.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Take Background Mask(diff overlay) - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_mask.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_jack.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new solid colored stream - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_color.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Open Veejay Liveset / Action file - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Veejay Liveset / Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Editlist positon - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 00000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 14 - False - 0 - - - 0 - False - False - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 0 - False - False - - - - - - True - Editlist frames - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 00000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 14 - False - 0 - - - 0 - False - False - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - 0.800000011921 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_fbw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_reverse.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_pause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_ffw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - - True - True - True - GTK_POS_LEFT - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 1 2 4 - - - - 0 - True - True - - - - - - True - 1 - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_prev.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skip.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Mark current position as start of a new sample - True - [... - True - GTK_RELIEF_NORMAL - True - - - - 0 - True - True - - - - - - True - Mark current position as sample end and create new sample - True - ...] - True - GTK_RELIEF_NORMAL - True - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - True - False - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.0010000000475 0.10000000149 0 - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - True - True - GTK_POS_BOTTOM - 2 - GTK_UPDATE_CONTINUOUS - True - 0 0 1 0.0500000007451 0.10000000149 0.20000000298 - - - - 0 - False - True - - - - - - True - True - True - GTK_POS_BOTTOM - 2 - GTK_UPDATE_CONTINUOUS - True - 1 0 1 0.00999999977648 0.10000000149 0 - - - - 0 - False - True - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - True - True - 0 - - - - - True - True - True - False - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_ETCHED_IN - GTK_CORNER_TOP_LEFT - - - - 230 - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - False - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - 33 - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - False - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - - - - - - - - 0 - True - True - - - - - False - True - - - - - - True - Console - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - 5 - 2 - False - 0 - 3 - - - - True - Timecode - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Current position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Start position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - End position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - False - 0 - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 0 - False - False - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 0 - False - False - - - - - 1 - 2 - 0 - 1 - fill - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 25 25 - - - - 1 - 2 - 3 - 4 - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 25 25 - - - - 1 - 2 - 4 - 5 - - - - - - - True - Speed - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 -100 100 1 5 5 - - - - 1 - 2 - 2 - 3 - - - - - - - True - False - 0 - - - - True - 000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 0 - False - False - - - - - - True - Enable/disable effectchain - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - EffectChain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - 1 - 2 - 1 - 2 - fill - fill - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Play once - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_looponce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - True - - - - - - True - Normal Loop - True - GTK_RELIEF_NORMAL - True - True - False - True - loop_none - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_bounce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - True - - - - - - True - Pingpong loop - True - GTK_RELIEF_NORMAL - True - False - False - True - loop_none - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_loop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - GTK_PACK_END - - - - - - - - True - <b>Loop Types</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Start / Stop randomizer - True - rand() - True - GTK_RELIEF_NORMAL - True - False - False - - - - 0 - False - False - - - - - - True - True - Free Style - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - True - <b>Sample randomizer</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - False - GTK_POS_LEFT - 4 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0 - - - - 0 - True - True - - - - - - True - True - False - GTK_POS_LEFT - 4 - GTK_UPDATE_CONTINUOUS - True - 0 0 1 0.00999999977648 0.10000000149 0 - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - Bind marker - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - Clear marker - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - - - True - <b>Markers</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - - - True - <b>Sample properties</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - True - EffectChain - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - - 0 - True - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - True - - - - - - - False - True - - - - - - True - Color dial - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - True - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 5 - 2 - False - 0 - 0 - - - - True - Brightness - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Contrast - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Color - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Hue - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 3 - 4 - fill - fill - - - - - - True - White - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 4 - 5 - fill - fill - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 2 - 3 - fill - fill - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 1 - 2 - fill - fill - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 0 - 1 - fill - - - - - - - - True - Capture card settings - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - True - Capture card controls - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - Hardware controls - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - <b>Stream properties</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - Stream - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 3 - 2 - False - 0 - 5 - - - - True - <i>Starting position</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - <i>Duration:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - <i>Ending position:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 10 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - - - True - <b>Current Selection</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.270000010729 - 0 - 3 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 2 - 2 - False - 0 - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - - 0 - 1 - 0 - 1 - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - - 0 - 1 - 1 - 2 - - - - - - - True - Take current position as ending position - True - Set end - True - GTK_RELIEF_NORMAL - True - - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - Take current position as starting position - True - Set start - True - GTK_RELIEF_NORMAL - True - - - - 1 - 2 - 0 - 1 - fill - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Cut selection to buffer - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_cut.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy selection to buffer - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Paste from buffer into editlist at current position - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selection (without buffer) - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_trash.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Crop to selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_crop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Paste at position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - 0 - True - True - - - - - - True - Paste buffer at position - True - Paste At! - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 2 - False - True - - - - - - - - True - <b>EditList Operations</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 3 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - Editlist - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - Play selected sample/stream - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Open Samplelist - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Samplelist - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete Sample - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy sample to new - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - False - - - - - False - True - - - - - - True - Sample list - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - Add Videofiles to EditList - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save EditList - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Create sample from selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - False - True - - - - - - True - Editlist - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Samplelist - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - False - True - False - False - False - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - Entry enabled - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - 0 - True - True - - - - - - True - Set fade duration - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1 0.0500000007451 0.10000000149 0.10000000149 - - - - 0 - False - False - - - - - - True - Fade In - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_fadein.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Fade Out - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_fadeout.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Clear Entry - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create bundle - True - GTK_RELIEF_HALF - True - - - - - True - icon_bundle.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Clear Chain - True - GTK_RELIEF_HALF - True - - - - - True - icon_clearall.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P0 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 146 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P1 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P2 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 136 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P3 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P4 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 177 0 255 0 0 0 - - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P5 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 86 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P6 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - P7 - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - - - True - <b>Effect controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Loops - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Frames - True - GTK_RELIEF_NORMAL - True - True - False - True - sample_mulloop - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 10 10 - - - - 0 - True - True - - - - - - True - 00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 0 - False - False - - - - - 0 - False - False - - - - - - 133 - True - MJPEG -DVVIDEO -MPEG4 -MSMPEG4V3 -YV12 -YV16 - False - True - True - - - 0 - False - True - - - - - - True - True - Play when finished - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - - - - - - - - True - <b>Record to sample</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - label389 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - No. of frames to record: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 10 10 - - - - 0 - True - True - - - - - - True - 0:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 16 - 3 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - 100 - True - MJPEG -DVVIDEO -MPEG4 -MSMPEG4V3 -YV12 -YV16 - False - True - True - - - 0 - False - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - True - Play when finished - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - - True - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - True - True - - - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - - - - - - - - True - <b>Record to sample</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - label390 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Effect controls - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - True - - - - - - - False - True - - - - - - True - Color picker - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - Effect mixing sources - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - False - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Effect Chain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - False - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - True - - - - - 0 - True - True - - - - - - True - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - New - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Load Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Write Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - VIMS commands - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_question.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Set/Change Key - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keybind.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selected bundle - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Deatach Key from selected event - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keydetach.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Apply changes to this bundle - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Clear text - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - - - True - <b>VIMS Bundle</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - VIMS Bundles - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - True - 0 - - - - 140 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - - - True - Device - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - True - Video4Linux / Digital Video - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - 0 - False - True - - - - - - True - True - True - 0 - - - - True - 2 - 5 - False - 0 - 4 - - - - True - True - Try - True - GTK_RELIEF_NORMAL - True - - - - 4 - 5 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 4490 1 65535 1 10 10 - - - 4 - 5 - 0 - 1 - - - - - - - True - Port Number - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - True - True - True - 0 - - True - * - False - - - 2 - 3 - 0 - 1 - - - - - - - True - Remote - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - Use multicast - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - 1 - 0 - 1 - fill - - - - - - - - - True - Network - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - True - 0 - - - - True - 2 - 5 - False - 0 - 4 - - - - True - Filename - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - True - True - 0 - - True - * - False - - - 2 - 4 - 0 - 1 - - - - - - - True - True - Try - True - GTK_RELIEF_NORMAL - True - - - - 4 - 5 - 1 - 2 - fill - - - - - - - True - Load Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 4 - 5 - 0 - 1 - fill - - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - use YUV4MPEG - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - use FFmpeg - True - GTK_RELIEF_NORMAL - True - False - False - True - inputstream_filey4m - - - 0 - False - False - - - - - - True - True - use picture - True - GTK_RELIEF_NORMAL - True - False - False - True - inputstream_filey4m - - - 0 - False - False - - - - - - - - - - True - Types - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 1 - 0 - 2 - 3 - fill - fill - - - - - - - - True - File - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - - - True - <b>Input Streams</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 5 - - - - True - 2 - 4 - False - 0 - 0 - - - - True - Width: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Height: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - X offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Y offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - 3 - 4 - 1 - 2 - fill - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - SAR - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - 0 - True - True - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - Fullscreen - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - 30 - True - wbmp,wmf,jpeg,ani,bmp,gif,ico,pcx,png,pnm,ras,tga,xmb,tiff,xpm,svg - True - True - True - 4 - jpg - False - * - False - - - 0 - False - True - - - - - - True - Apply changes to primary output settings - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_apply.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - - - True - <b>Primary Video Window (SDL)</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Input/Output - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - - - True - False - 30 - - - - True - False - 3 - - - - True - 352x288 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - @ - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 25 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - fps - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - PAL - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Top First - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - 44000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Hz/ - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 16 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - bits/ - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 2 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Ch - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - 0 - True - True - - - - - - True - 1 - 0.5 - 0 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 3 - - - - True - Playing now: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 00000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 7 - False - 0 - - - 0 - False - False - - - - - - - 0 - True - True - - - - - label_item - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - True - True - 0 - 600:; - True - * - False - - - - 3 - True - True - - - - - - True - Send VIMS to veejay - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - VIMS commands - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_question.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - VIMS messenger - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - CPU remaining time - GTK_PROGRESS_RIGHT_TO_LEFT - 0 - 0.10000000149 - CPU remaining - PANGO_ELLIPSIZE_NONE - - - - - 0 - False - False - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - True - False - True - 0 - - True - * - False - - - 0 - False - False - - - - - - - - False - window1 - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_EAST - True - - - - True - False - 0 - - - - True - True - True - False - False - True - False - False - False - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 19 0 19 1 10 10 - - - - 0 - False - True - - - - - - True - True - True - True - 0 - - True - * - False - 15 - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - Render to selected entry - True - GTK_RELIEF_NORMAL - True - - - - True - icon_render.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Move to new sample - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - True - button116 - True - GTK_RELIEF_NORMAL - True - - - 0 - False - False - - - - - - - - - - - 0 - False - True - - - - - - - diff --git a/veejay-current/veejay-client/share/gveejay.rc b/veejay-current/veejay-client/share/gveejay.rc deleted file mode 100644 index fbbfa605..00000000 --- a/veejay-current/veejay-client/share/gveejay.rc +++ /dev/null @@ -1,137 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ -# engine "hcengine" {} - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_IN - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 12 - - font_name = "Sans 8" - - fg[NORMAL] = "#646464" # borders etc. - fg[PRELIGHT] = "#646464" - fg[ACTIVE] = "#646464" # ook borders, van sliders en notebook - fg[SELECTED] = "#646464" - fg[INSENSITIVE] = "#404040" - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - -style "text" -{ - font_name = "Sans 8" - - fg[NORMAL] = "#ffffff" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#ffffff" - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - -style "buttons" -{ - - font_name = "Sans 8" - - fg[NORMAL] = "#888888" - fg[PRELIGHT] = "#888888" - fg[ACTIVE] = "#888888" - fg[SELECTED] = "#888888" - fg[INSENSITIVE] = "#888888" - - bg[NORMAL] = "#27282F" - bg[PRELIGHT] = "#aaacc1" - bg[ACTIVE] = "#454f60" - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} -style "treeview" = "default" -{ - engine "pixmap" - { - # don't draw the focus around listitems - image - { - function = FOCUS - } - } -} -style "header" -{ - - GtkTreeView::odd_row_color = "#2c2c2c" - GtkTreeView::even_row_color = "#555555" - -} - -class "GtkButton" style "buttons" -class "GtkSpinButton" style "buttons" -class "GtkToggleButton" style "buttons" -class "GtkCheckBox" style "buttons" -widget_class "*Tree*" style "header" -class "GtkTreeView" style "treeview" -class "GtkLabel" style "text" -class "*List" style "text" -class "GtkListItem" style "text" -class "*GtkCList*" style "text" -class "GtkWidget" style "default" diff --git a/veejay-current/veejay-client/share/gveejay.reloaded.glade b/veejay-current/veejay-client/share/gveejay.reloaded.glade deleted file mode 100644 index 2d513358..00000000 --- a/veejay-current/veejay-client/share/gveejay.reloaded.glade +++ /dev/null @@ -1,24911 +0,0 @@ - - - - - - - False - Reloaded - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0 - GTK_SHADOW_ETCHED_IN - - - - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - True - 0 - - True - ● - False - - - - 0 - True - True - - - - - - - - - - True - Open advanced properties dialog - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - gtk-preferences - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - True - <b>Video File</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Open Veejay Liveset / Action file - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - bg_red.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Veejay Liveset / Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - bg_yellow.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - - - - - True - Play selected slot - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - - True - True - button119 - True - GTK_RELIEF_NORMAL - True - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 0.10000000149 0 1 0.00999999977648 0.10000000149 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - Create new input from veejay on port 3490 - True - 1 - True - GTK_RELIEF_NORMAL - True - - - - - True - Create new input from veejay on port 3490 - True - 1 - True - GTK_RELIEF_NORMAL - True - - - - - True - Create new input from veejay on port 3490 - True - 1 - True - GTK_RELIEF_NORMAL - True - - - - - Image Calibration - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - True - False - 0 - - - - True - Please select a source to calibrate - False - False - GTK_JUSTIFY_LEFT - False - False - 0.0399999991059 - 0.5 - 0 - 4 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - True - False - False - True - False - False - False - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - Calibrate Stream - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - True - <b>Select a Source</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - Source - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.97000002861 - 0.5 - 0 - 1 - 0 - 0 - 12 - 0 - - - - True - True - View DarkFrame - True - GTK_RELIEF_NORMAL - True - - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - 352 - 288 - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - 0.5 - 0.5 - 0 - 0 - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Dark Frame - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.97000002861 - 0.5 - 0 - 1 - 0 - 0 - 12 - 0 - - - - True - True - View LightFrame - True - GTK_RELIEF_NORMAL - True - - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - 0.5 - 0.5 - 0 - 0 - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Light Frame - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.97000002861 - 0.5 - 0 - 1 - 0 - 0 - 12 - 0 - - - - True - True - View FlatFrame - True - GTK_RELIEF_NORMAL - True - - - - - - - - 0 - False - True - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - 0.5 - 0.5 - 0 - 0 - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - Flat Frame - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Frames - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 10 0 10000 1 10 0 - - - 0 - False - True - - - - - - - - - - True - <b>Duration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 8 - 8 - 8 - - - - True - False - 0 - - - - True - Method - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 0 - - - - True - 0 - 0 - GTK_SHADOW_ETCHED_IN - - - - True - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - Median - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - True - True - Average - True - GTK_RELIEF_NORMAL - True - True - False - True - cali_method_median - - - 0 - False - False - - - - - - - - - - True - - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0 - 1 - 0.439999997616 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 64 1 10 0 - - - 0 - True - True - - - - - - True - Kernel Size - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - - - - - True - <b>Combine</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Stream - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Global - True - GTK_RELIEF_NORMAL - True - False - False - True - radiobutton6 - - - 0 - False - False - - - - - - - - - - True - <b>Run configuration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0 - 0.00999999977648 - 1 - 1 - 0 - 0 - 133 - 132 - - - - True - False - 58 - - - - True - True - Reset - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - Take Black Frames - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - False - True - Save - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - - - - 8 - False - True - - - - - 0 - False - True - - - - - - - - GVeejay Reloaded - New input stream - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 400 - 400 - True - False - icon_stream.png - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - True - True - False - False - False - - - - - 0 - True - True - - - - - - True - 1 - 4 - False - 0 - 0 - - - - True - Close this window - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 3 - 4 - 0 - 1 - - - - - - - 0 - False - False - - - - - - - - - - True - <b>Generators</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - Reloaded - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - veejay-icon.png - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - True - False - 0 - - - - True - Add to List - GTK_PACK_DIRECTION_LTR - GTK_PACK_DIRECTION_LTR - - - - True - _GVeejay - True - - - - - - - True - Sample - True - - - - - - - True - _New from file - True - - - - - - - True - _Copy - True - - - - - - - True - _Delete - True - - - - - - - - - - - True - Stream - True - - - - - - - True - _New - True - - - - - - - True - _New Yuv4Mpeg - True - - - - - - - True - _New Solid - True - - - - - - - True - _New Generator - True - - - - - - - True - _Delete - True - - - - - - - - - - - True - _MIDI - True - - - - - - - True - _learn MIDI - True - False - - - - - - - True - _MIDI enable - True - False - midilearn - - - - - - - True - - - - - - True - _Clear MIDI layout - True - - - - - - - - - - - True - _Save - True - - - - - - - True - Save samplelist - True - - - - - - - True - Save actionfile - True - - - - - - - True - Save MIDI layout - True - - - - - - - - - - - True - _Load - True - - - - - - - True - Load samplelist - True - - - - - - - True - Append samplelist - True - - - - - - - True - Load actionfile - True - - - - - - - True - Load MIDI layout - True - - - - - - - True - Load Calibration - True - - - - - - - - - - - True - - - - - - True - gtk-quit - True - - - - - - - - - - - True - - - - - - True - _View - True - - - - - - - True - Preferences - True - - - - - - - True - - - - - - True - Image Calibration - True - - - - - - - True - - - - - - True - VIMS _Bundles - True - - - - - - - - - - - True - _Help - True - - - - - - - - - - - True - About Reloaded - True - - - - - - - True - Report a problem - True - - - - - - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - Enable or disable selected FX - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - - - - 0 - False - False - - - - - - 36 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 19 1 0 0 - - - - 0 - False - True - - - - - - True - True - True - True - 0 - - True - ● - False - 15 - - - 0 - True - True - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0.10000000149 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 20 - False - 0 - - - 0 - True - True - - - - - - True - Continue playing mixing source when transition completes. If the selected FX is not a Transition, the current values determine the out position - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - icon_follow.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - The number of loops before transitioning is considered - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1800 1 10 0 - - - - 0 - False - False - - - - - - True - Toggle rendering of FX Chain on mixing source - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - icon_render.png - 0.5 - 0.5 - 0 - 0 - - - - - 11 - False - False - - - - - 0 - False - True - - - - - - 120 - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p0</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 146 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p1</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 201 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p2</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 255 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p3</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p4</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p5</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 86 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - - - True - <b>p6</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p7</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p8</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p9</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p10</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p11</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p12</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p13</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p14</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.949999988079 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 90 - - - 0 - True - True - - - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p15</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Mixing effects - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Image effects - True - GTK_RELIEF_NORMAL - True - False - False - True - mixing_effects - - - - 0 - False - False - - - - - - True - True - Alpha - True - GTK_RELIEF_NORMAL - True - False - False - True - mixing_effects - - - - 0 - False - False - - - - - - - - - - True - True - True - True - 0 - - True - ● - False - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - False - GTK_POS_TOP - False - False - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - video effects - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 270 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - image effects - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 270 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - alpha effects - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 270 - - - tab - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>FX list</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - 0 - - - - True - True - True - False - False - True - False - False - False - - - 0 - True - True - - - - - - True - False - 0 - - - - - - - 0 - True - True - - - - - - - - - False - True - - - - - - True - <b>mixing sources</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - False - - - - - - - False - True - - - - - - True - <b>Color Wheel</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - - - True - <b>FX controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>FX</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - Toggle keyframing for this chain entry - True - FX Anim - True - GTK_RELIEF_NORMAL - True - False - False - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - <b>current control:</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - P0 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - False - - - - - - True - Toggle keyframe animation for this parameter - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_keyframe.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - 0 - - - - True - Apply this keyframe - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_apply.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - Start keyframing - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Reset - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clearall.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Clear selected parameter - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 1 - 9 - False - 0 - 0 - - - - True - True - None - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - 1 - 0 - 1 - - - - - - - - True - True - 7 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 8 - 9 - 0 - 1 - - - - - - - - True - True - 6 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 7 - 8 - 0 - 1 - - - - - - - - True - True - 5 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 6 - 7 - 0 - 1 - - - - - - - - True - True - 4 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 5 - 6 - 0 - 1 - - - - - - - - True - True - 3 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 4 - 5 - 0 - 1 - - - - - - - - True - True - 2 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 3 - 4 - 0 - 1 - - - - - - - - True - True - 1 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - 0 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 1 - 2 - 0 - 1 - - - - - - - 0 - True - True - - - - - - True - 1 - 9 - False - 0 - 0 - - - - True - True - 8 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - 0 - 1 - 0 - 1 - - - - - - - - True - True - 9 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - 10 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 3 - 4 - 0 - 1 - - - - - - - - True - True - 11 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 4 - 5 - 0 - 1 - - - - - - - - True - True - 12 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 5 - 6 - 0 - 1 - - - - - - - - True - True - 13 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 6 - 7 - 0 - 1 - - - - - - - - True - True - 14 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 7 - 8 - 0 - 1 - - - - - - - - True - True - 15 - True - GTK_RELIEF_NORMAL - True - False - False - True - kf_none - - - - 8 - 9 - 0 - 1 - - - - - - - 0 - True - False - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - True - 0 - 1 - 0 - 1 - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - Linear - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Spline - True - GTK_RELIEF_NORMAL - True - False - False - True - curve_typelinear - - - - 0 - False - False - - - - - - True - True - Freehand - True - GTK_RELIEF_NORMAL - True - False - False - True - curve_typelinear - - - - 0 - False - False - - - - - - - - True - <b>Curve drawing method</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 2 - 5 - False - 0 - 0 - - - - True - startframe - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 0 0 - - - - 1 - 2 - 0 - 1 - - - - - - - True - endframe - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 0 0 - - - - 3 - 4 - 0 - 1 - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 0 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.490000009537 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 0 - False - 0 - - - 3 - 4 - 1 - 2 - - - - - - - - Update start/end - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_refresh.png - 0.5 - 0.5 - 0 - 0 - - - - - 4 - 5 - 1 - 2 - - - - - - - - - - True - <b>timeline</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>FX Anim</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 4 - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Play and repeat sample grid - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Clear all sequencer slots - True - GTK_RELIEF_NORMAL - True - - - - - True - False - 0 - - - - True - icon_clearall.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - 0 - True - False - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Play and record this sequence to a new sample - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Stop recording from this sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 30 - 0 - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - - - 0 - True - True - - - - - - - - - - True - <b>SEQ record to new sample</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - - - - - - - - 0 - True - True - - - - - - True - Click an empty slot to place current selected sample. - SHIFT-Click a slot to remove the sample. - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - True - <b>Sample Grid</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - - False - True - - - - - - True - <b>SEQ</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Add Track - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close Track - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - False - - - - - - True - False - 0 - - - - - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_reverse.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_pause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skip.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_dec.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_inc.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_prev.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - - - - - True - <b>Sync controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - sync start! - True - GTK_RELIEF_NORMAL - True - - - - - True - sync.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>MT</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - New SRT Sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_text.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - 25 - True - 1 -2 -3 -4 -5 - False - True - True - - - - - True - True - 0 - - True - ● - False - - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 6 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - 0 - - - - True - Delete this SRT Sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skull.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Apply Text and Start/End position - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_apply.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Load SRT file - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Save SRT file - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - - - - 0 - False - False - GTK_PACK_END - - - - - - - - True - Select a SRT sequence or create new - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - - - True - Edit subtitle - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 3 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 0 - - - - 75 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 0 0 - - - - 0 - False - True - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - End - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 0 - - - - 75 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 0 0 - - - - 0 - False - True - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - - - - - - True - Change frame start and frame end position - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 5 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 6 - 0 - 12 - 0 - - - - True - False - 0 - - - - 100 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - Veejay Font - False - True - True - - - - - True - True - 0 - - True - ● - False - - - - - - - - True - Font face - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 0 0 - - - - - - - True - Size - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - <b>X</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1000 1 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - <b>Y</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1000 1 0 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - Position - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - - - - - True - Change font face, size and position - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 5 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 5 - 0 - 12 - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Outline - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Border - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - Set this foreground color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Foreground color - True - FG - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - Set this background color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Background color - True - BG - True - GTK_RELIEF_NORMAL - True - False - False - True - textcolorfg - - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - Set this line color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Line color - True - LC - True - GTK_RELIEF_NORMAL - True - False - False - True - textcolorfg - - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 17 - 0 - 4 - 4 - - - - True - 4 - 5 - False - 0 - 0 - - - - 24 - 24 - True - - - 1 - 2 - 0 - 1 - - - - - - - 24 - 24 - True - - - 1 - 2 - 1 - 2 - - - - - - - - 24 - 24 - True - - - 1 - 2 - 2 - 3 - - - - - - - - 100 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 0 - 1 - - - - - - - 100 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 1 - 2 - - - - - - - - 100 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 2 - 3 - - - - - - - - 100 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 255 1 10 0 - - - - 2 - 5 - 3 - 4 - - - - - - - - True - <b>R</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - 4 - - - - - - - - True - <b>G</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - 4 - - - - - - - - True - <b>B</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - 4 - - - - - - - - True - <b>A</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - 4 - - - - - - - - - 0 - True - True - - - - - - - - - - - - True - Change foreground,background and linecolor - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - - - - False - True - - - - - - True - <b>SRT</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - False - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - False - 2 - - - - True - False - 0 - - - - True - False - 0 - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - True - - - - - - True - Enable/disable effectchain - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - True - Effect chain enabled - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - True - GTK_PACK_END - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 6 - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - Loops - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Frames - True - GTK_RELIEF_NORMAL - True - True - False - True - sample_mulloop - - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - - - - - - - - - True - <b>Timecode</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 0 0 - - - - - - - True - <b>Duration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - VJ20 (YUV 4:2:0 Planar) -VJ22 (YUV 4:2:2 Planar) -MJPEG -MJPEGB -HUFFYUV -DVVIDEO -YV16 (YCbCr 4:2:2 Planar) -I420 (YCbCr 4:2:0 Planar) -Quicktime-DV -Quicktime-MJPEG -MLZO -YUV (current) - - False - True - True - - - - True - True - 0 - - True - ● - False - - - - - - - - True - <b>Codec</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Cancel recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - Auto play sample after recording - True - Autoplay - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - 0 - False - True - - - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - - - - True - <b>Recording Progress</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>Record to Disk</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 15 - 0 - 12 - 51 - - - - True - False - 0 - - - - True - True - True - True - 0 - Untitled - True - ● - False - - - 0 - False - False - - - - - - True - True - Change title - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - True - - - - - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 8 - False - False - - - - - - True - End position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Playback speed - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 8 - False - False - - - - - - True - Slow motion multiplier - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 0 0 - - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 0 0 - - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 -25 25 1 0 0 - - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 1 12 1 0 0 - - - - 0 - False - False - - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - - - - True - - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - False - True - - - - - - True - <b>Properties</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - True - True - False - False - True - False - False - False - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Create sample from selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save EditList - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Add Videofiles to EditList - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - 2 - 3 - False - 0 - 0 - - - - True - 0000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - Positon - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - Total frames - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - 000000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - 0 - False - True - - - - - - True - 3 - 2 - False - 0 - 5 - - - - True - <i>Starting position</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - <i>Duration:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - <i>Ending position:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - 0 - False - True - - - - - - True - 2 - 2 - False - 0 - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 0 0 - - - - 1 - 2 - 1 - 2 - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 0 0 - - - - 1 - 2 - 0 - 1 - - - - - - True - Take current position as starting position - True - Set start - True - GTK_RELIEF_NORMAL - True - - - - 0 - 1 - 0 - 1 - - - - - - - - True - Take current position as ending position - True - Set end - True - GTK_RELIEF_NORMAL - True - - - - 0 - 1 - 1 - 2 - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Cut selection to buffer - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_cut.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy selection to buffer - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Paste from buffer into editlist at current position - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selection (without buffer) - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_trash.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Crop to selection - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_crop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Paste at this position - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 0 0 - - - 0 - True - True - - - - - - True - Paste buffer at position - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>EditList</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - False - True - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - Frames: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 50 0 999999 1 0 0 - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 0 - False - False - - - - - - True - True - Effect chain enabled - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - 0 - False - False - - - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 8 - False - 0 - - - - - - True - <b>Timecode</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 0 0 - - - - - - - True - <b>Duration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 120 - True - VJ20 (YUV 4:2:0 Planar 0-255/0-255) -VJ22 (YUV 4:2:2 Planar 0-255/0-255) -MJPEG -DVVIDEO -MPEG4 -MSMPEG4V3 -YV16 (YCbCr 4:2:2 Planar, 16-235/16-240) -I420 (YCbCr 4:2:0 Planar, 16-235/16-240) -Quicktime-DV -Quicktime-MJPEG -MLZO -YUV (current) - False - True - True - - - - True - True - 0 - - True - ● - False - - - - - - - - True - <b>Codec</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - True - Autoplay - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - False - - - - - - True - False - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - <b>Camera Controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - 21 - 2 - False - 0 - 0 - - - - True - Brightness - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Contrast - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 4 - 5 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 1 - 2 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 0 - 1 - 4 - - - - - - - True - Hue - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 2 - 3 - 4 - - - - - - - - True - Gamma - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - - - - - - - - True - Saturation - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 3 - 4 - 4 - - - - - - - - True - Gain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 6 - 7 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 6 - 7 - 4 - - - - - - - - True - Red Balance - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 7 - 8 - - - - - - - - True - Blue Balance - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 8 - 9 - - - - - - - - True - Green Balance - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 9 - 10 - - - - - - - - True - Auto White Balance - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 10 - 11 - - - - - - - - True - True - Enabled - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 1 - 2 - 10 - 11 - - - - - - True - Sharpness - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 11 - 12 - - - - - - - - True - Backlight Compensation - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 12 - 13 - - - - - - - - True - Auto Gain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 13 - 14 - - - - - - - - True - Auto Hue - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 14 - 15 - - - - - - - - True - Temperature - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 15 - 16 - - - - - - - - True - Horizontal Flip - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 16 - 17 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 7 - 8 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 8 - 9 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 9 - 10 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 11 - 12 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 12 - 13 - 4 - - - - - - - - True - True - Enabled - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 1 - 2 - 13 - 14 - - - - - - True - True - Enabled - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 1 - 2 - 14 - 15 - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 15 - 16 - 4 - - - - - - - - True - True - Enabled - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 1 - 2 - 16 - 17 - - - - - - True - Exposure - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 18 - 19 - - - - - - - - True - Vertical Flip - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 17 - 18 - - - - - - - - True - True - Enabled - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 1 - 2 - 17 - 18 - - - - - - True - Black Level - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 19 - 20 - - - - - - - - True - Whiteness - False - False - GTK_JUSTIFY_LEFT - False - False - 0.899999976158 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 20 - 21 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 19 - 20 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 20 - 21 - 4 - - - - - - - - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.1 0 - - - - 1 - 2 - 18 - 19 - 4 - - - - - - - - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>Video Device</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - True - - - False - True - - - - - - True - <b>Solid Stream</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 248 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p0</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 146 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p1</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 201 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p2</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 255 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p3</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p4</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p5</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 86 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p6</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p7</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p8</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p9</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p10</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - - - - - - - - True - <b>Recording progress</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Stream - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 7 - 2 - True - 0 - 0 - - - - True - Interlacing - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - Top First - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - - - True - Norm - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - - - - - - - - True - PAL - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 3 - 4 - - - - - - - - True - Audio bits - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - - - - - - - - True - 16 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 4 - 5 - - - - - - - - True - Audio Channels - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - - - - - - - - True - 2 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 5 - 6 - - - - - - - - True - Audio rate - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 6 - 7 - - - - - - - - True - 44000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 6 - 7 - - - - - - - - True - Resolution - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - 25 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - - True - 352x288 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - FPS - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - - - - False - True - - - - - - True - Plain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - False - True - - - - - - True - <b>Sample</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 3 - 2 - False - 0 - 0 - - - - True - Frame position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Dup position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Loop position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 0 - - - - 1 - 2 - 0 - 1 - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 0 - - - - 1 - 2 - 1 - 2 - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 0 - - - 1 - 2 - 2 - 3 - - - - - - 0 - True - True - - - - - - True - 3 - 3 - False - 0 - 0 - - - - True - VIMS message - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - True - True - 0 - - True - ● - False - - - 1 - 2 - 0 - 1 - - - - - - - True - Add to List - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Remove from List - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 2 - 3 - 1 - 2 - fill - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - 1 - 8 - False - 0 - 0 - - - - True - Clear all events from all banks (Reset) - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_macroclear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 7 - 8 - 0 - 1 - fill - - - - - - - True - Bank - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Select another macro bank - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 11 1 10 0 - - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - Refresh List - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_launch.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 6 - 7 - 0 - 1 - 16 - fill - - - - - - - True - Clear this bank - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 2 - 3 - 0 - 1 - 16 - fill - - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>Event Record/Playback</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - True - False - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - liveview on/off - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - gray - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - Very low quality preview - True - 1/8 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Low quality preview - True - 1/4 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Medium quality preview - True - 1/2 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - High quality preview - True - 1/1 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 1 - 1 - False - 0 - 0 - - - - True - True - Feedback - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - 1 - 0 - 1 - - - - - - - - - - - 0 - True - True - - - - - 3 - False - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Fills the alpha channel every frame period when enabled - True - Alpha Clear - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - True - True - - - - - - True - Alpha 255 - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_255.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Enable or disable Alpha Transition - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_alpha.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - veejay-logo.png - 0.5 - 0.5 - 0 - 0 - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 2 - 6 - True - 0 - 0 - - - - True - Length: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 7 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - 00000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 5 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - Time: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - True - Frame: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - 00000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 3 - 4 - 1 - 2 - - - - - - - True - M: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - 5 - 0 - 1 - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 5 - 6 - 0 - 1 - - - - - - - True - hint - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 5 - 6 - 1 - 2 - - - - - - - True - False - 0 - - - - True - Loop: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 0 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - False - False - - - - - - True - 1 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 8 - False - False - - - - - 4 - 5 - 1 - 2 - fill - fill - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_fbw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_reverse.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_pause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_ffw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_prev.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skip.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Change Playback Mode - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_playmode.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Mark current position as start of a new sample - True - [... - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Mark current position as sample end and create new sample - True - ...] - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Toggle Bezerk Mode - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_berserk.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Take Background Mask(diff overlay) - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_mask.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - Enable Multicast frame sender - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - multicast.ico - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - False - True - GTK_PACK_END - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Normal Loop - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_loop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Bounce - True - GTK_RELIEF_NORMAL - True - False - False - True - loop_normal - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_bounce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - - True - Play once and then pause the video - True - GTK_RELIEF_NORMAL - True - False - False - True - loop_normal - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_looponce.png - 0.5 - 0.5 - 0 - 3 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Play once and keep playing last frame - True - GTK_RELIEF_NORMAL - True - False - False - True - loop_normal - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_looponcenop.png - 0.5 - 0.5 - 0 - 3 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Random Frame - True - GTK_RELIEF_NORMAL - True - False - False - True - loop_normal - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_rand.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - - - - - - 0 - False - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - 50 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 0 0 0 0 - - - - 0 - True - True - - - - - - 50 - True - True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 1 0 13 0 0 0 - - - - 0 - True - True - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Offline recording duration in frames - True - 1 - 0 - True - GTK_UPDATE_ALWAYS - False - False - 1500 0 9999999 1 25 0 - - - 0 - False - True - - - - - - True - Start recording - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Cancel offline recording - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Auto play sample after recording has completed - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - - - 0 - True - False - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_back.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - Active bank: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 0 0 - - - - 0 - True - True - - - - - - - - - 0 - True - False - - - - - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_next.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - - - - - - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>Samplebank</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 1 - True - True - - - - - - True - False - 0 - - - - True - Create bundle - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_bundle.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Clear Entry - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Cut entry - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_cut.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Copy entry - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Paste entry - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Toggle rendering of FX chain on mixing sources - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_render.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Clear Chain - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_clearall.png - 0.5 - 0.5 - 0 - 0 - - - - - 20 - False - False - - - - - - True - Toggle keyframing for this chain entry - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_keyframe.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - - - - - - - - - True - FX entry - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - True - 1 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - From original source to completed FX chain - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - icon_fxmnone.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - From selected FX entry (before FX) to completed FX chain - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - icon_fxm1.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - From selected FX entry (after FX) to completed FX chain - True - GTK_RELIEF_NORMAL - True - False - False - True - fx_m1 - - - - - True - icon_fxm2.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - From mixing source of selected FX entry (before FX) to completed FX chain - True - GTK_RELIEF_NORMAL - True - False - False - True - fx_m1 - - - - - True - icon_fxm4.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - From mixing source of selected FX entry (after FX) to completed FX chain - True - GTK_RELIEF_NORMAL - True - False - False - True - fx_m1 - - - - - True - icon_fxm3.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Fade in FX Chain - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_fadein.png - 0.5 - 0.5 - 0 - 0 - - - - - 4 - False - False - - - - - - True - Fade Out FX Chain - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_fadeout.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 4 - False - False - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - 82 - True - True - False - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - True - 0 0 255 1 10 0 - - - - 0 - True - True - - - - - - - - - - True - Switch to sample #B after completing fade. - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - icon_follow.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - FX Chain fade duration in frames - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1 0.0500000007451 0 0 - - - - 0 - False - True - - - - - - True - Return to previous sample - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_bounce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>FX Chain</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Take Screenshot - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_screenshot.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - localhost:3490 - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - Disconnect - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Display Debug - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_bug.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Enable jack - True - GTK_RELIEF_NORMAL - True - False - False - - - - - True - icon_jack.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Display OSD status - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_osd.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Enable/Disable EDL Cache (see veejay console) - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_cache.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Drop audio/video frames and keep in sync (by default enabled) - True - Sync - True - GTK_RELIEF_NORMAL - True - True - False - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - shm in - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 6 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 0 - - - - True - Create new input from veejay on port 3490 - True - 3490 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Create new input from veejay on port 4490 - True - 4490 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Create new input from veejay on port 5490 - True - 5490 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Create new input from veejay on port 6490 - True - 6490 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Create new input from veejay on port 7490 - True - 7490 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - - - - - True - <b>Actions</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - 150 - True - If the repeat button is toggled, all VIMS messages written here will be repeated - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - True - True - 0 - - True - ● - False - - - - 3 - True - True - - - - - - True - Send a single VIMS to veejay - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Clear VIMS lines - True - _Clear - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Previous VIMS line - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Next VIMS line - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - repeat - True - GTK_RELIEF_NORMAL - True - False - False - - - 0 - False - False - - - - - 0 - False - True - - - - - - - - True - <b>VIMS messenger</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>Veejay</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Refresh Veejay's Working Directory - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - True - True - False - False - False - - - - - 0 - True - True - - - - - - - - - 0 - True - True - - - - - - True - Listing of Veejay's working directory. Doube click a row to add it as a Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>Media</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Add a video or image file as a new sample - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new stream (v4l, dv, network ...) - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_stream.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new solid colored stream - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_color.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new generator - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_generator.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Open Samplelist - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Samplelist (press [SHIFT] to Save as) - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy sample to new or clone stream - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selected slot - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Switch to property panel - True - GTK_RELIEF_NORMAL - True - - - - - True - gtk-preferences - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - Randomize sample duration, free cut-off - True - Free Style - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - True - - - - - - True - Start / Stop randomizer - True - GTK_RELIEF_NORMAL - True - False - False - - - - - 20 - 20 - True - button_rand.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Stop Event Record/Playback - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - True - icon_macropause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Start recording events - True - GTK_RELIEF_NORMAL - True - False - False - True - macrostop - - - - - True - icon_macrorec.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Start playback of events - True - GTK_RELIEF_NORMAL - True - False - False - True - macrostop - - - - - True - icon_macroplay.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - Clear recorded events - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_macroclear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - 24 - 24 - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - 24 - 24 - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - 150 - True - True - True - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 25 1 100 1 10 0 - - - - 0 - False - True - - - - - - True - Fallback to default framerate - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_refresh.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - 400 - True - False - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - [hostname] - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 12 - False - False - - - - - - True - [port] - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - 110 - True - cpumeter - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 96 - True - cache filled - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - False - True - - - - - - 84 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - - - GVeejay Reloaded - New input stream - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 500 - 400 - True - False - icon_stream.png - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - 340 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - True - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - Double click to active, single click column for changing settings - True - True - False - False - True - False - False - False - - - - - - - - True - <b>Video Capture Device</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - True - False - 0 - - - - True - 2 - 4 - False - 0 - 4 - - - - True - True - True - True - 200 - localhost - True - ● - False - - - 2 - 3 - 0 - 1 - - - - - - - True - Remote - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - True - Use multicast - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - 1 - 0 - 1 - - - - - - - - True - Port Number - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 4490 1 65535 1 0 0 - - - 2 - 3 - 1 - 2 - - - - - - - True - True - Try - True - GTK_RELIEF_NORMAL - True - - - - 3 - 4 - 1 - 2 - - - - - - - - - True - <b>veejay-2-veejay via network</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - False - 0 - - - - True - 2 - 5 - False - 0 - 4 - - - - True - URL or filename - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - use FFmpeg's AVFormat - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - 1 - 1 - 2 - - - - - - - - True - use YUV4MPEG - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - 1 - 0 - 1 - - - - - - - - True - True - True - True - 0 - - True - ● - False - - - 2 - 4 - 0 - 1 - - - - - - - True - True - Try - True - GTK_RELIEF_NORMAL - True - - - - 4 - 5 - 1 - 2 - - - - - - - - Load Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 4 - 5 - 0 - 1 - - - - - - - - - - True - <b>URL or filename</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 1 - 4 - False - 0 - 0 - - - - True - Close this window - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 3 - 4 - 0 - 1 - - - - - - - 0 - False - False - - - - - - - - - - True - <b>Stream types</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - True - Reloaded - Connect to a veejay server - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 356 - False - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - False - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - GTK_RELIEF_NORMAL - True - 0 - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Connect - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - -7 - - - - - - 0 - False - False - GTK_PACK_END - - - - - - True - False - 3 - - - - True - veejay-logo-small.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - ver.3144 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 2 - 2 - False - 0 - 0 - - - - True - Hostname/IP address - False - False - GTK_JUSTIFY_LEFT - False - False - 1 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - True - True - True - 255 - localhost - True - ● - False - - - - - 0 - 1 - 1 - 2 - - - - - - - True - Port - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 3490 1024 65535 1 0 0 - - - 1 - 2 - 1 - 2 - - - - - - - - - - - True - <b>Connection</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - 8 - False - True - - - - - - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - GTK_PACK_END - - - - - - - - Preferences - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - False - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - True - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - -7 - - - - - - 0 - False - True - GTK_PACK_END - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 2 - 20 - 0 - 0 - - - - True - 2 - 4 - True - 2 - 5 - - - - True - Width - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Image format - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 2 - 1 - 2 - - - - - - - - True - Height - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 4096 1 0 0 - - - 1 - 2 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 4096 1 0 0 - - - 3 - 4 - 0 - 1 - - - - - - - - True - Type extension to select image format (jpeg, png, ...) - True - True - True - 12 - jpeg - True - ● - False - 5 - - - 2 - 4 - 1 - 2 - - - - - - - - - 0 - False - True - - - - - - - - - - True - <b>Screenshot Dimensions</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - - False - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 20 - 12 - 0 - - - - True - 3 - 4 - True - 2 - 5 - - - - True - Width: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Height: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 176 1 800 1 0 0 - - - - 1 - 2 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 144 1 800 1 0 0 - - - - 1 - 2 - 1 - 2 - - - - - - - - Frame delay - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 1 100 1 0 0 - - - 3 - 4 - 0 - 1 - - - - - - - - True - Keep 4:3 aspect - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 2 - 4 - 1 - 2 - - - - - - - - True - FPS - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - False - 0 - - - - True - True - False - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0.019999999553 0.019999999553 1 0.019999999553 0 0 - - - - 0 - True - True - - - - - 1 - 3 - 2 - 3 - - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - - - - - - - - - - - - True - <b>Video preview</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 3 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 20 - 12 - 0 - - - - True - False - 0 - - - - True - 2 - 4 - True - 2 - 5 - - - - True - Width: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Height: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - X offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - Y offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 2 0 4096 1 0 0 - - - - 1 - 2 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 0 0 - - - - 1 - 2 - 1 - 2 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 0 0 - - - 3 - 4 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 0 0 - - - 3 - 4 - 1 - 2 - - - - - - - 8 - True - True - - - - - - True - True - Keep 4:3 aspect - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 2 - True - True - - - - - - True - True - Fullscreen (CTRL-F = window) - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 2 - True - True - - - - - - True - GTK_BUTTONBOX_DEFAULT_STYLE - 10 - - - - True - Apply changes to primary output settings - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-execute - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Apply - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close SDL - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - 0 - True - True - - - - - - - - - - True - <b>Primary Video Window (SDL)</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 1 - 4 - False - 0 - 0 - - - - True - vloopback output device - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 16 1 10 0 - - - 1 - 2 - 0 - 1 - - - - - - True - Disable vloopback output video - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 3 - 4 - 0 - 1 - - - - - - True - Enable vloopback output video - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - - - 2 - 3 - 0 - 1 - - - - - - - - - - True - <b>Video loopback settings</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 3 - True - True - - - - - - - - VIMS Bundles - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 600 - 548 - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - True - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - -7 - - - - - - 0 - False - True - GTK_PACK_END - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - New - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Load Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Write Actionfile - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Set/Change Key - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keybind.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selected bundle - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Deatach Key from selected event - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keydetach.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - True - True - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - False - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - 0 - - - - True - Apply changes to this bundle - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Clear text - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 1 - False - True - - - - - - - - True - <b>Edit VIMS Bundle contents </b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - diff --git a/veejay-current/veejay-client/share/gveejay.reloaded.gladep b/veejay-current/veejay-client/share/gveejay.reloaded.gladep deleted file mode 100644 index 183077ba..00000000 --- a/veejay-current/veejay-client/share/gveejay.reloaded.gladep +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - FALSE - diff --git a/veejay-current/veejay-client/share/high_contrast.rc b/veejay-current/veejay-client/share/high_contrast.rc deleted file mode 100644 index 56e9763a..00000000 --- a/veejay-current/veejay-client/share/high_contrast.rc +++ /dev/null @@ -1,118 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ - engine "hcengine" {} - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_OUT - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 10 - - font_name = "Sans 8" - - fg[NORMAL] = "#000000" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#000000" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#c0c0c0" - - bg[NORMAL] = "#ffffff" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#c0c0c0" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#00ff00" - bg[INSENSITIVE] = "#ffffff" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#050505" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#c0c0c0" - base[PRELIGHT] = "#00fff0" # achtergrond van lists, status bars - base[ACTIVE] = "#0000ff" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - -style "text" -{ - font_name = "Sans 8" - - fg[NORMAL] = "#ffffff" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#ffffff" - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - -style "buttons" -{ - - font_name = "Sans 8" - - fg[NORMAL] = "#888888" - fg[PRELIGHT] = "#888888" - fg[ACTIVE] = "#888888" - fg[SELECTED] = "#888888" - fg[INSENSITIVE] = "#888888" - - bg[NORMAL] = "#27282F" - bg[PRELIGHT] = "#aaacc1" - bg[ACTIVE] = "#454f60" - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - - -class "GtkButton" style "default" -class "GtkSpinButton" style "default" -class "GtkToggleButton" style "default" -class "GtkCheckBox" style "default" - -class "GtkLabel" style "default" - -class "GtkWidget" style "default" diff --git a/veejay-current/veejay-client/share/icon_255.png b/veejay-current/veejay-client/share/icon_255.png deleted file mode 100644 index d10a9899..00000000 Binary files a/veejay-current/veejay-client/share/icon_255.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_alpha.png b/veejay-current/veejay-client/share/icon_alpha.png deleted file mode 100644 index aa8a7870..00000000 Binary files a/veejay-current/veejay-client/share/icon_alpha.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_apply.png b/veejay-current/veejay-client/share/icon_apply.png deleted file mode 100644 index cb075f1f..00000000 Binary files a/veejay-current/veejay-client/share/icon_apply.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_berserk.png b/veejay-current/veejay-client/share/icon_berserk.png deleted file mode 100644 index 6270ece0..00000000 Binary files a/veejay-current/veejay-client/share/icon_berserk.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_bezerk.png b/veejay-current/veejay-client/share/icon_bezerk.png deleted file mode 100644 index 6270ece0..00000000 Binary files a/veejay-current/veejay-client/share/icon_bezerk.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_bounce.png b/veejay-current/veejay-client/share/icon_bounce.png deleted file mode 100644 index 82bbce6a..00000000 Binary files a/veejay-current/veejay-client/share/icon_bounce.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_bug.png b/veejay-current/veejay-client/share/icon_bug.png deleted file mode 100644 index a6582fe7..00000000 Binary files a/veejay-current/veejay-client/share/icon_bug.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_bundle.png b/veejay-current/veejay-client/share/icon_bundle.png deleted file mode 100644 index ffd2d178..00000000 Binary files a/veejay-current/veejay-client/share/icon_bundle.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_cache.png b/veejay-current/veejay-client/share/icon_cache.png deleted file mode 100644 index e4d90492..00000000 Binary files a/veejay-current/veejay-client/share/icon_cache.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_clear.png b/veejay-current/veejay-client/share/icon_clear.png deleted file mode 100644 index 512b6623..00000000 Binary files a/veejay-current/veejay-client/share/icon_clear.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_clearall.png b/veejay-current/veejay-client/share/icon_clearall.png deleted file mode 100644 index 709fdeb8..00000000 Binary files a/veejay-current/veejay-client/share/icon_clearall.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_color.png b/veejay-current/veejay-client/share/icon_color.png deleted file mode 100644 index 291ccf01..00000000 Binary files a/veejay-current/veejay-client/share/icon_color.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_connect.png b/veejay-current/veejay-client/share/icon_connect.png deleted file mode 100644 index 49cb2217..00000000 Binary files a/veejay-current/veejay-client/share/icon_connect.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_copy.png b/veejay-current/veejay-client/share/icon_copy.png deleted file mode 100644 index 9d14bc7e..00000000 Binary files a/veejay-current/veejay-client/share/icon_copy.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_crop.png b/veejay-current/veejay-client/share/icon_crop.png deleted file mode 100644 index 5b35f81a..00000000 Binary files a/veejay-current/veejay-client/share/icon_crop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_cut.png b/veejay-current/veejay-client/share/icon_cut.png deleted file mode 100644 index 05fe1a0c..00000000 Binary files a/veejay-current/veejay-client/share/icon_cut.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_disconnect.png b/veejay-current/veejay-client/share/icon_disconnect.png deleted file mode 100644 index 84217c10..00000000 Binary files a/veejay-current/veejay-client/share/icon_disconnect.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fadein.png b/veejay-current/veejay-client/share/icon_fadein.png deleted file mode 100644 index 797fe2fe..00000000 Binary files a/veejay-current/veejay-client/share/icon_fadein.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fadeout.png b/veejay-current/veejay-client/share/icon_fadeout.png deleted file mode 100644 index 78f8946d..00000000 Binary files a/veejay-current/veejay-client/share/icon_fadeout.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_follow.png b/veejay-current/veejay-client/share/icon_follow.png deleted file mode 100644 index 59fb755a..00000000 Binary files a/veejay-current/veejay-client/share/icon_follow.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fxm1.png b/veejay-current/veejay-client/share/icon_fxm1.png deleted file mode 100644 index 401cb5e7..00000000 Binary files a/veejay-current/veejay-client/share/icon_fxm1.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fxm2.png b/veejay-current/veejay-client/share/icon_fxm2.png deleted file mode 100644 index 3d4a17bc..00000000 Binary files a/veejay-current/veejay-client/share/icon_fxm2.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fxm3.png b/veejay-current/veejay-client/share/icon_fxm3.png deleted file mode 100644 index f7ba618d..00000000 Binary files a/veejay-current/veejay-client/share/icon_fxm3.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fxm4.png b/veejay-current/veejay-client/share/icon_fxm4.png deleted file mode 100644 index 024b3e26..00000000 Binary files a/veejay-current/veejay-client/share/icon_fxm4.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_fxmnone.png b/veejay-current/veejay-client/share/icon_fxmnone.png deleted file mode 100644 index 61072643..00000000 Binary files a/veejay-current/veejay-client/share/icon_fxmnone.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_generator.png b/veejay-current/veejay-client/share/icon_generator.png deleted file mode 100644 index f16f757f..00000000 Binary files a/veejay-current/veejay-client/share/icon_generator.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_jack.png b/veejay-current/veejay-client/share/icon_jack.png deleted file mode 100644 index cf2fe3fb..00000000 Binary files a/veejay-current/veejay-client/share/icon_jack.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_keybind.png b/veejay-current/veejay-client/share/icon_keybind.png deleted file mode 100644 index fd7b0994..00000000 Binary files a/veejay-current/veejay-client/share/icon_keybind.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_keydetach.png b/veejay-current/veejay-client/share/icon_keydetach.png deleted file mode 100644 index c3ce1b77..00000000 Binary files a/veejay-current/veejay-client/share/icon_keydetach.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_keyframe.png b/veejay-current/veejay-client/share/icon_keyframe.png deleted file mode 100644 index 498668a0..00000000 Binary files a/veejay-current/veejay-client/share/icon_keyframe.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_launch.png b/veejay-current/veejay-client/share/icon_launch.png deleted file mode 100644 index 49cb2217..00000000 Binary files a/veejay-current/veejay-client/share/icon_launch.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_loop.png b/veejay-current/veejay-client/share/icon_loop.png deleted file mode 100644 index aacf503f..00000000 Binary files a/veejay-current/veejay-client/share/icon_loop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_looponce.png b/veejay-current/veejay-client/share/icon_looponce.png deleted file mode 100644 index 08475a7d..00000000 Binary files a/veejay-current/veejay-client/share/icon_looponce.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_looponcenop.png b/veejay-current/veejay-client/share/icon_looponcenop.png deleted file mode 100644 index 011a7042..00000000 Binary files a/veejay-current/veejay-client/share/icon_looponcenop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_macroclear.png b/veejay-current/veejay-client/share/icon_macroclear.png deleted file mode 100644 index c1f61079..00000000 Binary files a/veejay-current/veejay-client/share/icon_macroclear.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_macropause.png b/veejay-current/veejay-client/share/icon_macropause.png deleted file mode 100644 index a06f6f7c..00000000 Binary files a/veejay-current/veejay-client/share/icon_macropause.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_macroplay.png b/veejay-current/veejay-client/share/icon_macroplay.png deleted file mode 100644 index db42baa9..00000000 Binary files a/veejay-current/veejay-client/share/icon_macroplay.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_macrorec.png b/veejay-current/veejay-client/share/icon_macrorec.png deleted file mode 100644 index 5e304b50..00000000 Binary files a/veejay-current/veejay-client/share/icon_macrorec.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_mask.png b/veejay-current/veejay-client/share/icon_mask.png deleted file mode 100644 index 8b7fbec5..00000000 Binary files a/veejay-current/veejay-client/share/icon_mask.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_minus.png b/veejay-current/veejay-client/share/icon_minus.png deleted file mode 100644 index 03059371..00000000 Binary files a/veejay-current/veejay-client/share/icon_minus.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_new.png b/veejay-current/veejay-client/share/icon_new.png deleted file mode 100644 index c553eb00..00000000 Binary files a/veejay-current/veejay-client/share/icon_new.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_noloop.png b/veejay-current/veejay-client/share/icon_noloop.png deleted file mode 100644 index fef7bfcf..00000000 Binary files a/veejay-current/veejay-client/share/icon_noloop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_open.png b/veejay-current/veejay-client/share/icon_open.png deleted file mode 100644 index 4df40ebc..00000000 Binary files a/veejay-current/veejay-client/share/icon_open.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_openlist.png b/veejay-current/veejay-client/share/icon_openlist.png deleted file mode 100644 index a7487645..00000000 Binary files a/veejay-current/veejay-client/share/icon_openlist.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_openstream.png b/veejay-current/veejay-client/share/icon_openstream.png deleted file mode 100644 index 3f0bc34d..00000000 Binary files a/veejay-current/veejay-client/share/icon_openstream.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_osd.png b/veejay-current/veejay-client/share/icon_osd.png deleted file mode 100644 index e195c9ad..00000000 Binary files a/veejay-current/veejay-client/share/icon_osd.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_paste.png b/veejay-current/veejay-client/share/icon_paste.png deleted file mode 100644 index 337df33c..00000000 Binary files a/veejay-current/veejay-client/share/icon_paste.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_plarge.png b/veejay-current/veejay-client/share/icon_plarge.png deleted file mode 100644 index f1116bfd..00000000 Binary files a/veejay-current/veejay-client/share/icon_plarge.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_playmode.png b/veejay-current/veejay-client/share/icon_playmode.png deleted file mode 100644 index efe2350f..00000000 Binary files a/veejay-current/veejay-client/share/icon_playmode.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_plus.png b/veejay-current/veejay-client/share/icon_plus.png deleted file mode 100644 index 830a8024..00000000 Binary files a/veejay-current/veejay-client/share/icon_plus.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_psmall.png b/veejay-current/veejay-client/share/icon_psmall.png deleted file mode 100644 index ec2e287a..00000000 Binary files a/veejay-current/veejay-client/share/icon_psmall.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_question.png b/veejay-current/veejay-client/share/icon_question.png deleted file mode 100644 index dab7e54f..00000000 Binary files a/veejay-current/veejay-client/share/icon_question.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_record.png b/veejay-current/veejay-client/share/icon_record.png deleted file mode 100644 index 80d7747b..00000000 Binary files a/veejay-current/veejay-client/share/icon_record.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_recordstop.png b/veejay-current/veejay-client/share/icon_recordstop.png deleted file mode 100644 index 924b1085..00000000 Binary files a/veejay-current/veejay-client/share/icon_recordstop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_recstop.png b/veejay-current/veejay-client/share/icon_recstop.png deleted file mode 100644 index c2e2d09c..00000000 Binary files a/veejay-current/veejay-client/share/icon_recstop.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_refresh.png b/veejay-current/veejay-client/share/icon_refresh.png deleted file mode 100644 index 5d141530..00000000 Binary files a/veejay-current/veejay-client/share/icon_refresh.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_render.png b/veejay-current/veejay-client/share/icon_render.png deleted file mode 100644 index d3dc9659..00000000 Binary files a/veejay-current/veejay-client/share/icon_render.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_save.png b/veejay-current/veejay-client/share/icon_save.png deleted file mode 100644 index cd1e9455..00000000 Binary files a/veejay-current/veejay-client/share/icon_save.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_saveas.png b/veejay-current/veejay-client/share/icon_saveas.png deleted file mode 100644 index 514ef83c..00000000 Binary files a/veejay-current/veejay-client/share/icon_saveas.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_screenshot.png b/veejay-current/veejay-client/share/icon_screenshot.png deleted file mode 100644 index dba2ed23..00000000 Binary files a/veejay-current/veejay-client/share/icon_screenshot.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_send.png b/veejay-current/veejay-client/share/icon_send.png deleted file mode 100644 index 3ccdfc88..00000000 Binary files a/veejay-current/veejay-client/share/icon_send.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_skull.png b/veejay-current/veejay-client/share/icon_skull.png deleted file mode 100644 index a9de432f..00000000 Binary files a/veejay-current/veejay-client/share/icon_skull.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_stream.png b/veejay-current/veejay-client/share/icon_stream.png deleted file mode 100644 index cdc841b0..00000000 Binary files a/veejay-current/veejay-client/share/icon_stream.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_trash.png b/veejay-current/veejay-client/share/icon_trash.png deleted file mode 100644 index 6b3933ce..00000000 Binary files a/veejay-current/veejay-client/share/icon_trash.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/icon_video.png b/veejay-current/veejay-client/share/icon_video.png deleted file mode 100644 index cdc841b0..00000000 Binary files a/veejay-current/veejay-client/share/icon_video.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/knob.png b/veejay-current/veejay-client/share/knob.png deleted file mode 100644 index af1ac70a..00000000 Binary files a/veejay-current/veejay-client/share/knob.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/multicast.ico b/veejay-current/veejay-client/share/multicast.ico deleted file mode 100644 index aad528c8..00000000 Binary files a/veejay-current/veejay-client/share/multicast.ico and /dev/null differ diff --git a/veejay-current/veejay-client/share/reloaded_classic.glade b/veejay-current/veejay-client/share/reloaded_classic.glade deleted file mode 100644 index c03d71a7..00000000 --- a/veejay-current/veejay-client/share/reloaded_classic.glade +++ /dev/null @@ -1,16508 +0,0 @@ - - - - - - - Reloaded - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 900 - 640 - True - False - veejay-icon.png - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - - - - True - False - 0 - - - - True - False - 0 - - - - True - - - - True - _GVeejay - True - - - - - - - True - Sample - True - - - - True - button_loop.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - True - _New from file - True - - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Copy - True - - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Delete - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - Stream - True - - - - True - icon_stream.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - True - _New - True - - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _New Solid - True - - - - - True - icon_color.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Delete - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - _MIDI - True - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - True - _learn MIDI - True - True - - - - - - - True - _MIDI enable - True - True - midilearn - - - - - - - - - - - True - _Save - True - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - True - Save samplelist - True - - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Save actionfile - True - - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Save MIDI layout - True - - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - _Load - True - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - True - Load samplelist - True - - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Append samplelist - True - - - - - - - True - Load actionfile - True - - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Load MIDI layout - True - - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - - - - - - True - gtk-quit - True - - - - - - - - - - - True - - - - - - True - _View - True - - - - - - - True - Preferences - True - - - - - True - gtk-preferences - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - VIMS Console - True - - - - - True - gtk-dialog-info - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - - - - - - True - VIMS _Bundles - True - - - - - True - icon_bundle.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - _Help - True - - - - - - - True - About Reloaded - True - - - - - True - icon_question.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Report a problem - True - - - - - True - icon_bug.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - 0 - True - True - - - - - - True - cpumeter - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 100 - True - cache filled - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - 0 - - - - localhost:3490 - True - GTK_RELIEF_HALF - True - - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - Disconnect - True - GTK_RELIEF_HALF - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Toggle Bezerk Mode - True - GTK_RELIEF_HALF - True - False - False - - - - - True - icon_berserk.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Display Debug - True - GTK_RELIEF_HALF - True - False - False - - - - - True - icon_bug.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Change Playback Mode - True - GTK_RELIEF_HALF - True - - - - - True - icon_playmode.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Take Background Mask(diff overlay) - True - GTK_RELIEF_HALF - True - - - - - True - icon_mask.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Enable jack - True - GTK_RELIEF_HALF - True - False - False - - - - - True - icon_jack.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Take Screenshot - True - GTK_RELIEF_HALF - True - - - - - True - icon_screenshot.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Display OSD status - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_osd.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Enable/Disable EDL Cache (see veejay console) - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_cache.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Drop audio/video frames and keep in sync (by default enabled) - True - Sync - True - GTK_RELIEF_NORMAL - True - True - False - - - - 0 - False - False - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - True - False - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - Play once - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_looponce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Normal Loop - True - GTK_RELIEF_HALF - True - True - False - True - loop_none - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_loop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Pingpong loop - True - GTK_RELIEF_HALF - True - False - False - True - loop_none - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_bounce.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Random Frame - True - GTK_RELIEF_HALF - True - False - False - True - loop_none - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_rand.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - True - <b>loop controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Loops - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - False - True - - - - - - True - True - Frames - True - GTK_RELIEF_HALF - True - True - False - True - sample_mulloop - - - - 0 - True - True - - - - - - True - 00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 7 - False - 0 - - - 0 - True - False - - - - - - - - - - True - <b>units</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 10 10 - - - - - - - True - <b>duration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 120 - True - MJPEG -DVVIDEO -YUV -Quicktime-DV -Quicktime-MJPEG - False - True - True - - - - - - True - <b>codec</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_HALF - True - - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Cancel recording - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - Auto play sample after recording - True - Autoplay - True - GTK_RELIEF_HALF - True - False - False - True - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - - - - True - <b>progress</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>record</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 3 - 2 - False - 0 - 0 - - - - True - End position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Start position - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 25 25 - - - - 1 - 2 - 0 - 1 - fill - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000000000 1 25 25 - - - - 1 - 2 - 1 - 2 - fill - - - - - - True - Playback speed - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 -25 25 1 5 5 - - - - 1 - 2 - 2 - 3 - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Slow motion multiplier - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 1 12 1 10 10 - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - Set title - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - True - True - 0 - Untitled - True - * - False - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - Enable/disable effectchain - True - GTK_RELIEF_HALF - True - True - False - True - - - - - True - Effect chain enabled - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - False - True - - - - - - True - <b>properties</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - False - 0 - - - - True - False - 0 - - - - True - True - True - False - False - True - False - False - False - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Create sample from selection - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save EditList - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Selection - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Add Videofiles to EditList - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - 2 - 3 - False - 0 - 0 - - - - True - 00000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - Positon - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - Total frames - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - 000000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 11 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - 0 - False - True - - - - - - True - 3 - 2 - False - 0 - 5 - - - - True - <i>Starting position</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - <i>Duration:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - True - <i>Ending position:</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 10 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - 0 - False - True - - - - - - True - 2 - 2 - False - 0 - 0 - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - - 1 - 2 - 1 - 2 - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - - 1 - 2 - 0 - 1 - - - - - - True - Take current position as starting position - True - Set start - True - GTK_RELIEF_HALF - True - - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Take current position as ending position - True - Set end - True - GTK_RELIEF_HALF - True - - - - 0 - 1 - 1 - 2 - fill - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - Cut selection to buffer - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_cut.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy selection to buffer - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Paste from buffer into editlist at current position - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selection (without buffer) - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_trash.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Crop to selection - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_crop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Paste at this position - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100000000 1 10 10 - - - 0 - True - True - - - - - - True - Paste buffer at position - True - GTK_RELIEF_HALF - True - - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - - - True - <b>EditList Operations</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 3 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - <b>EDL</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - False - True - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 50 0 999999 1 10 10 - - - - - - - True - <b>Frames:</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 10 - False - 0 - - - - - - True - <b>Timecode:</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - - - True - <b>Ficticious length</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 8 - False - 0 - - - - - - True - <b>timecode</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 9999999 1 10 10 - - - - - - - True - <b>duration</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 120 - True - MJPEG -DVVIDEO -YUV -Quicktime-DV -Quicktime-MJPEG - False - True - True - - - - - - True - <b>codec</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - Start recording - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel recording - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - False - False - True - - - - True - Autoplay - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - - PANGO_ELLIPSIZE_NONE - - - - - - True - <b>Recording progress</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>record</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - True - Effect chain enabled - True - GTK_RELIEF_HALF - True - True - False - True - - - - - - False - True - - - - - - True - <b>properties</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - True - - - - False - True - - - - - - True - <b>solid</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - True - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 6 - 2 - False - 0 - 0 - - - - True - Brightness - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Contrast - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 4 - 5 - fill - fill - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 1 - 2 - fill - fill - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 0 - 1 - fill - - - - - - True - Color - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 5 - 6 - fill - fill - - - - - - True - Hue - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 2 - 3 - fill - fill - - - - - - True - White - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - Saturation - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0 1 0.00999999977648 0.10000000149 0.10000000149 - - - - 1 - 2 - 3 - 4 - fill - fill - - - - - - - - True - Capture card settings - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - True - <b>capture card controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - False - True - - - - - - True - <b>v4l</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - False - True - - - - - - True - Stream - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 7 - 2 - False - 0 - 0 - - - - True - fps - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - 25 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - Interlacing - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Top First - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - Norm - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - PAL - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 3 - 4 - fill - - - - - - - True - Audio bits - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - 16 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 4 - 5 - fill - - - - - - - True - Audio Channels - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - 2 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 5 - 6 - fill - - - - - - - True - Audio rate - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 6 - 7 - fill - - - - - - - True - 44000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 6 - 7 - fill - - - - - - - True - 352x288 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - Resolution - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - False - True - - - - - - True - Plain - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - Enable or disable selected FX - True - - True - GTK_RELIEF_HALF - True - True - False - True - - - - 0 - False - False - - - - - - - - - - 36 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 19 1 10 10 - - - - 0 - False - True - - - - - - True - True - True - True - 0 - - True - * - False - 15 - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p0</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 146 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p1</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 201 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p2</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 0 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p3</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p4</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 96 0 255 0 0 0 - - - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p5</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 86 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - True - - - - - - - - True - <b>p6</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - GTK_POS_BOTTOM - 0 - GTK_UPDATE_CONTINUOUS - True - 126 0 255 0 0 0 - - - - 0 - True - True - - - - - - True - 0.5 - 0.5 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - - 0 - False - False - - - - - - - - True - <b>p7</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - <b>mixing sources</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Mixing effects - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Image effects - True - GTK_RELIEF_HALF - True - False - False - True - mixing_effects - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - False - GTK_POS_RIGHT - False - False - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - video effects - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 270 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - image effects - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 270 - - - tab - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>FX list</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_NONE - - - - True - False - True - - - - - - - False - True - - - - - - True - <b>RGB control</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - - - True - <b>FX controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - True - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - 352 - 288 - True - veejay-logo.png - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - True - <b>preview</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - enable - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - False - False - - - - - - True - True - grayscale - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - True - False - - - - - - True - False - 0 - - - - True - Quality - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Very low quality preview - True - 1/8 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Low quality preview - True - 1/4 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - Medium quality preview - True - 1/2 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - High quality preview - True - 1/1 - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - - - True - <b>preview settings</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - GTK_POLICY_NEVER - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - 82 - True - True - False - GTK_POS_LEFT - 1 - GTK_UPDATE_CONTINUOUS - True - 0 0 255 1 10 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - <b>effects chain</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - Create bundle - True - GTK_RELIEF_HALF - True - - - - - True - icon_bundle.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Clear Entry - True - GTK_RELIEF_HALF - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Cut entry - True - GTK_RELIEF_HALF - True - - - - - True - icon_cut.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Copy entry - True - GTK_RELIEF_HALF - True - - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Paste entry - True - GTK_RELIEF_HALF - True - - - - - True - icon_paste.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Enable/Disable all keyframes - True - GTK_RELIEF_HALF - True - False - False - - - - - True - icon_keyframe.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - Clear Chain - True - GTK_RELIEF_HALF - True - - - - - True - icon_clearall.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Set fade duration - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1 0.0500000007451 0.10000000149 0.10000000149 - - - - 0 - True - True - - - - - - True - Fade In - True - GTK_RELIEF_HALF - True - - - - - True - icon_fadein.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Fade Out - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_fadeout.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - True - <b>Auto chain fade</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 3 - 5 - False - 0 - 0 - - - - True - L: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - T: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - 0:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - 00000000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 3 - 4 - 1 - 2 - fill - - - - - - - True - F: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - 00000 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 5 - False - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - Sample - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 7 - False - 0 - - - 0 - 1 - 1 - 2 - shrink - shrink - - - - - - True - M: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 12 - False - 0 - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - fill - - - - - - - True - PM: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 2 - 3 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - 5 - 2 - 3 - fill - - - - - - - - - True - <b>status</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Pause event playback - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - - True - icon_macropause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Start recording events (keyboard and user interface) - True - GTK_RELIEF_NORMAL - True - False - False - True - macrostop - - - - - True - icon_macrorec.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Start playing recorded events - True - GTK_RELIEF_NORMAL - True - False - False - True - macrostop - - - - - True - icon_macroplay.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Clear recorded events - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_macroclear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - True - <b>keystroke recorder</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - 60 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 0 0 0 0 - - - - 0 - True - True - - - - - - 60 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 0 0 0 0 - - - - 0 - True - True - - - - - - - - - - True - <b>playback speed</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - 24 - 24 - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_decrement.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - 24 - 24 - True - True - GTK_RELIEF_HALF - True - - - - - True - button_mini_increment.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - 100 - True - True - True - GTK_POS_LEFT - 2 - GTK_UPDATE_CONTINUOUS - False - 25 1 100 1 10 0 - - - - 0 - True - True - - - - - - True - Fallback to default framerate - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_refresh.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - True - <b>veejay framerate</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_fbw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_reverse.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_pause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_ffw.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - 0 - False - False - - - - - - - - - - True - True - 0 - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_prev.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - button_skip.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Mark current position as start of a new sample - True - [... - True - GTK_RELIEF_HALF - True - - - - 0 - True - True - - - - - - True - Mark current position as sample end and create new sample - True - ...] - True - GTK_RELIEF_HALF - True - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - << - True - GTK_RELIEF_NONE - True - - - - 0 - True - True - - - - - - True - Active bank: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - - 0 - False - True - - - - - - True - True - >> - True - GTK_RELIEF_NONE - True - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - - - - - - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Add a video or image file as a new sample - True - GTK_RELIEF_HALF - True - - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new stream (v4l, dv, network ...) - True - GTK_RELIEF_HALF - True - - - - - True - icon_stream.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Create a new solid colored stream - True - GTK_RELIEF_HALF - True - - - - - True - icon_color.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Open Samplelist - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_openlist.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Samplelist - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Copy sample to new - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_copy.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selected slot - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Switch to property panel - True - GTK_RELIEF_HALF - True - - - - - True - gtk-preferences - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Randomize sample duration - True - Free Style - True - GTK_RELIEF_HALF - True - False - False - True - - - 0 - True - True - - - - - - True - Start / Stop randomizer - True - GTK_RELIEF_HALF - True - False - False - - - - - 20 - 20 - True - button_rand.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - True - <b>Sample randomizer</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>banks</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_NONE - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Play and repeat sample grid - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - Play and record this sequence to a new sample - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_record.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Stop recording from this sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_recordstop.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - - - - - - - - 0 - True - True - - - - - - True - Click an empty slot to place current selected sample. - SHIFT-Click a slot to remove the sample. - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - True - <b>Sample Grid</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - - False - True - - - - - - True - <b>SEQ</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Add Track - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close Track - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - False - False - - - - - - True - False - 0 - - - - - - - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_reverse.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_pause.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skip.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_dec.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_inc.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_prev.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - 0 - False - True - - - - - 0 - True - True - - - - - - True - sync start! - True - GTK_RELIEF_NORMAL - True - - - - - True - sync.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - True - <b>Sync controls</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>MT</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - New SRT Sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - button_text.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - 25 - True - 1 -2 -3 -4 -5 - False - True - True - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - 0 - - - - True - Delete this SRT Sequence - True - GTK_RELIEF_NORMAL - True - - - - - True - button_skull.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Apply Text and Start/End position - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_apply.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Load SRT file - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Save SRT file - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_save.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - 75 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - - 0 - False - True - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - True - <b>start</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - 75 - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - - 0 - False - True - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - True - <b>end</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - 100 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - Veejay Font - False - True - True - - - - - - - True - <b>face</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - - - - - True - <b>Size</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - <b>X</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1000 1 10 10 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - <b>Y</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 1000 1 10 10 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - True - <b>Position</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - - - True - <b>font</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - True - Outline - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Border - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - Set this foreground color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Foreground color - True - FG - True - GTK_RELIEF_NORMAL - True - True - False - True - - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - Set this background color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Background color - True - BG - True - GTK_RELIEF_NORMAL - True - False - False - True - textcolorfg - - - - label_item - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - Set this line color - True - GTK_RELIEF_NORMAL - True - - - - - 24 - 24 - True - - - - - - - - True - Line color - True - LC - True - GTK_RELIEF_NORMAL - True - False - False - True - textcolorfg - - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - 0.5 - 0.5 - 1 - 1 - 17 - 0 - 4 - 4 - - - - True - 4 - 5 - False - 0 - 0 - - - - 24 - 24 - True - - - 1 - 2 - 0 - 1 - fill - - - - - - 24 - 24 - True - - - 1 - 2 - 1 - 2 - fill - fill - - - - - - 24 - 24 - True - - - 1 - 2 - 2 - 3 - fill - fill - - - - - - 100 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 0 - 1 - fill - - - - - - 100 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 1 - 2 - fill - fill - - - - - - 100 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 255 0 255 1 10 0 - - - - 2 - 5 - 2 - 3 - fill - fill - - - - - - 100 - True - True - True - GTK_POS_RIGHT - 0 - GTK_UPDATE_CONTINUOUS - False - 0 0 255 1 10 0 - - - - 2 - 5 - 3 - 4 - fill - fill - - - - - - True - <b>R</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - 4 - fill - - - - - - - True - <b>G</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - 4 - fill - - - - - - - True - <b>B</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - 4 - fill - - - - - - - True - <b>A</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - 4 - fill - - - - - - - - 0 - True - True - - - - - - - - True - <b>Color</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - - - True - <b>Text</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - - False - True - - - - - - True - <b>SRT</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - GTK_POLICY_NEVER - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 150 - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - True - True - 0 - - True - * - False - - - - 3 - True - True - - - - - - True - Send VIMS to veejay - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - True - _Clear - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotostart.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - button_gotoend.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - repeat - True - GTK_RELIEF_NORMAL - True - False - False - - - 0 - False - False - - - - - 0 - False - True - - - - - - - - True - <b>VIMS messenger</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - <b>VIMS</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - False - 0 - - - - True - <b>current control:</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - P0 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - False - - - - - - True - Toggle keyframing for this chain entry - True - GTK_RELIEF_HALF - True - False - False - - - - - True - icon_keyframe.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - 0 - - - - True - Apply this keyframe - True - GTK_RELIEF_HALF - True - - - - - True - icon_apply.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - Start keyframing - True - GTK_RELIEF_HALF - True - False - False - - - - - True - button_play.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - - True - Reset - True - GTK_RELIEF_HALF - True - - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 1 - 8 - False - 0 - 0 - - - - True - True - 0 - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - 2 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - True - 3 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - True - 4 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 4 - 5 - 0 - 1 - fill - - - - - - - True - True - 5 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 5 - 6 - 0 - 1 - fill - - - - - - - True - True - 6 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 6 - 7 - 0 - 1 - fill - - - - - - - True - True - 7 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 7 - 8 - 0 - 1 - fill - - - - - - - True - True - 1 - True - GTK_RELIEF_HALF - True - False - False - True - kf_p0 - - - - 1 - 2 - 0 - 1 - fill - - - - - - 0 - True - True - - - - - - - - True - <b>animate FX</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 1 - 0 - 1 - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - Linear - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Spline - True - GTK_RELIEF_HALF - True - False - False - True - curve_typelinear - - - - 0 - False - False - - - - - - True - True - Freehand - True - GTK_RELIEF_HALF - True - False - False - True - curve_typelinear - - - - 0 - False - False - - - - - - - - True - <b>Curve drawing method</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 2 - 5 - False - 0 - 0 - - - - True - startframe - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - - 1 - 2 - 0 - 1 - - - - - - - True - endframe - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - - 3 - 4 - 0 - 1 - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 0 - False - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - 00:00:00:00 - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.490000009537 - 0 - 0 - PANGO_ELLIPSIZE_NONE - 0 - False - 0 - - - 3 - 4 - 1 - 2 - fill - - - - - - - Update start/end - True - GTK_RELIEF_NORMAL - True - - - - - True - icon_refresh.png - 0.5 - 0.5 - 0 - 0 - - - - - 4 - 5 - 1 - 2 - fill - - - - - - - - - True - <b>timeline</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - <b>FX anim</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - 32 - True - False - 0 - - - - - - - 0 - False - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - False - - - 0 - True - True - - - - - - True - [hostname] - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - [port] - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - False - False - - - - - - - - True - Connect to Veejay - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ALWAYS - False - 356 - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - Reloaded Launcher - - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - GTK_RELIEF_HALF - True - 0 - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_connect.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Connect - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - True - gtk-close - True - GTK_RELIEF_HALF - True - -7 - - - - - - 0 - False - False - GTK_PACK_END - - - - - - True - False - 3 - - - - 352 - 288 - True - veejay-logo.png - 0.5 - 0.5 - 0 - 0 - - - 0 - True - True - - - - - - True - ver.3144 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - True - True - 0 - - True - * - False - - - - 0 - True - True - - - - - - True - Open EditList/Videofile - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Open advanced properties dialog - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - gtk-preferences - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - True - <b>Video File</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - Hostname/IP address - False - False - GTK_JUSTIFY_LEFT - False - False - 1 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - 0 - localhost - True - * - False - - - - - 0 - True - True - - - - - - True - Port - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 3490 1024 65535 1 4 4 - - - 0 - True - True - - - - - - - - True - <b>Connection settings</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - GTK_PACK_END - - - - - - - - VIMS Bundles - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ON_PARENT - False - 600 - 550 - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - True - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - gtk-close - True - GTK_RELIEF_HALF - True - -7 - - - - - - 0 - False - True - GTK_PACK_END - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - - - - True - True - 0 - - - - True - New - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_new.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Load Actionfile - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Write Actionfile - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_saveas.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Set/Change Key - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keybind.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Delete selected bundle - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Deatach Key from selected event - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_keydetach.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - 0 - False - True - - - - - - True - True - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - False - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - True - True - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - 0 - - - - True - Apply changes to this bundle - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - - True - Clear text - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_clear.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - True - True - - - - - 0 - False - True - - - - - 1 - False - True - - - - - - - - True - <b>Edit VIMS message contents </b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - GVeejay Reloaded - Preferences - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ON_PARENT - True - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - True - - - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - gtk-close - True - GTK_RELIEF_HALF - True - -7 - - - - - - 0 - False - True - GTK_PACK_END - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - 2 - 4 - False - 2 - 5 - - - - True - Width - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Image format - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 2 - 1 - 2 - fill - - - - - - - True - Height - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 4096 1 10 10 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 4096 1 10 10 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - Type extension to select image format (jpeg, png, ...) - True - True - True - 12 - jpeg - True - * - False - 5 - - - 2 - 4 - 1 - 2 - fill - - - - - - 0 - False - True - - - - - - - - - - True - <b>Screenshot</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - - False - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 3 - 4 - False - 2 - 5 - - - - True - Width: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Height: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 176 1 800 1 10 10 - - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 144 1 800 1 10 10 - - - - 1 - 2 - 1 - 2 - fill - - - - - - - Frame delay - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 1 100 1 10 10 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - Keep 4:3 aspect - True - GTK_RELIEF_HALF - True - True - False - True - - - 2 - 4 - 1 - 2 - fill - - - - - - - True - FPS - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - False - 0 - - - - True - True - False - GTK_POS_TOP - 2 - GTK_UPDATE_CONTINUOUS - False - 0 0.019999999553 1 0.019999999553 0 0 - - - - 0 - True - True - - - - - 1 - 3 - 2 - 3 - fill - fill - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - fill - - - - - - - - - - - True - <b>Video preview</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 3 - True - True - - - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 1 - - - - True - True - Record video from Viewport - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - True - False - - - - - - True - Configure Viewport - True - GTK_RELIEF_NORMAL - True - - - 0 - False - False - - - - - - - - - - True - <b>Viewport settings</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - 2 - 4 - False - 2 - 5 - - - - True - Width: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Height: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - X offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Y offset: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 2 0 4096 1 10 10 - - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - 3 - 4 - 0 - 1 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 4096 1 10 10 - - - 3 - 4 - 1 - 2 - fill - - - - - - 0 - True - True - - - - - - True - True - Keep 4:3 aspect - True - GTK_RELIEF_HALF - True - True - False - True - - - 0 - False - False - - - - - - True - True - Fullscreen (CTRL-F = window) - True - GTK_RELIEF_HALF - True - False - False - True - - - - 0 - False - False - - - - - - True - GTK_BUTTONBOX_START - 10 - - - - True - Apply changes to primary output settings - True - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-execute - 2 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Apply - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 2 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - 0 - True - True - - - - - - - - - - True - <b>Primary Video Window (SDL)</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 2 - True - True - - - - - 0 - True - True - - - - - 3 - True - True - - - - - - - - GVeejay Reloaded - New input stream - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ON_PARENT - False - 400 - 400 - True - False - icon_stream.png - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - - - - - 340 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - True - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - Double click to active, single click column for changing settings - True - True - False - False - True - False - False - False - - - - - - - - True - <b>Device</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - True - False - 0 - - - - True - 2 - 4 - False - 0 - 4 - - - - True - True - True - True - 200 - localhost - True - * - False - - - 2 - 3 - 0 - 1 - - - - - - - True - Remote - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - Use multicast - True - GTK_RELIEF_HALF - True - False - False - True - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Port Number - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 4490 1 65535 1 10 10 - - - 2 - 3 - 1 - 2 - - - - - - - True - True - Try - True - GTK_RELIEF_HALF - True - - - - 3 - 4 - 1 - 2 - - - - - - - - - True - <b>Network</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - False - 0 - - - - True - 2 - 5 - False - 0 - 4 - - - - True - Filename - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - use YUV4MPEG - True - GTK_RELIEF_HALF - True - False - False - True - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - use FFmpeg - True - GTK_RELIEF_HALF - True - False - False - True - inputstream_filey4m - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - True - True - True - 0 - - True - * - False - - - 2 - 4 - 0 - 1 - - - - - - - True - True - Try - True - GTK_RELIEF_HALF - True - - - 4 - 5 - 1 - 2 - fill - - - - - - - True - Load Actionfile - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_open.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 4 - 5 - 0 - 1 - fill - - - - - - - - - True - <b>File</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 0.0799999982119 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - veejay port - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - 0 - 3490 - True - * - False - - - 0 - False - True - - - - - - True - True - Create - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - - - - - - - True - <b>SHM</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - True - True - False - 0 - - - - True - False - 0 - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - Single click to select, then fill in optional args and press create - True - True - False - False - True - False - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 0.0599999986589 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - args: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - 0 - - True - * - False - - - 0 - True - True - - - - - - True - True - Create - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - - - - 0 - False - True - - - - - 0 - False - True - - - - - - - - True - <b>Plugins</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - True - 1 - 4 - False - 0 - 0 - - - - True - Close this window - True - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-close - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Close - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 3 - 4 - 0 - 1 - shrink - shrink - - - - - 0 - False - False - - - - - - - - - - True - <b>Stream types</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - - - - False - ladida - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - - - - True - False - 0 - - - - True - False - 0 - - - - True - 0 - 0 - GTK_SHADOW_NONE - - - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - Open Veejay Liveset / Action file - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - bg_red.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Save Veejay Liveset / Actionfile - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 0 - 0 - - - - True - bg_yellow.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - True - Cancel - True - GTK_RELIEF_HALF - True - - - - - True - icon_disconnect.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - - - - - - - - - True - Play selected slot - True - GTK_RELIEF_HALF - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - icon_send.png - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - - True - True - button119 - True - GTK_RELIEF_HALF - True - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - False - 0.10000000149 0 1 0.00999999977648 0.10000000149 0 - - - - 0 - True - True - - - - - 0 - True - True - - - - - - - diff --git a/veejay-current/veejay-client/share/smooth.rc b/veejay-current/veejay-client/share/smooth.rc deleted file mode 100644 index 2c7fe55b..00000000 --- a/veejay-current/veejay-client/share/smooth.rc +++ /dev/null @@ -1,118 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ - engine "hcengine" {} - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_OUT - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 10 - - font_name = "Trebuchet MS 8" - - fg[NORMAL] = "#000000" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#000000" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#c0c0c0" - - bg[NORMAL] = "#ffffff" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#c0c0c0" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#00ff00" - bg[INSENSITIVE] = "#ffffff" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#050505" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#c0c0c0" - base[PRELIGHT] = "#00fff0" # achtergrond van lists, status bars - base[ACTIVE] = "#0000ff" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - -style "text" -{ - font_name = "Sans 8" - - fg[NORMAL] = "#ffffff" # borders etc. - fg[PRELIGHT] = "#ffffff" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#ffffff" - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - -style "buttons" -{ - - font_name = "Sans 8" - - fg[NORMAL] = "#888888" - fg[PRELIGHT] = "#888888" - fg[ACTIVE] = "#888888" - fg[SELECTED] = "#888888" - fg[INSENSITIVE] = "#888888" - - bg[NORMAL] = "#27282F" - bg[PRELIGHT] = "#aaacc1" - bg[ACTIVE] = "#454f60" - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - - - -class "GtkButton" style "default" -class "GtkSpinButton" style "default" -class "GtkToggleButton" style "default" -class "GtkCheckBox" style "default" - -class "GtkLabel" style "default" - -class "GtkWidget" style "default" diff --git a/veejay-current/veejay-client/share/sync.png b/veejay-current/veejay-client/share/sync.png deleted file mode 100644 index 471b269b..00000000 Binary files a/veejay-current/veejay-client/share/sync.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/veejay-icon.png b/veejay-current/veejay-client/share/veejay-icon.png deleted file mode 100644 index c925fd92..00000000 Binary files a/veejay-current/veejay-client/share/veejay-icon.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/veejay-logo-small.png b/veejay-current/veejay-client/share/veejay-logo-small.png deleted file mode 100644 index 457745d1..00000000 Binary files a/veejay-current/veejay-client/share/veejay-logo-small.png and /dev/null differ diff --git a/veejay-current/veejay-client/share/veejay-logo.png b/veejay-current/veejay-client/share/veejay-logo.png deleted file mode 100644 index 34f421dd..00000000 Binary files a/veejay-current/veejay-client/share/veejay-logo.png and /dev/null differ diff --git a/veejay-current/veejay-client/src/Makefile.am b/veejay-current/veejay-client/src/Makefile.am deleted file mode 100644 index 6e8994cb..00000000 --- a/veejay-current/veejay-client/src/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -## Process this file with automake to produce Makefile.in -MAINTAINERCLEANFILES = Makefile.in -AM_CFLAGS=$(OP_CFLAGS) -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src \ - $(VEEJAY_CFLAGS) $(GTK_CFLAGS) \ - $(GLIB_CFLAGS) $(FFMPEG_CFLAGS) $(GLADE_CFLAGS) \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DRELOADED_DATADIR=\""$(reloaded_datadir)"\" - -RELOADED_BIN=reloaded -reloaded_SOURCES = cellrendererspin.c gtktimeselection.c vj-midi.c curve.c utils.c tracksources.c gveejay.c keyboard.c sequence.c multitrack.c vj-api.c mjpeg_logging.c mpegconsts.c mpegtimecode.c yuv4mpeg.c yuv4mpeg_ratio.c ${reloaded_headers} - -bin_PROGRAMS = $(RELOADED_BIN) - -reloaded_LDFLAGS = $(VEEJAY_LIBS) $(GTK_LIBS) $(GLIB_LIBS) \ -$(GLADE_LIBS) $(ALSA_LIBS) $(LIBM_LIBS) $(LIBX11_LIBS) -lgthread-2.0 -export-dynamic diff --git a/veejay-current/veejay-client/src/callback.c b/veejay-current/veejay-client/src/callback.c deleted file mode 100644 index 18ead3ba..00000000 --- a/veejay-current/veejay-client/src/callback.c +++ /dev/null @@ -1,4886 +0,0 @@ -/* gveejay - Linux VeeJay - GVeejay GTK+-2/Glade User Interface - * (C) 2002-2015 Niels Elburg - * (C) 2006 Matthijs van Henten - * - * 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. - */ - -#include -#include -#include -#include -#include "callback.h" - -static int config_file_status = 0; -static gchar *config_file = NULL; -static int srt_locked_ = 0; -static int srt_seq_ = 0; - -static int bg_[4]; -static int fg_[4]; -static int ln_[4]; - -static int sample_calctime(); - -static void change_box_color_rgb( GtkWidget *box, int r, int g, int b,int a, int fill ); - -void text_defaults() -{ - bg_[0] = 255; bg_[1] = 255; bg_[2] = 255; bg_[3] = 0; - fg_[0] = 0; fg_[1] = 0; fg_[2] = 0; fg_[3] = 0; - ln_[0] = 200; ln_[1] = 255; ln_[1] = 255; ln_[3] = 0; - srt_seq_ = 0; -} - -void on_no_caching_clicked( GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_NO_CACHING ); -} - -void on_report_a_bug1_activate(GtkWidget *w, gpointer user_data ) -{ - reportbug(); -} -void on_donate_activate( GtkWidget *w, gpointer user_data ) { - donatenow(); -} -void on_button_085_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims(VIMS_VIDEO_SKIP_SECOND); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_SKIP_SECOND ); -} -void on_button_086_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims(VIMS_VIDEO_PREV_SECOND ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_PREV_SECOND ); - -} -void on_button_080_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims(VIMS_VIDEO_PLAY_FORWARD); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_PLAY_FORWARD ); - -} -void on_button_081_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims(VIMS_VIDEO_PLAY_BACKWARD); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_PLAY_BACKWARD ); -} -void on_button_082_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VIDEO_PLAY_STOP ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_PLAY_STOP ); -} -void on_button_083_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VIDEO_SKIP_FRAME ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_SKIP_FRAME ); -} -void on_button_084_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VIDEO_PREV_FRAME ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_PREV_FRAME ); -} -void on_button_087_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VIDEO_GOTO_START ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_GOTO_START ); -} -void on_button_088_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VIDEO_GOTO_END); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_VIDEO_GOTO_END ); -} - -void on_videobar_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gdouble slider_val = GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value; - gint val = 0; - switch(info->status_tokens[PLAY_MODE]) - { - case MODE_PLAIN: - val = slider_val * info->status_tokens[TOTAL_FRAMES]; - break; - case MODE_SAMPLE: - val = slider_val * (info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_START]); - val += info->status_tokens[SAMPLE_START]; - break; - default: - return; - } - multi_vims( VIMS_VIDEO_SET_FRAME, "%d", val ); - - vj_midi_learning_vims_simple( info->midi, "videobar", VIMS_VIDEO_SET_FRAME ); - } -} - -void on_subrender_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - multi_vims( VIMS_SUB_RENDER,"%d",0); -} - -void on_button_001_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_SET_PLAIN_MODE ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_SET_PLAIN_MODE ); -} - -void on_feedbackbutton_toggled( GtkWidget *widget, gpointer data ) -{ - if(!info->status_lock) { - int val = is_button_toggled( "feedbackbutton" ) ? 1:0; - multi_vims( VIMS_FEEDBACK, "%d", val ); - } -} - -static int follow_return_id = 0; -static int follow_return_type = 0; - -void on_fx_followfade_toggled( GtkWidget *widget, gpointer data ) -{ - int val = is_button_toggled( "fx_followfade" ) ? 1:0; - follow_return_id = info->status_tokens[CURRENT_ID]; - follow_return_type = info->status_tokens[PLAY_MODE]; - multi_vims( VIMS_CHAIN_FOLLOW_FADE,"%d", val ); -} - -void on_button_return_clicked( GtkWidget *widget, gpointer data) -{ - multi_vims( (follow_return_type == 0 ? VIMS_SAMPLE_SELECT: VIMS_STREAM_SELECT),"%d", follow_return_id ); -} - -void on_button_252_clicked( GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_DEBUG_LEVEL ); - if(is_button_toggled( "button_252" )) - vims_verbosity = 1; - else - vims_verbosity = 0; - vj_msg(VEEJAY_MSG_INFO, "%s debug information", - vims_verbosity ? "Displaying" : "Not displaying" ); -} - -void on_button_251_clicked( GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_BEZERK ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_BEZERK ); - vj_msg(VEEJAY_MSG_INFO, "Bezerk mode toggled"); -} - -void on_entry_samplename_button_clicked( GtkWidget *widget, gpointer user_data ) -{ - gchar *title = get_text( "entry_samplename" ); - multi_vims( VIMS_SAMPLE_SET_DESCRIPTION, "%d %s", 0,title ); - - //@ dont reload sample, print info to samplebank - int i,j; - for( i= 0; i < NUM_BANKS; i ++ ) - { - for( j = 0; j < NUM_SAMPLES_PER_PAGE ; j ++ ) - { - if( (info->sample_banks[i]->slot[j]->sample_id == - info->status_tokens[CURRENT_ID]) ) - { - gtk_frame_set_label( GTK_FRAME( info->sample_banks[i]->gui_slot[j]->frame ) , title ); - return; - } - } - } -} - -void on_button_054_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *ext = get_text( "screenshotformat" ); - if(ext) - { - gchar filename[100]; - sprintf(filename, "frame-%d.%s", info->status_tokens[FRAME_NUM] + 1 , ext); - gint w = get_nums("screenshot_width"); - gint h = get_nums("screenshot_height"); - multi_vims( VIMS_SCREENSHOT,"%d %d %s",w,h,filename ); - vj_msg(VEEJAY_MSG_INFO, "Requested screenshot '%s' of frame %d", - filename, info->status_tokens[FRAME_NUM] + 1 ); - } -} -void on_button_200_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_EFFECT_SET_BG ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_EFFECT_SET_BG ); - vj_msg(VEEJAY_MSG_INFO, - "Requested background mask of frame %d", - info->status_tokens[FRAME_NUM] + 1 ); -} -void on_button_5_4_clicked(GtkWidget *widget, gpointer user_data) -{ - if( is_button_toggled("button_5_4") ) - { - single_vims( VIMS_AUDIO_ENABLE ); - vj_msg(VEEJAY_MSG_INFO, "Audio is enabled"); - vj_midi_learning_vims_simple(info->midi, NULL, VIMS_AUDIO_ENABLE ); - } - else - { - single_vims( VIMS_AUDIO_DISABLE ); - vj_msg(VEEJAY_MSG_INFO, "Audio is disabled"); - vj_midi_learning_vims_simple(info->midi, NULL, VIMS_AUDIO_DISABLE ); - } - -} -void on_button_samplestart_clicked(GtkWidget *widget, gpointer user_data) -{ - info->sample[0] = info->status_tokens[FRAME_NUM]; - vj_msg(VEEJAY_MSG_INFO, "New sample startings position is %d", - info->sample[0] ); -} -void on_button_sampleend_clicked(GtkWidget *widget, gpointer user_data) -{ - info->sample[1] = info->status_tokens[FRAME_NUM]; - multi_vims( VIMS_SAMPLE_NEW, "%d %d", info->sample[0],info->sample[1]); - vj_msg(VEEJAY_MSG_INFO, "New sample from EditList %d - %d", - info->sample[0], info->sample[1]); - gveejay_new_slot(MODE_SAMPLE); -} - -void on_button_veejay_clicked(GtkWidget *widget, gpointer user_data) -{ -#ifdef STRICT_CHECKING - //assert( info->watch.state == STATE_WAIT_FOR_USER ); -#endif - info->watch.state = STATE_CONNECT; -} -void on_button_sendvims_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *text = get_text("vimsmessage"); - if(strncasecmp( text, "600:;",5 ) == 0) - veejay_quit(); - vj_msg(VEEJAY_MSG_INFO, "User defined VIMS message sent '%s'",text ); - msg_vims( text ); -} -void on_vimsmessage_activate(GtkWidget *widget, gpointer user_data) -{ - msg_vims( get_text( "vimsmessage") ); - vj_midi_learning_vims( info->midi, NULL, get_text("vimsmessage"),0); - vj_msg(VEEJAY_MSG_INFO, "User defined VIMS message sent '%s'", get_text("vimsmessage")); -} - -void on_button_fadedur_value_changed(GtkWidget *widget, gpointer user_data) -{ - -} - -void on_toggle_fademethod_toggled(GtkWidget *w, gpointer user_data) -{ - if(info->status_lock) - return; - - multi_vims( VIMS_CHAIN_FADE_ALPHA,"%d %d",0, is_button_toggled("toggle_fademethod") ); -} - -/* 0 = normal chain fade - * 1 = source entry FX - * 2 = source mixing B - */ - -void on_fx_m2_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - multi_vims( VIMS_CHAIN_FADE_METHOD, "%d %d",0, 2 ); - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d", 0, info->uc.selected_chain_entry ); -} - -void on_fx_m1_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - multi_vims( VIMS_CHAIN_FADE_METHOD, "%d %d",0, 1); - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d",0, info->uc.selected_chain_entry); -} - -void on_fx_m3_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - multi_vims( VIMS_CHAIN_FADE_METHOD, "%d %d",0, 3); - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d", 0, info->uc.selected_chain_entry ); -} - -void on_fx_m4_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - multi_vims( VIMS_CHAIN_FADE_METHOD, "%d %d",0, 4); - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d", 0, info->uc.selected_chain_entry ); -} -void on_fx_mnone_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - multi_vims( VIMS_CHAIN_FADE_METHOD, "%d %d",0, 0); - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d", 0, -1); -} - -void on_button_fadeout_clicked(GtkWidget *w, gpointer user_data) -{ - gint num = (gint)get_numd( "button_fadedur"); - char *timenow = format_time( num, info->el.fps ); - int vims_id = is_button_toggled( "toggle_fademethod" ) ? VIMS_CHAIN_FADE_OUT: VIMS_CHAIN_FADE_IN; - multi_vims( vims_id, "0 %d", num ); - vj_midi_learning_vims_complex( info->midi, "button_fadedur", vims_id, 0, num ); - vj_msg(VEEJAY_MSG_INFO, "Fade out duration %s (frames %d)",timenow,num ); - if(timenow) free(timenow); -} - -void on_button_fadein_clicked(GtkWidget *w, gpointer user_data) -{ - gint num = (gint)get_numd( "button_fadedur"); - char *timenow = format_time( num, info->el.fps ); - int vims_id = is_button_toggled( "toggle_fademethod" ) ? VIMS_CHAIN_FADE_IN: VIMS_CHAIN_FADE_OUT; - multi_vims( vims_id, "0 %d", num ); - vj_midi_learning_vims_complex( info->midi, "button_fadedur",vims_id, 0,num ); - vj_msg(VEEJAY_MSG_INFO, "Fade in duration %s (frames %d)",timenow,num ); - if(timenow) free(timenow); -} - -void on_manualopacity_value_changed(GtkWidget *w, gpointer user_data) -{ - if(info->status_lock) - return; - - gdouble val = GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - int mode = is_button_toggled("toggle_fademethod"); - int value = ( mode == 1 ? 0xff - (int) val : (int) val ); - - multi_vims( VIMS_CHAIN_MANUAL_FADE, "0 %d", value ); - - vj_midi_learning_vims_complex( info->midi, "manualopacity", VIMS_CHAIN_FADE_IN, 0,1 ); - - vj_msg(VEEJAY_MSG_INFO, "FX Opacity set to %1.2f", val ); -} - -static void el_selection_update() -{ - gchar *text = format_selection_time(info->selection[0], info->selection[1]); - update_label_str( "label_el_selection", text ); - vj_msg( VEEJAY_MSG_INFO, "Updated EditList selection %d - %d Timecode: %s", - info->selection[0], info->selection[1], text ); - g_free(text); -} - -void on_button_el_selstart_value_changed(GtkWidget *w, gpointer user_data) -{ - info->selection[0] = get_nums("button_el_selstart"); - if( info->selection[0] > info->selection[1]) - update_spin_value( "button_el_selend", info->selection[0]); - char *text = format_time( info->selection[0], info->el.fps ); - update_label_str( "label_el_startpos", text); - free(text); - el_selection_update(); -} - -void on_button_el_selend_value_changed(GtkWidget *w, gpointer user_data) -{ - info->selection[1] = get_nums( "button_el_selend" ); - if(info->selection[1] < info->selection[0]) - update_spin_value( "button_el_selstart", info->selection[1]); - char *text = format_time( info->selection[1], info->el.fps); - update_label_str( "label_el_endpos", text); - free(text); - el_selection_update(); -} - -static gboolean verify_selection() -{ - if( (info->selection[1] - info->selection[0] ) <= 0) - { - vj_msg(VEEJAY_MSG_ERROR, "Invalid EditList selection %d - %d", - info->selection[0], info->selection[1]); - return FALSE; - } - return TRUE; -} - -void on_button_el_cut_clicked(GtkWidget *w, gpointer *user_data) -{ - if(verify_selection()) - { multi_vims( VIMS_EDITLIST_CUT, "%d %d", - info->selection[0], info->selection[1]); - char *time1 = format_time( info->selection[0], info->el.fps ); - char *time2 = format_time( info->selection[1], info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Cut %s - %s from EditList to buffer", - time1, time2 ); - free(time1); - free(time2); - info->uc.reload_hint[HINT_EL] = 1; - } -} -void on_button_el_del_clicked(GtkWidget *w, gpointer *user_data) -{ - if(verify_selection()) - { - multi_vims( VIMS_EDITLIST_DEL, "%d %d", - info->selection[0], info->selection[1]); - char *time1 = format_time( info->selection[0],info->el.fps ); - char *time2 = format_time( info->selection[1],info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Delete %s - %s from EditList", - time1, time2 ); - free(time1); - free(time2); - update_spin_value( "button_el_selstart", 0 ); - update_spin_value( "button_el_selend", 0); - } -} -void on_button_el_crop_clicked(GtkWidget *w, gpointer *user_data) -{ - if(verify_selection()) - { - multi_vims( VIMS_EDITLIST_CROP, "%d %d", - info->selection[0], info->selection[1]); - char *total = format_time( info->status_tokens[TOTAL_FRAMES],info->el.fps ); - char *time2 = format_time( info->selection[1],info->el.fps ); - char *time1 = format_time( info->selection[0],info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Delete 00:00:00 - %s and %s - %s from EditList", - time1, time2, total ); - free(time1); - free(time2); - free(total); - - } -} -void on_button_el_copy_clicked(GtkWidget *w, gpointer *user_data) -{ - if(verify_selection()) - { - multi_vims( VIMS_EDITLIST_COPY, "%d %d", - info->selection[0], info->selection[1] ); - char *time1 = format_time( info->selection[0],info->el.fps ); - char *time2 = format_time( info->selection[1],info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Copy %s - %s to buffer", - time1,time2); - free(time1); - free(time2); - } -} - -void on_button_el_newclip_clicked(GtkWidget *w, gpointer *user) -{ - if(verify_selection()) - { - multi_vims( VIMS_SAMPLE_NEW, "%d %d", - info->selection[0], info->selection[1] ); - vj_msg(VEEJAY_MSG_INFO, "New sample from EditList %d - %d" , - info->selection[0], info->selection[1] ); - gveejay_new_slot(MODE_SAMPLE); - } -} - -void on_button_el_pasteat_clicked(GtkWidget *w, gpointer *user_data) -{ - gint val = get_nums( "button_el_selpaste" ); - info->selection[2] = val; - multi_vims( VIMS_EDITLIST_PASTE_AT, "%d", - info->selection[2]); - char *time1 = format_time( info->selection[2],info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Paste contents from buffer to frame %d (timecode %s)", - info->selection[2], time1); - free(time1); - info->uc.reload_hint[HINT_EL] = 1; - -} -void on_button_el_save_clicked(GtkWidget *w, gpointer *user_data) -{ - gchar *filename = dialog_save_file( "Save EditList" ); - if(filename) - { - multi_vims( VIMS_EDITLIST_SAVE, "%s %d %d", - filename, 0, info->el.num_frames ); - vj_msg(VEEJAY_MSG_INFO, "Saved EditList to %s", filename); - g_free(filename); - } -} -void on_button_el_savesel_clicked(GtkWidget *w, gpointer *user_data) -{ - gchar *filename = dialog_save_file( "Save EditList Selection" ); - if(filename) - { - gint start = get_nums( "button_el_selstart" ); - gint end = get_nums( "button_el_selend" ); - multi_vims( VIMS_EDITLIST_SAVE, "%s %d %d", - filename, start, end ); - vj_msg(VEEJAY_MSG_INFO,"Save EditList selection to %s", filename); - g_free(filename); - } -} - -void on_button_el_add_clicked(GtkWidget *w, gpointer *user_data) -{ - gchar *filename = dialog_open_file( "Append videofile to EditList",0 ); - if(filename) - { - multi_vims( VIMS_EDITLIST_ADD, "%s", - filename ); - vj_msg(VEEJAY_MSG_INFO, "Try to add file '%s' to EditList", filename); - g_free(filename); - } -} -void on_button_el_addsample_clicked(GtkWidget *w, gpointer *user_data) -{ - gchar *filename = dialog_open_file( "Append videofile (and create sample)",0); - if( !filename ) - return; - - multi_vims( VIMS_EDITLIST_ADD_SAMPLE, "%d %s", 0, filename ); - g_free(filename); -} - -void on_button_el_delfile_clicked(GtkWidget *w, gpointer *user_data) -{ - int frame = _el_ref_start_frame( info->uc.selected_el_entry ); - int first_frame = frame; - int last_frame = _el_ref_end_frame( info->uc.selected_el_entry ); - multi_vims( VIMS_EDITLIST_DEL, "%d %d", first_frame, last_frame ); - char *time1 = format_time( first_frame,info->el.fps ); - char *time2 = format_time( last_frame,info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Delete %s - %s", - time1,time2); - free(time1); - free(time2); -} -void on_button_fx_clearchain_clicked(GtkWidget *w, gpointer user_data) -{ - multi_vims( VIMS_CHAIN_CLEAR, "%d",0); - info->uc.reload_hint[HINT_CHAIN] = 1; - info->uc.reload_hint[HINT_ENTRY] = 1; - vj_midi_learning_vims_msg( info->midi, NULL, VIMS_CHAIN_CLEAR,0 ); - vj_msg(VEEJAY_MSG_INFO, "Clear FX Chain"); -} - -void on_button_entry_toggle_clicked(GtkWidget *w, gpointer user_data) -{ - if(!info->status_lock) - { - gint val = is_button_toggled( "button_entry_toggle" ); - int vims_id = VIMS_CHAIN_ENTRY_SET_VIDEO_OFF; - if(val) - vims_id = VIMS_CHAIN_ENTRY_SET_VIDEO_ON; - multi_vims( vims_id,"%d %d", 0, info->uc.selected_chain_entry ); - - vj_midi_learning_vims_msg2( info->midi, NULL, vims_id, 0, info->uc.selected_chain_entry ); - vj_msg(VEEJAY_MSG_INFO, "Chain Entry %d is %s", - info->uc.selected_chain_entry, - (val ? "Enabled" : "Disabled" )); - info->uc.reload_hint[HINT_ENTRY] = 1; - } -} - -void on_button_fx_entry_value_changed(GtkWidget *w, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_CHAIN_SET_ENTRY, "%d", - (gint) gtk_spin_button_get_value( GTK_SPIN_BUTTON(w)) - ); - vj_midi_learning_vims_spin( info->midi, "button_fx_entry", VIMS_CHAIN_SET_ENTRY ); - } -} - -void on_button_fx_del_clicked(GtkWidget *w, gpointer user_data) -{ - multi_vims( VIMS_CHAIN_ENTRY_CLEAR, "%d %d", 0, - info->uc.selected_chain_entry ); - info->uc.reload_hint[HINT_ENTRY] = 1; - info->uc.reload_hint[HINT_CHAIN] = 1; - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_CHAIN_ENTRY_CLEAR, 0, info->uc.selected_chain_entry ); - vj_msg(VEEJAY_MSG_INFO, "Clear Effect from Entry %d", - info->uc.selected_chain_entry); -} - -static void gen_changed( int num, int value ) -{ - int i; - int values[16]; - - if(!info->status_lock && !info->parameter_lock) - { - info->parameter_lock = 1; - - for( i = 0; gen_names_[i].text != NULL; i ++ ) { - if( num == i ) { - values[num] = value; - } - else { - GtkWidget *w = glade_xml_get_widget( info->main_window, gen_names_[i].text ); - values[i] = (gint) GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - } - } - - char line[255]; - snprintf(line,sizeof(line), "%d:0 %d %d %d %d %d %d %d %d %d %d;", - VIMS_STREAM_SET_ARG, - values[0],values[1],values[2],values[3],values[4],values[5], - values[6],values[7],values[8],values[9]); - msg_vims(line); - - info->parameter_lock = 0; - } - -} - -static void genv_changed( int num, int value, const char *selected ) -{ - int i; - int values[16]; - - if(!info->status_lock && !info->parameter_lock) - { - info->parameter_lock = 1; - - for( i = 0; gen_names_[i].text != NULL; i ++ ) { - GtkWidget *w = glade_xml_get_widget( info->main_window, gen_names_[i].text ); - - if( num == i ) { - update_slider_value( gen_names_[i].text, (get_slider_val(gen_names_[i].text) + value), 0 );\ - values[i] = (gint) GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - } - else { - values[i] = (gint) GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - } - } - - char line[255]; - snprintf(line,sizeof(line), "%d:0 %d %d %d %d %d %d %d %d %d %d;", - VIMS_STREAM_SET_ARG, - values[0],values[1],values[2],values[3],values[4],values[5], - values[6],values[7],values[8],values[9]); - msg_vims(line); - - info->parameter_lock = 0; - } -} - -void on_slider_p0_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 0, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p1_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 1, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p2_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 2, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p3_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 3, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p4_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 4, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p5_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 5, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p6_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 6, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p7_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 7, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p8_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 8, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p9_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 9, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_slider_p10_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 10, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p11_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 11, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p12_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 12, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p13_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 13, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p14_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 14, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void on_slider_p15_value_changed(GtkWidget *w, gpointer user_data) -{ - SLIDER_CHANGED( 15, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_inc_p0_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 0, 1 , "slider_p0" ); -} -void on_dec_p0_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 0, -1, "slider_p0"); -} -void on_inc_p1_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 1, 1 , "slider_p1" ); -} -void on_dec_p1_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 1, -1, "slider_p1"); - -} -void on_inc_p2_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 2, 1 , "slider_p2" ); -} -void on_dec_p2_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 2, -1, "slider_p2"); -} -void on_inc_p3_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 3, 1 , "slider_p3" ); -} - void on_dec_p3_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 3, -1, "slider_p3"); -} -void on_inc_p4_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(4, 1 , "slider_p4" ); -} -void on_dec_p4_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 4, -1, "slider_p4"); -} - -void on_inc_p5_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(5, 1 , "slider_p5" ); -} -void on_dec_p5_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 5, -1, "slider_p5"); -} - -void on_inc_p6_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(6, 1 , "slider_p6" ); -} -void on_dec_p6_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 6, -1, "slider_p6"); -} - -void on_inc_p7_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(7, 1 , "slider_p7" ); -} -void on_dec_p7_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 7, -1, "slider_p7"); -} -void on_inc_p8_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(8, 1 , "slider_p8" ); -} -void on_dec_p8_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 8, -1, "slider_p8"); -} -void on_inc_p9_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(9, 1 , "slider_p9" ); -} -void on_dec_p9_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 9, -1, "slider_p9"); -} -void on_inc_p10_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(10, 1 , "slider_p10" ); -} -void on_dec_p10_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 10, -1, "slider_p10"); -} -void on_inc_p11_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(11, 1 , "slider_p11" ); -} -void on_dec_p11_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 11, -1, "slider_p11"); -} -void on_inc_p12_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(12, 1 , "slider_p12" ); -} -void on_dec_p12_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 12, -1, "slider_p12"); -} -void on_inc_p13_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(13, 1 , "slider_p13" ); -} -void on_dec_p13_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 13, -1, "slider_p13"); -} -void on_inc_p14_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(14, 1 , "slider_p14" ); -} -void on_dec_p14_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 14, -1, "slider_p14"); -} -void on_inc_p15_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED(15, 1 , "slider_p15" ); -} -void on_dec_p15_clicked(GtkWidget *w, gpointer user_data) -{ - PARAM_CHANGED( 15, -1, "slider_p15"); -} - -void slider_g0_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 0, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g1_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 1, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g2_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 2, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g3_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 3, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g4_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 4, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g5_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 5, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g6_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 6, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g7_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 7, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void slider_g8_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 8, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g9_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 9, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} -void slider_g10_value_changed(GtkWidget *w, gpointer user_data) -{ - gen_changed( 10, (gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value ); -} - -void on_inc_g0_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(0, 1 , "slider_g0" ); -} -void on_dec_g0_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(0, -1, "slider_g0"); -} - -void on_inc_g1_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(1, 1 , "slider_g1" ); -} -void on_dec_g1_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(1, -1, "slider_g1"); -} - -void on_inc_g2_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(2, 1 , "slider_g2" ); -} -void on_dec_g2_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(2, -1, "slider_g2"); -} -void on_inc_g3_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(3, 1 , "slider_g3" ); -} -void on_dec_g3_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(3, -1, "slider_g3"); -} -void on_inc_g4_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(4, 1 , "slider_g4" ); -} -void on_dec_g4_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(4, -1, "slider_g4"); -} -void on_inc_g5_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(5, 1 , "slider_g5" ); -} -void on_dec_g5_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(5, -1, "slider_g5"); -} -void on_inc_g6_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(6, 1 , "slider_g6" ); -} -void on_dec_g6_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(6, -1, "slider_g6"); -} -void on_inc_g7_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(7, 1 , "slider_g7" ); -} -void on_dec_g7_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(7, -1, "slider_g7"); -} -void on_inc_g8_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(8, 1 , "slider_g8" ); -} -void on_dec_g8_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(8, -1, "slider_g8"); -} -void on_inc_g9_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(9, 1 , "slider_g9" ); -} -void on_dec_g9_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(9, -1, "slider_g9"); -} -void on_inc_g10_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(10, 1 , "slider_g9" ); -} -void on_dec_g10_clicked(GtkWidget *w, gpointer user_data) -{ - genv_changed(10, -1, "slider_g9"); -} - - - - - -void on_button_stoplaunch_clicked(GtkWidget *widget, gpointer user_data) -{ - if( info->watch.state == STATE_PLAYING) - { - info->watch.state = STATE_DISCONNECT; - } -} - -void on_button_sample_play_clicked(GtkWidget *widget, gpointer user_data) -{ - if(info->selection_slot) - { - multi_vims( VIMS_SET_MODE_AND_GO , "%d %d" , - (info->selection_slot->sample_type == MODE_SAMPLE ? MODE_SAMPLE : MODE_STREAM), - info->selection_slot->sample_id ); - - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SET_MODE_AND_GO, - (info->selection_slot->sample_type == MODE_SAMPLE ? MODE_SAMPLE : MODE_STREAM ), - info->selection_slot->sample_id ); - } -} -void on_button_sample_del_clicked(GtkWidget *widget, gpointer user_data) -{ - if( info->selection_slot ) - remove_sample_from_slot(); -} -void on_button_samplelist_load_clicked(GtkWidget *widget, gpointer user_data) -{ - gint erase_all = 0; - if(info->status_tokens[TOTAL_SLOTS] > 0 ) - { - if(prompt_dialog("Load samplelist", - "Loading a samplelist will delete any existing samples" ) == GTK_RESPONSE_REJECT) - return; - else - erase_all = 1; - } - - gchar *filename = dialog_open_file( "Open samplelist",1); - if(filename) - { - if(erase_all) - { - info->uc.reload_hint[HINT_SLIST] = 2; /* with bank reset */ - single_vims( VIMS_SAMPLE_DEL_ALL ); - } - multi_vims( VIMS_SAMPLE_LOAD_SAMPLELIST, "%s", filename ); - - g_free(filename ); - } -} -static char samplelist_name[1024]; -static int has_samplelist_name = 0; - -void on_button_samplelist_save_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_save_file( "Save samplelist"); - if(filename) - { - multi_vims( VIMS_SAMPLE_SAVE_SAMPLELIST, "%s", filename ); - vj_msg(VEEJAY_MSG_INFO, "Saved samples to %s", filename); - strncpy( samplelist_name, filename,strlen(filename)); - has_samplelist_name = 1; - g_free(filename); - } -} - -gboolean on_button_samplelist_qsave_clicked(GtkWidget *widget, GdkEvent *event, gpointer user_data) -{ - //save as if shift click - if(event && ((GdkEventButton *) event)->state & GDK_SHIFT_MASK) { - has_samplelist_name = 0; - } - - if( has_samplelist_name == 0 ) { - gchar *filename = dialog_save_file( "Save samplelist"); - if(filename) - { - multi_vims( VIMS_SAMPLE_SAVE_SAMPLELIST, "%s", filename ); - vj_msg(VEEJAY_MSG_INFO, "Saved samples to %s", filename); - strncpy( samplelist_name, filename, strlen(filename)); - g_free(filename); - has_samplelist_name = 1; - } - } - else { - multi_vims( VIMS_SAMPLE_SAVE_SAMPLELIST, "%s" , samplelist_name ); - vj_msg(VEEJAY_MSG_INFO, "Quick saved samples to %s" , samplelist_name ); - } - return TRUE; -} - - -void on_spin_samplestart_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gint value = (gint) gtk_spin_button_get_value( GTK_SPIN_BUTTON(widget) ); - char *time1 = format_time(value,info->el.fps); - multi_vims(VIMS_SAMPLE_SET_START, "%d %d",0, value ); - vj_msg(VEEJAY_MSG_INFO, "Set sample's starting position to %d (timecode %s)", - value, time1); - free(time1); - } -} - -void on_spin_sampleend_value_changed( GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gint value = (gint) gtk_spin_button_get_value( GTK_SPIN_BUTTON(widget) ); - char *time1 = format_time(value,info->el.fps); - - multi_vims(VIMS_SAMPLE_SET_END, "%d %d", 0, value ); - vj_msg(VEEJAY_MSG_INFO, "Set sample's ending position to %d (timecode %s)", - value, time1); - free(time1); - - } -} - -void on_slow_slider_value_changed( GtkWidget *widget, gpointer user_data ) -{ - if(!info->status_lock) { - gint value = (gint) get_slider_val("slow_slider"); - multi_vims(VIMS_VIDEO_SET_SLOW, "%d", value ); - value ++; - vj_msg(VEEJAY_MSG_INFO, "Slow video to %2.2f fps", - info->el.fps / (float) value ); - vj_midi_learning_vims_simple(info->midi, "slow_slider",VIMS_VIDEO_SET_SLOW); - } -} - - -void on_speed_slider_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gint value = (gint) get_slider_val( "speed_slider" ); - // value *= info->play_direction; - multi_vims( VIMS_VIDEO_SET_SPEED, "%d", value ); - vj_msg(VEEJAY_MSG_INFO, "Change video playback speed to %d", - value ); - vj_midi_learning_vims_simple( info->midi, "speed_slider", VIMS_VIDEO_SET_SPEED ); - } -} - -void on_spin_samplespeed_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gint value = (gint) gtk_spin_button_get_value( GTK_SPIN_BUTTON(widget) ); - value *= info->play_direction; - multi_vims( VIMS_SAMPLE_SET_SPEED, "%d %d",0, value ); - vj_midi_learning_vims_complex( info->midi, "spin_samplespeed", VIMS_SAMPLE_SET_SPEED,0,2 ); - vj_msg(VEEJAY_MSG_INFO, "Change video playback speed to %d", - value ); - } -} - -void on_v4l_brightness_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_BRIGHTNESS, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - vj_midi_learning_vims_complex( info->midi, "v4l_brightness", VIMS_STREAM_SET_BRIGHTNESS, info->selected_slot->sample_id, - 1 ); - } -} - -void on_v4l_contrast_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_CONTRAST, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0 ) ); - vj_midi_learning_vims_complex( info->midi, "v4l_contrast", VIMS_STREAM_SET_CONTRAST, info->selected_slot->sample_id, - 1 ); - - } -} - -void on_v4l_hue_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_HUE, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0 ) ); - vj_midi_learning_vims_complex( info->midi, "v4l_hue", VIMS_STREAM_SET_HUE, info->selected_slot->sample_id, - 1 ); - - } -} - -void on_v4l_gamma_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_WHITE, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0 ) ); - vj_midi_learning_vims_complex( info->midi, "v4l_white", VIMS_STREAM_SET_WHITE, info->selected_slot->sample_id, - 1 ); - - } -} - -void on_v4l_color_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_COLOR, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - vj_midi_learning_vims_complex( info->midi, "v4l_color", VIMS_STREAM_SET_COLOR, info->selected_slot->sample_id, - 1 ); - - } -} -void on_v4l_saturation_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_SATURATION, "%d %d", - info->selected_slot->sample_id, - (gint) (GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - vj_midi_learning_vims_complex( info->midi, "v4l_saturation", VIMS_STREAM_SET_SATURATION, info->selected_slot->sample_id, - 1 ); - - } -} - -/* no midi support yet for the following v4l controls (FIXME) */ -void on_v4l_gain_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d gain", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_redbalance_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d red_balance", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_bluebalance_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d blue_balance", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_greenbalance_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d green_balance", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_sharpness_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d sharpness", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_backlightcompensation_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d bl_compensate", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_temperature_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d temperature", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_exposure_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d exposure", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_whiteness_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d whiteness", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_v4l_black_level_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d black_level", info->selected_slot->sample_id,(int)(GTK_ADJUSTMENT(GTK_RANGE(widget)->adjustment)->value * 65535.0) ); - } -} -void on_check_autogain_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d auto_gain", info->selected_slot->sample_id,is_button_toggled("check_autogain")); - } -} -void on_check_autohue_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d auto_hue", info->selected_slot->sample_id,is_button_toggled("check_autohue")); - } -} -void on_check_flip_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d fliph", info->selected_slot->sample_id,is_button_toggled("check_flip")); - } -} -void on_check_flipv_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d flipv", info->selected_slot->sample_id,is_button_toggled("check_flipv")); - } -} -void on_check_autowhitebalance_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_STREAM_SET_V4LCTRL, "%d %d auto_white", info->selected_slot->sample_id,is_button_toggled("chekc_autowhitebalance")); - } -} - - -#ifndef HAVE_GTK2_6 -static gchar *my_gtk_combo_box_get_active_text(GtkComboBox *combo ) -{ - GtkTreeIter _iter = { 0 }; - gchar *_format = NULL; - GtkTreeModel *_model=NULL; - g_return_val_if_fail( GTK_IS_COMBO_BOX(combo),NULL); - _model = gtk_combo_box_get_model(combo); -g_return_val_if_fail( GTK_IS_LIST_STORE(_model),NULL); - if(gtk_combo_box_get_active_iter(combo,&_iter)) - gtk_tree_model_get(_model, &_iter,0,&_format,-1); - return _format; -} -#define gtk_combo_box_get_active_text( combo ) my_gtk_combo_box_get_active_text(combo) -#endif - -void on_button_seq_clearall_clicked( GtkWidget *w, gpointer data ) -{ - multi_vims( VIMS_SEQUENCE_DEL, "-1"); - int slot; - for (slot = 0; slot < info->sequencer_col * info->sequencer_row ; slot++) - { - gtk_label_set_text(GTK_LABEL(info->sequencer_view->gui_slot[slot]->image), - NULL ); - } - vj_msg(VEEJAY_MSG_INFO, "Sequencer cleared"); -} - -void on_seq_rec_stop_clicked( GtkWidget *w, gpointer data ) -{ - single_vims( VIMS_SAMPLE_REC_STOP ); -} - -void on_rec_seq_start_clicked( GtkWidget *w, gpointer data ) -{ - GtkComboBox *combo = GTK_COMBO_BOX( GTK_WIDGET(glade_xml_get_widget(info->main_window,"combo_samplecodec"))); - gchar *gformat = (gchar*)gtk_combo_box_get_active_text(combo) ; - gchar *format = gformat; - if(format != NULL && strlen(format) > 2) - { - multi_vims( VIMS_RECORD_DATAFORMAT,"%s", - format ); - } - else - { - format = NULL; - } - - multi_vims( VIMS_SAMPLE_REC_START, - "%d %d", - 0, - 0 ); - - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SAMPLE_REC_START, 0, 0 ); -} - -void on_stream_recordstart_clicked(GtkWidget *widget, gpointer user_data) -{ - - gint nframes = get_nums( "spin_streamduration"); - gint autoplay = is_button_toggled("button_stream_autoplay"); - GtkComboBox *combo = GTK_COMBO_BOX( GTK_WIDGET(glade_xml_get_widget(info->main_window,"combo_streamcodec"))); - gchar *gformat = (gchar*)gtk_combo_box_get_active_text(combo) ; - gchar *format = gformat; - if(format != NULL && strlen(format) > 2) - { - multi_vims( VIMS_RECORD_DATAFORMAT,"%s", - format ); - } - else - { - format = NULL; - } - - multi_vims( VIMS_STREAM_REC_START, - "%d %d", - nframes, - autoplay ); - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_STREAM_REC_START, nframes, autoplay ); - - char *time1 = format_time( nframes,info->el.fps ); - if(format) - vj_msg(VEEJAY_MSG_INFO, "Record in %s, duration: %s",format, time1); - else - vj_msg(VEEJAY_MSG_INFO, "Recording in default format (MJPEG) , duration: %s", time1); - - free(time1); - g_free(format); -} - -void on_stream_recordstop_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_STREAM_REC_STOP ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_STREAM_REC_STOP ); - vj_msg(VEEJAY_MSG_INFO, "Stream record stop"); -} - -void on_spin_streamduration_value_changed(GtkWidget *widget , gpointer user_data) -{ - gint n_frames = get_nums( "spin_streamduration" ); - char *time = format_time(n_frames,info->el.fps); - update_label_str( "label_streamrecord_duration", time ); - free(time); -} - -void on_new_avformat_stream_clicked(GtkWidget *wid, gpointer data) -{ - char *url = get_text("inputstream_filename"); - multi_vims(VIMS_STREAM_NEW_AVFORMAT, "%s", url); - gveejay_new_slot(MODE_STREAM); -} - -void on_new_shm_stream_clicked(GtkWidget *wid, gpointer data) -{ - char *port = get_text("shm_text_port"); - multi_vims( VIMS_STREAM_NEW_SHARED, "%s", port ); - gveejay_new_slot(MODE_STREAM); -} - -void on_shm_3490_clicked(GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_STREAM_NEW_SHARED, "%d", 3490 ); - gveejay_new_slot(MODE_STREAM); -} - -void on_shm_4490_clicked(GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_STREAM_NEW_SHARED, "%d", 4490 ); - gveejay_new_slot(MODE_STREAM); -} -void on_shm_5490_clicked(GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_STREAM_NEW_SHARED, "%d", 5490 ); - gveejay_new_slot(MODE_STREAM); -} -void on_shm_6490_clicked(GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_STREAM_NEW_SHARED, "%d", 6490 ); - gveejay_new_slot(MODE_STREAM); -} -void on_shm_7490_clicked(GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_STREAM_NEW_SHARED, "%d", 7490 ); - gveejay_new_slot(MODE_STREAM); -} - -void on_button_sample_recordstart_clicked(GtkWidget *widget, gpointer user_data) -{ - - gint autoplay = is_button_toggled("button_sample_autoplay"); - GtkComboBox *combo = GTK_COMBO_BOX( GTK_WIDGET(glade_xml_get_widget(info->main_window,"combo_samplecodec"))); - - gchar *format = (gchar*) gtk_combo_box_get_active_text(combo); - gint n_frames = 0; - - gint dur_val = get_nums( "spin_sampleduration" ); - if( is_button_toggled( "sample_mulloop" ) ) - { - int base = sample_calctime(); - n_frames = base * dur_val; - } - else - { - n_frames = dur_val; - } - - if(format != NULL) - { - multi_vims( VIMS_RECORD_DATAFORMAT,"%s", - format ); - } - - multi_vims( VIMS_SAMPLE_REC_START, - "%d %d", - n_frames, - autoplay ); - - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SAMPLE_REC_START, n_frames, autoplay ); - - char *time1 = format_time(n_frames,info->el.fps); - if( autoplay ) { - vj_msg(VEEJAY_MSG_INFO, "Recording %s from current sample, autoplaying new sample when finished.",time1); - } else { - vj_msg(VEEJAY_MSG_INFO,"Recording %s from current sample",time1); - } - free(time1); - g_free(format); -} - -void on_button_sample_recordstop_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_SAMPLE_REC_STOP ); - vj_midi_learning_vims_simple( info->midi, NULL, VIMS_SAMPLE_REC_STOP ); - vj_msg(VEEJAY_MSG_INFO, "Sample record stop"); -} - -static int sample_calctime() -{ - int n_frames = info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_START]; - if( info->status_tokens[SAMPLE_LOOP] == 2 ) - n_frames *= 2; - if( info->status_tokens[FRAME_DUP] > 0 ) - n_frames *= info->status_tokens[FRAME_DUP]; - return n_frames; -} - -void on_spin_sampleduration_value_changed(GtkWidget *widget , gpointer user_data) -{ - // get num and display label_samplerecord_duration - gint n_frames = sample_calctime(); - if( is_button_toggled( "sample_mulloop" )) - n_frames *= get_nums( "spin_sampleduration" ); - else - n_frames = get_nums( "spin_sampleduration" ); - char *time = format_time( n_frames,info->el.fps ); - update_label_str( "label_samplerecord_duration", time ); - free(time); -} - -void on_sample_mulloop_clicked(GtkWidget *w, gpointer user_data) -{ - gint n_frames = sample_calctime(); - if( is_button_toggled( "sample_mulloop" )) - n_frames *= get_nums( "spin_sampleduration"); - char *time = format_time( n_frames,info->el.fps ); - update_label_str( "label_samplerecord_duration", time ); - free(time); -} - -void on_sample_mulframes_clicked(GtkWidget *w, gpointer user_data) -{ - gint n_frames = get_nums( "spin_sampleduration" ); - char *time = format_time( n_frames,info->el.fps ); - update_label_str( "label_samplerecord_duration", time ); - free(time); -} - -void on_spin_mudplay_value_changed(GtkWidget *widget, gpointer user_data) -{ -} -void on_check_samplefx_clicked(GtkWidget *widget , gpointer user_data) -{ - if(!info->status_lock) - { - int vims_id = VIMS_SAMPLE_CHAIN_DISABLE; - - if( is_button_toggled( "check_samplefx" ) ) - vims_id = VIMS_SAMPLE_CHAIN_ENABLE; - multi_vims( vims_id, "%d", 0 ); - - vj_midi_learning_vims_msg( info->midi, NULL, vims_id, 0 ); - } -} -void on_check_streamfx_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - int vims_id = VIMS_STREAM_CHAIN_DISABLE; - if( is_button_toggled( "check_streamfx")) - vims_id = VIMS_STREAM_CHAIN_ENABLE; - multi_vims( vims_id, "%d", 0 ); - vj_midi_learning_vims_msg( info->midi, NULL, vims_id, 0 ); - } -} - -void on_loop_none_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_SAMPLE_SET_LOOPTYPE, - "%d %d", 0, 0 ); - vj_midi_learning_vims_msg2(info->midi,NULL,VIMS_SAMPLE_SET_LOOPTYPE,0,0 ); - } -} - -void on_loop_normal_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_SAMPLE_SET_LOOPTYPE, - "%d %d", 0, 1 ); - vj_midi_learning_vims_msg2(info->midi,NULL,VIMS_SAMPLE_SET_LOOPTYPE,0,1 ); - } -} -void on_loop_random_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims( VIMS_SAMPLE_SET_LOOPTYPE, - "%d %d", 0,3 ); - vj_midi_learning_vims_msg2(info->midi,NULL,VIMS_SAMPLE_SET_LOOPTYPE,0,3 ); - - } -} - -void on_loop_pingpong_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { multi_vims( VIMS_SAMPLE_SET_LOOPTYPE, - "%d %d", 0,2 ); - vj_midi_learning_vims_msg2(info->midi,NULL,VIMS_SAMPLE_SET_LOOPTYPE,0,2 ); - - } -} - -void on_loop_oncenop_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - multi_vims(VIMS_SAMPLE_SET_LOOPTYPE,"%d %d",0,4); - vj_midi_learning_vims_msg2(info->midi,NULL,VIMS_SAMPLE_SET_LOOPTYPE,0,4); - } -} - -/* -void on_check_marker_bind_clicked(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - timeline_set_bind( info->tl, is_button_toggled("check_marker_bind")); -}*/ - -void on_button_clearmarker_clicked(GtkWidget *widget, gpointer user_data) -{ - multi_vims( VIMS_SAMPLE_CLEAR_MARKER, "%d", 0 ); - vj_midi_learning_vims_msg( info->midi, NULL, VIMS_SAMPLE_CLEAR_MARKER, 0 ); - char *dur = format_time( 0,info->el.fps ); - update_label_str( "label_markerduration", dur ); - free(dur); -} - - -void on_check_audio_mute_clicked(GtkWidget *widget, gpointer user_data) -{ -} -void on_button_samplelist_open_clicked(GtkWidget *widget, gpointer user_data) -{ - if(info->status_tokens[TOTAL_SLOTS] > 0 ) - { - vj_msg(VEEJAY_MSG_WARNING, "Any existing samples will be deleted."); - } - - gchar *filename = dialog_open_file( "Open samplelist",1); - if(filename) - { - single_vims( VIMS_SAMPLE_DEL_ALL ); - multi_vims( VIMS_SAMPLE_LOAD_SAMPLELIST, "%s", filename ); - info->uc.reload_hint[HINT_SLIST] = 2; - g_free(filename ); - } -} -void on_button_samplelist_append_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Append a samplelist",1); - if(filename) - { - multi_vims( VIMS_SAMPLE_LOAD_SAMPLELIST, "%s", filename ); - g_free(filename ); - } -} -void on_veejay_expander_activate(GtkWidget *exp, gpointer user_data) -{ -} -void on_veejay_ctrl_expander_activate(GtkWidget *exp, gpointer user_data) -{ - gint width= 0; - gint height = 0; - - GtkWindow *window = GTK_WINDOW( glade_xml_get_widget_( info->main_window, "gveejay_window")); - - gtk_window_get_size( window, &width, &height ); - - if(!gtk_expander_get_expanded(GTK_EXPANDER(exp))) - { - gtk_widget_set_size_request( - glade_xml_get_widget_(info->main_window, "veejaypanel" ), - width, - 400 ); - - gtk_window_resize( window, width, 600 ); - - } - else - { - gtk_widget_set_size_request( - glade_xml_get_widget_(info->main_window, "veejaypanel" ), - width, - 0 ); - gtk_window_resize( window, width, 100 ); - } -} - -void on_button_el_takestart_clicked(GtkWidget *widget, gpointer user_data) -{ - update_spin_value( "button_el_selstart", - info->status_tokens[FRAME_NUM] ); - vj_msg(VEEJAY_MSG_INFO, "Set current frame %d as editlist starting position", - info->status_tokens[FRAME_NUM]); -} -void on_button_el_takeend_clicked(GtkWidget *widget, gpointer user_data) -{ - update_spin_value ("button_el_selend", - info->status_tokens[FRAME_NUM] ); - vj_msg(VEEJAY_MSG_INFO, "Set current frame %d as editlist ending position", - info->status_tokens[FRAME_NUM]); -} -void on_button_el_paste_clicked(GtkWidget *widget, gpointer user_data) -{ - multi_vims( VIMS_EDITLIST_PASTE_AT, "%d", - info->status_tokens[FRAME_NUM] ); - char *time1 = format_time( info->status_tokens[FRAME_NUM],info->el.fps ); - vj_msg(VEEJAY_MSG_INFO, "Paste contents of buffer at Frame %d (Tiemcode %s)", - info->status_tokens[FRAME_NUM], time1); - free(time1); -} -void on_new_colorstream_clicked(GtkWidget *widget, gpointer user_data) -{ - GdkColor current_color; - GtkWidget *colorsel = glade_xml_get_widget(info->main_window, - "colorselection" ); - gtk_color_selection_get_current_color( - GTK_COLOR_SELECTION( colorsel ), - ¤t_color ); - - // scale to 0 - 255 - gint red = current_color.red / 255.0; - gint green = current_color.green / 255.0; - gint blue = current_color.blue / 255.0; - multi_vims( VIMS_STREAM_NEW_COLOR, "%d %d %d", - red,green,blue ); - gveejay_new_slot(MODE_STREAM); -} - -#define atom_aspect_ratio(name,type) {\ -info->uc.priout_lock=1;\ -gint value = (type == 0 ? resize_primary_ratio_x() : resize_primary_ratio_y() );\ -update_spin_value(name, value);\ -info->uc.priout_lock=0;\ -} -void on_priout_width_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock && !info->uc.priout_lock) - if( is_button_toggled( "priout_ratio" )) - atom_aspect_ratio( "priout_height", 1 ); -} -void on_priout_height_value_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock && !info->uc.priout_lock) - if( is_button_toggled( "priout_ratio" )) - atom_aspect_ratio( "priout_width", 0 ); -} -void on_priout_apply_clicked(GtkWidget *widget, gpointer user_data) -{ - gint width = get_nums( "priout_width" ); - gint height = get_nums( "priout_height" ); - gint x = get_nums("priout_x" ); - gint y = get_nums("priout_y" ); - - if( width > 0 && height > 0 ) - { - multi_vims( VIMS_RESIZE_SDL_SCREEN, "%d %d %d %d", - width,height,x , y ); - vj_msg(VEEJAY_MSG_INFO, "Resize Video Window to %dx%d", width,height); - } - -} - - -void on_vims_take_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_BUNDLE_CAPTURE ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - vj_msg(VEEJAY_MSG_INFO, "Create a new bundle from FX Chain. See View -> VIMS Bundles"); -} -void on_button_key_detach_clicked(GtkWidget *widget, gpointer user) -{ -#ifdef HAVE_SDL - int key_val = info->uc.pressed_key; - int key_mod = info->uc.pressed_mod; - - if( key_val > 0 ) - { - multi_vims( - VIMS_BUNDLE_ATTACH_KEY, - "1 %d %d %s", - key_val, key_mod, "dummy" ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - char *strmod = sdlmod_by_id( key_mod ); - char *strkey = sdlkey_by_id( key_val); - if(key_mod) - vj_msg(VEEJAY_MSG_INFO, "Key binding %s + %s released",strmod,strkey); - else - vj_msg(VEEJAY_MSG_INFO, "Key binding %s released", strkey ); - } -#endif -} - -void on_vims_key_clicked( GtkWidget *widget, gpointer user_data) -{ -#ifdef HAVE_SDL - char which_vims[128]; - sprintf(which_vims, "Press a key to bind VIMS %03d", - info->uc.selected_vims_entry ); - - int n = prompt_keydialog( - which_vims, - "Key combination" ); - - if( n == GTK_RESPONSE_ACCEPT ) - { - int event_id = info->uc.selected_vims_entry; - int key_val = info->uc.pressed_key; - int mod = info->uc.pressed_mod; - char *buf = info->uc.selected_vims_args; - - if( event_id > 0 && key_val > 0 ) - { - multi_vims( - VIMS_BUNDLE_ATTACH_KEY, - "%d %d %d %s", - event_id, key_val, mod, buf ? buf : "dummy" ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - char *strmod = sdlmod_by_id( mod ); - if(strmod) - vj_msg(VEEJAY_MSG_INFO, "VIMS %d attached to key combination %s + %s", - event_id, strmod, sdlkey_by_id( key_val)); - else - vj_msg(VEEJAY_MSG_INFO, "VIMS %d attached to key %s", - event_id, sdlkey_by_id(key_val) ); - } - } -#endif -} - - -void on_button_vimsupdate_clicked(GtkWidget *widget, gpointer user_data) -{ - if(count_textview_buffer( "vimsview" ) > 0 ) - { - gchar *buf = get_textview_buffer( "vimsview" ); - - if( info->uc.selected_vims_type == 0 ) - { - multi_vims( VIMS_BUNDLE_ADD, "%d %s", - info->uc.selected_vims_entry, buf ); - } - else - { - multi_vims( - VIMS_BUNDLE_ATTACH_KEY, - "2 %d %d %s", - info->uc.selected_vims_accel[1], - info->uc.selected_vims_accel[0], - info->uc.selected_vims_args ); - } - info->uc.reload_hint[HINT_BUNDLES] = 1; - } - -} - -void on_vims_clear_clicked(GtkWidget *widget, gpointer user_data) -{ - clear_textview_buffer( "vimsview" ); -} - -void on_vims_delete_clicked(GtkWidget *widget, gpointer user_data) -{ - if( info->uc.selected_vims_entry >= VIMS_BUNDLE_START && - info->uc.selected_vims_entry < VIMS_BUNDLE_END ) - { - multi_vims( VIMS_BUNDLE_DEL, "%d", info->uc.selected_vims_entry ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - vj_msg(VEEJAY_MSG_INFO, "Delete bundle %d from VIMS event list", - info->uc.selected_vims_entry ); - } - else - { - vj_msg(VEEJAY_MSG_ERROR, "VIMS %d is not a bundle.", info->uc.selected_vims_entry ); - } -} - -void on_button_saveactionfile_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_save_file( "Save Bundles"); - if(filename) - { - multi_vims( VIMS_BUNDLE_SAVE, "%d %s",0, filename ); - vj_msg(VEEJAY_MSG_INFO, "Save Bundles and Keybindings to %s", filename ); - g_free(filename); - } -} - -void on_button_loadconfigfile_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Load liveset / configfile",2); - - if(!filename) - return; - - if( info->run_state == RUN_STATE_REMOTE ) - { - multi_vims( VIMS_BUNDLE_FILE, "%s", filename ); - } - else - { - if(config_file) - g_free(config_file); - config_file = g_strdup( filename ); - config_file_status = 1; - vj_msg(VEEJAY_MSG_INFO, "You can launch Veejay now"); - } - - g_free(filename); -} - -void on_button_saveconfigfile_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_save_file( "Save liveset / configfile"); - if(filename) - { - multi_vims( VIMS_BUNDLE_SAVE, "%d %s", 1, filename ); - g_free(filename); - } -} - - -void on_button_newbundle_clicked(GtkWidget *widget, gpointer user_data) -{ - if(count_textview_buffer( "vimsview" ) > 0 ) - { - gchar *buf = get_textview_buffer( "vimsview" ); - multi_vims( VIMS_BUNDLE_ADD, "%d %s", 0, buf ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - vj_msg(VEEJAY_MSG_INFO, "If your VIMS document was valid,you'll find it in the list."); - } - else - { - vj_msg(VEEJAY_MSG_ERROR, "VIMS document is empty, type text first."); - } -} - -void on_button_openactionfile_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Load Bundles",2 ); - if(filename) - { - multi_vims( VIMS_BUNDLE_FILE, "%s", filename ); - g_free( filename ); - info->uc.reload_hint[HINT_BUNDLES] = 1; - vj_msg(VEEJAY_MSG_INFO ,"Tried to load '%s'",filename); - } -} - -static void load_server_files(char *buf, int len) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "server_files"); - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - GtkListStore *store = GTK_LIST_STORE(model); -#ifdef STRICT_CHECKING - assert(tree != NULL ); -#endif - int i = 0; - int idx = 0; - char *ptr = buf; - while( i < len ) { - int filelen = 0; - char name[1024]; - char header[5]; - memset(header,0,sizeof(header)); - memset(name, 0,sizeof(name)); - strncpy(header,ptr, 4 ); - if(sscanf(header,"%04d", &filelen)==1) { - strncpy( name, ptr+4, filelen); - gchar *filename = _utf8str( name ); - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0,filename,-1); - gtk_tree_view_set_model(GTK_TREE_VIEW(tree), - GTK_TREE_MODEL(store)); - idx ++; - ptr += filelen; - } - ptr += 4; - i+=4; - i+=filelen; - } -} - -void on_button_browse_clicked(GtkWidget *widget, gpointer user_data) -{ - // open file browser for launcher -/* gchar *filename = dialog_open_file( "Open Videofile or EditList",0 ); - if(filename) - { - put_text( "entry_filename", filename ); - g_free(filename); - }*/ - single_vims(VIMS_WORKINGDIR); - - gint len = 0; - gchar *test = recv_vims( 8, &len ); - - if(!test || len <= 0 ) { - return ; - } - - reset_tree( "server_files"); - - load_server_files( test,len); -free(test); -} - -void on_button_offline_start_clicked(GtkWidget *widget, gpointer user_data) -{ - int stream_id = 0; - if( info->selection_slot ) { - stream_id = info->selection_slot->sample_type != 0 ? info->selection_slot->sample_id : 0; - } - else if (info->selected_slot ) { - stream_id = info->selected_slot->sample_type != 0 ? info->selected_slot->sample_id : 0; - } - - if( stream_id > 0 ) { - multi_vims( VIMS_STREAM_OFFLINE_REC_START, "%d %d %d", stream_id, get_nums("spin_offlineduration1" ), is_button_toggled("button_offline_autoplay1")); - } - else { - vj_msg(VEEJAY_MSG_INFO, "You can only use this recorder on streams, not samples!"); - } -} -void on_button_offline_stop_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_STREAM_OFFLINE_REC_STOP ); -} - -void on_button_clipcopy_clicked(GtkWidget *widget, gpointer user_data) -{ - if(info->selection_slot ) - { - if( info->selection_slot->sample_type != 0 ) { - multi_vims( VIMS_STREAM_NEW_CLONE, "%d", info->selection_slot->sample_id ); - gveejay_new_slot(MODE_STREAM); - } - else { - multi_vims( VIMS_SAMPLE_COPY, "%d", info->selection_slot->sample_id ); - gveejay_new_slot(MODE_SAMPLE); - } - } - else if (info->selected_slot ) - { - if( info->selected_slot->sample_type != 0 ) { - multi_vims( VIMS_STREAM_NEW_CLONE, "%d", info->selected_slot->sample_id ); - gveejay_new_slot(MODE_STREAM); - } - else { - multi_vims( VIMS_SAMPLE_COPY, "%d", info->selected_slot->sample_id ); - gveejay_new_slot(MODE_SAMPLE); - } - } -} - -void on_check_priout_fullscreen_clicked( - GtkWidget *widget, gpointer user_data) -{ - gint on = 0; - if(is_button_toggled( "check_priout_fullscreen" ) ) - on = 1; - multi_vims ( VIMS_FULLSCREEN, "%d", on ); -} - - -void on_inputstream_button_clicked(GtkWidget *widget, gpointer user_data) -{ - gint mcast = is_button_toggled( "inputstream_networktype" ); - gchar *remote_ = get_text( "inputstream_remote" ); - gint port = get_nums( "inputstream_portnum" ); - - gsize bw = 0; - gsize br = 0; - - if(!remote_) - { - error_dialog("Error", "Not a valid hostname. Try 'localhost' or '127.0.0.1'"); - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputstream_window" ); - gtk_widget_hide( dialog ); - return; - } - - gchar *remote = g_locale_from_utf8( - remote_ , -1, &br, &bw, NULL ); - - if( !remote || strlen(remote) <= 1 ) - { - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputstream_window" ); - gtk_widget_hide( dialog ); - error_dialog("Error", "Not a valid hostname. Try 'localhost' or '127.0.0.1'"); - return; - } - - remote[strlen(remote)] = '\0'; - - if(bw == 0 || br == 0 || port <= 0 ) - { - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputstream_window" ); - gtk_widget_hide( dialog ); - error_dialog("Error", "You must enter a valid remote address and/or port number"); - return; - } - - - if(mcast) - multi_vims( VIMS_STREAM_NEW_MCAST,"%d %s", port, remote ); - else - multi_vims( VIMS_STREAM_NEW_UNICAST, "%d %s", port, remote ); - - gveejay_new_slot( MODE_STREAM ); - - if(remote) g_free(remote); - - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputstream_window" ); - gtk_widget_hide( dialog ); - -} - -void on_inputstream_filebrowse_clicked(GtkWidget *w, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Select Action File",2 ); - if(filename) - { - put_text( "inputstream_filename", filename ); - g_free(filename); - } -} - -void on_y4m_new_clicked(GtkWidget *w, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Select YUV4MPEG input (fifo) file",3); - if(!filename) - return; - - multi_vims( VIMS_STREAM_NEW_Y4M, "%s", filename ); - gveejay_new_slot(MODE_STREAM); -} - -void on_samplerand_toggled(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - int arg = is_button_toggled( "freestyle" ); - int start = is_button_toggled( "samplerand" ); - - int vims_id = VIMS_SAMPLE_RAND_START; - if( start == 0 ) - vims_id = VIMS_SAMPLE_RAND_STOP; - - if( vims_id == VIMS_SAMPLE_RAND_START ) - { - multi_vims( vims_id,"%d", arg ); - vj_midi_learning_vims_msg( info->midi,NULL, vims_id, arg ); - } - else - { - single_vims( vims_id ); - vj_midi_learning_vims_simple(info->midi, NULL, vims_id ); - } - - vj_msg(VEEJAY_MSG_INFO, "You should restart the sample randomizer now."); - - } -} - - - -/* - * Handler to open the veejay_connection-dialog via menu - */ -void on_openConnection_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - if(!info->status_lock) - { - GtkWidget *veejay_conncection_window = glade_xml_get_widget(info->main_window, "veejay_connection"); - gtk_widget_show(veejay_conncection_window); - } -} - - -/* - * Handler to close the veejay_connection-dialog - */ -void on_veejay_connection_close (GtkDialog *dialog, - gpointer user_data) -{ - if( info->watch.state == STATE_PLAYING) - { - info->watch.state = STATE_DISCONNECT; - - GtkWidget *w = glade_xml_get_widget_(info->main_window, "veejay_connection" ); - gtk_widget_show( w ); - } - else - gveejay_quit(NULL,NULL); -} - - -/* - * Handler to show the video_settings-dialog via menu - */ -void on_VideoSettings_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - if(!info->status_lock) - { - GtkWidget *veejay_settings_window = glade_xml_get_widget(info->main_window, "video_options"); - gtk_widget_show(veejay_settings_window); - } -} - - -void on_image_calibration1_activate (GtkMenuItem *menuitem, gpointer data) -{ - GtkWidget *win = glade_xml_get_widget(info->main_window,"calibration_window" ); - gtk_widget_show(win); - cali_onoff = 1; -} - -/* - * Handler to close the video_settings-dialog - */ -void on_video_options_close (GtkDialog *dialog, - gpointer user_data) -{ - if(!info->status_lock) - { - GtkWidget *veejay_settings_window = glade_xml_get_widget(info->main_window, "video_options"); - gtk_widget_hide(veejay_settings_window); - } -} - - -/* - * Handler to apply the settings of the video_settings-dialog - */ -void on_video_options_apply_clicked (GtkButton *button, - gpointer user_data) -{ - gint width = get_nums( "priout_width" ); - gint height = get_nums( "priout_height" ); - gint x = get_nums("priout_x" ); - gint y = get_nums("priout_y" ); - - if( width > 0 && height > 0 ) - { - multi_vims( VIMS_RESIZE_SDL_SCREEN, "%d %d %d %d", - width,height,x , y ); - vj_msg(VEEJAY_MSG_INFO, "Resize Video Window to %dx%d", width,height); - } -} - -void on_cali_save_button_clicked( GtkButton *button, gpointer user_data) -{ - gchar *filename = dialog_save_file( "Save calibration to file"); - if( filename ) { - multi_vims( VIMS_V4L_CALI, "%s", filename ); - } -} - -void on_load_calibration1_activate( GtkMenuItem *menuitem, - gpointer user_data) -{ - gchar *filename = dialog_open_file("Select calibration file to load",0); - if(filename) - { - multi_vims( VIMS_STREAM_NEW_CALI, "%s", filename ); - vj_msg(VEEJAY_MSG_INFO ,"Loaded calibration file %s",filename); - g_free(filename); - gveejay_new_slot( MODE_STREAM ); - } -} - -void on_cali_take_button_clicked( GtkButton *button, gpointer data ) -{ - gint method = 0; - gint kernel = 0; - - if( info->uc.cali_stage == 1 ) - method = 1; - - if( info->uc.cali_duration > 0 ) { - error_dialog( "Error", "Already taking calibration images"); - return; - } - - if( is_button_toggled( "cali_method_median" )) - { - kernel = get_nums( "cali_kernelsize_spin"); - } - gint duration=get_nums( "cali_duration_spin" ); - - if( cali_stream_id <= 0 ) { - if(info->status_tokens[STREAM_TYPE] == STREAM_VIDEO4LINUX ) - cali_stream_id = - info->status_tokens[CURRENT_ID]; - } - - if( cali_stream_id <= 0 ) { - error_dialog( "Error", "No source selected to calibrate. Play a Live stream or double click one in the List"); - - return; - } - - multi_vims( VIMS_V4L_BLACKFRAME, "%d %d %d %d", - cali_stream_id, - duration, - kernel, - method ); - - info->uc.cali_duration = duration; - - //@ substract duration in status pipe - -} - -void on_cali_darkframe_clicked( GtkButton *button, gpointer data ) -{ - get_and_draw_frame( 0, "image_darkframe" ); -} - -void on_cali_lightframe_clicked( GtkButton *button, gpointer data ) -{ - get_and_draw_frame( 1, "image_lightframe" ); -} - -void on_cali_flatframe_clicked( GtkButton *button, gpointer data ) -{ - get_and_draw_frame( 2, "image_flatframe" ); -} - -void on_cali_image_clicked( GtkButton *button, gpointer data ) -{ - -// get_and_draw_frame( 0, "image_darkframe" ); -// get_and_draw_frame( 1, "image_lightframe"); -// get_and_draw_frame( 2, "image_flatframe"); - -} - -void on_cali_reset_button_clicked( GtkButton *button, gpointer data ) -{ - if( cali_stream_id <= 0 ) { - if(info->status_tokens[STREAM_TYPE] == STREAM_VIDEO4LINUX ) - cali_stream_id = - info->status_tokens[CURRENT_ID]; - } - - if( cali_stream_id <= 0 ) { - error_dialog( "Error", "No source selected to calibrate. Play a Live stream or double click one in the List"); - - return; - } - - info->uc.cali_stage = 0; - update_label_str("current_step_label","Please take an image with the cap on the lens."); - - multi_vims( VIMS_V4L_BLACKFRAME, "%d 0 0 0", cali_stream_id ); - - reset_cali_images(0, "image_darkframe"); - reset_cali_images(1, "image_lightframe"); - reset_cali_images(2, "image_flatframe"); - - GtkWidget *tb = glade_xml_get_widget_( info->main_window, "cali_take_button"); - gtk_button_set_label( GTK_BUTTON(tb), "Take Black Frames"); - - disable_widget( "cali_save_button" ); - -} - -/* - * Handler to show the VIMS_Bundles-dialog - */ -void on_vims_bundles_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - GtkWidget *vims_bundles_window = glade_xml_get_widget(info->main_window, "vims_bundles"); - gtk_widget_show(vims_bundles_window); -} - - -/* - * Handler to close the VIMS_Bundles-dialog - */ -void on_vims_bundles_close (GtkDialog *dialog, - gpointer user_data) -{ - GtkWidget *vims_bundles_window = glade_xml_get_widget(info->main_window, "vims_bundles"); - gtk_widget_hide(vims_bundles_window); -} - -/* Menu entries */ -void on_quit1_activate( GtkWidget *w, gpointer user_data ) -{ - gveejay_quit(NULL,NULL); -} -/* depending on the state, we either load an action file or a sample list !*/ -void on_open2_activate( GtkWidget *w, gpointer user_data) -{ - gchar *filename = NULL; - switch( info->watch.state ) - { - case STATE_STOPPED: - filename = dialog_open_file( "Open Action file / Liveset",2 ); - if(filename) - { - if(config_file) - g_free(config_file); - config_file = g_strdup( filename ); - config_file_status = 1; - g_free(filename); - } - break; - case STATE_PLAYING: - filename = dialog_open_file( "Open Samplelist ",1); - if(filename) - { - single_vims( VIMS_SAMPLE_DEL_ALL ); - multi_vims( VIMS_SAMPLE_LOAD_SAMPLELIST, "%s", filename); - info->uc.reload_hint[HINT_SLIST] = 2; - g_free(filename); - } - break; - default: - vj_msg(VEEJAY_MSG_INFO, "Invalid state !"); - break; - } -} -void on_save1_activate( GtkWidget *w, gpointer user_data ) -{ - if(info->watch.state == STATE_PLAYING) - on_button_samplelist_save_clicked( NULL, NULL ); - else - vj_msg(VEEJAY_MSG_ERROR, "Nothing to save (start or connect to veejay first)"); -} -void on_about1_activate(GtkWidget *widget, gpointer user_data) -{ - about_dialog(); -} -void on_new_input_stream1_activate(GtkWidget *widget, gpointer user_data) -{ - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputdialog" ); - gtk_dialog_run( GTK_DIALOG( dialog )); - gtk_widget_hide( dialog ); -} - -void on_istream_cancel_clicked(GtkWidget *widget, gpointer user_data) -{ - GtkWidget *dialog = glade_xml_get_widget_( info->main_window, "inputdialog" ); - gtk_widget_hide( dialog ); -} - -void on_curve_togglerun_toggled(GtkWidget *widget , gpointer user_data) -{ -} - -void on_stream_length_value_changed( GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - multi_vims( VIMS_STREAM_SET_LENGTH, "%d", get_nums("stream_length") ); -} - -int on_curve_buttontime_clicked() -{ - return 1; -} - - -void on_framerate_inc_clicked( GtkWidget *w, gpointer data ) -{ - double cur = get_slider_val( "framerate" ); - cur += 1.0; - update_slider_value( "framerate", (int) cur, 0 ); -} - -void on_framerate_dec_clicked( GtkWidget *w, gpointer data ) -{ - double cur = get_slider_val( "framerate" ); - cur -= 1.0; - update_slider_value( "framerate", (int) cur, 0 ); -} - - -void on_frameratenormal_clicked( GtkWidget *w, gpointer data ) -{ - update_slider_value( "framerate", (int) info->el.fps,0 ); -} - -void on_framerate_value_changed( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - - gdouble slider_val = GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - int value = (int)(100.0 * slider_val); - multi_vims( VIMS_FRAMERATE, "%d", value ); - vj_midi_learning_vims_simple( info->midi, "framerate", VIMS_FRAMERATE ); -} - -void on_sync_correction_clicked( GtkWidget *w, gpointer data ) -{ - int status = is_button_toggled( "sync_correction" ); - - multi_vims( VIMS_SYNC_CORRECTION, "%d", status ); - vj_midi_learning_vims_msg( info->midi, NULL, VIMS_SYNC_CORRECTION, status ); -} - -void on_curve_clear_parameter_clicked( GtkWidget *widget, gpointer user_data ) -{ - if( info->uc.selected_parameter_id == -1 ) - return; - multi_vims( VIMS_SAMPLE_KF_CLEAR, "%d %d", info->uc.selected_chain_entry, info->uc.selected_parameter_id ); - reset_curve( glade_xml_get_widget_(info->main_window, "curve") ); -} - -void on_curve_buttonstore_clicked(GtkWidget *widget, gpointer user_data ) -{ - int i = info->uc.selected_chain_entry; - int j = info->uc.selected_parameter_id; - - if( j == -1 ) { - vj_msg(VEEJAY_MSG_INFO,"No parameter selected for animation"); - return; - } - - int id = info->uc.entry_tokens[ENTRY_FXID]; - - int end = get_nums( "curve_spinend" ); - int start = get_nums( "curve_spinstart" ); - int status = is_button_toggled( "curve_toggleentry_param" ); - const int length = end - start + 1; - - - if( (length) <= 0 || id <= 0 ) - { - if( id <= 0 ) - vj_msg(VEEJAY_MSG_INFO, "No FX set on entry %d",i); - else - vj_msg(VEEJAY_MSG_INFO, "Length of animation is 0"); - return; - } - - GtkWidget *curve = glade_xml_get_widget_( info->main_window, "curve"); - - int type = 0; - if( is_button_toggled( "curve_typelinear" ) ) { - type = 0; //GTK_CURVE_TYPE_LINEAR; - } else if ( is_button_toggled( "curve_typespline" ) ) { - type = 1; //GTK_CURVE_TYPE_SPLINE; - } else if ( is_button_toggled( "curve_typefreehand" ) ) { - type = 2; //GTK_CURVE_TYPE_FREE; - } - - int min=0,max=0; - float *data = (float*) vj_calloc( sizeof(float) * length ); - - _effect_get_minmax( id, &min, &max,j ); - - get_points_from_curve( curve, length, data ); - - char header[64]; - - int msg_len = 27 + (4*length); /*K00000000 */ - - snprintf(header,sizeof(header), "K%08dkey%02d%02d%08d%08d%02d%02d",msg_len,i,j,start,end,type,status ); - - int hdr_len = strlen(header); - - unsigned char *buf = (unsigned char*) vj_calloc( sizeof(unsigned char) * msg_len + 9 ); - strncpy( (char*) buf, header, hdr_len); - - unsigned char *ptr = buf + hdr_len; - int k; - int diff = max - min; - for( k = 0 ; k < length ; k++ ) { - // pval = ((Input - InputLow) / (InputHigh - InputLow)) * (OutputHigh - OutputLow) + OutputLow; - // with InputLow==0 and InputHigh==1 in gtkcurve range - int pval = ((data[k]) * ((float)diff)) + min; - ptr[0] = pval & 0xff; - ptr[1] = (pval >> 8) & 0xff; - ptr[2] = (pval >> 16) & 0xff; - ptr[3] = (pval >> 24) & 0xff; - - ptr += 4; - veejay_msg( VEEJAY_MSG_DEBUG, "(%d/%d) FX set value %d on frame %d",k,length,pval, start+k ); - } - - vj_client_send_buf( info->client, V_CMD, buf, msg_len + 9 ); - - vj_msg( VEEJAY_MSG_INFO, "Saved new animation for parameter %d on entry %d, start at frame %d and end at frame %d",j,i,start,end ); - - free(buf); - free(data); - - - info->uc.reload_hint[HINT_KF] = 1; -} - -void on_curve_buttonclear_clicked(GtkWidget *widget, gpointer user_data) -{ - gint id = info->status_tokens[ENTRY_FXID]; - if( id < 0 ) - id = 0; - int i = info->uc.selected_chain_entry; -// GtkWidget *curve = glade_xml_get_widget_( info->main_window, "curve"); - vj_kf_refresh(); - - multi_vims( VIMS_SAMPLE_KF_RESET, "%d", i ); -} - -void on_curve_typelinear_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - if( is_button_toggled("curve_typelinear")) - { - sample_slot_t *s = info->selected_slot; - if(!s) - return; - GtkWidget *curve = glade_xml_get_widget_( info->main_window, "curve"); - set_points_in_curve( GTK_CURVE_TYPE_LINEAR, curve ); - } -} -void on_curve_typespline_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - if( is_button_toggled("curve_typespline")) - { - sample_slot_t *s = info->selected_slot; - if(!s) - return; - GtkWidget *curve = glade_xml_get_widget_( info->main_window, "curve"); - set_points_in_curve( GTK_CURVE_TYPE_SPLINE, curve ); - } -} -void on_curve_typefreehand_toggled(GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - if( is_button_toggled("curve_typefreehand")) - { - sample_slot_t *s = info->selected_slot; - if(!s) - return; - GtkWidget *curve = glade_xml_get_widget_( info->main_window, "curve"); - set_points_in_curve( GTK_CURVE_TYPE_FREE, curve ); - } - -} -void on_curve_toggleentry_param_toggled( GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - int i = info->uc.selected_chain_entry; - if( i == -1 ) { - vj_msg(VEEJAY_MSG_INFO,"No FX entry selected for animation"); - return; - } - - int j = info->uc.selected_parameter_id; - if( j == -1) { - vj_msg(VEEJAY_MSG_INFO,"No FX anim parameter selected"); - return; - } - int k = is_button_toggled( "curve_toggleentry_param" ); - - multi_vims( VIMS_SAMPLE_KF_STATUS_PARAM, "0 %d %d %d", i, j,k ); - - vj_msg(VEEJAY_MSG_INFO, "%s FX parameter %d", (k==0 ? "Disabled" : "Enabled"), i ); -} - -void curve_toggleentry_toggled( GtkWidget *widget, gpointer user_data) -{ - if(info->status_lock) - return; - - int selected_chain_entry = info->uc.selected_chain_entry; - if( selected_chain_entry == -1 ) { - vj_msg(VEEJAY_MSG_INFO,"No parameter selected for animation"); - return; - } - - int active = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) ); - int curve_type = 0; - if( is_button_toggled("curve_typespline")) { - curve_type = 1; - } else if ( is_button_toggled("curve_typefreehand")) { - curve_type = 2; - } else if (is_button_toggled("curve_typelinear")) { - curve_type = 0; - } - - multi_vims( VIMS_SAMPLE_KF_STATUS, "%d %d %d", - selected_chain_entry, active, curve_type ); - - //update anim mode - GtkTreeView *view = GTK_TREE_VIEW(glade_xml_get_widget_(info->main_window, "tree_chain")); - GtkTreeModel *model = gtk_tree_view_get_model( view ); - GtkTreeIter iter; - - GtkTreePath *path = gtk_tree_path_new_from_indices(selected_chain_entry, -1); - if(gtk_tree_model_get_iter(model, &iter, path)) - { - GdkPixbuf *kf_toggle = update_pixmap_entry( active ); - gtk_list_store_set (GTK_LIST_STORE( model ), &iter, FXC_KF, kf_toggle, -1); - } - gtk_tree_path_free(path); -} - - -void curve_chain_toggleentry_toggled( GtkWidget *widget, gpointer user_data) -{ - curve_toggleentry_toggled( widget, user_data); - - GtkWidget *siamese = glade_xml_get_widget_( info->main_window, "curve_panel_toggleentry"); - if(siamese) - { - guint signal_id=g_signal_lookup("toggled", GTK_TYPE_TOGGLE_BUTTON); - gulong handler_id=handler_id=g_signal_handler_find( (gpointer)siamese, G_SIGNAL_MATCH_ID, signal_id, 0, NULL, NULL, NULL ); - - if (handler_id) - g_signal_handler_block((gpointer)siamese, handler_id); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(siamese), - gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) )) ; - - if (handler_id) - g_signal_handler_unblock((gpointer)siamese, handler_id); - } -} - -void curve_panel_toggleentry_toggled( GtkWidget *widget, gpointer user_data) -{ - curve_toggleentry_toggled( widget, user_data); - - GtkWidget *siamese = glade_xml_get_widget_( info->main_window, "curve_chain_toggleentry"); - if(siamese) - { - guint signal_id=g_signal_lookup("toggled", GTK_TYPE_TOGGLE_BUTTON); - gulong handler_id=handler_id=g_signal_handler_find( (gpointer)siamese, G_SIGNAL_MATCH_ID, signal_id, 0, NULL, NULL, NULL ); - - if (handler_id) - g_signal_handler_block((gpointer)siamese, handler_id); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(siamese), - gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) )) ; - - if (handler_id) - g_signal_handler_unblock((gpointer)siamese, handler_id); - } -} - -void on_kf_none_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - { - info->uc.selected_parameter_id = -1; - - disable_widget( "fxanimcontrols" ); - disable_widget( "curve" ); - - if(info->status_lock) - return; - - vj_kf_reset(); - } -} - -void on_kf_p0_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 0 ); -} -void on_kf_p1_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 1 ); -} -void on_kf_p2_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 2 ); -} -void on_kf_p3_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 3 ); -} -void on_kf_p4_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 4 ); -} -void on_kf_p5_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 5 ); -} -void on_kf_p6_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 6 ); -} -void on_kf_p7_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 7 ); -} -void on_kf_p8_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 8 ); -} -void on_kf_p9_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 9 ); -} -void on_kf_p10_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 10 ); -} - -void on_kf_p11_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 11 ); -} - -void on_kf_p12_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 12 ); -} - - -void on_kf_p13_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 13 ); -} - - -void on_kf_p14_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 14 ); -} - -void on_kf_p15_toggled( GtkToggleButton *widget, gpointer user_data) -{ - if(gtk_toggle_button_get_active( widget )) - KF_CHANGED( 15 ); -} - -void on_button_videobook_clicked(GtkWidget *widget, gpointer user_data) -{ - GtkWidget *n = glade_xml_get_widget_( info->main_window, "videobook" ); - // set page 1 from notebook panels - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) ); - if(page == 1 ) - gtk_notebook_prev_page(GTK_NOTEBOOK(n) ); - if(info->selected_slot) - { - /* Only if we are not playing it */ - if(info->status_tokens[STREAM_TYPE] != - info->selected_slot->sample_type && - info->status_tokens[CURRENT_ID] != - info->selected_slot->sample_id ) - multi_vims( VIMS_SET_MODE_AND_GO, "%d %d", - (info->selected_slot->sample_type == MODE_SAMPLE ? MODE_SAMPLE : MODE_STREAM ), - info->selected_slot->sample_id ); - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SET_MODE_AND_GO, - info->selected_slot->sample_type == MODE_SAMPLE ? MODE_SAMPLE: MODE_STREAM, - info->selected_slot->sample_id ); - } -} - -void on_samplepage_clicked(GtkWidget *widget, gpointer user_data) -{ - GtkWidget *m = glade_xml_get_widget_(info->main_window , "notebook18"); - gtk_notebook_set_page( GTK_NOTEBOOK(m), 5 ); - - GtkWidget *n = glade_xml_get_widget_( info->main_window, "panels" ); - - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) ); - - gint page_needed = 2; - - switch( info->status_tokens[PLAY_MODE] ) - { - case MODE_SAMPLE: - page_needed =0 ; break; - case MODE_STREAM: - page_needed = 1; break; - case MODE_PLAIN: - page_needed = 2; break; - default: - break; - } - - if( page_needed != page ) - gtk_notebook_set_page( - GTK_NOTEBOOK(n), - page_needed ); -} - -void on_timeline_cleared(GtkWidget *widget, gpointer user_data) -{ - multi_vims( VIMS_SAMPLE_CLEAR_MARKER, "%d", 0 ); - vj_midi_learning_vims_msg( info->midi, NULL, VIMS_SAMPLE_CLEAR_MARKER, 0 ); -} - -void on_timeline_bind_toggled( GtkWidget *widget, gpointer user_data) -{ -// gboolean toggled = timeline_get_bind( TIMELINE_SELECTION(widget)) ; -// set_toggle_button( "check_marker_bind", (toggled ? 1 :0) ); -} - -void on_timeline_value_changed( GtkWidget *widget, gpointer user_data ) -{ - if(!info->status_lock) - { - gdouble pos = timeline_get_pos( TIMELINE_SELECTION(widget) ); - multi_vims( VIMS_VIDEO_SET_FRAME, "%d", (gint)pos ); - } -} - -void on_timeline_out_point_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - - gdouble pos1 = timeline_get_in_point( TIMELINE_SELECTION(widget) ); - gdouble pos2 = timeline_get_out_point( TIMELINE_SELECTION(widget) ); - pos1 *= info->status_tokens[TOTAL_FRAMES]; - pos2 *= info->status_tokens[TOTAL_FRAMES]; - if(pos2 > pos1 ) - { - multi_vims( VIMS_SAMPLE_SET_MARKER , "%d %d %d", 0,(gint) pos1, (gint) pos2 ); - char *dur = format_time( pos2 - pos1,info->el.fps ); - update_label_str( "label_markerduration", dur ); - free(dur); - } - else - vj_msg(VEEJAY_MSG_INFO, "Set Out point after In point !"); - - - } -} - -void on_timeline_in_point_changed(GtkWidget *widget, gpointer user_data) -{ - if(!info->status_lock) - { - gdouble pos1 = timeline_get_in_point( TIMELINE_SELECTION(widget) ); - gdouble pos2 = timeline_get_out_point( TIMELINE_SELECTION(widget) ); - pos1 *= info->status_tokens[TOTAL_FRAMES]; - pos2 *= info->status_tokens[TOTAL_FRAMES]; - if(pos1 < pos2 ) - { - multi_vims( VIMS_SAMPLE_SET_MARKER , "%d %d %d", 0, (gint) pos1, (gint) pos2 ); - char *dur = format_time( pos2 - pos1,info->el.fps ); - update_label_str( "label_markerduration", dur ); - free(dur); - } - else - vj_msg(VEEJAY_MSG_INFO,"Set In Point before Out Point !"); - } -} - -void on_sampleadd_clicked(GtkWidget *widget, gpointer user_data) -{ - gchar *filename = dialog_open_file( "Add videofile as new sample",0 ); - if(filename) - { - multi_vims( VIMS_EDITLIST_ADD_SAMPLE, "%d %s", 0, filename ); - - g_free(filename); - } -} - -void on_streamnew_clicked(GtkWidget *widget, gpointer user_data) -{ - // inputstream_window - GtkWidget *w = glade_xml_get_widget(info->main_window, "inputstream_window"); - scan_devices( "tree_v4ldevices" ); - gtk_widget_show(w); - -} - -void on_generatornew_clicked(GtkWidget *widget, gpointer user_data) -{ - GtkWidget *w = glade_xml_get_widget(info->main_window, "generator_window"); - scan_generators( "generators" ); - gtk_widget_show(w); -} - -void on_inputstream_close_clicked(GtkWidget *w, gpointer user_data) -{ - GtkWidget *wid = glade_xml_get_widget(info->main_window, "inputstream_window"); - gtk_widget_hide(wid); -} - -void on_generators_close_clicked(GtkWidget *w, gpointer user_data) -{ - GtkWidget *wid = glade_xml_get_widget(info->main_window, "generator_window"); - gtk_widget_hide(wid); -} - -void on_button_sdlclose_clicked(GtkWidget *w, gpointer user_data) -{ - multi_vims( VIMS_RESIZE_SDL_SCREEN, "%d %d %d %d", - 0,0,0,0 ); - -} - - -void on_quicklaunch_clicked(GtkWidget *widget, gpointer user_data) -{ -/* if( info->watch.state == STATE_STOPPED ) - { - vj_fork_or_connect_veejay( config_file ); - } -*/ -} - -static void _update_vs() -{ - if( info->config.norm == 0 ) - { - update_spin_value( "vs_size0", 720 ); - update_spin_value( "vs_size1", 576 ); - gtk_spin_button_set_value ( - GTK_SPIN_BUTTON( glade_xml_get_widget_( info->main_window, "vs_fps" ) ), 25.0 ); - } - else - { - update_spin_value( "vs_size0", 720 ); - update_spin_value( "vs_size1", 480 ); - gtk_spin_button_set_value ( - GTK_SPIN_BUTTON( glade_xml_get_widget_( info->main_window, "vs_fps" ) ), 29.97 ); - } - set_toggle_button( "vs_custom", 0 ); -} - -void on_vs_pal_toggled( GtkWidget *w, gpointer user_data ) -{ - info->config.norm = is_button_toggled( "vs_pal" ) ? 0 : 1; - _update_vs(); -} -void on_vs_ntsc_toggled( GtkWidget *w , gpointer user_data) -{ - info->config.norm = is_button_toggled( "vs_ntsc" ) ? 1 :0; - _update_vs(); -} -void on_vs_custom_toggled( GtkWidget *w, gpointer user_data) -{ - if(is_button_toggled( "vs_custom" )) - enable_widget( "vs_frame"); - else - disable_widget( "vs_frame"); -} - -static void _rgroup_audio(void) -{ - if(is_button_toggled( "vs_noaudio")) - info->config.audio_rate = 0; - else - { - if(is_button_toggled("vs_audio44") ) - info->config.audio_rate = 48000; - else - info->config.audio_rate = 44000; - } -} - -void on_vs_audio48_toggled(GtkWidget *w, gpointer user_data) -{ - _rgroup_audio(); -} - -void on_vs_audio44_toggled(GtkWidget *w, gpointer user_data) -{ - _rgroup_audio(); -} -void on_vs_noaudio_toggled(GtkWidget *w, gpointer user_data) -{ - _rgroup_audio(); -} -void on_vs_avsync_toggled(GtkWidget *w, gpointer user_data) -{ - info->config.sync = is_button_toggled( "vs_avsync" ); -} -void on_vs_avtimer_toggled(GtkWidget *w, gpointer user_data) -{ - info->config.timer = is_button_toggled( "vs_avtimer" ); -} -void on_vs_deinter_toggled(GtkWidget *w, gpointer user_data) -{ - info->config.deinter = is_button_toggled( "vs_deinter" ); -} -void on_vs_yuv420_toggled( GtkWidget *w , gpointer user_data) -{ - if( is_button_toggled( "vs_yuv420" )) - info->config.pixel_format = 0; -} -void on_vs_yuv422_toggled( GtkWidget *w, gpointer user_data) -{ - if( is_button_toggled("vs_yuv422") ) - info->config.pixel_format = 1; -} -void on_vs_sample0_toggled( GtkWidget *w , gpointer user_data) -{ - if( is_button_toggled("vs_sample0")) - info->config.sampling = 1; -} -void on_vs_sample1_toggled( GtkWidget *w, gpointer user_data) -{ - if( is_button_toggled("vs_sample1")) - info->config.sampling = 0; -} -void on_vs_size0_value_changed(GtkWidget *w, gpointer user_data) -{ - info->config.w = get_nums( "vs_size0"); -} -void on_vs_size1_value_changed(GtkWidget *w, gpointer user_data) -{ - info->config.h = get_nums( "vs_size1"); -} -void on_vs_fps_value_changed(GtkWidget *w, gpointer user_data) -{ - info->config.fps = get_numd( "vs_fps"); -} -void on_vs_close_clicked( GtkWidget *w, gpointer user_data) -{ - GtkWidget *vs = glade_xml_get_widget(info->main_window, "vs"); - gtk_widget_hide(vs); -} - -void on_vs_mcastosc_toggle_toggled( GtkWidget *w, gpointer user_data) -{ - info->config.osc = is_button_toggled( "vs_mcastosc_toggle" ); - if(info->config.osc) - { - if(info->config.mcast_osc) - g_free( info->config.mcast_osc ); - info->config.mcast_osc = get_text( "vs_mcastvims" ); - } - -} -void on_vs_mcastvims_toggle_toggled(GtkWidget *w, gpointer user_data) -{ - info->config.vims = is_button_toggled( "vs_mcastvims_toggle" ); - if(info->config.vims) - { - if(info->config.mcast_vims) - g_free( info->config.mcast_vims ); - info->config.mcast_vims = get_text( "vs_mcastvims" ); - } -} - -void on_vs_mcastosc_changed( GtkWidget *w, gpointer user_data) -{ -// if(info->config.mcast_osc) -// g_free(info->config.mcast_osc); -// info->config.mcast_osc = get_text( "vs_mcastosc" ); -} -void on_vs_mcastvims_changed( GtkWidget *w, gpointer user_data) -{ -// if(info->config.mcast_vims) -// g_free(info->config.mcast_vims); -// info->config.mcast_vims = get_text( "vs_mcastvims" ); -} - -void on_inputstream_window_delete_event(GtkWidget *w, gpointer user_data) -{ - GtkWidget *vs = glade_xml_get_widget(info->main_window, "inputstream_window"); - gtk_widget_hide(vs); -} - -void on_generator_window_delete_event(GtkWidget *w, gpointer user_data) -{ - GtkWidget *vs = glade_xml_get_widget(info->main_window, "generator_window"); - gtk_widget_hide(vs); -} - -void on_calibration_window_delete_event(GtkWidget *w,gpointer data) -{ - GtkWidget *win = glade_xml_get_widget(info->main_window, "calibration_window"); - cali_onoff = 0; - gtk_widget_hide(win); -} - - -void on_vs_delete_event( GtkWidget *w, gpointer user_data) -{ - GtkWidget *vs = glade_xml_get_widget(info->main_window, "vs"); - gtk_widget_hide(vs); -} -void on_configure1_activate( GtkWidget *w, gpointer user_data) -{ - GtkWidget *vs = glade_xml_get_widget(info->main_window, "vs"); -/* load options from config */ - - update_spin_value( "vs_size0", info->config.w ); - update_spin_value( "vs_size1", info->config.h ); - update_spin_value( "vs_fps", info->config.fps ); - - set_toggle_button( "vs_avsync", info->config.sync ); - set_toggle_button( "vs_avtimer", info->config.timer ); - set_toggle_button( "vs_deinter", info->config.deinter ); - if(info->config.pixel_format == 0) - set_toggle_button( "vs_yuv420", 1 ); - else - set_toggle_button( "vs_yuv422", 1 ); - - if(info->config.sampling == 1 ) - set_toggle_button( "vs_sample0", 1 ); - else - set_toggle_button( "vs_sample1", 1 ); - if(info->config.norm == 0 && info->config.w == 720 && info->config.h == 576 ) - set_toggle_button( "vs_pal", 1 ); - else - { - if(info->config.norm == 1 && info->config.w == 720 && info->config.h == 480 ) - set_toggle_button( "vs_ntsc", 1 ); - else - set_toggle_button( "vs_custom", 1 ); - } - - if( is_button_toggled( "vs_custom" )) - enable_widget( "vs_frame" ); - else - disable_widget( "vs_frame" ); - - if( info->config.audio_rate == 0 ) - set_toggle_button( "vs_noaudio" , 1 ); - else - { - if( info->config.audio_rate == 44000 ) - set_toggle_button( "vs_audio44" , 1 ); - else - set_toggle_button( "vs_audio48", 1 ); - } - - /* set osc , vims mcast */ - if(info->config.mcast_osc) - put_text( "vs_mcastosc", info->config.mcast_osc ); - if(info->config.mcast_vims) - put_text( "vs_mcastvims", info->config.mcast_vims ); - set_toggle_button( "vs_mcastosc_toggle", info->config.osc ); - set_toggle_button( "vs_mcastvims_toggle", info->config.vims ); - - gtk_widget_show(vs); -} - -void on_quit_veejay1_activate( GtkWidget *w, gpointer user_data) -{ - veejay_quit(); -} - -void on_curve_spinend_value_changed(GtkWidget *w, gpointer user_data) -{ - int end_pos = get_nums( "curve_spinend" ); - char *end_time = format_time( - end_pos,info->el.fps ); - update_label_str( "curve_endtime", end_time ); - free(end_time); - - vj_msg(VEEJAY_MSG_INFO, "Click the FX store button to save the new values"); -} - -void on_curve_spinstart_value_changed(GtkWidget *w, gpointer user_data) -{ - int start_pos = get_nums( "curve_spinstart" ); - - char *start_time = format_time( - start_pos,info->el.fps ); - update_label_str( "curve_endtime", start_time ); - free(start_time); - - vj_msg(VEEJAY_MSG_INFO, "Click the FX store button to save the new values"); -} - -void on_veejayevent_enter_notify_event(GtkWidget *w, gpointer user_data) -{ - info->key_now = TRUE; -} -void on_veejayevent_leave_notify_event(GtkWidget *w , gpointer user_data) -{ - info->key_now = FALSE; -} - -void on_spin_framedelay_value_changed(GtkWidget *w, gpointer user_data) -{ - if( info->status_lock ) - return; - - multi_vims(VIMS_VIDEO_SET_SLOW, "%d", get_nums("spin_framedelay")); - - vj_midi_learning_vims_spin( info->midi, "spin_framedelay", VIMS_VIDEO_SET_SLOW ); -} - -void on_alpha_effects_toggled(GtkWidget *w, gpointer user_data) -{ - GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" ); - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) ); - if(page != 2) - gtk_notebook_set_page(GTK_NOTEBOOK(n), 2); -} - -void on_toggle_alpha255_toggled(GtkWidget *w, gpointer user_data) -{ - multi_vims( VIMS_ALPHA_COMPOSITE,"%d %d", is_button_toggled( "alphacomposite"), is_button_toggled("toggle_alpha255") ? 255: 0 ); -} - -void on_alphacomposite_toggled(GtkWidget *widget, gpointer user_data) -{ - int alpha_value = 0; - if (is_button_toggled( "toggle_alpha255")) - alpha_value = 255; - - multi_vims( VIMS_ALPHA_COMPOSITE,"%d %d", is_button_toggled( "alphacomposite" ), alpha_value ); -} - - -void on_mixing_effects_toggled(GtkWidget *w, gpointer user_data) -{ - GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" ); - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) ); - if(page != 0 ) - gtk_notebook_set_page(GTK_NOTEBOOK(n), 0 ); -} - -void on_image_effects_toggled(GtkWidget *w, gpointer user_data) -{ - GtkWidget *n = glade_xml_get_widget_( info->main_window, "effectspanel" ); - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK(n) ); - if(page != 1) - gtk_notebook_set_page(GTK_NOTEBOOK(n),1); -} - -void on_filter_effects_activate(GtkWidget *widget, gpointer user_data) -{ -} - -void on_filter_effects_changed( GtkWidget *w, effectlist_data *user_data) -{ - if(user_data != NULL) { - gchar* fx_txt = get_text("filter_effects"); - int filterlen = strlen(fx_txt); - - if(filterlen) { - vj_msg(VEEJAY_MSG_INFO, "filtering effects '%s'", fx_txt); - user_data->filter_string = g_new0(gchar, filterlen+1); - if(user_data->filter_string != NULL) { - strcpy(user_data->filter_string, fx_txt); - gtk_tree_model_filter_refilter (user_data->stores[0].filtered); - gtk_tree_model_filter_refilter (user_data->stores[1].filtered); - gtk_tree_model_filter_refilter (user_data->stores[2].filtered); - g_free(user_data->filter_string); - } - user_data->filter_string = NULL; - } else { - vj_msg(VEEJAY_MSG_DEBUG, ""); // FIXME why debug ? check vj-msg.h and "void vj_msg( " from vj-api.c:2340 - // filter with "user_data->filter_string = NULL" to remove the filter - gtk_tree_model_filter_refilter (user_data->stores[0].filtered); - gtk_tree_model_filter_refilter (user_data->stores[1].filtered); - gtk_tree_model_filter_refilter (user_data->stores[2].filtered); - } - } -} - -void on_console1_activate(GtkWidget *w, gpointer user_data) -{ - GtkWidget *n = glade_xml_get_widget_( info->main_window, "panels" ); - gint page = gtk_notebook_get_current_page( GTK_NOTEBOOK( n ) ); - - if( page == MODE_PLAIN ) - gtk_notebook_set_page( GTK_NOTEBOOK(n), - info->status_tokens[PLAY_MODE] ); - else - gtk_notebook_set_page( GTK_NOTEBOOK(n), - MODE_PLAIN ); -} - -gboolean on_entry_hostname_focus_in_event( GtkWidget *w, gpointer user_data) -{ - update_label_str( "runlabel", "Connect"); - return FALSE; -} - -gboolean on_entry_hostname_focus_out_event( GtkWidget *w, gpointer user_data) -{ -// update_label_str( "runlabel", "Run" ); - return FALSE; -} - - -gboolean on_entry_filename_focus_in_event( GtkWidget *w, gpointer user_data) -{ -// update_label_str( "runlabel", "Run" ); - return FALSE; -} - -void on_previewbw_toggled( GtkWidget *w , gpointer user_data) -{ - single_vims( VIMS_PREVIEW_BW ); - vj_msg(VEEJAY_MSG_INFO,"Changed preview to greyscale"); -} - -void on_previewtoggle_toggled(GtkWidget *w, gpointer user_data) -{ - int enabled = is_button_toggled("previewtoggle"); - multitrack_toggle_preview( info->mt, -1, enabled,glade_xml_get_widget(info->main_window, "imageA") ); - vj_msg(VEEJAY_MSG_INFO,"Live view is %s", (enabled ? "enabled" : "disabled" )); -} - -void on_previewspeed_value_changed( GtkWidget *widget, gpointer user_data) -{ -} - -void on_previewscale_value_changed( GtkWidget *widget, gpointer user_data) -{ -} - -void on_preview_width_value_changed( GtkWidget *w, gpointer user_data) -{ -} -void on_preview_height_value_changed( GtkWidget *w, gpointer user_data) -{ -} - -void on_mt_new_activate( GtkWidget *w, gpointer user_data) -{ - multitrack_add_track( info->mt ); -} - -void on_mt_delete_activate( GtkWidget *w, gpointer user_data) -{ - multitrack_close_track( info->mt ); -} - - - -void on_mt_sync_start_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_start( info->mt ); -} - -void on_mt_sync_stop_clicked( GtkWidget *w , gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_PLAY_STOP,0 ); -} -void on_mt_sync_play_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_PLAY_FORWARD,0 ); -} -void on_mt_sync_backward_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_PLAY_BACKWARD,0); -} -void on_mt_sync_gotostart_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_GOTO_START,0 ); -} -void on_mt_sync_gotoend_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_GOTO_END,0 ); -} -void on_mt_sync_decspeed_clicked( GtkWidget *w, gpointer user_data) -{ - int n = info->status_tokens[SAMPLE_SPEED]; - if( n < 0 ) n += 1; - if( n > 0 ) n -= 1; - multitrack_sync_simple_cmd2( info->mt, VIMS_VIDEO_SET_SPEED, n ); - -} -void on_mt_sync_incspeed_clicked( GtkWidget *w, gpointer user_data) -{ - int n = info->status_tokens[SAMPLE_SPEED]; - if( n < 0 ) n -= 1; - if( n > 0 ) n += 1; - multitrack_sync_simple_cmd2( info->mt, VIMS_VIDEO_SET_SPEED, n ); -} -void on_mt_sync_prev_clicked( GtkWidget *w , gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_PREV_FRAME ,0 ); -} -void on_mt_sync_next_clicked( GtkWidget *w, gpointer user_data) -{ - multitrack_sync_simple_cmd( info->mt, VIMS_VIDEO_SKIP_FRAME, 0 ); -} - -void on_delete1_activate(GtkWidget *w, gpointer user_data) -{ -} -void on_new_source1_activate( GtkWidget *w , gpointer data ) -{ -} -void on_add_file1_activate(GtkWidget *w, gpointer user_data) -{ -} - -/****************************************************** - * on_effectchain_button_pressed() - * - * Signal handler over the effect chain. - * - * Catch button press event on shift+click to toogle chain state. - * NOTA : works over the FULL row - * - ******************************************************/ -gboolean on_effectchain_button_pressed (GtkWidget *tree, GdkEventButton *event, gpointer userdata) -{ - /* shift key + single click with the left mouse button? */ - if (event->state & GDK_SHIFT_MASK) - { - if (event->type == GDK_BUTTON_PRESS && event->button == 1) - { - GtkTreePath *path; - GtkTreeViewColumn *column; - gint cell_x, cell_y; - - if(gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW( tree ), - (gint) event->x, - (gint) event->y, - &path, &column, &cell_x, &cell_y )) - - { - /* compare iter from tree selection and clicked path */ - GtkTreeIter iter; - gint fxcid = 0; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW( tree )); - - gtk_tree_model_get_iter(model, &iter, path); - gtk_tree_model_get(model,&iter, FXC_ID, &fxcid, -1 ); - - /* user can click on all row, uncomment and fix accordingly the test to check particular column */ - //guint column_num = get_treeview_col_number_from_column ( column ); - //if(column_num != -1) - { - multi_vims(VIMS_CHAIN_ENTRY_SET_STATE, "%d %d",0, fxcid); - info->uc.reload_hint[HINT_HISTORY] = 1; - } - } - } - } - return FALSE; /* lets normal things happening */ -} - -static -gchar *get_clipboard_fx_parameter_buffer(int *mixing_src, int *mixing_cha, int *enabled, int *fx_id) -{ - char rest[2048 + 22 + 1]; - int len = 0; - int tmp[8]; - int i; - int n_params = 0; - int fid = 0; - - veejay_memset( rest,0,sizeof(rest)); - - multi_vims( VIMS_CHAIN_GET_ENTRY, "%d %d", 0,info->uc.selected_chain_entry ); - - gchar *answer = recv_vims(3,&len); - if(len <= 0 || answer == NULL ) - { - gveejay_popup_err( "Error", "Nothing in FX clipboard"); - if(answer) g_free(answer); - return NULL; - } - - i = sscanf( answer, "%d %d %d %d %d %d %d %d %d %d %d %1024[0-9 ]", - &fid, //fx id - &tmp[0], //is video - &n_params, //num params - &tmp[0], //kf_type - &tmp[0], //transition enabled, not copied - &tmp[0], //transition loop, not copied - &tmp[0], //kf_status - &tmp[1], //source - &tmp[2], //channel - &tmp[3], //fx enabled - &tmp[0], //dummy - rest - ); - - if( i != 12 ) { - g_free(answer); - return NULL; - } - - *mixing_src = tmp[1]; - *mixing_cha = tmp[2]; - *enabled = tmp[3]; - *fx_id = fid; - - g_free(answer); - - return strdup(rest); -} - -typedef struct -{ - char *parameters; - int fx_id; - int src; - int cha; - int enabled; -} clipboard_t; - -static clipboard_t *get_new_clipboard() -{ - clipboard_t *c = (clipboard_t*) vj_calloc( sizeof(clipboard_t) ); - - c->parameters = get_clipboard_fx_parameter_buffer( &(c->src), &(c->cha), &(c->enabled), &(c->fx_id) ); - if( c->parameters == NULL ) { - free(c); - return NULL; - } - return c; -} - -static void del_clipboard(clipboard_t *c) -{ - if(c) { - if(c->parameters) - free(c->parameters); - free(c); - } - c = NULL; -} - -static clipboard_t *last_clipboard = NULL; - -static void do_clipboard(clipboard_t *c, int id, int entry_id) -{ - char msg[1024]; - snprintf( msg, sizeof(msg), "%03d:%d %d %d %d %s;", - VIMS_CHAIN_ENTRY_SET_PRESET, - id, - entry_id, - c->fx_id, - c->enabled, - c->parameters - ); - - msg_vims(msg); - - snprintf( msg, sizeof(msg), "%03d:%d %d;", - ( c->enabled ? VIMS_CHAIN_ENTRY_SET_VIDEO_ON : VIMS_CHAIN_ENTRY_SET_VIDEO_OFF ), - id, - entry_id - ); - msg_vims(msg); - - if( last_clipboard->cha > 0 ) { - snprintf( msg, sizeof(msg), "%03d:%d %d %d %d;", - VIMS_CHAIN_ENTRY_SET_SOURCE_CHANNEL, - id, - entry_id, - c->src, - c->cha - ); - msg_vims(msg); - } -} - -void on_button_fx_cut_clicked( GtkWidget *w, gpointer user_data) -{ - if(last_clipboard) - del_clipboard( last_clipboard ); - - last_clipboard = get_new_clipboard(); - - on_button_fx_del_clicked( NULL,NULL ); -} - -void on_button_fx_paste_clicked( GtkWidget *w, gpointer user_data) -{ - sample_slot_t *s = info->selected_slot; - - if( last_clipboard == NULL ) { - vj_msg(VEEJAY_MSG_INFO, "Nothing in FX clipboard"); - return; - } - - if( s == NULL ) { - vj_msg(VEEJAY_MSG_INFO, "No FX entry selected"); - return; - } - - do_clipboard( last_clipboard, s->sample_id, info->uc.selected_chain_entry ); - - info->uc.reload_hint[HINT_ENTRY]=1; -} - -void on_button_fx_copy_clicked(GtkWidget *w, gpointer user_data) -{ - if(last_clipboard) - del_clipboard(last_clipboard); - - last_clipboard = get_new_clipboard(); -} -void on_copy1_activate( GtkWidget *w, gpointer user_data) -{ -} -void on_new_color1_activate(GtkWidget *w , gpointer user_data) -{ -} -void on_delete2_activate( GtkWidget *w, gpointer user_data) -{ -} -void -on_spin_samplebank_select_value_changed - (GtkSpinButton *spinbutton, - gpointer user_data) -{ - GtkNotebook *samplebank = GTK_NOTEBOOK( info->sample_bank_pad ); - - gint max_page = gtk_notebook_get_n_pages(samplebank); - - gint page = gtk_spin_button_get_value_as_int(spinbutton); - - if(page >= max_page){ /* @mvh I know this is not pretty but why make it difficult */ - page = 0; - gtk_spin_button_set_value(spinbutton, page); - } else if( page < 0 ) { - page = max_page; - gtk_spin_button_set_value(spinbutton,page); - } - gtk_notebook_set_current_page_(samplebank, page); -} -void -on_button_samplebank_prev_clicked (GtkButton *button, - gpointer user_data) -{ - GtkNotebook *samplebank = GTK_NOTEBOOK( info->sample_bank_pad ); - gtk_notebook_prev_page(samplebank); - //update the bank spin widget - gint page = gtk_notebook_get_current_page (samplebank); - if (page != -1) - update_spin_value("spin_samplebank_select", page); -} - - -void -on_button_samplebank_next_clicked (GtkButton *button, - gpointer user_data) -{ - GtkNotebook *samplebank = GTK_NOTEBOOK( info->sample_bank_pad ); - gtk_notebook_next_page(samplebank); - //update the bank spin widget - gint page = gtk_notebook_get_current_page (samplebank); - if (page != -1) - update_spin_value("spin_samplebank_select", page); -} - -void -on_vims_messenger_rewind_clicked( GtkButton *togglebutton, gpointer user_data) -{ - info->vims_line = 0; - vj_msg(VEEJAY_MSG_INFO, "Start from line 0 in vims messenger editor"); -} - -void -on_vims_messenger_clear_clicked( GtkButton *togglebutton, gpointer user_data) -{ - clear_textview_buffer( "vims_messenger_textview"); -} - -void -on_vims_messenger_single_clicked( void ) -{ - GtkTextView *t= GTK_TEXT_VIEW(GTK_WIDGET( - glade_xml_get_widget( - info->main_window, - "vims_messenger_textview")) - ); - - GtkTextBuffer* buffer = gtk_text_view_get_buffer(t); - int lc = gtk_text_buffer_get_line_count(buffer); - - if(info->vims_line > lc ) - info->vims_line = 0; - - while(info->vims_line < lc ) - { - GtkTextIter start, end; - gtk_text_buffer_get_iter_at_line(buffer, &start, info->vims_line); - - end = start; - - gtk_text_iter_forward_sentence_end(&end); - gchar *str = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); - - info->vims_line++; - - if(strlen(str) <= 0) - continue; // skip empty lines - - if(str[0] != '+') - { - msg_vims( str ); - vj_msg(VEEJAY_MSG_INFO, "Sent VIMS message '%s' (line %d)",str, info->vims_line-1 ); - break; - } - } -} - -static gint srt_load_subtitle(int sid) -{ - gint len = 0; - gint seq_id = 0; - gint tc1l=0; - gint tc2l=0; - char tc1[20]; - char tc2[20]; - char tmp[1000]; - gint tlen=0; - gint ln[4]; - gint fg[4]; - gint bg[4]; - gint use_bg = 0; - gint outline = 0; - gint size = 0; - gint font = 0; - gint x =0; - gint y = 0; - - multi_vims( VIMS_SRT_INFO, "%d", sid ); - gchar *text = recv_vims( 6,&len ); - veejay_memset(tmp,0,sizeof(tmp)); - veejay_memset(tc1,0,sizeof(tc1)); - veejay_memset(tc2,0,sizeof(tc2)); - - clear_textview_buffer( "textview_text" ); - int s1=0,s2=0; - if(text && len > 0 ) - { - sscanf( text,"%5d%9d%9d%2d", &seq_id ,&s1,&s2,&tc1l ); - strncpy( tc1, text+7+18,tc1l ); - sscanf( text+7+18+tc1l,"%2d", &tc2l ); - strncpy( tc2, text+7+18+tc1l + 2, tc2l ); - sscanf( text+7+18+tc1l+2+tc2l, "%3d", &tlen ); - strncpy( tmp, text + 7 + 18 + tc1l + 2 + tc2l + 3, tlen ); - sscanf( text+7+18 + tc1l+2+tc2l+3+tlen,"%04d%04d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d%03d", - &x,&y, &font, &size, &bg[0],&bg[1],&bg[2],&fg[0],&fg[1],&fg[2],&use_bg,&outline,&ln[0],&ln[1], - &ln[2],&bg[3],&fg[3],&ln[3] ); - } - - srt_locked_ = 1; - - update_spin_range( "spin_text_start",0, get_total_frames(),s1); - update_spin_range( "spin_text_end",0, get_total_frames(),s2); - - set_textview_buffer( "textview_text", tmp ); - - update_spin_value( "spin_text_start" ,s1); - update_spin_value( "spin_text_end", s2 ); - - change_box_color_rgb( - glade_xml_get_widget(info->main_window, "boxbg" ), - bg[0],bg[1],bg[2],bg[3], (is_button_toggled( "textcolorbg" ) ? 1 : 0 ) ); - - change_box_color_rgb( - glade_xml_get_widget(info->main_window, "boxtext" ), - fg[0],fg[1],fg[2],fg[3], (is_button_toggled( "textcolorfg" ) ? 1: 0) ); - - - change_box_color_rgb( - glade_xml_get_widget( info->main_window, "boxln" ), - ln[0],ln[1],ln[2],ln[3], (is_button_toggled( "textcolorln" ) ? 1: 0) ); - - memcpy( bg_, bg, sizeof(bg_)); - memcpy( fg_, fg, sizeof(fg_)); - memcpy( ln_, ln, sizeof(ln_)); - - set_toggle_button( "use_bg", use_bg ); - set_toggle_button( "use_outline", outline); - update_spin_value( "spin_text_size", size ); - update_spin_value( "spin_text_x", x ); - update_spin_value( "spin_text_y", y ); - - if(is_button_toggled( "textcolorfg") ) - { - update_slider_value( "textcolorred", fg_[0],0 ); - update_slider_value( "textcolorblue",fg_[2],0 ); - update_slider_value( "textcolorgreen",fg_[1],0); - update_slider_value( "textcoloralpha", fg_[3],0); - } - else if( is_button_toggled( "textcolorbg") ) - { - update_slider_value( "textcolorred", bg_[0],0 ); - update_slider_value( "textcolorblue",bg_[2],0 ); - update_slider_value( "textcolorgreen",bg_[1],0); - update_slider_value( "textcoloralpha",bg_[3],0); - } - else if ( is_button_toggled( "textcolorln" )) - { - update_slider_value( "textcolorred", ln_[0],0 ); - update_slider_value( "textcolorblue",ln_[2],0 ); - update_slider_value( "textcolorgreen",ln_[1],0); - update_slider_value( "textcoloralpha", ln_[3],0); - } - GtkWidget *combo = glade_xml_get_widget( info->main_window, "combobox_fonts" ); - gtk_combo_box_set_active( GTK_COMBO_BOX( combo ), font ); - - -// glade_xml_get_widget( info->main_window, "combobox_textsrt" ); -// gtk_combo_box_set_active( GTK_COMBO_BOX( combo ), seq_id-1 ); - -// if(len > 0 ) -// enable_widget( "SRTframe"); - - - srt_locked_ = 0; - - if(text) free(text); - - return seq_id; -} - -void on_button_text_new_clicked( GtkWidget *w, gpointer data ) -{ - gint x = get_nums( "spin_text_x" ); - gint y = get_nums( "spin_text_y" ); - gint s1 = 0; - gint s2 = 0; - if( info->status_tokens[PLAY_MODE] == MODE_SAMPLE ) - { - s1 = info->status_tokens[SAMPLE_START]; - s2 = info->status_tokens[SAMPLE_END]; - } - else - { - s1 = 0; - s2 = get_nums("stream_length"); - } - - gchar *text = strdup(" "); - - multi_vims( VIMS_SRT_ADD, "%d %d %d %d %d %s", - 0,s1,s2,x,y,text ); - - int tmp = 0; - gchar *new_srt_id = recv_vims( 5, &tmp ); - int id = 0; - if(new_srt_id && tmp > 0) - { - sscanf( new_srt_id, "%d", &id ); - if(id > 0 ) - srt_seq_ = id; - } - if( new_srt_id ) - free(new_srt_id); - - free(text); - if( id > 0 ) - info->uc.reload_hint[HINT_HISTORY] = 1; - -} - -void on_button_text_del_clicked( GtkWidget *w, gpointer data ) -{ - multi_vims( VIMS_SRT_DEL, "%d", srt_seq_ ); - info->uc.reload_hint[HINT_HISTORY] = 1; -} - -void on_spin_text_start_value_changed( GtkWidget *w, gpointer data ) -{ - gint start = get_nums( "spin_text_end"); - char *text = format_time( start, info->el.fps ); - update_label_str( "labeltextstart", text ); - free(text); -} - -void on_spin_text_end_value_changed( GtkWidget *w, gpointer data ) -{ - gint end = get_nums( "spin_text_end" ); - char *text = format_time( end, info->el.fps ); - update_label_str( "labeltextend", text ); - free(text); -} -void on_spin_text_x_value_changed( GtkWidget *w, gpointer data ) -{ - if( srt_locked_) - return; - - gint x = get_nums( "spin_text_x" ); - gint y = get_nums( "spin_text_y"); - multi_vims( VIMS_FONT_POS,"%d %d", x,y ); -} -void on_spin_text_y_value_changed( GtkWidget *w, gpointer data ) -{ - if( srt_locked_) - return; - - gint x = get_nums( "spin_text_x" ); - gint y = get_nums( "spin_text_y"); - multi_vims( VIMS_FONT_POS,"%d %d", x,y ); -} -void on_button_srt_save_clicked( GtkWidget *w, gpointer data ) -{ - gchar *filename = dialog_save_file("Save SRT file"); - if( filename ) - { - multi_vims( VIMS_SRT_SAVE, "%s", filename ); - g_free(filename); - } -} -void on_button_srt_load_clicked( GtkWidget *w, gpointer data ) -{ - gchar *filename = dialog_open_file("Load SRT file",4); - if( filename ) - { - multi_vims( VIMS_SRT_LOAD, "%s", filename ); - g_free(filename); - } -} - - -void on_combobox_fonts_changed( GtkWidget *w, gpointer data ) -{ - if(srt_locked_) - return; - gint font = gtk_combo_box_get_active( GTK_COMBO_BOX( w ) ); - gint size = get_nums( "spin_text_size" ); - if( font < 0 || size < 0 ) - return; - multi_vims( VIMS_FONT_SIZE_FONT, "%d %d", font , size ); -} -void on_spin_text_size_value_changed( GtkWidget *w, gpointer data ) -{ - if( srt_locked_) - return; - GtkWidget *ww = glade_xml_get_widget( info->main_window, - "combobox_fonts" ); - gint font = gtk_combo_box_get_active( GTK_COMBO_BOX( ww ) ); - gint size = get_nums( "spin_text_size" ); - - multi_vims( VIMS_FONT_SIZE_FONT, "%d %d", font , size ); -} - -void on_button_text_update_clicked(GtkWidget *w, gpointer data) -{ - gint s1 = get_nums( "spin_text_start" ); - gint s2 = get_nums( "spin_text_end" ); - gchar *text = get_textview_buffer( "textview_text" ); - if(text) - multi_vims( VIMS_SRT_UPDATE, "%d %d %d %s", srt_seq_, s1,s2,text ); -} - -static void change_box_color_rgb( GtkWidget *box, int r, int g, int b,int a, int fill ) -{ - GdkGC *gc = gdk_gc_new( box->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.red = 255.0 * r; - col.green = 255.0 * g; - col.blue = 255.0 * b; - - if(fill) - { - update_slider_value( "textcolorred", r ,0); - update_slider_value( "textcolorgreen",g,0 ); - update_slider_value( "textcolorblue",b,0); - update_slider_value( "textcoloralpha",a,0); - } - gdk_color_alloc( gtk_widget_get_colormap( box ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - box->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); -} - -void on_combobox_textsrt_changed( GtkWidget *w, gpointer data) -{ - if(info->status_lock) - return; - - gchar *k = gtk_combo_box_get_active_text( GTK_COMBO_BOX(w) ); - int sid = atoi(k); - if( sid > 0) - { - multi_vims( VIMS_SRT_SELECT, "%d", sid ); - srt_seq_ = sid; - gint res = srt_load_subtitle(sid); - char text[32]; - sprintf(text, "Edit SRT %d", res ); - update_label_str( "srtid_label", text ); - } -} - - -static void change_box_color( GtkWidget *box, double val, int plane, int fill ) -{ - GdkGC *gc = gdk_gc_new( box->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - double v = (1.0 / 255.0) * val; - - int r = get_slider_val( "textcolorred" ); - int b = get_slider_val( "textcolorgreen" ); - int g = get_slider_val( "textcolorblue" ); - int a = get_slider_val("textcoloralpha" ); - - if(plane==0) - { - col.red = 65535.0 * v; - switch(fill) - { - case 0: fg_[0] = r; break; - case 1: bg_[0] = r; break; - case 2: ln_[0] = r; break; - } - } - if(plane==1) - { - col.green = 65535 * v; - switch(fill) - { - case 0: fg_[1] = g; break; - case 1: bg_[1] = g; break; - case 2: ln_[1] = g; break; - } - } - if(plane==2) - { - col.blue = 65535 * v; - switch(fill) - { - case 0: fg_[2] = b; break; - case 1: bg_[2] = b; break; - case 2: ln_[2] = b; break; - } - - } - if(plane==-1) - { - col.red = 255.0 * r; - col.green = 255.0 * g; - col.blue = 255.0 * b; - switch(fill) - { - case 0: fg_[0] = r; fg_[1] = g; fg_[2] = b; fg_[3] = a; break; - case 1: bg_[0] = r; bg_[1] = g; bg_[2] = b; bg_[3] = a; break; - case 2: ln_[0] = r; ln_[1] = g; ln_[2] = b; ln_[3] = a; break; - } - - } - - - gdk_color_alloc( gtk_widget_get_colormap( box ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - box->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); -} - -static void colbox( const char *name1,const char *name2, int plane ) -{ - int fg = is_button_toggled("textcolorfg"); - int bg = is_button_toggled("textcolorbg"); - int ln = is_button_toggled("textcolorln"); - - int v = get_slider_val( name2 ); - change_box_color( - glade_xml_get_widget( info->main_window,name1 ) , - v, - plane, - -1 ); //green - - if(fg) - change_box_color( - glade_xml_get_widget( info->main_window, "boxtext" ), - 0.0, - -1, - 0 ); - if(bg) - change_box_color( - glade_xml_get_widget( info->main_window, "boxbg" ), - 0.0, - -1, - 1 ); - - if(ln) - change_box_color( - glade_xml_get_widget( info->main_window, "boxln" ), - 0.0, - -1, - 2 ); - -} - -void on_textcoloralpha_value_changed(GtkWidget *w, gpointer data ) -{ - if(info->status_lock || srt_locked_) - return; - - int fg = is_button_toggled("textcolorfg"); - int bg = is_button_toggled("textcolorbg"); - int ln = is_button_toggled("textcolorln"); - gint r = get_slider_val( "textcolorred" ); - gint g = get_slider_val( "textcolorgreen" ); - gint b = get_slider_val( "textcolorblue" ); - gint a = get_slider_val( "textcoloralpha" ); - - int m = 0; - if( fg ) - { - fg_[3] = a; - m = 1; - } - if( bg ) - { - bg_[3] = a; - m = 2; - } - if( ln ) - { - ln_[3] = a; - m = 3; - } - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", r,g,b,a, m ); -} - -void on_textcolorred_value_changed(GtkWidget *w , gpointer data ) -{ - colbox( "boxred", "textcolorred", 0 ); -} - - -void on_textcolorgreen_value_changed(GtkWidget *w , gpointer data ) -{ - colbox( "boxgreen", "textcolorgreen", 1 ); -} - -void on_textcolorblue_value_changed(GtkWidget *w , gpointer data ) -{ - colbox( "boxblue", "textcolorblue", 2 ); -} - -void on_textcolorfg_toggled( GtkWidget *w, gpointer data ) -{ - if( is_button_toggled( "textcolorfg" ) ) - { - update_slider_value( "textcolorred", fg_[0],0 ); - update_slider_value( "textcolorgreen", fg_[1],0 ); - update_slider_value( "textcolorblue", fg_[2],0); - update_slider_value( "textcoloralpha", fg_[3],0); - } -} -void on_textcolorbg_toggled( GtkWidget *w, gpointer data ) -{ - if( is_button_toggled( "textcolorbg" ) ) - { - update_slider_value( "textcolorred", bg_[0],0 ); - update_slider_value( "textcolorgreen", bg_[1],0 ); - update_slider_value( "textcolorblue", bg_[2],0); - update_slider_value( "textcoloralpha", bg_[3],0); - } -} -void on_textcolorln_toggled( GtkWidget *w, gpointer data ) -{ - if( is_button_toggled( "textcolorln" ) ) - { - update_slider_value( "textcolorred", ln_[0],0 ); - update_slider_value( "textcolorgreen", ln_[1],0 ); - update_slider_value( "textcolorblue", ln_[2],0); - update_slider_value( "textcoloralpha", ln_[3],0); - } -} - -void on_use_bg_toggled( GtkWidget *w , gpointer data) -{ - if(srt_locked_ || info->status_lock) - return; - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", - is_button_toggled("use_outline"), - is_button_toggled("use_bg"), - 0, - 0, - 0 ); -} - -void on_use_outline_toggled( GtkWidget *w, gpointer data) -{ - if(srt_locked_ || info->status_lock) - return; - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", - is_button_toggled("use_outline"), - is_button_toggled("use_bg"), - 0, - 0, - 0 ); - -} - -void on_buttonfg_clicked( GtkWidget *w, gpointer data ) -{ - gint r = get_slider_val( "textcolorred" ); - gint g = get_slider_val( "textcolorgreen" ); - gint b = get_slider_val( "textcolorblue" ); - gint a = get_slider_val( "textcoloralpha"); - fg_[0] = r; - fg_[1] = g; - fg_[2] = b; - fg_[3] = a; - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", r,g,b,a, 1 ); -} -void on_buttonbg_clicked( GtkWidget *w, gpointer data ) -{ - gint r = get_slider_val( "textcolorred" ); - gint g = get_slider_val( "textcolorgreen" ); - gint b = get_slider_val( "textcolorblue" ); - gint a = get_slider_val( "textcoloralpha" ); - - bg_[0] = r; - bg_[1] = g; - bg_[2] = b; - bg_[3] = a; - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", r,g,b,a, 2 ); -} -void on_buttonln_clicked( GtkWidget *w, gpointer data ) -{ - gint r = get_slider_val( "textcolorred" ); - gint g = get_slider_val( "textcolorgreen" ); - gint b = get_slider_val( "textcolorblue" ); - gint a = get_slider_val( "textcoloralpha" ); - - ln_[0] = r; - ln_[1] = g; - ln_[2] = b; - ln_[3] = a; - - multi_vims( VIMS_FONT_COL, "%d %d %d %d %d", r,g,b,a, 3 ); -} - -gboolean boxfg_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.red = 255.0 * fg_[0]; - col.green = 255.0 * fg_[1]; - col.blue = 255.0 * fg_[2]; - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} - -gboolean boxbg_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.red = 255.0 * bg_[0]; - col.green = 255.0 * bg_[1]; - col.blue = 255.0 * bg_[2]; - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} - -gboolean boxln_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.red = 255.0 * ln_[0]; - col.green = 255.0 * ln_[1]; - col.blue = 255.0 * ln_[2]; - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} - -gboolean boxred_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.red = 255 * get_slider_val( "textcolorred" ); - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} - - -gboolean boxgreen_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.green = 0xff * get_slider_val( "textcolorgreen" ); - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} -gboolean boxblue_expose_event(GtkWidget *w, - GdkEventExpose *event, gpointer data ) -{ - gdk_window_clear_area( w->window, - event->area.x, event->area.y, - event->area.width,event->area.height ); - - - GdkGC *gc = gdk_gc_new( w->window ); - GdkColor col; - - memset( &col,0, sizeof( GdkColor ) ); - col.blue = 255 * get_slider_val( "textcolorblue" ); - - gdk_color_alloc( gtk_widget_get_colormap( w ), &col ); - - gdk_gc_set_foreground( gc, &col ); - - gdk_draw_rectangle( - w->window, - gc, - TRUE, - 0, - 0, - 24, - 24 ); - - gdk_gc_unref( gc ); - - return TRUE; -} - - -void on_osdbutton_clicked(GtkWidget *w, gpointer data ) -{ - single_vims(VIMS_OSD); -} - -void on_seqactive_toggled( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - int enabled = is_button_toggled("seqactive" ); - multi_vims( VIMS_SEQUENCE_STATUS, "%d", enabled ); - vj_midi_learning_vims_msg(info->midi,NULL, VIMS_SEQUENCE_STATUS, enabled); - vj_msg(VEEJAY_MSG_INFO, "Sample sequencer is %s", (enabled ? "enabled" : "disabled" )); -} - -void on_hqbutton_clicked( GtkWidget *w, gpointer data ) // 1/1 -{ - multitrack_set_quality( info->mt, 0 ); - vj_msg(VEEJAY_MSG_INFO, "Live view quality set to best"); -} -void on_lqbutton_clicked( GtkWidget *w, gpointer data ) // 1/2 -{ - multitrack_set_quality( info->mt, 1 ); - vj_msg(VEEJAY_MSG_INFO, "Live view quality set to half resolution"); -} -void on_bq_button_clicked( GtkWidget *w, gpointer data ) // 1/4 -{ - multitrack_set_quality( info->mt, 2 ); - vj_msg(VEEJAY_MSG_INFO, "Live view quality set to a quarter resolution"); -} -void on_uq_button_clicked( GtkWidget *w, gpointer data ) // 1/8 -{ - multitrack_set_quality( info->mt, 3 ); - vj_msg(VEEJAY_MSG_INFO,"Live view quality set to an eighth resolution"); -} - -void on_record_vp_clicked( GtkWidget *w, gpointer data ) -{ - single_vims( VIMS_RECVIEWPORT ); -} - -void on_subrender_entry_toggle_toggled(GtkWidget *w, gpointer data) -{ - if(info->status_lock || info->parameter_lock) - return; - int enabled = is_button_toggled( "subrender_entry_toggle" ); - multi_vims( VIMS_SUB_RENDER_ENTRY,"%d %d %d", 0,-1,enabled); - vj_msg(VEEJAY_MSG_INFO, "Sub rendering is %s", (enabled ? "enabled" : "disabled")); -} - -void on_transition_enabled_toggled(GtkWidget *w, gpointer data) -{ - if(info->status_lock || info->parameter_lock) - return; - int enabled = is_button_toggled( "transition_enabled" ); - int loop = get_nums("transition_loop"); - - multi_vims( VIMS_SAMPLE_MIX_TRANSITION, "%d %d %d %d", 0, -1, enabled, loop ); - if(enabled) { - vj_msg(VEEJAY_MSG_INFO, "Transitioning to mixing source at loop %d", loop); - } - else { - vj_msg(VEEJAY_MSG_INFO, "Disabled transition to mixing source"); - } -} - -void on_transition_loop_value_changed(GtkWidget *w, gpointer data) -{ - if(info->status_lock || info->parameter_lock) - return; - - int enabled = is_button_toggled( "transition_enabled" ); - int loop = get_nums("transition_loop"); - - multi_vims( VIMS_SAMPLE_MIX_TRANSITION, "%d %d %d %d", 0, -1, enabled, loop ); -} - -void on_macroplay_toggled( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - if( is_button_toggled( "macroplay" )) - { - multi_vims( VIMS_MACRO, "%d", 2 ); - vj_midi_learning_vims_msg( info->midi,NULL,VIMS_MACRO,2 ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg( VEEJAY_MSG_INFO, "Started macro playback"); - } -} - -void on_macrorecord_toggled( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - if( is_button_toggled( "macrorecord")) - { - multi_vims( VIMS_MACRO, "%d", 1 ); - vj_midi_learning_vims_msg( info->midi,NULL,VIMS_MACRO,1 ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Started macro record"); - } -} - -void on_macrostop_toggled( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - if( is_button_toggled( "macrostop")) - { - multi_vims( VIMS_MACRO, "%d", 0 ); - vj_midi_learning_vims_msg( info->midi,NULL,VIMS_MACRO,0 ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Stopped macro playback/record"); - } -} - -void on_macroclear_clicked( GtkWidget *w, gpointer data ) -{ - if(info->status_lock) - return; - - multi_vims( VIMS_MACRO, "%d", 3 ); - vj_midi_learning_vims_msg( info->midi,NULL, VIMS_MACRO, 3); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Reset macro playback/record"); -} - - -void on_macro_loop_position_value_changed( GtkWidget *w, gpointer data) -{ - if(!info->status_lock) - macro_line[2] = (int) gtk_spin_button_get_value( GTK_SPIN_BUTTON(w) ); -} - -void on_macro_dup_position_value_changed( GtkWidget *w, gpointer data ) -{ - if(!info->status_lock) - macro_line[1] = (int) gtk_spin_button_get_value( GTK_SPIN_BUTTON(w) ); -} - -void on_macro_frame_position_value_changed( GtkWidget *w, gpointer data) -{ - if(!info->status_lock) - macro_line[0] = (int) gtk_spin_button_get_value( GTK_SPIN_BUTTON(w) ); -} - -void on_macro_button_clear_bank_clicked( GtkWidget *w, gpointer data) -{ - int num = get_nums("macro_bank_select"); - multi_vims(VIMS_CLEAR_MACRO_BANK, "%d", num); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Macro bank %d cleared", num); -} - -void on_macro_save_button_clicked( GtkWidget *w, gpointer data) -{ - macro_line[0] = get_nums("macro_frame_position"); - macro_line[1] = get_nums("macro_dup_position"); - macro_line[2] = get_nums("macro_loop_position"); - - char *message = get_text("macro_vims_message"); - multi_vims( VIMS_PUT_MACRO, "%d %d %d %s", macro_line[0],macro_line[1],macro_line[2], message ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Saved new event at frame %ld.%d, loop %d", macro_line[0],macro_line[1],macro_line[2]); -} - -void on_macro_delete_button_clicked( GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_DEL_MACRO,"%d %d %d %d", macro_line[0], macro_line[1], macro_line[2], macro_line[3] ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Removed event at frame %ld.%d, loop %d #%d", macro_line[0],macro_line[1],macro_line[2],macro_line[3]); -} - -void on_macro_refresh_button_clicked( GtkWidget *w, gpointer data) -{ - info->uc.reload_hint[HINT_MACRO] = 1; -} - -void on_macro_delete_all_button_clicked( GtkWidget *w, gpointer data) -{ - multi_vims( VIMS_MACRO, "%d", 3 ); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Removed all events from all banks"); -} - -void on_macro_bank_select_value_changed( GtkWidget *w, gpointer data) -{ - int bank = gtk_spin_button_get_value(GTK_SPIN_BUTTON(w)); - multi_vims( VIMS_MACRO_SELECT, "%d",bank); - info->uc.reload_hint[HINT_MACRO] = 1; - vj_msg(VEEJAY_MSG_INFO, "Selected macro bank %d",bank); -} - -void on_midilearn_toggled( GtkWidget *w, gpointer data ) -{ - vj_midi_learn( info->midi); -} - -void on_midievent_toggled( GtkWidget *w, gpointer data ) -{ - vj_midi_play( info->midi ); -} - -void on_load_midi_layout1_activate( GtkWidget *w , gpointer data ) -{ - gchar *filename = dialog_open_file( "Select MIDI configuration file to load",0); - if( filename ) { - vj_midi_load( info->midi, filename ); - g_free(filename); - } -} -void on_save_midi_layout1_activate( GtkWidget *w, gpointer data ) -{ - gchar *filename = dialog_save_file( "Save MIDI configuration to file"); - if(filename) - vj_midi_save( info->midi, filename ); -} - -void on_clear_midi_layout1_activate( GtkWidget *w, gpointer data ) -{ - vj_midi_reset(info->midi); -} - -void on_button_vloop_stop_clicked(GtkWidget *widget, gpointer user_data) -{ - single_vims( VIMS_VLOOPBACK_STOP ); -} - -void on_button_vloop_start_clicked(GtkWidget *widget, gpointer user_data) -{ - multi_vims( VIMS_VLOOPBACK_START, "%d", get_nums( "spin_vloop" ) ); -} - -void on_toggle_multicast_toggled(GtkWidget *widget, gpointer user_data) -{ - if( is_button_toggled( "toggle_multicast" ) ) { - multi_vims( VIMS_VIDEO_MCAST_START, "%d", 0 ); - vj_msg(VEEJAY_MSG_INFO, "Multicast enabled"); - } - else { - single_vims( VIMS_VIDEO_MCAST_STOP ); - vj_msg(VEEJAY_MSG_INFO, "Multicast disabled"); - } -} diff --git a/veejay-current/veejay-client/src/callback.h b/veejay-current/veejay-client/src/callback.h deleted file mode 100644 index 207cad81..00000000 --- a/veejay-current/veejay-client/src/callback.h +++ /dev/null @@ -1,80 +0,0 @@ -/* gveejay - Linux VeeJay - GVeejay GTK+-2/Glade User Interface - * (C) 2002-2015 Niels Elburg - * (C) 2016 JΓ©rΓ΄me Blanchi - * - * 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. - */ - -#ifndef VJCALLBACK_H -#define VJCALLBACK_H - - -#define SLIDER_CHANGED( arg_num, value ) \ -{\ -if(!info->status_lock && !info->parameter_lock)\ -{\ -info->parameter_lock = 1;\ -multi_vims( VIMS_CHAIN_ENTRY_SET_ARG_VAL, "%d %d %d %d", 0, info->uc.selected_chain_entry,arg_num, value );\ -vj_midi_learning_vims_fx( info->midi, arg_num, VIMS_CHAIN_ENTRY_SET_ARG_VAL, 0,info->uc.selected_chain_entry, arg_num,1 );\ -if(info->uc.selected_rgbkey) update_rgbkey_from_slider(); \ -int *entry_tokens = &(info->uc.entry_tokens[0]);\ -update_label_str( "value_friendlyname", _effect_get_hint( entry_tokens[ENTRY_FXID], arg_num, value ));\ -info->parameter_lock = 0;\ -}\ -} - -#define PARAM_CHANGED( arg_num, fraction, name ) \ -{\ -if(!info->status_lock && !info->parameter_lock)\ -{\ -info->parameter_lock = 1;\ -multi_vims( VIMS_CHAIN_ENTRY_SET_ARG_VAL, "%d %d %d %d", 0, info->uc.selected_chain_entry,arg_num, (get_slider_val(name) + fraction) );\ -update_slider_value( name, (get_slider_val(name) + fraction), 0 );\ -vj_midi_learning_vims_fx( info->midi, arg_num, VIMS_CHAIN_ENTRY_SET_ARG_VAL, 0, info->uc.selected_chain_entry,arg_num,2 );\ -if(info->uc.selected_rgbkey) update_rgbkey_from_slider(); \ -int *entry_tokens = &(info->uc.entry_tokens[0]);\ -update_label_str( "value_friendlyname", _effect_get_hint( entry_tokens[ENTRY_FXID], arg_num, get_slider_val(name) ));\ -info->parameter_lock = 0;\ -}\ -} - - -#define KF_CHANGED( arg_num ) \ -{\ -enable_widget("fxanimcontrols");\ -if(arg_num != info->uc.selected_parameter_id)\ -{\ -vj_kf_select_parameter(arg_num);\ -}\ -} - -/*int sample_calctime();*/ -void text_defaults(); - -gboolean boxbg_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); -gboolean boxfg_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); -gboolean boxln_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); -gboolean boxred_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); -gboolean boxblue_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); -gboolean boxgreen_expose_event ( GtkWidget *w, GdkEventExpose *event, gpointer data ); - - -void on_timeline_value_changed ( GtkWidget *widget, gpointer user_data ); -void on_timeline_in_point_changed ( GtkWidget *widget, gpointer user_data ); -void on_timeline_out_point_changed ( GtkWidget *widget, gpointer user_data ); -void on_timeline_bind_toggled( GtkWidget *widget, gpointer user_data ); -void on_timeline_cleared ( GtkWidget *widget, gpointer user_data ); - -#endif diff --git a/veejay-current/veejay-client/src/cellrendererspin.c b/veejay-current/veejay-client/src/cellrendererspin.c deleted file mode 100644 index 77a674e1..00000000 --- a/veejay-current/veejay-client/src/cellrendererspin.c +++ /dev/null @@ -1,358 +0,0 @@ -/*************************************************************************** - cellrendererspin.c - ------------------ - begin : Tue Oct 21 2003 - copyright : (C) 2003 by Tim-Philipp Mόller - email : t.i.m at orange dot net - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 is a dirty 15-minute hack that tries to - * make editable cells with spin buttons instead - * of the text entry widget. - * - * Modify how you please. At the moment you need - * to hook up your own cell data function to make - * sure that the number of digits is the same in - * editing mode as it is in non-editing mode. - * - * The parameters passed to _new() should probably - * be properties, and probably we don't need most - * of them anyway. Also, it would be good if there - * was a better method to ensure that the number - * of digits is the same without this. - * - * Maybe one should just rip out the whole _render - * stuff from GtkCellRendererText and make a - * whole new specialised GtkCellRenderFloat - * or something. - * - * If anyone ever completes this code to sth useful, - * or achieves sth similar in another way, or has - * any comments on it, please drop me a mail. - */ - -#include "cellrendererspin.h" -#include -#include -#include - -#define GUI_CELL_RENDERER_SPIN_PATH "gui-cell-renderer-spin-path" -#define GUI_CELL_RENDERER_SPIN_INFO "gui-cell-renderer-spin-info" - -/* Some boring function declarations: GObject type system stuff */ - -static void gui_cell_renderer_spin_init (GuiCellRendererSpin *cellspin); - -static void gui_cell_renderer_spin_class_init (GuiCellRendererSpinClass *klass); - -static void gui_cell_renderer_spin_finalize (GObject *gobject); - - -static gpointer parent_class; - - -static GtkCellEditable *gui_cell_renderer_spin_start_editing (GtkCellRenderer *cell, - GdkEvent *event, - GtkWidget *widget, - const gchar *path, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GtkCellRendererState flags); - -struct _GCRSpinInfo -{ - gulong focus_out_id; -}; - -typedef struct _GCRSpinInfo GCRSpinInfo; - -/*************************************************************************** - * - * gui_cell_renderer_spin_get_type - * - * Here we register our type with the GObject type system if we - * haven't done so yet. Everything else is done in the callbacks. - * - ***************************************************************************/ - -GType -gui_cell_renderer_spin_get_type (void) -{ - static GType cell_spin_type = 0; - - if (cell_spin_type) - return cell_spin_type; - - if (1) - { - static const GTypeInfo cell_spin_info = - { - sizeof (GuiCellRendererSpinClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gui_cell_renderer_spin_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GuiCellRendererSpin), - 0, /* n_preallocs */ - (GInstanceInitFunc) gui_cell_renderer_spin_init, - }; - - /* Derive from GtkCellRenderer */ - cell_spin_type = g_type_register_static (GTK_TYPE_CELL_RENDERER_TEXT, - "GuiCellRendererSpin", - &cell_spin_info, - 0); - } - - return cell_spin_type; -} - -/*************************************************************************** - * - * gui_cell_renderer_spin_init - * - * Set some default properties of the parent (GtkCellRendererText). - * - ***************************************************************************/ - -static void -gui_cell_renderer_spin_init (GuiCellRendererSpin *cellrendererspin) -{ - return; -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_class_init: - * - ***************************************************************************/ - -static void -gui_cell_renderer_spin_class_init (GuiCellRendererSpinClass *klass) -{ - GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(klass); - GObjectClass *object_class = G_OBJECT_CLASS(klass); - - parent_class = g_type_class_peek_parent (klass); - object_class->finalize = gui_cell_renderer_spin_finalize; - - /* Override the cell renderer's edit-related methods */ - cell_class->start_editing = gui_cell_renderer_spin_start_editing; -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_finalize: free any resources here - * - ***************************************************************************/ - -static void -gui_cell_renderer_spin_finalize (GObject *object) -{ -/* - GuiCellRendererSpin *cellrendererspin = GUI_CELL_RENDERER_SPIN(object); -*/ - - /* Free any dynamically allocated resources here */ - - - /* chain up to parent class to make sure - * they release all their memory as well */ - - (* G_OBJECT_CLASS (parent_class)->finalize) (object); -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_new - * - * return a new cell renderer instance - * (all the parameters should really be properties) - * - * Not sure which of all these values are really - * relevant for the spin button - needs checking! - * - ***************************************************************************/ - -GtkCellRenderer * -gui_cell_renderer_spin_new (gdouble lower, - gdouble upper, - gdouble step_inc, - gdouble page_inc, - gdouble page_size, - gdouble climb_rate, - guint digits) -{ - GtkCellRenderer *cell; - GuiCellRendererSpin *spincell; - - cell = g_object_new(GUI_TYPE_CELL_RENDERER_SPIN, NULL); - - spincell = GUI_CELL_RENDERER_SPIN(cell); - - spincell->lower = lower; - spincell->upper = upper; - spincell->step_inc = step_inc; - spincell->page_inc = page_inc; - spincell->page_size = page_size; - spincell->climb_rate = climb_rate; - spincell->digits = digits; - - return cell; -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_editing_done - * - ***************************************************************************/ - -static void -gui_cell_renderer_spin_editing_done (GtkCellEditable *spinbutton, - gpointer data) -{ - const gchar *path; - const gchar *new_text; - GCRSpinInfo *info; - - info = g_object_get_data (G_OBJECT (data), GUI_CELL_RENDERER_SPIN_INFO); - - if (info->focus_out_id > 0) - { - g_signal_handler_disconnect (spinbutton, info->focus_out_id); - info->focus_out_id = 0; - } - - if (GTK_ENTRY(spinbutton)->editing_canceled) - return; - - path = g_object_get_data (G_OBJECT (spinbutton), GUI_CELL_RENDERER_SPIN_PATH); - new_text = gtk_entry_get_text (GTK_ENTRY(spinbutton)); - - g_signal_emit_by_name(data, "edited", path, new_text); -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_focus_out_event - * - ***************************************************************************/ - -static gboolean -gui_cell_renderer_spin_focus_out_event (GtkWidget *spinbutton, - GdkEvent *event, - gpointer data) -{ - gui_cell_renderer_spin_editing_done (GTK_CELL_EDITABLE (spinbutton), data); - - /* entry needs focus-out-event */ - return FALSE; -} - -/*************************************************************************** - * - * gui_cell_renderer_spin_start_editing - * - ***************************************************************************/ - -static gboolean -onButtonPress (GtkWidget *spinbutton, GdkEventButton *bevent, gpointer data) -{ - if ((bevent->button == 1 && bevent->type == GDK_2BUTTON_PRESS) || bevent->type == GDK_3BUTTON_PRESS) - { - g_print ("double or triple click caught and ignored.\n"); - return TRUE; /* don't invoke other handlers */ - } - - return FALSE; -} - - -/*************************************************************************** - * - * gui_cell_renderer_spin_start_editing - * - ***************************************************************************/ - -static GtkCellEditable * -gui_cell_renderer_spin_start_editing (GtkCellRenderer *cell, - GdkEvent *event, - GtkWidget *widget, - const gchar *path, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GtkCellRendererState flags) -{ - GtkCellRendererText *celltext; - GuiCellRendererSpin *spincell; - GtkAdjustment *adj; - GtkWidget *spinbutton; - GCRSpinInfo *info; - gdouble curval = 0.0; - - celltext = GTK_CELL_RENDERER_TEXT(cell); - spincell = GUI_CELL_RENDERER_SPIN(cell); - - /* If the cell isn't editable we return NULL. */ - if (celltext->editable == FALSE) - return NULL; - - spinbutton = g_object_new (GTK_TYPE_SPIN_BUTTON, "has_frame", FALSE, "numeric", TRUE, NULL); - - /* dirty */ - if (celltext->text) - curval = atof(celltext->text); - - adj = GTK_ADJUSTMENT(gtk_adjustment_new(curval, - spincell->lower, - spincell->upper, - spincell->step_inc, - spincell->page_inc, - 0)); - - gtk_spin_button_configure(GTK_SPIN_BUTTON(spinbutton), adj, spincell->climb_rate, spincell->digits); - - g_object_set_data_full (G_OBJECT(spinbutton), GUI_CELL_RENDERER_SPIN_PATH, g_strdup (path), g_free); - - gtk_editable_select_region (GTK_EDITABLE (spinbutton), 0, -1); - - gtk_widget_show (spinbutton); - - g_signal_connect (spinbutton, "editing_done", - G_CALLBACK (gui_cell_renderer_spin_editing_done), - celltext); - - /* hack trying to catch the quite annoying effect - * a double click has while editing */ - - g_signal_connect (spinbutton, "button_press_event", - G_CALLBACK (onButtonPress), - NULL); - - info = g_new0(GCRSpinInfo, 1); - - info->focus_out_id = g_signal_connect (spinbutton, "focus_out_event", - G_CALLBACK (gui_cell_renderer_spin_focus_out_event), - celltext); - - g_object_set_data_full (G_OBJECT (cell), GUI_CELL_RENDERER_SPIN_INFO, info, g_free); - - return GTK_CELL_EDITABLE (spinbutton); -} diff --git a/veejay-current/veejay-client/src/cellrendererspin.h b/veejay-current/veejay-client/src/cellrendererspin.h deleted file mode 100644 index 89f6aa74..00000000 --- a/veejay-current/veejay-client/src/cellrendererspin.h +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************** - cellrendererspin.h - ------------------ - begin : Tue Oct 21 2003 - copyright : (C) 2003 by Tim-Philipp Mόller - email : t.i.m at orange dot net - ***************************************************************************/ - -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ - -#ifndef _cellrendererspin_h_included_ -#define _cellrendererspin_h_included_ - -#include - -/* Some boilerplate GObject type check and type cast macros */ - -#define GUI_TYPE_CELL_RENDERER_SPIN (gui_cell_renderer_spin_get_type()) -#define GUI_CELL_RENDERER_SPIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GUI_TYPE_CELL_RENDERER_SPIN, GuiCellRendererSpin)) -#define GUI_CELL_RENDERER_SPIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CELL_RENDERER_SPIN, GuiCellRendererSpinClass)) -#define GUI_IS_CELL_RENDERER_SPIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CELL_RENDERER_SPIN)) -#define GUI_IS_CELL_RENDERER_SPIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CELL_RENDERER_SPIN)) -#define GUI_CELL_RENDERER_SPIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CELL_RENDERER_SPIN, GuiCellRendererSpinClass)) - - - -typedef struct _GuiCellRendererSpin GuiCellRendererSpin; -typedef struct _GuiCellRendererSpinClass GuiCellRendererSpinClass; - - -struct _GuiCellRendererSpin -{ - GtkCellRendererText parent; - - gdouble lower; - gdouble upper; - gdouble step_inc; - gdouble page_inc; - gdouble page_size; - gdouble climb_rate; - guint digits; -}; - -struct _GuiCellRendererSpinClass -{ - GtkCellRendererTextClass parent_class; -}; - -GType gui_cell_renderer_spin_get_type (void); - -GtkCellRenderer *gui_cell_renderer_spin_new (gdouble lower, - gdouble upper, - gdouble step_inc, - gdouble page_inc, - gdouble page_size, - gdouble climb_rate, - guint digits); - - -#endif /* _spinbar_renderer_h_included_ */ - diff --git a/veejay-current/veejay-client/src/common.h b/veejay-current/veejay-client/src/common.h deleted file mode 100644 index a723728b..00000000 --- a/veejay-current/veejay-client/src/common.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ -#ifndef GVRCOMMON_H -#define GVRCOMMON_H -#define STATUS_BYTES 150 -#define STATUS_TOKENS 35 -#define STATUS_LENGTH 512 -#define VEEJAY_CODENAME VERSION -/* Status bytes */ - -#define ELAPSED_TIME 0 -#define PLAY_MODE 2 -#define CURRENT_ID 3 -#define SAMPLE_FX 4 -#define SAMPLE_START 5 -#define SAMPLE_END 6 -#define SAMPLE_SPEED 7 -#define SAMPLE_LOOP 8 -#define SAMPLE_COUNT 12 -#define SAMPLE_MARKER_START 13 -#define STREAM_TYPE 13 -#define SAMPLE_MARKER_END 14 -#define FRAME_NUM 1 -#define TOTAL_FRAMES 6 -#define TOTAL_SLOTS 16 -#define TOTAL_MEM 17 -#define CURRENT_FPS 18 -#define CYCLE_LO 19 -#define CYCLE_HI 20 -#define SEQ_ACT 21 -#define SEQ_CUR 22 -#define CHAIN_FADE 23 -#define FRAME_DUP 24 -#define MACRO 25 -#define SUBRENDER 26 -#define FADE_METHOD 27 -#define FADE_ENTRY 28 -#define FADE_ALPHA 29 -#define SAMPLE_LOOP_STAT 30 -#define SAMPLE_LOOP_STAT_STOP 31 -#define SAMPLE_INV_COUNT 33 -#define FEEDBACK 32 -#define CURRENT_ENTRY 15 -#define MODE_PLAIN 2 -#define MODE_SAMPLE 0 -#define MODE_PATTERN 3 -#define MODE_STREAM 1 -#define STREAM_COL_R 5 -#define STREAM_COL_G 6 -#define STREAM_COL_B 7 -#define STREAM_RECORDED 11 -#define STREAM_DURATION 10 -#define STREAM_RECORDING 9 -#define MAX_UI_PARAMETERS 16 -#define STREAM_AVF 12 - -#endif diff --git a/veejay-current/veejay-client/src/curve.c b/veejay-current/veejay-client/src/curve.c deleted file mode 100644 index 8a08ecf2..00000000 --- a/veejay-current/veejay-client/src/curve.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include "curve.h" -void get_points_from_curve( GtkWidget *curve, int len, float *vec ) -{ - gtk_curve_get_vector( GTK_CURVE(curve), len, vec ); -} - -void reset_curve( GtkWidget *curve ) -{ - gtk_widget_set_sensitive( GTK_WIDGET(curve), TRUE ); - gtk_curve_reset(GTK_CURVE(curve)); - gtk_curve_set_range( GTK_CURVE(curve), 0.0, 1.0, 0.0, 1.0 ); -} - -void set_points_in_curve( int type, GtkWidget *curve) -{ - gtk_curve_set_curve_type( GTK_CURVE(curve), type ); -} - - -int set_points_in_curve_ext( GtkWidget *curve, unsigned char *blob, int id, int fx_entry, int *lo, int *hi, int *curve_type, int *status) -{ - int parameter_id = 0; - int start = 0, end =0,type=0; - int entry = 0; - int n = sscanf( (char*) blob, "key%2d%2d%8d%8d%2d%2d", &entry, ¶meter_id, &start, &end,&type,status ); - int len = end - start; - int i; - int min = 0, max = 0; - - if(n != 6 || len <= 0 ) - { - return -1; - } - - _effect_get_minmax(id, &min, &max, parameter_id ); - - unsigned int k = 0; - unsigned char *in = blob + 27; - float *vec = (float*) vj_calloc(sizeof(float) * len ); - int diff = max - min; - for(i = start ; i < end; i ++ ) - { - unsigned char *ptr = in + (k * 4); - int value = - ( ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24) ); - - // val = ((Input - InputLow) / (InputHigh - InputLow)) * (OutputHigh - OutputLow) + OutputLow; - // with OutputLow==0 and OutputHigh==1 in gtkcurve range - float val = ((float)(value - min) / (diff)); - - vec[k] = val; - k++; - } - - gtk_curve_set_vector( GTK_CURVE( curve ), len, vec ); - - switch( type ) { - case 1: *curve_type = GTK_CURVE_TYPE_SPLINE; break; - case 2: *curve_type = GTK_CURVE_TYPE_FREE; break; - default: *curve_type = GTK_CURVE_TYPE_LINEAR; break; - } - - gtk_curve_set_curve_type( GTK_CURVE(curve), *curve_type ); - - *lo = start; - *hi = end; - - free(vec); - - return parameter_id; -} diff --git a/veejay-current/veejay-client/src/curve.h b/veejay-current/veejay-client/src/curve.h deleted file mode 100644 index 948657ab..00000000 --- a/veejay-current/veejay-client/src/curve.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ - -#ifndef VJCURVE_H -#define VJCURVE_H -#include -#include -#include -#define MAX_CHAIN_LEN 20 - - -int set_points_in_curve_ext( GtkWidget *curve, unsigned char *blob, int id, int fx_entry, int *lo, int *hi, int *ct, int *status); -void set_points_in_curve( int type, GtkWidget *curve); -void reset_curve( GtkWidget *curve ); -void get_points_from_curve( GtkWidget *curve, int len, float *v ); - -#endif diff --git a/veejay-current/veejay-client/src/gtktimeselection.c b/veejay-current/veejay-client/src/gtktimeselection.c deleted file mode 100644 index 1098d036..00000000 --- a/veejay-current/veejay-client/src/gtktimeselection.c +++ /dev/null @@ -1,870 +0,0 @@ -/* veejay - Linux VeeJay - * (C) 2002-2015 Niels Elburg - * - * - * 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. - */ - -/* - Implements a new slider type widget with selection markers - - */ - -#include -#include -#include -#include - -#include "gtktimeselection.h" - -//G_DEFINE_TYPE(TimelineSelectionClass, timeline, GTK_TYPE_DRAWING_AREA ); - -enum -{ - POS_CHANGED, - IN_CHANGED, - OUT_CHANGED, - BIND_CHANGED, - CLEAR_CHANGED, - SELECTION_CHANGED_SIGNAL, - LAST_SIGNAL -}; - -enum -{ - MIN = 1, - MAX = 2, - POS = 3, - LENGTH = 4, - IN_POINT = 5, - OUT_POINT = 6, - SEL = 7, - BIND = 8, - CLEARED = 9, -}; - -typedef enum { - MOUSE_OUTSIDE, - MOUSE_STEPPER, - MOUSE_SELECTION, - MOUSE_WIDGET /* inside widget but not in any of the above */ -} mouse_location; - - -/* Slider with 2 bars - - - -*/ - -typedef enum TimelineAction -{ - action_none = 0, - action_in_point, - action_out_point, - action_pos, - action_atomic, -} TimelineAction; - -#define POINT_IN_RECT(xcoord, ycoord, rect) \ - ((xcoord) >= (rect).x && \ - (xcoord) < ((rect).x + (rect).width) && \ - (ycoord) >= (rect).y && \ - (ycoord) < ((rect).y + (rect).height)) - -struct _TimelineSelection -{ - GtkDrawingArea cr; - GtkWidget *widget; - gdouble min; - gdouble max; - gdouble value; - gdouble frame_num; - gdouble num_video_frames; - gdouble in; - gdouble out; - gboolean bind; - gint grab_button; - TimelineAction action; - mouse_location grab_location; - mouse_location current_location; - GdkRectangle stepper; - GdkRectangle selection; - gboolean has_stepper; - gboolean clear; - gdouble stepper_size; /* size of triangle */ - gdouble stepper_draw_size; - gdouble stepper_length; /* length from top to bottom */ - gint step_size; /* step frames 1,2,4,8,16, ... */ - gdouble frame_width; - gdouble frame_height; - gdouble font_line; - gboolean has_selection; /* use in/out points for selection */ - gdouble move_x; -}; - -static void get_property( GObject *object, - guint id, GValue *value , GParamSpec *pspec ); - -static void set_property (GObject *object, - guint id, const GValue * value, GParamSpec *pspec); - -static gboolean event_press (GtkWidget *widget, GdkEventButton *bev, gpointer user_data); - -static gboolean event_release (GtkWidget *widget, GdkEventButton *bev, gpointer user_data); - -static gboolean event_motion (GtkWidget *widget, GdkEventMotion *mev, gpointer user_data); - -static gboolean event_scroll (GtkWidget *widget, GdkEventScroll *mev, gpointer user_data); - -static void timeline_class_init( TimelineSelectionClass *class ); - -static void timeline_init(TimelineSelection *te ); - -static gboolean timeline_expose(GtkWidget *widget, GdkEventExpose *event ); - -static GObjectClass *parent_class = NULL; -static gint timeline_signals[LAST_SIGNAL] = { 0 }; - -struct _TimelineSelectionClass -{ - GtkWidgetClass parent_class; - void (*pos_changed) (TimelineSelection *te); - void (*in_point_changed) (TimelineSelection *te); - void (*out_point_changed) (TimelineSelection *te); - void (*bind_toggled) (TimelineSelection *te); - void (*cleared) (TimelineSelection *te); -}; -static void set_property (GObject *object, - guint id, const GValue *value, GParamSpec *pspec) -{ - TimelineSelection *te = TIMELINE_SELECTION(object); - switch(id) - { - case MIN: - if(te->min != g_value_get_double(value)) - { - te->min = g_value_get_double(value); - } - break; - case MAX: - if(te->max != g_value_get_double(value)) - { - te->min = g_value_get_double(value); - } - break; - case POS: - if(te->frame_num != g_value_get_double(value)) - { - te->frame_num = g_value_get_double(value); - } - break; - case LENGTH: - if(te->num_video_frames != g_value_get_double(value)) - { - te->num_video_frames = g_value_get_double(value); - } - break; - case IN_POINT: - if(te->in != g_value_get_double(value)) - { - if( g_value_get_double(value) < te->out ) - te->in = g_value_get_double(value); - } - break; - case OUT_POINT: - if(te->out != g_value_get_double(value)) - { - if( g_value_get_double(value) > te->in ) - te->out = g_value_get_double(value); - } - break; - case SEL: - if(te->has_selection != g_value_get_boolean(value)) - { - te->has_selection = g_value_get_boolean(value); - } - break; - case BIND: - if(te->bind != g_value_get_boolean(value)) - { - te->bind = g_value_get_boolean(value); - } - break; - case CLEARED: - if(te->clear != g_value_get_boolean(value)) - { - te->clear = g_value_get_boolean(value); - } - break; - default: - g_assert(FALSE); - break; - } - gtk_widget_queue_draw( GTK_WIDGET( te )); - -} - -static void get_property( GObject *object, - guint id, GValue *value , GParamSpec *pspec ) -{ - TimelineSelection *te = TIMELINE_SELECTION(object); - switch( id ) - { - case MIN: g_value_set_double( value, te->min );break; - case MAX: g_value_set_double( value, te->max );break; - case POS: g_value_set_double( value, te->frame_num ); break; - case LENGTH: g_value_set_double( value, te->num_video_frames ); break; - case IN_POINT: g_value_set_double( value, te->in ); break; - case OUT_POINT: g_value_set_double( value, te->out ); break; - case SEL: g_value_set_boolean(value, te->has_selection) ; break; - case BIND: g_value_set_boolean(value, te->bind ); break; - case CLEARED: g_value_set_boolean(value,te->clear );break; - } -} - -static void finalize (GObject *object) -{ - parent_class->finalize( object ); -} - -static void timeline_class_init( TimelineSelectionClass *class ) -{ - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(class); - widget_class->expose_event = timeline_expose; - - GObjectClass *gobject_class; - gobject_class = G_OBJECT_CLASS( class ); - parent_class = g_type_class_peek( GTK_TYPE_DRAWING_AREA ); - gobject_class->finalize = finalize; - gobject_class->get_property = get_property; - gobject_class->set_property = set_property; - - g_object_class_install_property( gobject_class, - MIN, - g_param_spec_double( "min", - "left", "left", 0.0, 1.0, 0.0, G_PARAM_READWRITE )); - - g_object_class_install_property( gobject_class, - MAX, - g_param_spec_double( "max", - "right", "right", 0.0, 1.0, 1.0, G_PARAM_READWRITE )); - - g_object_class_install_property( gobject_class, - POS, - g_param_spec_double( "pos", - "current position", "current position", 0.0,9999999.0, 0.0, - G_PARAM_READWRITE )); - - g_object_class_install_property( gobject_class, - LENGTH, - g_param_spec_double( "length", - "Length (in frames)", "Length (in frames) ",0.0,9999999.0, 1.0, - G_PARAM_READWRITE )); - - - g_object_class_install_property( gobject_class, - IN_POINT, - g_param_spec_double( "in", - "In point", "(in frames) ",0.0,1.0, 0.0, - G_PARAM_READWRITE )); - - - g_object_class_install_property( gobject_class, - OUT_POINT, - g_param_spec_double( "out", - "Out point", "(in frames) ",0.0,1.0, 1.0, - G_PARAM_READWRITE )); - - g_object_class_install_property( gobject_class, - SEL, - g_param_spec_boolean( "selection", - "Marker", "(in frames) ",FALSE, - G_PARAM_READWRITE )); - - g_object_class_install_property( gobject_class, - BIND, - g_param_spec_boolean( "bind", "Bind marker", "Bind In/Out points", FALSE, G_PARAM_READWRITE)); - - g_object_class_install_property( gobject_class, - CLEARED, - g_param_spec_boolean( "clear", "Clear marker", "Clear in/out points", FALSE, G_PARAM_READWRITE )); - - timeline_signals[ SELECTION_CHANGED_SIGNAL ] = - g_signal_new( "selection_changed", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_FIRST,0,NULL,NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 , NULL ); - - timeline_signals[ POS_CHANGED ] = - g_signal_new( "pos_changed", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET( TimelineSelectionClass, pos_changed ), - NULL,NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL); - - timeline_signals[ IN_CHANGED ] = - g_signal_new( "in_point_changed", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET( TimelineSelectionClass, in_point_changed ), - NULL,NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL); - - timeline_signals[ OUT_CHANGED ] = - g_signal_new( "out_point_changed", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET( TimelineSelectionClass, out_point_changed ), - NULL,NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL); - - timeline_signals[ CLEAR_CHANGED ] = - g_signal_new( "cleared", G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET( TimelineSelectionClass, cleared ), - NULL,NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL ); - - timeline_signals[ BIND_CHANGED ] = - g_signal_new( "bind_toggled", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET( TimelineSelectionClass, bind_toggled ), - NULL,NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, NULL ); - -} - -static int default_theme_ = 1; - -void timeline_theme_colors( int inverse ) -{ - default_theme_ = inverse; -} - -static void timeline_init( TimelineSelection *te ) -{ - te->min = 0.0; - te->max = 0.0; - te->action = action_none; - te->in = 0.0; - te->out = 1.0; - te->num_video_frames = 1.0; - te->frame_num = 0.0; - te->grab_location = MOUSE_OUTSIDE; - te->current_location = MOUSE_OUTSIDE; - te->grab_button = 0; - te->has_stepper = TRUE; - te->has_selection = FALSE; - te->stepper_size = 24; - te->stepper_draw_size = 16; - te->stepper_length = 0; - te->frame_height = 10; - te->font_line = 18; - te->move_x = 0; -} - -GType timeline_get_type(void) -{ - static GType gtype = 0; - if(!gtype) - { - static const GTypeInfo ginfo = { - sizeof( TimelineSelectionClass), - NULL, - NULL, - (GClassInitFunc) timeline_class_init, - NULL, - NULL, - sizeof(TimelineSelection), - 0, - (GInstanceInitFunc) timeline_init, - NULL - }; - gtype = g_type_register_static( GTK_TYPE_DRAWING_AREA, "Timeline", &ginfo, 0 ); - } - return gtype; -} - - - -gdouble timeline_get_in_point( TimelineSelection *te ) -{ - gdouble result = 0.0; - g_object_get( G_OBJECT(te), "in", &result, NULL ); - return result; -} - -gdouble timeline_get_out_point( TimelineSelection *te ) -{ - gdouble result = 0.0; - g_object_get( G_OBJECT(te), "out", &result, NULL ); - return result; -} - -gboolean timeline_get_selection( TimelineSelection *te ) -{ - gboolean result = FALSE; - g_object_get( G_OBJECT(te), "selection", &result, NULL ); - return result; -} - -gboolean timeline_get_bind( TimelineSelection *te ) -{ - gboolean result = FALSE; - g_object_get( G_OBJECT(te), "bind", &result, NULL ); - return result; -} - -void timeline_set_bind(GtkWidget *widget, gboolean active) -{ - TimelineSelection *te = TIMELINE_SELECTION(widget); - g_object_set( G_OBJECT(te), "bind", active, NULL ); - g_signal_emit( te->widget, timeline_signals[BIND_CHANGED], 0); -} - -void timeline_set_out_point( GtkWidget *widget, gdouble pos ) -{ - TimelineSelection *te = TIMELINE_SELECTION(widget); - if( pos < 0.0 ) pos = 0.0; else if (pos > 1.0 ) pos = 1.0; - g_object_set( G_OBJECT(te), "out", pos, NULL ); - g_signal_emit(te->widget, timeline_signals[OUT_CHANGED], 0); - gtk_widget_queue_draw( GTK_WIDGET(te->widget) ); -} - -void timeline_clear_points( GtkWidget *widget ) -{ - gboolean cleared = TRUE; - gdouble pos = 0.0; - gdouble pos2 = 1.0; - TimelineSelection *te = TIMELINE_SELECTION(widget); - g_object_set( G_OBJECT(te), "clear", cleared, NULL ); - g_object_set( G_OBJECT(te), "in", pos, NULL ); - g_object_set( G_OBJECT(te), "out", pos2, NULL ); - g_signal_emit(te->widget, timeline_signals[CLEAR_CHANGED], 0 ); - gtk_widget_queue_draw(GTK_WIDGET(te->widget) ); -} - -void timeline_set_in_point( GtkWidget *widget, gdouble pos ) -{ - TimelineSelection *te = TIMELINE_SELECTION(widget); - if( pos < 0.0 ) pos = 0.0; else if (pos > 1.0 ) pos = 1.0; - g_object_set( G_OBJECT(te), "in", pos, NULL ); - g_signal_emit(te->widget, timeline_signals[IN_CHANGED], 0); - gtk_widget_queue_draw( GTK_WIDGET(te->widget) ); -} - -void timeline_set_selection( GtkWidget *widget, gboolean active) -{ - TimelineSelection *te = TIMELINE_SELECTION(widget); - g_object_set( G_OBJECT(te), "selection", active, NULL ); - gtk_widget_queue_draw( GTK_WIDGET(te->widget) ); -} - -void timeline_set_length( GtkWidget *widget, gdouble length, gdouble pos) -{ - TimelineSelection *te = TIMELINE_SELECTION( widget ); - if( pos < 0.0 ) pos = 0.0; - g_object_set( G_OBJECT(te), "length", length, NULL ); - timeline_set_pos( GTK_WIDGET(te->widget), pos ); -} - -void timeline_set_pos( GtkWidget *widget,gdouble pos) -{ - TimelineSelection *te = TIMELINE_SELECTION( widget ); - if( pos < 0.0 ) pos = 0.0; - g_object_set( G_OBJECT(te), "pos", pos, NULL ); - g_signal_emit( te->widget, timeline_signals[POS_CHANGED], 0); - gtk_widget_queue_draw( GTK_WIDGET(te->widget) ); -} - -gdouble timeline_get_pos( TimelineSelection *te ) -{ - gdouble result = 0.0; - g_object_get( G_OBJECT(te), "pos", &result, NULL ); - return result; -} - -gdouble timeline_get_length( TimelineSelection *te ) -{ - gdouble result = 0.0; - g_object_get( G_OBJECT(te), "length", &result, NULL ); - return result; -} - -static void move_selection( GtkWidget *widget, gdouble x, gdouble width ) -{ - TimelineSelection *te = TIMELINE_SELECTION( widget ); - - gdouble dx3 = (0.5 * (te->out - te->in)) * width; - - gdouble dx1 = x - dx3; - gdouble dx2 = x + dx3; - - te->in = (1.0/width) * dx1; - te->out = (1.0/width ) * dx2; - - timeline_set_out_point(widget, te->out ); - timeline_set_in_point(widget, te->in ); - te->move_x = x; - -} - -static gboolean -event_scroll (GtkWidget *widget, GdkEventScroll *ev, gpointer user_data) -{ - TimelineSelection *te = TIMELINE_SELECTION (widget); - gint x,y; - GdkModifierType state; - gdk_window_get_pointer( ev->window, &x,&y,&state ); - - if( ev->direction == GDK_SCROLL_UP ) { - gdouble cur_pos = timeline_get_pos(te); - timeline_set_pos( widget, cur_pos + 1 ); - } - else if(ev->direction == GDK_SCROLL_DOWN ) { - gdouble cur_pos = timeline_get_pos(te); - timeline_set_pos( widget, cur_pos - 1 ); - } - - gtk_widget_queue_draw( widget ); - - return FALSE; -} - - -static gboolean event_press(GtkWidget *widget, GdkEventButton *ev, gpointer user_data) -{ - TimelineSelection *te = TIMELINE_SELECTION( widget ); - gdouble width = widget->allocation.width; - - te->grab_button = ev->button; - te->current_location = MOUSE_WIDGET; - - - if( ev->type == GDK_2BUTTON_PRESS && te->grab_button == 1 ) - { - timeline_clear_points( widget ); - return FALSE; - } - - if(te->grab_button == 1 && POINT_IN_RECT( ev->x, ev->y, te->stepper ) ) - { - if(te->has_stepper) - { - te->current_location = MOUSE_STEPPER; - te->action = action_pos; - } - return FALSE; - } - - if(te->grab_button == 1 && te->has_selection) - { - if( POINT_IN_RECT( ev->x, ev->y, te->selection ) && te->bind ) - { - te->current_location = MOUSE_SELECTION; - } - if(!te->bind) - { - gdouble val = (1.0 / width) * ev->x; - timeline_set_in_point( widget, val ); - } - } - else if(te->grab_button == 3 && te->has_selection ) - { - if( POINT_IN_RECT( ev->x, ev->y, te->selection ) && te->bind ) - { - te->current_location = MOUSE_SELECTION; - } - if(!te->bind) - { - gdouble val = (1.0/width) * ev->x; - timeline_set_out_point( widget, val ); - } - } - else if(te->grab_button == 2 && te->has_selection) - { - gint dx = ev->x; - gint dy = ev->y; - if( POINT_IN_RECT( dx, dy, te->selection ) ) - { - timeline_set_bind( widget, (te->bind ? FALSE: TRUE )); - te->move_x = (gdouble) ev->x; - } - } - - - gtk_widget_queue_draw( widget ); - - return FALSE; -} -static gboolean event_release (GtkWidget *widget, GdkEventButton *ev, gpointer user_data) -{ - TimelineSelection *te = TIMELINE_SELECTION (widget); - te->action = action_none; - te->current_location = MOUSE_WIDGET; -// te->grab_button = 0; -// te->move_x = 0; - return FALSE; -} - -static gboolean -event_motion (GtkWidget *widget, GdkEventMotion *ev, gpointer user_data) -{ - TimelineSelection *te = TIMELINE_SELECTION (widget); - gdouble width = (gdouble) widget->allocation.width; - gint x,y; - GdkModifierType state; - gdk_window_get_pointer( ev->window, &x,&y,&state ); - - - if( te->has_stepper && te->current_location == MOUSE_STEPPER && ev->state & GDK_BUTTON1_MASK) - { - gdouble rel_pos = ((gdouble)ev->x / width) * te->num_video_frames; - gdouble new_pos = (gdouble) ((gint) rel_pos ); - - timeline_set_pos( widget, new_pos ); - return FALSE; - } - - if( te->has_selection && te->current_location != MOUSE_STEPPER) - { - if(!te->bind) - { - gdouble gx = (1.0 / width) * x; - if(te->grab_button == 1 && ev->state & GDK_BUTTON1_MASK) - timeline_set_in_point(widget, gx ); - else if(te->grab_button == 3 && ev->state & GDK_BUTTON3_MASK) - timeline_set_out_point( widget, gx ); - } - } - - if(te->has_selection && te->bind && te->grab_button == 2 ) - move_selection( widget, x, width ); - - gtk_widget_queue_draw( widget ); - - return FALSE; -} -/* draw a rounded rectangle */ -void -cairo_rectangle_round (cairo_t * cr, - double x0, - double y0, double width, double height, double radius) -{ - double x1, y1; - - x1 = x0 + width; - y1 = y0 + height; - if (width <= 0.001 || height <= 0.001) - return; - if (width / 2 < radius) - { - if (height / 2 < radius) - { - cairo_move_to (cr, x0, (y0 + y1) / 2); - cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0); - cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2); - cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1); - cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2); - } - else - { - cairo_move_to (cr, x0, y0 + radius); - cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0); - cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius); - cairo_line_to (cr, x1, y1 - radius); - cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1); - cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius); - } - } - else -{ - if (height / 2 < radius) - { - cairo_move_to (cr, x0, (y0 + y1) / 2); - cairo_curve_to (cr, x0, y0, x0, y0, x0 + radius, y0); - cairo_line_to (cr, x1 - radius, y0); - cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2); - cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1); - cairo_line_to (cr, x0 + radius, y1); - cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2); - } - else - { - cairo_move_to (cr, x0, y0 + radius); - cairo_curve_to (cr, x0, y0, x0, y0, x0 + radius, y0); - cairo_line_to (cr, x1 - radius, y0); - cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius); - cairo_line_to (cr, x1, y1 - radius); - cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1); - cairo_line_to (cr, x0 + radius, y1); - cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius); - } - } - cairo_close_path (cr); -} - -static gboolean timeline_expose (GtkWidget *widget, GdkEventExpose *event ) -{ - cairo_t *cr; - cr = gdk_cairo_create( widget->window ); - - TimelineSelection *te = TIMELINE_SELECTION( widget ); - double width = widget->allocation.width; - double height = widget->allocation.height; - - gdouble marker_width = width/ te->num_video_frames; -// gdouble marker_height = height / te->num_video_frames; - gdouble marker_height = te->frame_height; - - te->frame_width = marker_width; - - cairo_save(cr); - cairo_identity_matrix(cr); - -/* Draw stepper */ - if( te->has_stepper ) - { - cairo_set_source_rgba( cr, 1.0,0.0,0.0,1.0); - double x1 = marker_width * te->frame_num; - te->stepper.x = x1 - 8; - te->stepper.y = 0; - te->stepper.width = te->stepper_size + 8; - te->stepper.height = te->stepper_size + 2; - - cairo_move_to( cr, x1 - te->stepper_draw_size, 0.0 * height ); - cairo_rel_line_to( cr, te->stepper_draw_size, te->stepper_draw_size ); - cairo_rel_line_to( cr, te->stepper_draw_size, -te->stepper_draw_size ); - cairo_rel_line_to( cr, -2.0 * te->stepper_draw_size, 0 ); - cairo_set_line_join( cr, CAIRO_LINE_JOIN_MITER); - cairo_move_to(cr, x1, te->stepper_draw_size ); - cairo_rel_line_to( cr, 0.0, te->stepper_length ); - cairo_stroke(cr); - if( te->grab_button == 1 && te->current_location == MOUSE_STEPPER ) - { - cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD ); - - cairo_move_to(cr, x1 + (te->stepper_size * 0.5),te->font_line ); - gchar text[40]; - sprintf(text, "%d", (gint)te->frame_num ); - cairo_text_path( cr, text ); - cairo_set_font_size( cr, 0.2 ); - double v = ( default_theme_ ? 1.0 : 0.0 ); - cairo_set_source_rgba( cr, v,v,v,0.7 ); - cairo_fill(cr); - } - } -/* Draw selection */ - if( te->has_selection ) - { - gdouble in = te->in * width; - gdouble out = te->out * width; - gdouble v = (default_theme_ ? 1.0: 0.0); - - /* If user is editing in_point */ - if( te->grab_button == 1 && te->current_location != MOUSE_STEPPER ) - { - gdouble f = te->in * te->num_video_frames; - cairo_set_source_rgba( cr, 0.0, v,v,0.3 ); - cairo_move_to( cr, in, 0.0 ); - cairo_rel_line_to( cr, 0.0 , te->stepper_length ); - cairo_stroke(cr); - - cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD ); - - cairo_move_to(cr, in , te->font_line ); - gchar text[40]; - sprintf(text, "%d",(gint) f ); - cairo_text_path( cr, text ); - cairo_set_font_size( cr, 0.2 ); - cairo_set_source_rgba( cr, v,v,v,0.7 ); - cairo_fill(cr); - - } - if( te->grab_button == 3 && te->current_location != MOUSE_STEPPER ) - { - gdouble f = te->out * te->num_video_frames; - cairo_set_source_rgba( cr, 0.0, v,v,0.3 ); - cairo_move_to( cr, out , 0.0 ); - cairo_rel_line_to( cr, 0.0 , te->stepper_length ); - cairo_stroke(cr); - - cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD ); - - cairo_move_to(cr, out ,te->font_line ); - gchar text[40]; - sprintf(text, "%d", (gint) f ); - cairo_text_path( cr, text ); - cairo_set_font_size( cr, 0.2 ); - cairo_set_source_rgba( cr, v,v,v,0.7 ); - cairo_fill(cr); - } - - cairo_set_source_rgba( cr, v, v, v, 0.3 ); - cairo_rectangle_round(cr, in, - 0.095 * height, - (out - in), - marker_height, - 10); - te->selection.x = in; - te->selection.y = 0; - te->selection.width = out; - te->selection.height = te->font_line; - cairo_fill_preserve(cr); - } - cairo_restore(cr); - - cairo_destroy(cr); - return FALSE; -} - -GtkWidget *timeline_new(void) -{ - GtkWidget *widget = GTK_WIDGET( g_object_new( timeline_get_type(), NULL )); - TimelineSelection *te = TIMELINE_SELECTION( widget ); - - gtk_widget_set_size_request(widget, 200,24 ); - - gtk_widget_set_events( widget, - GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_POINTER_MOTION_MASK | - GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON3_MOTION_MASK | GDK_2BUTTON_PRESS | GDK_SCROLL_MASK ); - - g_signal_connect( G_OBJECT(widget), "expose_event", G_CALLBACK(timeline_expose), NULL ); - g_signal_connect( G_OBJECT(widget), "motion_notify_event", - G_CALLBACK(event_motion), NULL ); - g_signal_connect( G_OBJECT(widget), "button_press_event", - G_CALLBACK(event_press), NULL ); - g_signal_connect( G_OBJECT(widget), "button_release_event", - G_CALLBACK(event_release), NULL ); - g_signal_connect( G_OBJECT(widget), "scroll_event", - G_CALLBACK( event_scroll ), NULL ); - - te->widget = widget; - - return widget; -} diff --git a/veejay-current/veejay-client/src/gtktimeselection.h b/veejay-current/veejay-client/src/gtktimeselection.h deleted file mode 100644 index b146932e..00000000 --- a/veejay-current/veejay-client/src/gtktimeselection.h +++ /dev/null @@ -1,68 +0,0 @@ -/* veejay - Linux VeeJay - * (C) 2002-2004 Niels Elburg - * - * - * 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. - */ -#ifndef GTKTIMESELECTION_H -#define GTKTIMESELECTION_H - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define TIMELINE_SELECTION(obj) GTK_CHECK_CAST(obj, timeline_get_type(), TimelineSelection ) - -#define TIMELINE_SELECTION_CLASS(klass) GTK_CHECK_CLASS_CAST( klass, timeline_get_type(), TimelineSelectionClass ) - -#define IS_TIMELINE_SELECTION(obj) GTK_CHECK_TYPE( obj, timeline_get_type() ) - -typedef struct _TimelineSelection TimelineSelection; -typedef struct _TimelineSelectionClass TimelineSelectionClass; - -GtkType timeline_get_type (void); -GtkWidget* timeline_new (void); - -gdouble timeline_get_length (TimelineSelection *te); -gdouble timeline_get_pos (TimelineSelection *te); -gdouble timeline_get_in_point (TimelineSelection *te ); -gdouble timeline_get_out_point (TimelineSelection *te ); -gboolean timeline_get_selection (TimelineSelection *te ); -gboolean timeline_get_bind (TimelineSelection *te ); - -void timeline_set_pos (GtkWidget *widget, gdouble pos ); - -void timeline_set_in_point (GtkWidget *widget, gdouble pos); -void timeline_set_out_point (GtkWidget *widget, gdouble pos); - -void timeline_set_length (GtkWidget *widget, gdouble length, gdouble pos); - -void timeline_set_bind (GtkWidget *widget, gboolean active); - - -void timeline_clear_points( GtkWidget *widget ); - -void timeline_set_selection( GtkWidget *widget, gboolean active); -void timeline_theme_colors( int inverse ); - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/veejay-current/veejay-client/src/gveejay.c b/veejay-current/veejay-client/src/gveejay.c deleted file mode 100644 index f69d7fcf..00000000 --- a/veejay-current/veejay-client/src/gveejay.c +++ /dev/null @@ -1,312 +0,0 @@ -/* gveejay - Linux VeeJay - GVeejay GTK+-2/Glade User Interface - * (C) 2002-2011 Niels Elburg - * - * - * 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. - */ - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -static int selected_skin = 0; -extern int mt_get_max_tracks(); -static int load_midi = 0; -static int port_num = DEFAULT_PORT_NUM; -static char hostname[255]; -static int gveejay_theme = 0; // set to 1 to load with the default reloaded theme -static int verbosity = 0; -static int col = 0; -static int row = 0; -static int n_tracks = 7; -static int launcher = 0; -static int preview = 0; // off -static int use_threads = 0; -static char midi_file[1024]; -static int beta = 0; -static int auto_connect = 0; -static int geom_[2] = { -1 , -1}; -static struct -{ - char *file; -} skins[] = { - { "gveejay.reloaded.glade" }, - { "reloaded_classic.glade" }, - { NULL } -}; - -extern void reloaded_launcher( char *h, int p ); - -static void usage(char *progname) -{ - printf( "Usage: %s \n",progname); - printf( "where options are:\n"); - printf( "-h\t\tVeejay host to connect to (defaults to localhost) \n"); - printf( "-p\t\tVeejay port to connect to (defaults to %d) \n", DEFAULT_PORT_NUM); - printf( "-t\t\tLoad gveejay's classic GTK theme\n"); - printf( "-n\t\tDont use colored text\n"); - printf( "-v\t\tBe extra verbose (usefull for debugging)\n"); - printf( "-s\t\tSet bank resolution (row X columns)\n"); - printf( "-P\t\tStart with preview enabled (1=1/1,2=1/2,3=1/4,4=1/8)\n"); - printf( "-X\t\tSet number of tracks\n"); - printf( "-l\t\tChoose layout (0=large screen, 1=small screens)\n"); - printf( "-V\t\tShow version, data directory and exit.\n"); - printf( "-m \tMIDI configuration file.\n"); - printf( "-g\t\t\tWindow position on screen.\n"); - printf( "-b\t\tEnable beta features.\n"); - printf( "-a\t\tAuto-connect to local running veejays.\n"); - printf( "-L\t\tLow-bandwith connection (disables image loading in samplebank)\n"); - - printf( "\n\n"); - exit(-1); -} - -static int set_option( const char *name, char *value ) -{ - int err = 0; - if( strcmp(name, "h") == 0 || strcmp(name, "hostname") == 0 ) - { - strcpy( hostname, optarg ); - launcher ++; - } - else if( strcmp(name, "p") == 0 || strcmp(name ,"port") == 0 ) - { - if(sscanf( optarg, "%d", &port_num )) - launcher++; - } - else if (strcmp(name, "l" ) == 0 ) { - selected_skin = atoi( optarg); - } - else if (strcmp(name, "n") == 0 ) - { - veejay_set_colors(0); - } - else if (strcmp(name, "X") == 0 ) - { - n_tracks = 1 + atoi(optarg); - if( n_tracks < 1 || n_tracks > mt_get_max_tracks() ) - n_tracks = 1; - } - else if( strcmp(name, "t") == 0 || strcmp(name, "no-theme") == 0) - { - gveejay_theme = 1; - } - else if( strcmp(name, "v") == 0 || strcmp(name, "verbose") == 0) - { - verbosity = 1; - } - else if (strcmp(name, "s") == 0 || strcmp(name, "size") == 0) - { - if(sscanf( (char*) optarg, "%dx%d", - &row, &col ) != 2 ) - { - fprintf(stderr, "--size parameter requires NxN argument"); - err++; - } - } - else if (strcmp(name, "V") == 0 ) - { - fprintf(stdout, "version: %s\n", PACKAGE_VERSION); - fprintf(stdout, "data directory: %s\n", get_gveejay_dir()); - exit(0); - } - else if (strcmp( name, "m" ) == 0 ) { - strcpy(midi_file, optarg); - load_midi = 1; - } - else if (strcmp(name,"g") == 0 ) { - if(sscanf( optarg, "%d,%d",&geom_[0],&geom_[1]) != 2 ) { - fprintf(stderr, "invalid screen coordinates:%s\n",optarg); - } else { - fprintf(stdout, "Place window at %d,%d", geom_[0],geom_[1]); - vj_gui_set_geom(geom_[0],geom_[1]); - } - - } - else if (strcmp(name, "P" ) == 0 || strcmp(name, "preview" ) == 0 ) - { - preview = atoi(optarg); - if(preview <= 0 ) { - preview = 2; - } - if(preview > 4 ) - { - fprintf(stderr, "--preview [0-4]\n"); - err++; - } - } - else if (strcmp(name,"b") == 0 || strcmp(name, "beta" ) == 0 ) - { - beta = 1; - } - else if (strcmp(name,"a") == 0 ) - { - auto_connect = 1; - } - else if( strcmp(name,"L") == 0 ) - { - set_disable_sample_image(1); - } - else - err++; - return err; -} - -static volatile gulong g_trap_free_size = 0; -static struct timeval time_last_; - -static char **cargv = NULL; - -gboolean gveejay_idle(gpointer data) -{ - if(gveejay_running()) - { - int sync = 0; - if( is_alive(&sync) == FALSE ) - { - return FALSE; - } - if( sync ) - { - if( gveejay_time_to_sync( get_ui_info() ) ) - { - veejay_update_multitrack( get_ui_info() ); - } - } - - update_gveejay(); - - } - if( gveejay_restart() ) - { - //@ reinvoke - if( execvp( cargv[0], cargv ) == -1 ) - veejay_msg(VEEJAY_MSG_ERROR, "Unable to restart"); - } - - return TRUE; -} - -static void clone_args( char *argv[], int argc ) -{ - int i = 0; - if( argc <= 0 ) - return; - - cargv = (char**) malloc(sizeof(char*) * (argc+1) ); - memset( cargv, 0, sizeof(char*) * (argc+1)); - for( i = 0; i < argc ; i ++ ) - cargv[i] = strdup( argv[i] ); -} - -int main(int argc, char *argv[]) -{ - char option[2]; - int n; - int err=0; - - if(!argc) usage(argv[0]); - - clone_args( argv, argc ); - -#if !GLIB_CHECK_VERSION(2,36,0) - g_type_init(); -#endif - - gtk_init( &argc, &argv ); - - // default host to connect to - snprintf(hostname,sizeof(hostname), "127.0.0.1"); - - while( ( n = getopt( argc, argv, "s:h:p:tabnvLHfX:P:Vl:T:m:g:")) != EOF ) - { - sprintf(option, "%c", n ); - err += set_option( option, optarg); - if(err) usage(argv[0]); - } - if( optind > argc ) - err ++; - - if( err ) usage(argv[0]); - - glade_init(); - - vj_mem_init(); - - vevo_strict_init(); - - find_user_themes(gveejay_theme); - - vj_gui_set_debug_level( verbosity , n_tracks,0,0); - set_skin( selected_skin, gveejay_theme ); - - default_bank_values( &col, &row ); - gui_load_theme(); - - register_signals(); - - vj_gui_init( skins[selected_skin].file, launcher, hostname, port_num, use_threads, load_midi, midi_file,beta,auto_connect); - vj_gui_style_setup(); - - if( preview ) - { - veejay_msg(VEEJAY_MSG_INFO, "Starting with preview enabled"); - gveejay_preview(preview); - } - -restart_me: - - if( launcher ) - { - reloaded_launcher( hostname, port_num ); - } - - memset( &time_last_, 0, sizeof(struct timeval)); - - while(gveejay_running()) - { - if(gveejay_idle(NULL)==FALSE) - break; - while( gtk_events_pending() ) - gtk_main_iteration(); - } - - vj_event_list_free(); - - if( gveejay_relaunch() ) { - launcher = 1; - reloaded_restart(); - reloaded_show_launcher(); - goto restart_me; - } - - veejay_msg(VEEJAY_MSG_INFO, "See you!"); - - return 0; -} diff --git a/veejay-current/veejay-client/src/keyboard.c b/veejay-current/veejay-client/src/keyboard.c deleted file mode 100644 index e0966878..00000000 --- a/veejay-current/veejay-client/src/keyboard.c +++ /dev/null @@ -1,327 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ -#include -#include -#ifdef HAVE_SDL -#include "keyboard.h" -static struct -{ - const int sdl_mod; - const int gdk_mod; - const gchar *title; -} modifier_translation_table_t[] = -{ - { 0, 0, " " }, - { 0, 16, " " }, - { 3, 1, "shift" }, - { 3, 17, "shift" }, - { 1, 8, "alt" }, - { 1, 24, "alt" }, - { 1, 44, "alt" }, - { 2, 4, "ctrl" }, - { 2, 20, "ctrl" }, - { 0, 0, NULL }, -}; -/* fixme: introduce keyboard mapping functionality - 1. attach VIMS events/VIMS BUNDLES to keys (with arguments) - 2. save/load VIMS keyboard mapping -*/ -static struct -{ - const int gdk_sym; // GDK key - const int sdl_sym; // SDL key - const gchar *title; // plain text -} key_translation_table_t[] = -{ - -{ GDK_space, SDLK_SPACE, "Space" }, -{ GDK_exclam, SDLK_EXCLAIM, "Exclaim" }, -{ GDK_quotedbl, SDLK_QUOTEDBL, "Double quote" }, -{ GDK_numbersign, SDLK_HASH, "Hash" }, -{ GDK_dollar, SDLK_DOLLAR, "Dollar" }, -{ GDK_percent, SDLK_PAUSE, "Percent" }, -{ GDK_parenleft, SDLK_LEFTPAREN, "Leftparen" }, -{ GDK_parenright, SDLK_RIGHTPAREN, "Rightparen" }, -{ GDK_asciicircum,SDLK_CARET, "Caret" }, -{ GDK_ampersand, SDLK_AMPERSAND, "Ampersand" }, -{ GDK_underscore, SDLK_UNDERSCORE, "Underscore" }, -{ GDK_braceright, 123, "Rightbrace" }, -{ GDK_braceleft, 125, "Leftbrace" }, -{ GDK_grave, SDLK_BACKQUOTE, "Aphostrophe" }, -{ GDK_asciitilde, 126, "Tilde" }, -{ GDK_asterisk, SDLK_ASTERISK, "Asterisk" }, -{ GDK_plus, SDLK_PLUS, "Plus" }, -{ GDK_comma, SDLK_COMMA, "Comma" }, -{ GDK_minus, SDLK_MINUS, "Minus" }, -{ GDK_period, SDLK_PERIOD, "Period" }, -{ GDK_slash, SDLK_SLASH, "Slash" }, -{ GDK_Home, SDLK_HOME, "Home" }, -{ GDK_End, SDLK_END, "End" }, -{ GDK_Page_Up, SDLK_PAGEUP, "PageUp" }, -{ GDK_Page_Down, SDLK_PAGEDOWN, "PageDown" }, -{ GDK_Insert, SDLK_INSERT, "Insert" }, -{ GDK_Up, SDLK_UP, "Up" }, -{ GDK_Down, SDLK_DOWN, "Down" }, -{ GDK_Left, SDLK_LEFT, "Left" }, -{ GDK_Right, SDLK_RIGHT, "Right" }, -{ GDK_Tab, SDLK_TAB, "TAB" }, -{ GDK_BackSpace, SDLK_BACKSPACE, "Backspace" }, -{ GDK_Escape, SDLK_ESCAPE, "Escape" }, -{ GDK_Delete, SDLK_DELETE, "Delete" }, -{ GDK_F1, SDLK_F1, "F1" }, -{ GDK_F2, SDLK_F2, "F2" }, -{ GDK_F3, SDLK_F3, "F3" }, -{ GDK_F4, SDLK_F4, "F4" }, -{ GDK_F5, SDLK_F5, "F5" }, -{ GDK_F6, SDLK_F6, "F6" }, -{ GDK_F7, SDLK_F7, "F7" }, -{ GDK_F8, SDLK_F8, "F8" }, -{ GDK_F9, SDLK_F9, "F9" }, -{ GDK_F10, SDLK_F10, "F10" }, -{ GDK_F11, SDLK_F11, "F11" }, -{ GDK_F12, SDLK_F12, "F12" }, -{ GDK_EuroSign, SDLK_EURO, "Euro" }, -{ GDK_KP_0, SDLK_KP0, "keypad 0" }, -{ GDK_KP_1, SDLK_KP1, "keypad 1" }, -{ GDK_KP_2, SDLK_KP2, "keypad 2" }, -{ GDK_KP_3, SDLK_KP3, "keypad 3" }, -{ GDK_KP_4, SDLK_KP4, "keypad 4" }, -{ GDK_KP_5, SDLK_KP5, "keypad 5" }, -{ GDK_KP_6, SDLK_KP6, "keypad 6" }, -{ GDK_KP_7, SDLK_KP7, "keypad 7" }, -{ GDK_KP_8, SDLK_KP8, "keypad 8" }, -{ GDK_KP_9, SDLK_KP9, "keypad 9" }, -{ GDK_KP_Divide, SDLK_KP_DIVIDE, "keypad /" }, -{ GDK_KP_Multiply,SDLK_KP_MULTIPLY, "keypad *" }, -{ GDK_KP_Subtract,SDLK_KP_MINUS, "keypad -" }, -{ GDK_KP_Add, SDLK_KP_PLUS, "keypad +" }, -{ GDK_KP_Equal, SDLK_KP_EQUALS, "keypad =" }, -{ GDK_KP_Enter, SDLK_KP_ENTER, "keypad ENTER" }, -{ GDK_ISO_Enter, SDLK_RETURN, "ENTER" }, -{ GDK_3270_Enter, SDLK_RETURN, "ENTER" }, - -/* GDK_KP doesnt word on all systems ... */ -{ 0xff9f, SDLK_KP0, "keypad 0" }, -{ 0xff9c, SDLK_KP1, "keypad 1" }, -{ 0xff99, SDLK_KP2, "keypad 2" }, -{ 0xff9b, SDLK_KP3, "keypad 3" }, -{ 0xff96, SDLK_KP4, "keypad 4" }, -{ 0xff9d, SDLK_KP5, "keypad 5" }, -{ 0xff98, SDLK_KP6, "keypad 6" }, -{ 0xff95, SDLK_KP7, "keypad 7" }, -{ 0xff97, SDLK_KP8, "keypad 8" }, -{ 0xff9a, SDLK_KP9, "keypad 9" }, -{ 0xff9f, SDLK_KP_PERIOD, "keypad ." }, - - -{ GDK_0, SDLK_0, "0" }, -{ GDK_1, SDLK_1, "1" }, -{ GDK_2, SDLK_2, "2" }, -{ GDK_3, SDLK_3, "3" }, -{ GDK_4, SDLK_4, "4" }, -{ GDK_5, SDLK_5, "5" }, -{ GDK_6, SDLK_6, "6" }, -{ GDK_7, SDLK_7, "7" }, -{ GDK_8, SDLK_8, "8" }, -{ GDK_9, SDLK_9, "9" }, -{ GDK_colon, SDLK_COLON, "colon" }, -{ GDK_semicolon, SDLK_SEMICOLON, "semicolon" }, -{ GDK_less, SDLK_LESS, "less" }, -{ GDK_equal, SDLK_EQUALS, "equals" }, -{ GDK_greater, SDLK_GREATER, "greater" }, -{ GDK_question, SDLK_QUESTION, "question" }, -{ GDK_at, SDLK_AT, "at" }, -{ GDK_bracketleft,SDLK_LEFTBRACKET, "left bracket" }, -{ GDK_backslash, SDLK_BACKSLASH, "backslash" }, -{ GDK_bracketright,SDLK_RIGHTBRACKET, "right bracket" }, -{ GDK_underscore, SDLK_UNDERSCORE, "underscore" }, -{ GDK_A, SDLK_a, "A" }, -{ GDK_B, SDLK_b, "B" }, -{ GDK_C, SDLK_c, "C" }, -{ GDK_D, SDLK_d, "D" }, -{ GDK_E, SDLK_e, "E" }, -{ GDK_F, SDLK_f, "F" }, -{ GDK_G, SDLK_g, "G" }, -{ GDK_H, SDLK_h, "H" }, -{ GDK_I, SDLK_i, "I" }, -{ GDK_J, SDLK_j, "J" }, -{ GDK_K, SDLK_k, "K" }, -{ GDK_L, SDLK_l, "L" }, -{ GDK_M, SDLK_m, "M" }, -{ GDK_N, SDLK_n, "N" }, -{ GDK_O, SDLK_o, "O" }, -{ GDK_P, SDLK_p, "P" }, -{ GDK_Q, SDLK_q, "Q" }, -{ GDK_R, SDLK_r, "R" }, -{ GDK_S, SDLK_s, "S" }, -{ GDK_T, SDLK_t, "T" }, -{ GDK_U, SDLK_u, "U" }, -{ GDK_V, SDLK_v, "V" }, -{ GDK_W, SDLK_w, "W" }, -{ GDK_X, SDLK_y, "Y" }, -{ GDK_Z, SDLK_z, "Z" }, -{ GDK_a, SDLK_a, "a" }, -{ GDK_b, SDLK_b, "b" }, -{ GDK_c, SDLK_c, "c" }, -{ GDK_d, SDLK_d, "d" }, -{ GDK_e, SDLK_e, "e" }, -{ GDK_f, SDLK_f, "f" }, -{ GDK_g, SDLK_g, "g" }, -{ GDK_h, SDLK_h, "h" }, -{ GDK_i, SDLK_i, "i" }, -{ GDK_j, SDLK_j, "j" }, -{ GDK_k, SDLK_k, "k" }, -{ GDK_l, SDLK_l, "l" }, -{ GDK_m, SDLK_m, "m" }, -{ GDK_n, SDLK_n, "n" }, -{ GDK_o, SDLK_o, "o" }, -{ GDK_p, SDLK_p, "p" }, -{ GDK_q, SDLK_q, "q" }, -{ GDK_r, SDLK_r, "r" }, -{ GDK_s, SDLK_s, "s" }, -{ GDK_t, SDLK_t, "t" }, -{ GDK_u, SDLK_u, "u" }, -{ GDK_v, SDLK_v, "v" }, -{ GDK_w, SDLK_w, "w" }, -{ GDK_x, SDLK_x, "x" }, -{ GDK_y, SDLK_y, "y" }, -{ GDK_z, SDLK_z, "z" }, -{ 0, 0, NULL }, - -}; - - -int sdl2gdk_key(int sdl_key) -{ - return 0; -} - -int gdk2sdl_key(int gdk_key) -{ - int i; - for ( i = 0; key_translation_table_t[i].title != NULL ; i ++ ) - { - if( gdk_key == key_translation_table_t[i].gdk_sym ) - return key_translation_table_t[i].sdl_sym; - } - return 0; -} - -int gdk2sdl_mod( int gdk_mod ) -{ - int i; - for ( i = 0; modifier_translation_table_t[i].title != NULL ; i ++ ) - { - if( gdk_mod == modifier_translation_table_t[i].gdk_mod ) - return modifier_translation_table_t[i].sdl_mod; - } - return 0; -} - -int sdlmod_by_name( gchar *name ) -{ - int i; - if(!name) - return 0; - - for ( i = 0; modifier_translation_table_t[i].title != NULL ; i ++ ) - { - if( g_utf8_collate(name, - modifier_translation_table_t[i].title) == 0) - return modifier_translation_table_t[i].sdl_mod; - } - - return 0; -} - -int sdlkey_by_name( gchar *name ) -{ - int i; - if(!name) - return 0; - for ( i = 0; key_translation_table_t[i].title != NULL ; i ++ ) - { - if( g_utf8_collate(name, - key_translation_table_t[i].title) == 0) - return key_translation_table_t[i].sdl_sym; - } - return 0; -} - -gchar *sdlkey_by_id( int sdl_key ) -{ - int i; - gchar *ret = NULL; - for ( i = 0; key_translation_table_t[i].title != NULL ; i ++ ) - { - if( sdl_key == key_translation_table_t[i].sdl_sym ) - return (gchar*)key_translation_table_t[i].title; - } - return ret; -} - -gchar *sdlmod_by_id( int sdl_mod ) -{ - int i; - gchar *ret = NULL; - for ( i = 0; modifier_translation_table_t[i].title != NULL ; i ++ ) - { - if( sdl_mod == modifier_translation_table_t[i].sdl_mod ) - return (gchar*)modifier_translation_table_t[i].title; - } - return ret; -} -gchar *gdkmod_by_id( int gdk_mod ) -{ - int i; - for( i = 0; modifier_translation_table_t[i].title != NULL ; i ++ ) - { - if( gdk_mod == modifier_translation_table_t[i].gdk_mod || - gdk_mod & modifier_translation_table_t[i].gdk_mod ) - return (gchar*)modifier_translation_table_t[i].title; - } - return NULL; -} - -gchar *gdkkey_by_id( int gdk_key ) -{ - int i; - for( i = 0; key_translation_table_t[i].title != NULL ; i ++ ) - { - if( gdk_key == key_translation_table_t[i].gdk_sym ) - return (gchar*)key_translation_table_t[i].title; - } - return NULL; -} - -/* -Key snooper functions are called before normal event delivery. -They can be used to implement custom key event handling. -grab_widgetΏ: the widget to which the event will be delivered. -eventΏ: the key event. -func_dataΏ: the func_data supplied to gtk_key_snooper_install(). -ReturnsΏ: TRUE to stop further processing of event, FALSE to continue. -*/ - -gboolean key_snooper(GtkWidget *w, GdkEventKey *event, gpointer user_data) -{ - return FALSE; -} -#endif -// gtk_key_snooper_install diff --git a/veejay-current/veejay-client/src/keyboard.h b/veejay-current/veejay-client/src/keyboard.h deleted file mode 100644 index c6f05b1c..00000000 --- a/veejay-current/veejay-client/src/keyboard.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ - -#ifndef GDKSDL -#define GDKSDL - -#include -#include -#include -#include - -int sdl2gdk_key( int sdl_key ); -int gdk2sdl_key( int gdk_key ); -int gdk2sdl_mod( int gdk_mod ); -gchar *sdlkey_by_id( int sdl_key ); -gchar *sdlmod_by_id( int sdk_mod ); -gchar *gdkkey_by_id( int gdk_key ); -gchar *gdkmod_by_id(int gdkmod); -int sdlmod_by_name( gchar *name ); -int sdlkey_by_name( gchar *name ); -int gdk2sdl_mod( int gdk_mod ); - -gboolean key_snooper(GtkWidget *w, GdkEventKey *event, gpointer user_data); - -#endif diff --git a/veejay-current/veejay-client/src/mjpeg_logging.c b/veejay-current/veejay-client/src/mjpeg_logging.c deleted file mode 100644 index 3d43fd8d..00000000 --- a/veejay-current/veejay-client/src/mjpeg_logging.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - $Id: mjpeg_logging.c,v 1.16 2007/04/01 18:06:06 sms00 Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel - - 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 -*/ - - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include - -#include "mjpeg_logging.h" - -#ifdef HAVE___PROGNAME -extern const char *__progname; -#endif - -/* - * Put these here and NOT in the exported header file mjpeg_logging.h - * - * since ALL program use of these should use the API below (mjpeg_warn, - * mjpeg_error,etc) these symbols do not need to be exported and possibly - * conflict with syslog.h -*/ - -#define LOG_DEBUG 1 -#define LOG_INFO 2 -#define LOG_WARN 3 -#define LOG_ERROR 4 - -static log_level_t mjpeg_log_verbosity = 0; -static char *default_handler_id = NULL; - -static int default_mjpeg_log_filter( log_level_t level ) -{ - int verb_from_env; - if( mjpeg_log_verbosity == 0 ) - { - char *mjpeg_verb_env = getenv("MJPEG_VERBOSITY"); - if( mjpeg_verb_env != NULL ) - { - verb_from_env = LOG_WARN-atoi(mjpeg_verb_env); - if( verb_from_env >= LOG_DEBUG && verb_from_env <= LOG_ERROR ) - mjpeg_log_verbosity = (log_level_t)verb_from_env; - } - } - return (level < LOG_WARN && level < mjpeg_log_verbosity); -} - -static mjpeg_log_filter_t _filter = default_mjpeg_log_filter; - -static void -default_mjpeg_log_handler(log_level_t level, const char message[]) -{ - const char *ids; - - if( (*_filter)( level ) ) - return; - if (default_handler_id != NULL) { - ids = default_handler_id; - } else { -#ifdef HAVE___PROGNAME - ids = __progname; -#else - ids = "???"; -#endif - } - switch(level) { - case LOG_ERROR: - fprintf(stderr, "**ERROR: [%s] %s\n", ids, message); - break; - case LOG_DEBUG: - fprintf(stderr, "--DEBUG: [%s] %s\n", ids, message); - break; - case LOG_WARN: - fprintf(stderr, "++ WARN: [%s] %s\n", ids, message); - break; - case LOG_INFO: - fprintf(stderr, " INFO: [%s] %s\n", ids, message); - break; - default: - assert(0); - } -} - -static mjpeg_log_handler_t _handler = default_mjpeg_log_handler; - - -mjpeg_log_handler_t -mjpeg_log_set_handler(mjpeg_log_handler_t new_handler) -{ - mjpeg_log_handler_t old_handler = _handler; - - _handler = new_handler; - return old_handler; -} - -/*************** - * Set default log handlers degree of verboseity. - * 0 = quiet, 1 = info, 2 = debug - *************/ - -int -mjpeg_default_handler_verbosity(int verbosity) -{ - int prev_verb = mjpeg_log_verbosity; - mjpeg_log_verbosity = (log_level_t)(LOG_WARN - verbosity); - return prev_verb; -} - -/* - * Set identifier string used by default handler - */ -int -mjpeg_default_handler_identifier(const char *new_id) -{ - const char *s; - if (new_id == NULL) { - if (default_handler_id != NULL) - free(default_handler_id); - default_handler_id = NULL; - return 0; - } - /* find basename of new_id (remove any directory prefix) */ - if ((s = strrchr(new_id, '/')) == NULL) - s = new_id; - else - s = s + 1; - default_handler_id = strdup(s); - return 0; -} - -static void -mjpeg_logv(log_level_t level, const char format[], va_list args) -{ - char buf[1024] = { 0, }; - - /* TODO: Original had a re-entrancy error trap to assist bug - finding. To make this work with multi-threaded applications a - lock is needed hence delete. - */ - - vsnprintf(buf, sizeof(buf)-1, format, args); - _handler(level, buf); -} - -void -mjpeg_log(log_level_t level, const char format[], ...) -{ - va_list args; - va_start (args, format); - mjpeg_logv(level, format, args); - va_end (args); -} - -void -mjpeg_debug(const char format[], ...) -{ - va_list args; - va_start (args, format); - mjpeg_logv(LOG_DEBUG, format, args); - va_end (args); -} - -void -mjpeg_info(const char format[], ...) -{ - va_list args; - va_start (args, format); - mjpeg_logv(LOG_INFO, format, args); - va_end (args); -} - -void -mjpeg_warn(const char format[], ...) -{ - va_list args; - va_start (args, format); - mjpeg_logv(LOG_WARN, format, args); - va_end (args); -} - -void -mjpeg_error(const char format[], ...) -{ - va_list args; - va_start (args, format); - mjpeg_logv(LOG_ERROR, format, args); - va_end (args); -} - -void -mjpeg_error_exit1(const char format[], ...) -{ - va_list args; - va_start( args, format ); - mjpeg_logv( LOG_ERROR, format, args); - va_end(args); - exit(EXIT_FAILURE); -} - -log_level_t -mjpeg_loglev_t(const char *level) -{ - if (strcasecmp("debug", level) == 0) return(LOG_DEBUG); - else if (strcasecmp("info", level) == 0) return(LOG_INFO); - else if (strcasecmp("warn", level) == 0) return(LOG_WARN); - else if (strcasecmp("error", level) == 0) return(LOG_ERROR); - return(0); -} diff --git a/veejay-current/veejay-client/src/mpegconsts.c b/veejay-current/veejay-client/src/mpegconsts.c deleted file mode 100644 index 43072156..00000000 --- a/veejay-current/veejay-client/src/mpegconsts.c +++ /dev/null @@ -1,512 +0,0 @@ - -/* - * mpegconsts.c: Video format constants for MPEG and utilities for display - * and conversion to format used for yuv4mpeg - * - * Copyright (C) 2001 Andrew Stevens - * Copyright (C) 2001 Matthew Marjanovic - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * 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. - */ - -#include -#include "mpegconsts.h" -#include "yuv4mpeg.h" -#include "yuv4mpeg_intern.h" -#include "format_codes.h" - -static y4m_ratio_t -mpeg_framerates[] = { - Y4M_FPS_UNKNOWN, - Y4M_FPS_NTSC_FILM, - Y4M_FPS_FILM, - Y4M_FPS_PAL, - Y4M_FPS_NTSC, - Y4M_FPS_30, - Y4M_FPS_PAL_FIELD, - Y4M_FPS_NTSC_FIELD, - Y4M_FPS_60 -}; - - -#define MPEG_NUM_RATES (sizeof(mpeg_framerates)/sizeof(mpeg_framerates[0])) -static const mpeg_framerate_code_t mpeg_num_framerates = MPEG_NUM_RATES; - -static const char * -framerate_definitions[MPEG_NUM_RATES] = -{ - "illegal", - "24000.0/1001.0 (NTSC 3:2 pulldown converted FILM)", - "24.0 (NATIVE FILM)", - "25.0 (PAL/SECAM VIDEO / converted FILM)", - "30000.0/1001.0 (NTSC VIDEO)", - "30.0", - "50.0 (PAL FIELD RATE)", - "60000.0/1001.0 (NTSC FIELD RATE)", - "60.0" -}; - - -static const char *mpeg1_aspect_ratio_definitions[] = -{ - "illegal", - "1:1 (square pixels)", - "1:0.6735", - "1:0.7031 (16:9 Anamorphic PAL/SECAM for 720x578/352x288 images)", - "1:0.7615", - "1:0.8055", - "1:0.8437 (16:9 Anamorphic NTSC for 720x480/352x240 images)", - "1:0.8935", - "1:0.9375 (4:3 PAL/SECAM for 720x578/352x288 images)", - "1:0.9815", - "1:1.0255", - "1:1:0695", - "1:1.1250 (4:3 NTSC for 720x480/352x240 images)", - "1:1.1575", - "1:1.2015" -}; - -static const y4m_ratio_t mpeg1_aspect_ratios[] = -{ - Y4M_SAR_UNKNOWN, - Y4M_SAR_MPEG1_1, - Y4M_SAR_MPEG1_2, - Y4M_SAR_MPEG1_3, /* Anamorphic 16:9 PAL */ - Y4M_SAR_MPEG1_4, - Y4M_SAR_MPEG1_5, - Y4M_SAR_MPEG1_6, /* Anamorphic 16:9 NTSC */ - Y4M_SAR_MPEG1_7, - Y4M_SAR_MPEG1_8, /* PAL/SECAM 4:3 */ - Y4M_SAR_MPEG1_9, - Y4M_SAR_MPEG1_10, - Y4M_SAR_MPEG1_11, - Y4M_SAR_MPEG1_12, /* NTSC 4:3 */ - Y4M_SAR_MPEG1_13, - Y4M_SAR_MPEG1_14, -}; - -static const char *mpeg2_aspect_ratio_definitions[] = -{ - "illegal", - "1:1 pixels", - "4:3 display", - "16:9 display", - "2.21:1 display" -}; - - -static const y4m_ratio_t mpeg2_aspect_ratios[] = -{ - Y4M_DAR_UNKNOWN, - Y4M_DAR_MPEG2_1, - Y4M_DAR_MPEG2_2, - Y4M_DAR_MPEG2_3, - Y4M_DAR_MPEG2_4 -}; - -static const char **aspect_ratio_definitions[2] = -{ - mpeg1_aspect_ratio_definitions, - mpeg2_aspect_ratio_definitions -}; - -static const y4m_ratio_t *mpeg_aspect_ratios[2] = -{ - mpeg1_aspect_ratios, - mpeg2_aspect_ratios -}; - -static const mpeg_aspect_code_t mpeg_num_aspect_ratios[2] = -{ - sizeof(mpeg1_aspect_ratios)/sizeof(mpeg1_aspect_ratios[0]), - sizeof(mpeg2_aspect_ratios)/sizeof(mpeg2_aspect_ratios[0]) -}; - -static const char *mjpegtools_format_code_definitions[MPEG_FORMAT_LAST+1] = -{ - "Generic MPEG1", - "Standard VCD", - "Stretched VCD", - "Generic MPEG2", - "Standard SVCD", - "Stretched SVCD", - "VCD Still", - "SVCD Still", - "DVD with dummy navigation packets", - "Standard DVD", - "ATSC 480i", - "ATSC 480p", - "ATSC 720p", - "ATSC 1080i" -}; - -/* - * Is code a valid MPEG framerate code? - */ - -int -mpeg_valid_framerate_code( mpeg_framerate_code_t code ) -{ - return ((code > 0) && (code < mpeg_num_framerates)) ? 1 : 0; -} - - -/* - * Convert MPEG frame-rate code to corresponding frame-rate - */ - -y4m_ratio_t -mpeg_framerate( mpeg_framerate_code_t code ) -{ - if ((code > 0) && (code < mpeg_num_framerates)) - return mpeg_framerates[code]; - else - return y4m_fps_UNKNOWN; -} - -/* - * Look-up MPEG frame rate code for a (exact) frame rate. - */ - - -mpeg_framerate_code_t -mpeg_framerate_code( y4m_ratio_t framerate ) -{ - mpeg_framerate_code_t i; - - y4m_ratio_reduce(&framerate); - /* start at '1', because 0 is unknown/illegal */ - for (i = 1; i < mpeg_num_framerates; ++i) { - if (Y4M_RATIO_EQL(framerate, mpeg_framerates[i])) - return i; - } - return 0; -} - - -/* small enough to distinguish 1/1000 from 1/1001 */ -#define MPEG_FPS_TOLERANCE 0.0001 - -y4m_ratio_t -mpeg_conform_framerate( double fps ) -{ - mpeg_framerate_code_t i; - y4m_ratio_t result; - - /* try to match it to a standard frame rate */ - /* (start at '1', because 0 is unknown/illegal) */ - for (i = 1; i < mpeg_num_framerates; i++) - { - double deviation = 1.0 - (Y4M_RATIO_DBL(mpeg_framerates[i]) / fps); - if ( (deviation > -MPEG_FPS_TOLERANCE) && - (deviation < +MPEG_FPS_TOLERANCE) ) - return mpeg_framerates[i]; - } - /* no luck? just turn it into a ratio (8 decimal place accuracy) */ - result.n = (int)((fps * 100000000.0) + 0.5); - result.d = 100000000; - y4m_ratio_reduce(&result); - return result; -} - - - -/* - * Is code a valid MPEG aspect-ratio code? - */ - -int -mpeg_valid_aspect_code( int version, mpeg_framerate_code_t c ) -{ - if ((version == 1) || (version == 2)) - return ((c > 0) && (c < mpeg_num_aspect_ratios[version-1])) ? 1 : 0; - else - return 0; -} - - -/* - * Convert MPEG aspect-ratio code to corresponding aspect-ratio - */ - -y4m_ratio_t -mpeg_aspect_ratio( int mpeg_version, mpeg_aspect_code_t code ) -{ - y4m_ratio_t ratio; - if ((mpeg_version >= 1) && (mpeg_version <= 2) && - (code > 0) && (code < mpeg_num_aspect_ratios[mpeg_version-1])) - { - ratio = mpeg_aspect_ratios[mpeg_version-1][code]; - y4m_ratio_reduce(&ratio); - return ratio; - } - else - return y4m_sar_UNKNOWN; -} - - - -/* - * Look-up corresponding MPEG aspect ratio code given an exact aspect ratio. - * - * WARNING: The semantics of aspect ratio coding *changed* between - * MPEG1 and MPEG2. In MPEG1 it is the *pixel* aspect ratio. In - * MPEG2 it is the (far more sensible) aspect ratio of the eventual - * display. - * - */ - -mpeg_aspect_code_t -mpeg_frame_aspect_code( int mpeg_version, y4m_ratio_t aspect_ratio ) -{ - mpeg_aspect_code_t i; - y4m_ratio_t red_ratio = aspect_ratio; - y4m_ratio_reduce( &red_ratio ); - if( mpeg_version < 1 || mpeg_version > 2 ) - return 0; - /* (start at '1', because 0 is unknown/illegal) */ - for( i = 1; i < mpeg_num_aspect_ratios[mpeg_version-1]; ++i ) - { - y4m_ratio_t red_entry = mpeg_aspect_ratios[mpeg_version-1][i]; - y4m_ratio_reduce( &red_entry ); - if( Y4M_RATIO_EQL( red_entry, red_ratio) ) - return i; - } - - return 0; - -} - - - -/* - * Guess the correct MPEG aspect ratio code, - * given the true sample aspect ratio and frame size of a video stream - * (and the MPEG version, 1 or 2). - * - * Returns 0 if it has no good guess. - * - */ - - -/* this is big enough to accommodate the difference between 720 and 704 */ -#define GUESS_ASPECT_TOLERANCE 0.03 - -mpeg_aspect_code_t -mpeg_guess_mpeg_aspect_code(int mpeg_version, y4m_ratio_t sampleaspect, - int frame_width, int frame_height) -{ - if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_UNKNOWN)) - { - return 0; - } - switch (mpeg_version) { - case 1: - if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_SQUARE)) - { - return 1; - } - else if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_NTSC_CCIR601)) - { - return 12; - } - else if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_NTSC_16_9)) - { - return 6; - } - else if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_PAL_CCIR601)) - { - return 8; - } - else if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_PAL_16_9)) - { - return 3; - } - return 0; - break; - case 2: - if (Y4M_RATIO_EQL(sampleaspect, y4m_sar_SQUARE)) - { - return 1; /* '1' means square *pixels* in MPEG-2; go figure. */ - } - else - { - int i; - double true_far; /* true frame aspect ratio */ - true_far = - (double)(sampleaspect.n * frame_width) / - (double)(sampleaspect.d * frame_height); - /* start at '2'... */ - for (i = 2; i < (int)(mpeg_num_aspect_ratios[mpeg_version-1]); i++) - { - double ratio = - true_far / Y4M_RATIO_DBL(mpeg_aspect_ratios[mpeg_version-1][i]); - if ( (ratio > (1.0 - GUESS_ASPECT_TOLERANCE)) && - (ratio < (1.0 + GUESS_ASPECT_TOLERANCE)) ) - return i; - } - return 0; - } - break; - default: - return 0; - break; - } -} - - - - -/* - * Guess the true sample aspect ratio of a video stream, - * given the MPEG aspect ratio code and the actual frame size - * (and the MPEG version, 1 or 2). - * - * Returns y4m_sar_UNKNOWN if it has no good guess. - * - */ -y4m_ratio_t -mpeg_guess_sample_aspect_ratio(int mpeg_version, - mpeg_aspect_code_t code, - int frame_width, int frame_height) -{ - switch (mpeg_version) - { - case 1: - /* MPEG-1 codes turn into SAR's, just not quite the right ones. - For the common/known values, we provide the ratio used in practice, - otherwise say we don't know.*/ - switch (code) - { - case 1: return y4m_sar_SQUARE; break; - case 3: return y4m_sar_PAL_16_9; break; - case 6: return y4m_sar_NTSC_16_9; break; - case 8: return y4m_sar_PAL_CCIR601; break; - case 12: return y4m_sar_NTSC_CCIR601; break; - default: - return y4m_sar_UNKNOWN; break; - } - break; - case 2: - /* MPEG-2 codes turn into Display Aspect Ratios, though not exactly the - DAR's used in practice. For common/standard frame sizes, we provide - the original SAR; otherwise, we say we don't know. */ - if (code == 1) - { - return y4m_sar_SQUARE; /* '1' means square *pixels* in MPEG-2 */ - } - else if ((code >= 2) && (code <= 4)) - { - return y4m_guess_sar(frame_width, frame_height, - mpeg2_aspect_ratios[code]); - } - else - { - return y4m_sar_UNKNOWN; - } - break; - default: - return y4m_sar_UNKNOWN; - break; - } -} - - - - - -/* - * Look-up MPEG explanatory definition string for frame rate code - * - */ - - -const char * -mpeg_framerate_code_definition( mpeg_framerate_code_t code ) -{ - if( code == 0 || code >= mpeg_num_framerates ) - return "UNDEFINED: illegal/reserved frame-rate ratio code"; - - return framerate_definitions[code]; -} - -/* - * Look-up MPEG explanatory definition string aspect ratio code for an - * aspect ratio code - * - */ - -const char * -mpeg_aspect_code_definition( int mpeg_version, mpeg_aspect_code_t code ) -{ - if( mpeg_version < 1 || mpeg_version > 2 ) - return "UNDEFINED: illegal MPEG version"; - - if( code < 1 || code >= mpeg_num_aspect_ratios[mpeg_version-1] ) - return "UNDEFINED: illegal aspect ratio code"; - - return aspect_ratio_definitions[mpeg_version-1][code]; -} - - -/* - * Look-up explanatory definition of interlace field order code - * - */ - -const char * -mpeg_interlace_code_definition( int yuv4m_interlace_code ) -{ - const char *def; - switch( yuv4m_interlace_code ) - { - case Y4M_UNKNOWN : - def = "unknown"; - break; - case Y4M_ILACE_NONE : - def = "none/progressive"; - break; - case Y4M_ILACE_TOP_FIRST : - def = "top-field-first"; - break; - case Y4M_ILACE_BOTTOM_FIRST : - def = "bottom-field-first"; - break; - default : - def = "UNDEFINED: illegal video interlacing type-code!"; - break; - } - return def; -} - -/* - * Look-up explanatory definition of mjepgtools preset format code - * - */ -const char *mpeg_format_code_defintion( int format_code ) -{ - if(format_code >= MPEG_FORMAT_FIRST && format_code <= MPEG_FORMAT_LAST ) - return mjpegtools_format_code_definitions[format_code]; - else - return "UNDEFINED: illegal format code!"; -}; - -/* - * Local variables: - * c-file-style: "stroustrup" - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff --git a/veejay-current/veejay-client/src/multitrack.c b/veejay-current/veejay-client/src/multitrack.c deleted file mode 100644 index dbe72ec8..00000000 --- a/veejay-current/veejay-client/src/multitrack.c +++ /dev/null @@ -1,1118 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2006 Niels Elburg - * - * - * 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "sequence.h" -#include "tracksources.h" - -#define SEQ_BUTTON_CLOSE 0 -#define SEQ_BUTTON_RULE 1 - -#include -#include -#include -#include -#include -#define __MAX_TRACKS 64 -#define RUP8(num)(num/8*8) - -typedef struct -{ - GtkWidget *event_box; - GtkWidget *frame; - GtkWidget *main_vbox; - GtkWidget *panel; - GtkWidget *hbox; - GtkWidget *area; - GtkWidget *sub_frame; - GtkWidget *sub_hbox; - GtkWidget *toggle; - GtkWidget *buttons[8]; - GtkWidget *icons[8]; - GtkWidget *button_box; - GtkWidget *timeline_; - GtkWidget *labels_[4]; - GtkWidget *sliders_[4]; - GtkWidget *button_box2; - GtkWidget *buttons2[8]; - void *tracks; - gint dim[2]; - int num; - int status_lock; - void *backlink; - int status_cache[32]; - int history[4][32]; -} sequence_view_t; - -typedef struct -{ - sequence_view_t **view; - void *preview; - GtkWidget *main_window; - GtkWidget *main_box; - GtkWidget *status_bar; - GtkWidget *scroll; - void *data; - int selected; - int sensitive; - float fps; - float aspect_ratio; - int width; - int height; - int master_track; - GdkPixbuf *logo; - GtkWidget *preview_toggle; - int pw; - int ph; -} multitracker_t; - -static int MAX_TRACKS = 8; /* MASTER (current) + Track 1 to 6 */ -static void *parent__ = NULL; - -static char *mt_new_connection_dialog(multitracker_t *mt, int *port_num, int *error); -static void add_buttons( sequence_view_t *p, sequence_view_t *seqv , GtkWidget *w); -static void add_buttons2( sequence_view_t *p, sequence_view_t *seqv , GtkWidget *w); -static sequence_view_t *new_sequence_view( void *vp, int num ); -static void update_pos( void *data, gint total, gint current ); -static gboolean seqv_mouse_press_event ( GtkWidget *w, GdkEventButton *event, gpointer user_data); - -extern GdkPixbuf *vj_gdk_pixbuf_scale_simple( GdkPixbuf *src, int dw, int dh, GdkInterpType inter_type ); -extern void gtk_widget_set_size_request__( GtkWidget *w, gint iw, gint h, const char *f, int line ); - -#define gtk_widget_set_size_request_(a,b,c) gtk_widget_set_size_request(a,b,c) - -int mt_set_max_tracks(int mt) -{ - if( mt < 0 || mt > __MAX_TRACKS) - return 0; - MAX_TRACKS = mt; - return 1; -} - -int mt_get_max_tracks() -{ - return __MAX_TRACKS; -} -#define gtk_widget_set_sensitive_( w,p ) gtk_widget_set_sensitive(w,p) -#define gtk_image_set_from_pixbuf_(w,p) gtk_image_set_from_pixbuf(w,p) -static void status_print(multitracker_t *mt, const char format[], ... ) -{ - char buf[1024]; - va_list args; - va_start(args,format); - vsnprintf( buf,sizeof(buf), format, args ); - gsize nr,nw; - gchar *text = g_locale_to_utf8( buf, -1, &nr, &nw, NULL ); - text[strlen(text)-1] = '\0'; - gtk_statusbar_push( GTK_STATUSBAR(mt->status_bar), 0, text); - g_free(text); - va_end(args); -} - -static GdkPixbuf *load_logo_image(int dw, int dh ) -{ - char path[1024]; - veejay_memset(path,0,sizeof(path)); - get_gd(path,NULL, "veejay-logo.png"); - return gdk_pixbuf_new_from_file( path,NULL ); -} - -void multitrack_get_preview_dimensions( int w , int h, int *dst_w, int *dst_h ) -{ - int tmp_w = w; - int tmp_h = h; - - float ratio = (float)tmp_w / (float) tmp_h; - - if( tmp_h > MAX_PREVIEW_HEIGHT ) { - tmp_h = MAX_PREVIEW_HEIGHT; - tmp_w = (int) ( (float) tmp_h * ratio ); - } - if( tmp_w > MAX_PREVIEW_WIDTH ) { - tmp_w = MAX_PREVIEW_WIDTH; - tmp_h = tmp_w / ratio; - } - - *dst_w = RUP8(tmp_w); - *dst_h = RUP8(tmp_h); -} - -static void calculate_img_dimension(int w, int h, int *dst_w, int *dst_h, float *result, int max_w, int max_h, int quality) -{ - int tmp_w = w; - int tmp_h = h; - - float ratio = (float)tmp_w / (float) tmp_h; - *result = ratio; - - if( quality > 0 ) { - int qdown = quality; - while( (qdown > 0) ) { - tmp_h = tmp_h / 2; - tmp_w = tmp_w / 2; - qdown--; - } - } - - if( tmp_h > max_h ) { - tmp_h = max_h; - tmp_w = (int) ( (float) tmp_h * ratio ); - } else if( tmp_w > max_w ) { - tmp_w = max_w; - tmp_h = tmp_w / ratio; - } - - *dst_w = RUP8(tmp_w); - *dst_h = RUP8(tmp_h); -} - - -int multitrack_get_sequence_view_id( void *data ) -{ - sequence_view_t *s = (sequence_view_t*) data; - return s->num; -} - -void multitrack_sync_start(void *data) -{ - multitracker_t *mt = (multitracker_t*)data; - gvr_queue_vims( mt->preview,-1,VIMS_VIDEO_PLAY_STOP ); - gvr_queue_vims( mt->preview,-1,VIMS_VIDEO_GOTO_START ); - gvr_queue_vims( mt->preview,-1,VIMS_VIDEO_PLAY_FORWARD ); -} - -void multitrack_sync_simple_cmd( void *data, int vims, int arg ) -{ - multitracker_t *mt = (multitracker_t*)data; - gvr_queue_vims(mt->preview,-1, vims); -} - -void multitrack_sync_simple_cmd2( void *data, int vims, int arg ) -{ - multitracker_t *mt = (multitracker_t*)data; - gvr_queue_mvims(mt->preview,-1, vims, arg); -} - - -static void seq_gotostart(GtkWidget *w, gpointer data ) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_GOTO_START ); -} - -static void seq_reverse(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_PLAY_BACKWARD ); -} - -static void seq_pause(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_PLAY_STOP ); -} - -static void seq_play( GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_PLAY_FORWARD ); -} - -static void seq_gotoend(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_GOTO_END ); -} - -static void seq_speeddown(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gint n = v->status_cache[ SAMPLE_SPEED ]; - - if( n < 0 ) n += 1; - if( n > 0 ) n -= 1; - gvr_queue_mvims( mt->preview, v->num ,VIMS_VIDEO_SET_SPEED , n ); -} - -static void seq_speedup(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gint n = v->status_cache[ SAMPLE_SPEED ]; - - if( n < 0 ) n -= 1; - if( n > 0 ) n += 1; - gvr_queue_mvims( mt->preview, v->num ,VIMS_VIDEO_SET_SPEED , n ); -} - -static void seq_prevframe(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_PREV_FRAME ); - -} - -static void seq_nextframe(GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = (multitracker_t*)v->backlink; - - gvr_queue_vims( mt->preview, v->num ,VIMS_VIDEO_SKIP_FRAME ); -} - -static void seq_speed( GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = v->backlink; - if(v->status_lock) - return; - gdouble value = GTK_ADJUSTMENT( GTK_RANGE(w)->adjustment )->value; - gint speed = (gint) value; - gvr_queue_mvims( mt->preview, v->num ,VIMS_VIDEO_SET_SPEED , speed ); -} - -static void seq_opacity( GtkWidget *w, gpointer data) -{ - sequence_view_t *v = (sequence_view_t*) data; - multitracker_t *mt = v->backlink; - - if(v->status_lock) - return; - - gdouble value = GTK_ADJUSTMENT( GTK_RANGE(w)->adjustment )->value; - gint opacity = (gint)( value * 255.0); - gvr_queue_mmmvims( mt->preview, v->num ,VIMS_CHAIN_MANUAL_FADE, 0, opacity, 0 ); -} - - -static void update_pos( void *user_data, gint total, gint current ) -{ - sequence_view_t *v = (sequence_view_t*) user_data; - multitracker_t *mt = v->backlink; - if(v->status_lock) - return; - - gtk_adjustment_set_value( - GTK_ADJUSTMENT(GTK_RANGE(v->timeline_)->adjustment), 1.0 / (gdouble) total * current ); - - char *now = format_time( current , mt->fps); - gtk_label_set_text( GTK_LABEL(v->labels_[0]), now ); - free(now); -} - -static void update_speed( void *user_data, gint speed ) -{ - sequence_view_t *v = (sequence_view_t*) user_data; - if(v->status_lock) - return; - - gtk_adjustment_set_value( GTK_ADJUSTMENT( GTK_RANGE( v->sliders_[0] )->adjustment), (gdouble) speed ); -} - -#define FIRST_ROW_END 5 -static struct -{ - const char *name; - int vims_id; - const char *file; - void (*f)(); -} button_template_t[] = -{ - { "button_gotostart", VIMS_VIDEO_GOTO_START, "button_gotostart.png", seq_gotostart }, - { "button_reverse", VIMS_VIDEO_PLAY_BACKWARD, "button_reverse.png" , seq_reverse }, - { "button_pauseplay", VIMS_VIDEO_PLAY_STOP, "button_pause.png", seq_pause}, - { "button_play", VIMS_VIDEO_PLAY_FORWARD, "button_play.png", seq_play }, - { "button_gotoend", VIMS_VIDEO_GOTO_END, "button_gotoend.png",seq_gotoend }, - - { "button_speeddown", VIMS_VIDEO_SET_SPEED, "button_down.png", seq_speeddown }, - { "button_speedup", VIMS_VIDEO_SET_SPEED, "button_up.png", seq_speedup }, - { "button_prevframe", VIMS_VIDEO_PREV_FRAME, "button_prev.png", seq_prevframe }, - { "button_nextframe", VIMS_VIDEO_SKIP_FRAME, "button_skip.png", seq_nextframe }, - { NULL , 0 , NULL }, -}; - -static void add_buttons( sequence_view_t *p, sequence_view_t *seqv , GtkWidget *w) -{ - int i; - for( i = 0; i < FIRST_ROW_END;i ++ ) - { - char path[1024]; - veejay_memset(path,0,sizeof(path)); - get_gd(path,NULL, button_template_t[i].file ); - seqv->icons[i] = gtk_image_new_from_file( path ); - seqv->buttons[i] = gtk_button_new_with_label(" "); - gtk_widget_set_size_request_( seqv->icons[i],24,20 ); - gtk_button_set_image( GTK_BUTTON(seqv->buttons[i]), seqv->icons[i] ); - gtk_widget_set_size_request_( seqv->buttons[i],24,20 ); - gtk_box_pack_start( GTK_BOX(w), seqv->buttons[i], TRUE,TRUE, 0 ); - g_signal_connect( G_OBJECT( seqv->buttons[i] ), "clicked", G_CALLBACK( button_template_t[i].f), - (gpointer)p ); - gtk_widget_show( seqv->buttons[i] ); - - } -} - -static void add_buttons2( sequence_view_t *p, sequence_view_t *seqv , GtkWidget *w) -{ - int i; - for( i = FIRST_ROW_END; button_template_t[i].name != NULL ;i ++ ) - { - char path[1024]; - veejay_memset(path,0,sizeof(path)); - get_gd(path,NULL, button_template_t[i].file ); - seqv->icons[i] = gtk_image_new_from_file( path ); - seqv->buttons2[i] = gtk_button_new_with_label(" "); - gtk_widget_set_size_request_( seqv->icons[i],24,20 ); - - gtk_button_set_image( GTK_BUTTON(seqv->buttons2[i]), seqv->icons[i] ); - gtk_widget_set_size_request_( seqv->buttons2[i],24,20 ); - gtk_box_pack_start( GTK_BOX(w), seqv->buttons2[i], TRUE,TRUE, 0 ); - g_signal_connect( G_OBJECT( seqv->buttons2[i] ), "clicked", G_CALLBACK( button_template_t[i].f), - (gpointer*)p ); - gtk_widget_show( seqv->buttons2[i] ); - - } -} - - - -static void playmode_sensitivity( sequence_view_t *p, gint pm ) -{ - int i; - if( pm == MODE_STREAM || pm == MODE_PLAIN || pm == MODE_SAMPLE ) - { - if(p->num > 0) - gtk_widget_set_sensitive_( GTK_WIDGET( p->toggle ), TRUE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->panel ), TRUE ); - } - - if( pm == MODE_STREAM ) - { - gtk_widget_set_sensitive_( GTK_WIDGET( p->button_box2 ), FALSE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->button_box ), FALSE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->sliders_[0] ), FALSE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->timeline_ ), FALSE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->sliders_[1] ), TRUE ); - for( i = 0; i < FIRST_ROW_END;i ++ ) - { - gtk_widget_set_sensitive_( GTK_WIDGET( p->buttons[i] ), FALSE ); - - } - } - else - { - if( pm == MODE_SAMPLE || pm == MODE_PLAIN ) - { - gtk_widget_set_sensitive_( GTK_WIDGET( p->button_box2 ), TRUE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->button_box ), TRUE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->sliders_[0] ), TRUE ); - gtk_widget_set_sensitive_( GTK_WIDGET( p->timeline_ ), TRUE ); - for( i = 0; i < FIRST_ROW_END;i ++ ) - { - gtk_widget_set_sensitive_( GTK_WIDGET( p->buttons[i] ), TRUE ); - } - } - if( pm == MODE_SAMPLE ) - gtk_widget_set_sensitive_( GTK_WIDGET( p->sliders_[1] ), TRUE ); - else - gtk_widget_set_sensitive_( GTK_WIDGET( p->sliders_[1] ), FALSE ); - } -} - - -static void update_widgets(int *status, sequence_view_t *p, int pm) -{ - multitracker_t *mt = (multitracker_t*) p->backlink; - int *h = p->history[pm]; - if( h[PLAY_MODE] != pm ) - playmode_sensitivity( p, pm ); - - if( pm == MODE_STREAM ) - { - update_pos( p, status[TOTAL_FRAMES], 0 ); - update_speed( p, 1 ); - } - else - if( pm == MODE_SAMPLE || pm == MODE_PLAIN ) - { - if( h[FRAME_NUM] != status[FRAME_NUM] ) - update_pos( p, status[TOTAL_FRAMES],status[FRAME_NUM] ); - if( h[SAMPLE_SPEED] != status[SAMPLE_SPEED] ) - update_speed( p, status[SAMPLE_SPEED] ); - } - - if( h[TOTAL_SLOTS] != status[TOTAL_SLOTS]) - { - gvr_need_track_list( mt->preview, p->num ); - update_track_view( MAX_TRACKS, get_track_tree( p->tracks ), (void*)p ); - } -} - - -int update_multitrack_widgets( void *data, int *array, int track ) -{ - multitracker_t *mt = (multitracker_t*) data; - sequence_view_t *p = mt->view[ track ]; - - p->status_lock = 1; - int pm = array[PLAY_MODE]; - int i; - for( i = 0; i < 20; i ++ ) - p->status_cache[i] = array[i]; - update_widgets(array, p, pm); - - int *his = p->history[ pm ]; - for( i = 0; i < 20; i ++ ) - his[i] = array[i]; - p->status_lock = 0; - return 1; -} - -static void sequence_preview_size(multitracker_t *mt, int track_num) -{ - float ratio = 0.0f; - int tmp_w = 0; - int tmp_h = 0; - - calculate_img_dimension(mt->width,mt->height, &tmp_w, &tmp_h, &ratio, 160, 120,0); - if(!gvr_track_configure( mt->preview, track_num,tmp_w,tmp_h ) ) - { - veejay_msg(0, "Unable to configure preview %d x %d",tmp_w,tmp_h ); - } - -} - -static void sequence_preview_cb(GtkWidget *widget, gpointer user_data) -{ - sequence_view_t *v = (sequence_view_t*) user_data; - multitracker_t *mt = v->backlink; - int status = 0; - - if(v->status_lock) - return; - - if(v->num != mt->master_track ) - { - status = (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) ) == TRUE ? 1 : 0 ); - - gvr_track_toggle_preview( mt->preview, v->num,status ); - - sequence_preview_size( mt, v->num ); - - if( !status ) - gtk_image_clear( GTK_IMAGE(v->area ) ); - } -} - -static void sequence_set_current_frame(GtkWidget *w, gpointer user_data) -{ - - sequence_view_t *v = (sequence_view_t*) user_data; - multitracker_t *mt = v->backlink; - if(v->status_lock) - return; - - gdouble pos = GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value; - gint frame = pos * v->status_cache[TOTAL_FRAMES]; - - gvr_queue_mvims( mt->preview, v->num, VIMS_VIDEO_SET_FRAME, frame ); -} - -static sequence_view_t *new_sequence_view( void *vp, int num ) -{ - sequence_view_t *seqv = (sequence_view_t*) vj_calloc(sizeof(sequence_view_t)); - - seqv->num = num; - seqv->backlink = vp; - - seqv->event_box = gtk_event_box_new(); - gtk_event_box_set_visible_window( GTK_EVENT_BOX(seqv->event_box), TRUE ); - GTK_WIDGET_SET_FLAGS( seqv->event_box, GTK_CAN_FOCUS ); - - g_signal_connect( G_OBJECT( seqv->event_box ), - "button_press_event", - G_CALLBACK( seqv_mouse_press_event ), - (gpointer*) seqv ); - gtk_widget_show( GTK_WIDGET( seqv->event_box ) ); - - - gchar *track_title = g_new0( gchar, 20 ); - sprintf(track_title, "Track %d", num ); - seqv->frame = gtk_frame_new( track_title ); - g_free(track_title); - - gtk_container_set_border_width( GTK_CONTAINER( seqv->frame) , 1 ); - gtk_widget_show( GTK_WIDGET( seqv->frame ) ); - gtk_container_add( GTK_CONTAINER( seqv->event_box), seqv->frame ); - - seqv->main_vbox = gtk_vbox_new(FALSE,0); - gtk_container_add( GTK_CONTAINER( seqv->frame ), seqv->main_vbox ); - gtk_widget_show( GTK_WIDGET( seqv->main_vbox ) ); - - seqv->area = gtk_image_new(); - - - gtk_box_pack_start( GTK_BOX(seqv->main_vbox),GTK_WIDGET( seqv->area), FALSE,FALSE,0); - gtk_widget_set_size_request_( seqv->area, 176,144 ); //FIXME - seqv->panel = gtk_frame_new(NULL); - - seqv->toggle = gtk_toggle_button_new_with_label( "preview" ); - - if(num>0) { - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(seqv->toggle), FALSE ); - g_signal_connect( G_OBJECT( seqv->toggle ), "toggled", G_CALLBACK(sequence_preview_cb), - (gpointer)seqv ); - gtk_box_pack_start( GTK_BOX(seqv->main_vbox), seqv->toggle,FALSE,FALSE, 0 ); - - gtk_widget_set_sensitive_( GTK_WIDGET( seqv->toggle ), FALSE ); - - gtk_widget_show( seqv->toggle ); - } else { - gtk_box_pack_start( GTK_BOX(seqv->main_vbox), seqv->toggle,FALSE,FALSE, 0 ); - gtk_widget_show( seqv->toggle ); - gtk_widget_set_sensitive_( GTK_WIDGET( seqv->toggle ), FALSE ); - } - - GtkWidget *vvbox = gtk_vbox_new(FALSE, 0); - seqv->button_box = gtk_hbox_new(FALSE,0); - gtk_box_pack_start( GTK_BOX(vvbox), seqv->button_box ,FALSE,FALSE, 0 ); - add_buttons( seqv,seqv,seqv->button_box ); - - gtk_widget_show( seqv->button_box ); - gtk_container_add( GTK_CONTAINER( seqv->main_vbox ), seqv->panel ); - - seqv->button_box2 = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start( GTK_BOX(vvbox), seqv->button_box2, FALSE,FALSE, 0 ); - add_buttons2( seqv,seqv,seqv->button_box2 ); - gtk_widget_show( seqv->button_box2 ); - gtk_container_add( GTK_CONTAINER( seqv->panel ), vvbox ); - gtk_widget_show(vvbox); - - GtkWidget *box = gtk_vbox_new(FALSE,0); - seqv->timeline_ = gtk_hscale_new_with_range( 0.0,1.0,0.1 ); - gtk_scale_set_draw_value( GTK_SCALE(seqv->timeline_), FALSE ); - //gtk_widget_set_size_request_( seqv->panel,180 ,180); - gtk_adjustment_set_value( - GTK_ADJUSTMENT(GTK_RANGE(seqv->timeline_)->adjustment), 0.0 ); - gtk_widget_show( seqv->panel ); - gtk_box_pack_start( GTK_BOX( box ), seqv->timeline_, FALSE,FALSE, 0 ); - gtk_box_pack_start( GTK_BOX( vvbox ), box , FALSE,FALSE,0); - gtk_widget_show(seqv->timeline_); - g_signal_connect( seqv->timeline_, "value_changed", - (GCallback) sequence_set_current_frame, (gpointer*) seqv ); - - GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_ETCHED_IN ); - gtk_widget_set_size_request_(scroll,30,140); - gtk_container_set_border_width(GTK_CONTAINER(scroll),0); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(scroll),GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC ); - GtkWidget *vvvbox = gtk_hbox_new(FALSE,0); - seqv->tracks = create_track_view(seqv->num, MAX_TRACKS, (void*) seqv ); - gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( get_track_tree(seqv->tracks)) , FALSE ); - gtk_widget_set_size_request_( get_track_tree(seqv->tracks),20,80 ); - gtk_widget_show(scroll); - - gtk_scrolled_window_add_with_viewport( - GTK_SCROLLED_WINDOW( scroll ), get_track_tree(seqv->tracks) ); - gtk_widget_show( get_track_tree(seqv->tracks)); - gtk_box_pack_start( GTK_BOX(vvvbox), scroll, TRUE,TRUE, 0); - - GtkWidget *hhbox = gtk_hbox_new(FALSE,0); - - seqv->sliders_[0] = gtk_vscale_new_with_range( -12.0,12.0,1.0 ); - seqv->sliders_[1] = gtk_vscale_new_with_range( 0.0, 1.0, 0.01 ); - - gtk_adjustment_set_value( - GTK_ADJUSTMENT(GTK_RANGE(seqv->sliders_[0])->adjustment), 1.0 ); - gtk_adjustment_set_value( - GTK_ADJUSTMENT(GTK_RANGE(seqv->sliders_[1])->adjustment), 0.0 ); - - - gtk_scale_set_digits( GTK_SCALE(seqv->sliders_[1]), 2 ); - g_signal_connect( G_OBJECT( seqv->sliders_[0] ), "value_changed", G_CALLBACK( seq_speed ), - (gpointer*)seqv ); - g_signal_connect( G_OBJECT( seqv->sliders_[1] ), "value_changed", G_CALLBACK( seq_opacity ), - (gpointer*)seqv ); - - gtk_box_pack_start( GTK_BOX( hhbox ), seqv->sliders_[0], TRUE, TRUE, 0 ); - gtk_box_pack_start( GTK_BOX( hhbox ), seqv->sliders_[1], TRUE, TRUE, 0 ); - gtk_widget_show( seqv->sliders_[0] ); - gtk_widget_show( seqv->sliders_[1] ); - gtk_box_pack_start( GTK_BOX(vvvbox), hhbox, TRUE,TRUE, 0 ); - gtk_widget_show( hhbox ); - gtk_container_add( GTK_CONTAINER( box ), vvvbox ); - gtk_widget_show( vvvbox ); - gtk_widget_show( box ); - - - GtkWidget *hbox = gtk_hbox_new(FALSE,0); - gtk_box_set_spacing( GTK_BOX(hbox), 10 ); - seqv->labels_[0] = gtk_label_new( "00:00:00:00" ); - seqv->labels_[1] = gtk_label_new( "00:00:00:00" ); - gtk_box_pack_start( GTK_BOX( hbox ), seqv->labels_[0], FALSE, FALSE, 0 ); - gtk_box_pack_start( GTK_BOX( hbox ), seqv->labels_[1], FALSE, FALSE, 0 ); - gtk_widget_show( seqv->labels_[0] ); - gtk_widget_show( seqv->labels_[1] ); - gtk_box_pack_start( GTK_BOX(seqv->main_vbox), hbox, FALSE,FALSE, 0 ); - gtk_widget_show( hbox ); - - - gtk_widget_set_sensitive_(GTK_WIDGET(seqv->panel), FALSE ); - - gtk_widget_show( GTK_WIDGET( seqv->area ) ); - - return seqv; -} - - -static int vt__[16]; -static int vt___ = 0; -void *multitrack_sync( void * mt ) -{ - multitracker_t *m = (multitracker_t*) mt; - sync_info *s = gvr_sync( m->preview ); - if(!s) - return NULL; - - if(!vt___) - { - veejay_memset(vt__,0,sizeof(vt__)); - vt___ = 1; - } - - int i; - for( i =0; i < MAX_TRACKS ;i ++ ) - { - if(!vt__[i] && s->status_list[i] == NULL ) - { - //gtk_widget_set_sensitive_(GTK_WIDGET(m->view[i]), FALSE ); - vt__[i] = 1; - } - else if( s->status_list[i] && vt__[i] ) - { - //gtk_widget_set_sensitive_(GTK_WIDGET(m->view[i]), TRUE ); - vt__[i] = 0; - } - } - s->master = m->master_track; - return (void*)s; -} - -static char *mt_new_connection_dialog(multitracker_t *mt, int *port_num, int *error) -{ - GtkWidget *dialog = gtk_dialog_new_with_buttons( - "Connect to a Veejay", - GTK_WINDOW( mt->main_window ), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, - GTK_RESPONSE_REJECT, - GTK_STOCK_OK, - GTK_RESPONSE_ACCEPT, - NULL ); - - - GtkWidget *text_entry = gtk_entry_new(); - gtk_entry_set_text( GTK_ENTRY(text_entry), "localhost" ); - gtk_editable_set_editable( GTK_EDITABLE(text_entry), TRUE ); - gtk_dialog_set_default_response( GTK_DIALOG(dialog), GTK_RESPONSE_REJECT ); - gtk_window_set_resizable( GTK_WINDOW( dialog ), FALSE ); - - gint base = DEFAULT_PORT_NUM; - - gint p = (1000 * (mt->selected)) + base; - - GtkObject *adj = gtk_adjustment_new( p,1024,65535,5,10,0); - GtkWidget *num_entry = gtk_spin_button_new( GTK_ADJUSTMENT(adj), 5.0, 0 ); - - GtkWidget *text_label = gtk_label_new( "Hostname" ); - GtkWidget *num_label = gtk_label_new( "Port" ); - g_signal_connect( G_OBJECT(dialog), "response", - G_CALLBACK( gtk_widget_hide ), G_OBJECT( dialog ) ); - - GtkWidget *vbox = gtk_vbox_new( FALSE, 4 ); - gtk_container_add( GTK_CONTAINER( vbox ), text_label ); - gtk_container_add( GTK_CONTAINER( vbox ), text_entry ); - gtk_container_add( GTK_CONTAINER( vbox ), num_label ); - gtk_container_add( GTK_CONTAINER( vbox ), num_entry ); - gtk_container_add( GTK_CONTAINER( GTK_DIALOG(dialog)->vbox), vbox ); - gtk_widget_show_all( dialog ); - - gint res = gtk_dialog_run( GTK_DIALOG(dialog) ); - - if( res == GTK_RESPONSE_ACCEPT ) - { - const char *host = gtk_entry_get_text( GTK_ENTRY( text_entry ) ); - gint port = gtk_spin_button_get_value( GTK_SPIN_BUTTON(num_entry )); - *port_num = port; - *error = 0; - return strdup(host); - } - - gtk_widget_destroy( dialog ); - - *error = res; - *port_num = 0; - return NULL; -} - -void *multitrack_new( - void (*f)(int,char*,int), - int (*g)(GdkPixbuf *, GdkPixbuf *, GtkImage *), - GtkWidget *win, - GtkWidget *box, - GtkWidget *msg, - GtkWidget *preview_toggle, - gint max_w, - gint max_h, - GtkWidget *main_preview_area, - void *infog, - int threads) -{ - multitracker_t *mt = (multitracker_t*) vj_calloc(sizeof(multitracker_t)); - mt->view = (sequence_view_t**) vj_calloc(sizeof(sequence_view_t*) * MAX_TRACKS ); - mt->preview = NULL; - mt->main_window = win; - mt->main_box = box; - mt->status_bar = msg; - mt->logo = load_logo_image(0,0); - mt->preview_toggle = preview_toggle; - mt->scroll = gtk_scrolled_window_new(NULL,NULL); -// gtk_widget_set_size_request(mt->scroll,50+max_w*2, max_h); - gtk_container_set_border_width(GTK_CONTAINER(mt->scroll),1); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(mt->scroll),GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); - GtkWidget *table = gtk_table_new( 1, MAX_TRACKS, FALSE ); - gtk_box_pack_start( GTK_BOX( mt->main_box ), mt->scroll , TRUE,TRUE, 0 ); - gtk_widget_show(mt->scroll); - int c = 0; - for( c = 0; c < MAX_TRACKS; c ++ ) - { - mt->view[c] = new_sequence_view( mt, c ); - gtk_table_attach_defaults( GTK_TABLE(table), mt->view[c]->event_box, c, c+1, 0, 1 ); - } - - gtk_scrolled_window_add_with_viewport( - GTK_SCROLLED_WINDOW( mt->scroll ), table ); - - gtk_widget_show(table); - - mt->master_track = 0; - - mt->preview = gvr_preview_init( MAX_TRACKS, threads ); -// gvr_set_master( mt->preview, mt->master_track ); - - - parent__ = infog; - - return (void*) mt; -} - - -int multitrack_add_track( void *data ) -{ - multitracker_t *mt = (multitracker_t*) data; - int res = 0; - int port_num = 0; - int error = 0; - - char *hostname = mt_new_connection_dialog( mt,&port_num,&error ); - if( error || hostname == NULL ) { - return res; - } - - int track = 0; - - if( gvr_track_connect( mt->preview, hostname, port_num, &track ) ) - { - status_print( mt, "Connection established with veejay runnning on %s port %d", hostname, port_num ); - if( gveejay_user_preview() ) - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mt->view[track]->toggle), TRUE ); - gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[track]->panel), TRUE ); - gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[track]->toggle), TRUE ); - - res = 1; - } - else - { - status_print( mt, "Unable to open connection with %s : %d", hostname, port_num ); - } - - free( hostname ); - - return res; -} - -void multitrack_close_track( void *data ) -{ - multitracker_t *mt = (multitracker_t*) data; - - if( mt->selected > 0 && mt->selected < MAX_TRACKS ) - { - gvr_track_disconnect( mt->preview, mt->selected ); - mt->view[mt->selected]->status_lock = 1; - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(mt->view[mt->selected]->toggle), FALSE ); - gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[mt->selected]->panel), FALSE ); - gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[mt->selected]->toggle), FALSE ); - gtk_image_clear( GTK_IMAGE(mt->view[mt->selected]->area ) ); - mt->view[mt->selected]->status_lock = 0; - } -} - -void multitrack_disconnect(void *data) -{ - multitracker_t *mt = (multitracker_t*) data; - //release connection to veejay - gvr_track_disconnect( mt->preview, 0 ); -} - -int multrack_audoadd( void *data, char *hostname, int port_num ) -{ - multitracker_t *mt = (multitracker_t*) data; - - int track = 0; - - if(!gvr_track_connect( mt->preview, hostname, port_num, &track ) ) - { - if(!gvr_track_already_open( mt->preview, hostname,port_num)) - return -1; - } - - if(mt->pw > 0 && mt->ph > 0 ) - { - //sequence_preview_size( mt, mt->master_track ); - - /* configure master preview size */ - if(!gvr_track_configure( mt->preview, track, mt->pw,mt->ph) ) - { - veejay_msg(0, "Unable to configure preview %d x %d",mt->pw , mt->ph ); - } - - - int preview = gvr_get_preview_status( mt->preview, mt->master_track ); - - /* set status of preview toggle button in trackview */ - if( track == 0 ) - { - // mt->view[track]->status_lock=1; - // gtk_toggle_button_set_active( - // GTK_TOGGLE_BUTTON( mt->preview_toggle), (preview ? TRUE: FALSE ) ); - // mt->view[track]->status_lock=0; - } - else - { - mt->view[track]->status_lock=1; - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON( mt->view[track]->toggle ), (preview ? TRUE: FALSE ) ); - mt->view[track]->status_lock=0; - - } - } - -// mt->master_track = track; - gvr_set_master( mt->preview, track ); - - gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[track]->panel), TRUE ); - - - return track; -} - -int multitrack_locked( void *data) -{ - multitracker_t *mt = (multitracker_t*) data; - - return mt->view[mt->master_track]->status_lock; -} - -void multitrack_configure( void *data, float fps, int video_width, int video_height, int *box_w, int *box_h ) -{ - multitracker_t *mt = (multitracker_t*) data; - mt->fps = fps; - - calculate_img_dimension(video_width,video_height,&(mt->width),&(mt->height),&(mt->aspect_ratio),vj_get_preview_box_w(),vj_get_preview_box_h(),-1); - - *box_w = mt->width; - *box_h = mt->height; - - veejay_msg(VEEJAY_MSG_DEBUG, "Multitrack %d x %d, %2.2f, ratio %f", mt->width,mt->height,mt->fps,mt->aspect_ratio); -} - -void multitrack_set_quality( void *data , int quality ) -{ - multitracker_t *mt = (multitracker_t*) data; - float ratio = 0.0f; - int w = 0; - int h = 0; - - calculate_img_dimension(mt->width,mt->height,&w,&h,&ratio,vj_get_preview_box_w(),vj_get_preview_box_h(),quality); - - veejay_msg(VEEJAY_MSG_DEBUG, - "Preview image dimensions changed to %d x %d",w,h); - - if(!gvr_track_configure( mt->preview, mt->master_track,w,h ) ) - { - veejay_msg(0, "Unable to configure preview %d x %d",w , h ); - } - - mt->pw = w; - mt->ph = h; -} - -void multitrack_set_logo(void *data , GtkWidget *img) -{ - multitracker_t *mt = (multitracker_t*) data; - gtk_image_set_from_pixbuf_( GTK_IMAGE(img), mt->logo ); -} - -void multitrack_toggle_preview( void *data, int track_id, int status, GtkWidget *img ) -{ - multitracker_t *mt = (multitracker_t*) data; - if(track_id == -1 ) - { - gvr_track_toggle_preview( mt->preview, mt->master_track, status ); - veejay_msg(VEEJAY_MSG_INFO, "VeejayGrabber: master preview %s", (status ? "enabled" : "disabled") ); - if( status == 0 ) - multitrack_set_logo( data, img ); - } -} - -void multitrack_release_track(void *data, int id, int release_this ) -{ - multitracker_t *mt = (multitracker_t*) data; - int stream_id = 0; - - //release this: track um - - stream_id = gvr_get_stream_id( mt->preview, release_this ); - if(stream_id > 0) - gvr_queue_mvims( mt->preview, id, VIMS_STREAM_DELETE,stream_id ); -} - -void multitrack_bind_track( void *data, int id, int bind_this ) -{ - multitracker_t *mt = (multitracker_t*) data; - - if( bind_this < 0 || bind_this > MAX_TRACKS ) - return; - - if( id < 0 || id > MAX_TRACKS ) - return; - - char *host = gvr_track_get_hostname( mt->preview, bind_this ); - int port = gvr_track_get_portnum ( mt->preview, bind_this ); - - if( host != NULL && port > 0 ) - gvr_queue_cxvims( mt->preview, id, VIMS_STREAM_NEW_UNICAST, port, (unsigned char*)host ); -} - -void multitrack_update_sequence_image( void *data , int track, GdkPixbuf *img ) -{ - multitracker_t *mt = (multitracker_t*) data; - float ratio = 0.0f; - int w = 0; - int h = 0; - - calculate_img_dimension(mt->width,mt->height, &w, &h, &ratio, 160, 120,0); - - GdkPixbuf *scaled = vj_gdk_pixbuf_scale_simple( img, w, h, GDK_INTERP_BILINEAR ); - gtk_image_set_from_pixbuf( GTK_IMAGE(mt->view[track]->area), scaled); - - g_object_unref( scaled ); -} - -/*! \brief Multi track sequence view button_press_event callback. - * - * \sa new_sequence_view - * - * \param w A pointer of calling widget - * \param event A pointer of the current event - * \param user_data A pointer of the current \c sequence_view_t - * \return Always \c FALSE to propagate the event. - */ -static gboolean seqv_mouse_press_event ( GtkWidget *w, GdkEventButton *event, gpointer user_data ) -{ - sequence_view_t *v = (sequence_view_t*) user_data; - multitracker_t *mt = v->backlink; - - if(event->type == GDK_BUTTON_PRESS) - { - if( !gvr_track_test( mt->preview , v->num ) ) - return FALSE; - - int last_selected = mt->selected; - mt->selected = v->num; - vj_gui_disable(); - - // hostname, port_num from gvr - char *host = gvr_track_get_hostname( mt->preview, v->num ); - int port = gvr_track_get_portnum ( mt->preview, v->num ); - - if(!host || port <= 0 ) - { - vj_gui_enable(); - return FALSE; - } - - vj_gui_cb( 0, host, port ); - - gvr_set_master( mt->preview, v->num ); - if(!gvr_track_configure( mt->preview, v->num, mt->pw,mt->ph) ) - { - veejay_msg(0, "Unable to configure preview %d x %d",mt->pw , mt->ph ); - } - veejay_msg(VEEJAY_MSG_INFO, "Set master to track %d", mt->master_track ); - mt->master_track = v->num; - if( last_selected >= 0 && last_selected < MAX_TRACKS ) - gtk_widget_set_state (mt->view[last_selected]->event_box, GTK_STATE_NORMAL); - gtk_widget_set_state (w, GTK_STATE_SELECTED); - - vj_gui_enable(); - } - return FALSE; -} diff --git a/veejay-current/veejay-client/src/multitrack.h b/veejay-current/veejay-client/src/multitrack.h deleted file mode 100644 index 0b9cec78..00000000 --- a/veejay-current/veejay-client/src/multitrack.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef MTRACK_H -#define MTRACK_H - -void *multitrack_new( - void (*f)(int,char*,int), - int (*g)(GdkPixbuf *, GdkPixbuf *, GtkImage *), - GtkWidget *win,GtkWidget *box,GtkWidget *msg,GtkWidget *button, - gint max_w,gint max_h, - GtkWidget *main_preview_area,void *gui,int threads); -void multitrack_disconnect(void *data); -void multitrack_set_logo(void *data , GtkWidget *img); -int multitrack_add_track( void *data ); -void multitrack_close_track( void *data ); -int multrack_audoadd( void *data, char *hostname, int port_num ); -void multitrack_release_track(void *data, int id, int release_this ); -void multitrack_bind_track( void *data, int id, int bind_this ); -void multitrack_sync_simple_cmd2( void *data, int vims, int arg ); -void *multitrack_sync( void * mt ); -void multitrack_configure( void *data, float fps, int video_width, int video_height, int *bw, int *bh ); -void multitrack_get_preview_dimensions( int w , int h, int *dst_w, int *dst_h ); -void multitrack_update_sequence_image( void *data , int track, GdkPixbuf *img ); -int update_multitrack_widgets( void *data, int *array, int track ); -int multitrack_locked( void *data); -void multitrack_toggle_preview( void *data, int track_id, int status, GtkWidget *img ); -void multitrack_set_quality( void *data , int quality ); -void multitrack_sync_start(void *data); -void multitrack_sync_simple_cmd( void *data, int vims, int arg ); -void multitrack_resize( void *m , int w, int h ); -int mt_set_max_tracks(int tracks); -#endif - diff --git a/veejay-current/veejay-client/src/sequence.c b/veejay-current/veejay-client/src/sequence.c deleted file mode 100644 index 2f8ab7fa..00000000 --- a/veejay-current/veejay-client/src/sequence.c +++ /dev/null @@ -1,1085 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2006 Niels Elburg - * - * - * 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" - -#define RUP8(num)(((num)+8)&~8) - -extern void reloaded_schedule_restart(); -extern void vj_msg(int type, const char format[], ...); - -typedef struct -{ - uint8_t *image_data[16]; - int *status_tokens[16]; - int widths[16]; - int heights[16]; - int active_list[16]; - int frame_list[16]; -} track_sync_t; - -typedef struct -{ - char *hostname; - int port_num; - vj_client *fd; - uint8_t *data_buffer; - uint8_t *tmp_buffer; - uint8_t *status_buffer; - int track_list[16]; - int track_items; //shared - int status_tokens[STATUS_TOKENS]; //shared - int active; - int have_frame; - int grey_scale; - int preview; - int width; - int height; - int prevmode; - int need_track_list; - char *queue[16]; - int n_queued; - int bw; - int is_master; -} veejay_track_t; - -typedef struct -{ - void *lzo; - veejay_track_t **tracks; - int n_tracks; - int state; - track_sync_t *track_sync; -#ifdef STRICT_CHECKING - int locked; - char **locklist[256]; -#endif -} veejay_preview_t; - -static int sendvims( veejay_track_t *v, int vims_id, const char format[], ... ); -static int recvvims( veejay_track_t *v, gint header_len, gint *payload, guchar *buffer ); -static int veejay_get_image_data(veejay_preview_t *vp, veejay_track_t *v ); -static int track_find( veejay_preview_t *vp ); -static int veejay_process_status( veejay_preview_t *vp, veejay_track_t *v ); -static int gvr_preview_process_image( veejay_preview_t *vp, veejay_track_t *v ); -static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num, int *at ); -static int gvr_preview_process_status( veejay_preview_t *vp, veejay_track_t *v ); -void gvr_veejay_grabber_step( void *data ); - -void *gvr_preview_init(int max_tracks, int use_threads) -{ - veejay_preview_t *vp = (veejay_preview_t*) vj_calloc(sizeof( veejay_preview_t )); - //vp->mutex = g_mutex_new(); - vp->tracks = (veejay_track_t**) vj_calloc(sizeof( veejay_track_t*) * max_tracks ); - vp->track_sync = (track_sync_t*) vj_calloc(sizeof( track_sync_t )); - int i; - for( i = 0; i < max_tracks; i++ ) - vp->track_sync->status_tokens[i] = (int*) vj_calloc(sizeof(int) * STATUS_TOKENS); - - vp->n_tracks = max_tracks; - - yuv_init_lib(0,0,0); - - return (void*) vp; -} - -static void gvr_close_connection( veejay_track_t *v ) -{ - if(v) - { - veejay_msg(VEEJAY_MSG_WARNING, "Stopping VeejayGrabber to %s:%d",v->hostname,v->port_num ); - vj_client_close(v->fd); - vj_client_free(v->fd); - if(v->hostname) free(v->hostname); - if(v->status_buffer) free(v->status_buffer); - if(v->data_buffer) free(v->data_buffer); - if(v->tmp_buffer) free(v->tmp_buffer); - free(v); - v= NULL; - } -} - -static int sendvims( veejay_track_t *v, int vims_id, const char format[], ... ) -{ - gchar block[255]; - gchar tmp[255]; - va_list args; - gint n; - if( format == NULL ) - { - g_snprintf( block, sizeof(block)-1, "%03d:;", vims_id ); - n = vj_client_send( v->fd, V_CMD, (unsigned char*) block ); - if( n <= 0 ) { - if( n == -1 && v->is_master ) - reloaded_schedule_restart(); - return 0; - } - return 0; - } - - va_start( args, format ); - vsnprintf( tmp, sizeof(tmp)-1, format, args ); - g_snprintf( block,sizeof(block)-1, "%03d:%s;", vims_id, tmp ); - va_end( args ); - - n = vj_client_send( v->fd, V_CMD,(unsigned char*) block ); - if( n <= 0 ) { - if( n == -1 && v->is_master ) - reloaded_schedule_restart(); - } - return 1; -} - -static int recvvims( veejay_track_t *v, gint header_len, gint *payload, guchar *buffer ) -{ - gint tmp_len = header_len + 1; - unsigned char *tmp = vj_calloc( tmp_len ); - gint len = 0; - gint n = vj_client_read_no_wait( v->fd, V_CMD, tmp, header_len ); - - if( n<= 0 ) - { - if( n == -1 && v->is_master) - reloaded_schedule_restart(); - veejay_msg(VEEJAY_MSG_ERROR,"Reading header of %d bytes: %d", header_len,n ); - free(tmp); - return n; - } - - if( sscanf( (char*)tmp, "%6d%1d", &len,&(v->grey_scale) )<=0) - { - veejay_msg(VEEJAY_MSG_ERROR, "Can't parse header (datastream polluted)"); - free(tmp); - return 0; - } - - if( len <= 0 ) - { - free(tmp); - veejay_msg(VEEJAY_MSG_ERROR, "Frame is empty"); - return 0; - } - - gint bw = 0; - gint bytes_read = len; - unsigned char *buf_ptr = buffer; - - *payload = 0; - - while( bw < len ) - { - n = vj_client_read_no_wait( v->fd, V_CMD, buf_ptr, bytes_read ); - if ( n <= 0 ) - { - if( n == -1 && v->is_master ) - reloaded_schedule_restart(); - veejay_msg(VEEJAY_MSG_ERROR, "Received %d out of %d bytes", bw,len); - free(tmp); - *payload = 0; - return n; - } - bw += n; - - bytes_read -= n; - buf_ptr += bw; - } - *payload = bw; - - free(tmp); - return 1; -} - - -static unsigned char *vims_track_list( veejay_track_t *v, int slen, int *bytes_written ) -{ - unsigned char message[8]; - int tmp_len = slen + 1; - unsigned char *result = NULL; - unsigned char *tmp = vj_calloc( tmp_len ); - if( tmp == NULL ) - { - if( v->is_master ) { - reloaded_schedule_restart(); - } - return NULL; - } - - snprintf( (char*) message,sizeof(message), "%03d:;", VIMS_TRACK_LIST ); - int ret = vj_client_send( v->fd, V_CMD, message ); - if( ret <= 0) - { - if( ret == -1 && v->is_master ) - reloaded_schedule_restart(); - free(tmp); - return NULL; - } - - ret = vj_client_read( v->fd, V_CMD, tmp, slen ); - if( ret <= 0 ) - { - if( ret == -1 && v->is_master ) - reloaded_schedule_restart(); - free(tmp); - return NULL; - } - - int len = 0; - if( sscanf( (char*) tmp, "%d", &len ) != 1 ) - { - if(v->is_master) - reloaded_schedule_restart(); - free(tmp); - return result; - } - - if( len <= 0 || slen <= 0) - { - free(tmp); - return result; - } - - result = (unsigned char*) vj_calloc(sizeof( unsigned char) * (len + 1) ); - if( result == NULL ) { - if(v->is_master) - reloaded_schedule_restart(); - free(tmp); - return result; - } - - int bytes_left = len; - *bytes_written = 0; - - while( bytes_left > 0) - { - int n = vj_client_read( v->fd, V_CMD, result + (*bytes_written), bytes_left ); - if( n <= 0 ) - { - if( n == -1 && v->is_master ) - reloaded_schedule_restart(); - bytes_left = 0; - break; - } - if( n > 0 ) - { - *bytes_written +=n; - bytes_left -= n; - } - } - free(tmp); - - if( bytes_left ) { - free(result); - return NULL; - } - - return result; -} - - -static int veejay_process_status( veejay_preview_t *vp, veejay_track_t *v ) -{ - - unsigned char status_len[6]; - int k = -1; - int n = 0; - while( (k = vj_client_poll( v->fd, V_STATUS )) ) // is there a more recent message? - { - veejay_memset( status_len, 0, sizeof( status_len ) ); - n = vj_client_read(v->fd, V_STATUS, status_len, 5 ); - int bytes= 0; - - if( status_len[0] != 'V' ) { - n = -1; - k = -1; - } - - if( n == -1 && v->is_master ) { - reloaded_schedule_restart(); - break; - } - - if( sscanf( (char*) status_len+1, "%03d", &bytes ) != 1 ) { - veejay_msg(VEEJAY_MSG_ERROR, "Invalid status message."); - bytes = 0; - reloaded_schedule_restart(); - break; - } - - if(bytes > 0 ) - { - veejay_memset( v->status_buffer,0, STATUS_LENGTH ); - n = vj_client_read( v->fd, V_STATUS, v->status_buffer, bytes ); - if( n <= 0 ) { - if( n == -1 && v->is_master ) - reloaded_schedule_restart(); - - break; - } - } - } - if( k == -1 && v->is_master ) - reloaded_schedule_restart(); - - veejay_memset( v->status_tokens,0, sizeof(int) * STATUS_TOKENS); - status_to_arr( (char*) v->status_buffer, v->status_tokens ); - return 1; -} -extern int is_button_toggled(const char *name); - -static int veejay_get_image_data(veejay_preview_t *vp, veejay_track_t *v ) -{ - if(!v->have_frame && (v->width <= 0 || v->height <= 0) ) - return 1; - - gint res = sendvims( v, VIMS_RGB24_IMAGE, "%d %d", v->width,v->height ); - if( res <= 0 ) - { - v->have_frame = 0; - return res; - } - gint bw = 0; - - res = recvvims( v, 7, &bw, v->data_buffer ); - if( res <= 0 || bw <= 0 ) - { - veejay_msg(VEEJAY_MSG_WARNING, "Can't get a preview image! Only got %d bytes", bw); - v->have_frame = 0; - return res; - } - - int expected_len = (v->width * v->height); - int srcfmt = PIX_FMT_YUVJ420P; //default - - if(v->grey_scale) { - srcfmt = PIX_FMT_GRAY8; - } - else { - expected_len += (v->width*v->height/4); - expected_len += (v->width*v->height/4); - } - - if( bw != expected_len ) - { - veejay_msg(VEEJAY_MSG_WARNING, "Corrupted image. Should be %dx%d but have %d bytes %s", - v->width,v->height,abs(bw - expected_len),( (bw-expected_len<0)? "too few" : "too many") ); - v->have_frame = 0; - return 0; - } - - uint8_t *in = v->data_buffer; - - v->bw = 0; - - VJFrame *src1 = yuv_yuv_template( in, in + (v->width * v->height), in + (v->width * v->height) + (v->width*v->height)/4,v->width,v->height, srcfmt ); - VJFrame *dst1 = yuv_rgb_template( v->tmp_buffer, v->width,v->height, PIX_FMT_BGR24 ); - - yuv_convert_any_ac( src1, dst1, src1->format, dst1->format ); - - v->have_frame = 1; - - free(src1); - free(dst1); - - return bw; -} - - -static int gvr_preview_process_status( veejay_preview_t *vp, veejay_track_t *v ) -{ - if(!v) - return 0; - int tmp1 = 0; - tmp1 = vj_client_poll( v->fd , V_STATUS ); - if(tmp1) - { - int k = veejay_process_status( vp, v ); - if( k == -1 && v->is_master) - reloaded_schedule_restart(); - } - else if( tmp1 == -1 ) - { - if(v->is_master) - reloaded_schedule_restart(); - else - gvr_close_connection(v); - } - return 0; -} - -static int fail_connection = 0; -static int continue_anyway = 0; -static int gvr_preview_process_image( veejay_preview_t *vp, veejay_track_t *v ) -{ - if( v->preview == 0 ) - return 1; - - int n = veejay_get_image_data( vp, v ); - - if(n == 0 ) { - veejay_msg(VEEJAY_MSG_ERROR, "No image data %d x %d" , v->width,v->height); - //@ settle - fail_connection ++; - if( fail_connection > 2 ) { - fail_connection = 0; //@ fail 2 out of 10 images and we break connection - return 0; - } - return 1; - } if( n == -1 ) { - return 0; - } else { - continue_anyway = (continue_anyway + 1) % 10; - if(continue_anyway == 0) - fail_connection = 0; - } - - return 1; -} - -void gvr_set_master(void *data, int master_track ) -{ - veejay_preview_t *vp = (veejay_preview_t*) data; - int i; - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] ) - vp->tracks[i]->is_master = 0; - vp->tracks[master_track]->is_master = 1; -} - -static int track_exists( veejay_preview_t *vp, const char *hostname, int port_num, int *at_track ) -{ - int i; - - for( i = 0; i < vp->n_tracks ; i++ ) - { - if( vp->tracks[i] ) - { - veejay_track_t *v = vp->tracks[i]; - if( strcasecmp( hostname, v->hostname ) == 0 && v->port_num == port_num ) - { - if( at_track ) - *at_track = i; - return 1; - } - } - } - return 0; -} - -int gvr_track_test( void *preview, int track_id ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - if( track_id < 0 || track_id > vp->n_tracks ) - return 0; - return (vp->tracks[track_id] ? 1:0); -} - -static int track_find( veejay_preview_t *vp ) -{ - int i; - int res = -1; - for( i = 0;i < vp->n_tracks ;i ++ ) - { - if( !vp->tracks[i] ) - { - res = i; - break; - } - } - return res; -} - -char* gvr_track_get_hostname( void *preview , int num ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - - if( vp->tracks[num] ) - return vp->tracks[num]->hostname; - return NULL; -} - -int gvr_track_get_portnum( void *preview, int num) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - - if( vp->tracks[num] ) - return vp->tracks[num]->port_num; - return 0; -} - -int gvr_track_already_open( void *preview, const char *hostname, - int port ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - - if(track_exists( vp, hostname, port, NULL ) ) - return 1; - return 0; -} - -int gvr_track_connect( void *preview, char *hostname, int port_num, int *new_track ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int track_num = track_find( vp ); - - if(track_num == -1) - { - vj_msg(0, "All tracks used."); - return 0; - } - if(track_exists( vp, hostname, port_num, new_track ) ) - { - vj_msg(VEEJAY_MSG_WARNING, "Veejay '%s':%d already in track %d", hostname, port_num, *new_track ); - return 0; - } - vj_client *fd = vj_client_alloc(0,0,0); - if(!vj_client_connect( fd, hostname, NULL, port_num ) ) - { - vj_msg(VEEJAY_MSG_ERROR, "Unable to connect to %s:%d", hostname, port_num ); - vj_client_free( fd ); - return 0; - } - - veejay_track_t *vt = (veejay_track_t*) vj_calloc( sizeof(veejay_track_t)); - vt->hostname = strdup(hostname); - vt->port_num = port_num; - vt->active = 1; - vt->fd = fd; - - vt->status_buffer = (uint8_t*) vj_calloc(sizeof(uint8_t) * STATUS_LENGTH); - if(vt->status_buffer == NULL ) { - vj_client_free( fd ); - return 0; - } - - vt->data_buffer = (uint8_t*) vj_calloc( RUP8( MAX_PREVIEW_WIDTH * MAX_PREVIEW_HEIGHT * 3) ); - if(vt->data_buffer == NULL ) { - vj_client_free( fd ); - return 0; - } - - vt->tmp_buffer = (uint8_t*) vj_calloc( RUP8( MAX_PREVIEW_WIDTH * MAX_PREVIEW_HEIGHT * 4) ); - if(vt->tmp_buffer == NULL ) { - vj_client_free( fd ); - return 0; - } - - *new_track = track_num; - - vp->tracks[ track_num ] = vt; - vp->track_sync->active_list[ track_num ] = 1; - return 1; -} - - -static void gvr_single_queue_vims( veejay_track_t *v, int vims_id ) -{ - char message[16]; - - sprintf(message, "%03d:;", vims_id ); - - if( v->n_queued < 16 ) - { - v->queue[ v->n_queued ] = strdup( message ); - v->n_queued ++; - } -} - -static void gvr_multi_queue_vims( veejay_track_t *v, int vims_id, int val ) -{ - char message[16]; - - sprintf(message, "%03d:%d;", vims_id,val ); - - if( v->n_queued < 16 ) - { - v->queue[ v->n_queued ] = strdup( message ); - v->n_queued ++; - } -} -static void gvr_multivx_queue_vims( veejay_track_t *v, int vims_id, int val1,unsigned char *val2 ) -{ - char message[300]; - - sprintf(message, "%03d:%d %s;", vims_id,val1,val2 ); - - if( v->n_queued < 16 ) - { - v->queue[ v->n_queued ] = strdup( message ); - v->n_queued ++; - } -} -static void gvr_multivvv_queue_vims( veejay_track_t *v, int vims_id, int val1,int val2, int val3 ) -{ - char message[16]; - - sprintf(message, "%03d:%d %d %d;", vims_id,val1,val2, val3 ); - - if( v->n_queued < 16 ) - { - v->queue[ v->n_queued ] = strdup( message ); - v->n_queued ++; - } -} - -static void gvr_multiv_queue_vims( veejay_track_t *v, int vims_id, int val1,int val2 ) -{ - char message[16]; - - sprintf(message, "%03d:%d %d;", vims_id,val1,val2 ); - - if( v->n_queued < 16 ) - { - v->queue[ v->n_queued ] = strdup( message ); - v->n_queued ++; - } -} -void gvr_queue_cxvims( void *preview, int track_id, int vims_id, int val1,unsigned char *val2 ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int i; - - if( track_id == -1 ) - { - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - gvr_multivx_queue_vims( vp->tracks[i], vims_id,val1,val2 ); - } - else - { - if( vp->tracks[track_id] && vp->tracks[track_id]->active) - gvr_multivx_queue_vims( vp->tracks[track_id], vims_id,val1,val2 ); - } -} - -void gvr_queue_vims( void *preview, int track_id, int vims_id ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int i; - - if( track_id == -1 ) - { - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - gvr_single_queue_vims( vp->tracks[i], vims_id ); - } - else - { - if( vp->tracks[track_id] && vp->tracks[track_id]->active) - gvr_single_queue_vims( vp->tracks[track_id], vims_id ); - } -} - -void gvr_queue_mvims( void *preview, int track_id, int vims_id, int val ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int i; - - if( track_id == -1 ) - { - for( i = 0; i < vp->n_tracks ; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - gvr_multi_queue_vims( vp->tracks[i], vims_id,val ); - } - else - { - if( vp->tracks[track_id] && vp->tracks[track_id]->active ) - gvr_multi_queue_vims( vp->tracks[track_id], vims_id,val ); - } -} - -void gvr_need_track_list( void *preview, int track_id ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - veejay_track_t *v = vp->tracks[track_id]; - if(v) - v->need_track_list = 1; -} - -void gvr_queue_mmvims( void *preview, int track_id, int vims_id, int val1,int val2 ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int i; - - if( track_id == -1 ) - { - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - gvr_multiv_queue_vims( vp->tracks[i], vims_id,val1,val2 ); - } - else - { - if( vp->tracks[track_id] && vp->tracks[track_id]->active) - gvr_multiv_queue_vims( vp->tracks[track_id], vims_id,val1,val2 ); - } -}void gvr_queue_mmmvims( void *preview, int track_id, int vims_id, int val1,int val2, int val3 ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int i; - - if( track_id == -1 ) - { - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - gvr_multivvv_queue_vims( vp->tracks[i], vims_id,val1,val2,val3); - } - else - { - if( vp->tracks[track_id] && vp->tracks[track_id]->active) - gvr_multivvv_queue_vims( vp->tracks[track_id], vims_id,val1,val2,val3 ); - } -} - -void gvr_track_disconnect( void *preview, int track_num ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - - veejay_track_t *v = vp->tracks[ track_num ]; - if(v) - gvr_close_connection( v ); - vp->tracks[ track_num ] = NULL; - vp->track_sync->active_list[ track_num ] = 0; - -} - -int gvr_track_configure( void *preview, int track_num, int wid, int hei ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - - int w = (wid > MAX_PREVIEW_WIDTH ? MAX_PREVIEW_WIDTH : wid ); - int h = (hei > MAX_PREVIEW_HEIGHT ? MAX_PREVIEW_HEIGHT : hei ); - - if( vp->tracks[track_num] ) - { - vp->tracks[ track_num ]->width = w; - vp->tracks[ track_num ]->height = h; - } - - vp->track_sync->widths[track_num] = w; - vp->track_sync->heights[track_num] = h; - - return 1; -} - -int gvr_get_preview_status( void *preview, int track_num ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - if(!vp->tracks[track_num] ) - return 0; - return vp->tracks[track_num]->preview; -} - - -int gvr_track_toggle_preview( void *preview, int track_num, int status ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - vp->tracks[ track_num ]->preview = status; - - vj_msg(VEEJAY_MSG_INFO, "Live view %dx%d with %s:%d on Track %d %s", - vp->tracks[ track_num ]->width, - vp->tracks[ track_num ]->height, - vp->tracks[ track_num ]->hostname, - vp->tracks[ track_num ]->port_num, - track_num, - (status ? "enabled" : "disabled") ); - return status; -} - -static GdkPixbuf **gvr_grab_images(void *preview) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - GdkPixbuf **list = (GdkPixbuf**) vj_calloc( sizeof(GdkPixbuf*) * vp->n_tracks ); - if(!list) - return NULL; - - int i; - - for( i = 0; i < vp->n_tracks; i ++ ) - { - if( vp->tracks[i] && vp->tracks[i]->active && vp->track_sync->widths[i] > 0 && vp->tracks[i]->preview && - vp->tracks[i]->tmp_buffer != NULL ) - { - list[i] =gdk_pixbuf_new_from_data(vp->tracks[i]->tmp_buffer,GDK_COLORSPACE_RGB,FALSE, - 8,vp->tracks[i]->width,vp->tracks[i]->height, - vp->tracks[i]->width*3,NULL,NULL ); - } - } - - return list; -} - -static int *int_dup( int *status ) -{ - int *res = (int*) vj_calloc( sizeof(int) * STATUS_TOKENS ); - int i; - for(i =0; i < STATUS_TOKENS ; i ++ ) - res[i] = status[i]; - return res; -} - -static int **gvr_grab_stati( void *preview ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int **list = (int**) vj_calloc( sizeof(int*) * vp->n_tracks ); - if(!list) - return NULL; - - int i; - - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active) - list[i] = int_dup( vp->tracks[i]->status_tokens ); - return list; -} - -static int *gvr_grab_widths( void *preview ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int *list = (int*) vj_calloc( sizeof(int) * vp->n_tracks ); - if(!list) - return NULL; - - int i; - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - list[i] = vp->track_sync->widths[i]; - - return list; -} -static int *gvr_grab_heights( void *preview ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - int *list = (int*) vj_calloc( sizeof(int) * vp->n_tracks ); - if(!list) - return NULL; - - int i; - for( i = 0; i < vp->n_tracks; i ++ ) - if( vp->tracks[i] && vp->tracks[i]->active ) - list[i] = vp->track_sync->widths[i]; - - return list; -} - -sync_info *gvr_sync( void *preview ) -{ - veejay_preview_t *vp = (veejay_preview_t*) preview; - sync_info *s = (sync_info*) vj_calloc(sizeof(sync_info)); - - gvr_veejay_grabber_step( preview ); - - s->status_list = gvr_grab_stati( preview ); - s->tracks = vp->n_tracks; - s->widths = gvr_grab_widths( preview ); - s->heights = gvr_grab_heights( preview); - s->img_list = gvr_grab_images( preview ); - - return s; -} - - -static void gvr_parse_track_list( veejay_preview_t *vp, veejay_track_t *v, unsigned char *tmp, int len ) -{ - int i = 0; - int items = 0; - unsigned char *ptr = tmp; - - char **z = vj_calloc( sizeof( char * ) * vp->n_tracks ); - - while( i < len ) - { - int k = 0; - char k_str[4]; - strncpy( k_str,(char*) ptr, 3 ); - if( k > 0 ) - { - ptr += 3; - z[items] = strndup( (char*) ptr, k ); - items ++; - ptr += k; - } - i += ( 3 + k ); - } - - if( items > 0 ) - { - for( i = 0; i < items ; i ++ ) - { - int k; - int in_track = -1; - for( k = 0; k < vp->n_tracks ; k ++ ) - { - veejay_track_t *t = vp->tracks[k]; - if(t) - { - char hostname[255]; - int port = 0; - int stream_id = 0; - veejay_memset(hostname,0,255 ); - if( sscanf( (char*) z[i], "%s %d %d", hostname, &port, &stream_id )) - { - if( strcasecmp( hostname, t->hostname ) == 0 && - port == t->port_num ) - in_track = k; - } - } - } - - v->track_list[i] = in_track; - - free( z[i] ); - } - v->track_items = items; - } - - free( z ); -} - -int gvr_get_stream_id( void *data, int id ) -{ - veejay_preview_t *vp = (veejay_preview_t*) data; - - veejay_track_t *v = vp->tracks[id]; - - if(v) - return v->track_list[id]; - return 0; -} - -static void gvr_parse_queue( veejay_track_t *v ) -{ - int i; - - for( i = 0; i < v->n_queued ; i ++ ) - { - if( vj_client_send( v->fd, V_CMD, (unsigned char*) v->queue[i] ) == -1 && - v->is_master ) - reloaded_schedule_restart(); - free( v->queue[i] ); - v->queue[i] = NULL; - } - v->n_queued = 0; -} -static int gvr_veejay( veejay_preview_t *vp , veejay_track_t *v, int track_num ) -{ - int score = 0; - if( v->need_track_list || v->n_queued > 0 ) - { - if( v->need_track_list ) - { - int bw = 0; - unsigned char *tmp = vims_track_list( v, 5, &bw ); - gvr_parse_track_list( vp, v, tmp, bw ); - v->need_track_list = 0; - } - if( v->n_queued > 0 ) - { - gvr_parse_queue( v ); - } - score ++; - } - - v->preview = is_button_toggled( "previewtoggle" ); - - if( gvr_preview_process_image( vp,v )) - score++; - else - { - vj_client_close(v->fd); - int ok = vj_client_connect( v->fd, v->hostname, NULL, v->port_num ); - if( ok <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "VeejayGrabber: Unable to reconnect to %s, Destroying Track %d", - (v->hostname ? v->hostname : ""), - track_num ); - vj_client_free(v->fd); - if(v->hostname) free(v->hostname); - if(v->status_buffer) free(v->status_buffer); - if(v->data_buffer) free(v->data_buffer); - if(v->tmp_buffer) free(v->tmp_buffer); - v->data_buffer = NULL; - v->tmp_buffer = NULL; - vp->tracks[track_num] = NULL; - - if( v->is_master ) - reloaded_schedule_restart(); - free(v); - } - else - { - v->preview = is_button_toggled( "previewtoggle"); - v->active = 1; - vj_msg(VEEJAY_MSG_WARNING, "VeejayGrabber: %s:%d track %d@%dx%d preview: %s", - v->hostname, v->port_num, track_num, v->width,v->height, (v->preview ? "yes" : "no")); - } - } - - return score; -} - -void gvr_veejay_grabber_step( void *data ) -{ - veejay_preview_t *vp = (veejay_preview_t*) data; - int i; - - int try_picture = 0; - - for( i = 0; i < vp->n_tracks ; i ++ ) - { - if( vp->tracks[i] && vp->tracks[i]->active) { - if(gvr_preview_process_status( vp, vp->tracks[i] )) - { - if( gvr_get_preview_status( vp, i ) ) - try_picture ++; - } - } - } - - for( i = 0; i < vp->n_tracks ; i ++ ) - { - if( vp->tracks[i] && vp->tracks[i]->active) - { - if( vp->tracks[i] ) - gvr_veejay( vp, vp->tracks[i],i ); - } - } - -} - - diff --git a/veejay-current/veejay-client/src/sequence.h b/veejay-current/veejay-client/src/sequence.h deleted file mode 100644 index 58945f59..00000000 --- a/veejay-current/veejay-client/src/sequence.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2006 Niels Elburg - * - * - * 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. - */ - -#ifndef PREVIEWH -#define PREVIEWH -typedef struct -{ - int tracks; - int master; - int *widths; - int *heights; - int **status_list; - GdkPixbuf **img_list; -} sync_info; - -void *gvr_preview_init(int max_tracks, int use_thread); -int gvr_track_connect( void *preview, char *hostname, int port_num, int *track_num ); -void gvr_track_disconnect( void *preview, int track_num ); -int gvr_track_configure( void *preview, int track_num, int w, int h); -int gvr_track_toggle_preview( void *preview, int track_num, int status ); -void gvr_need_track_list( void *preview, int track_id ); - -int gvr_get_stream_id( void *data, int id ); -void gvr_set_master( void *preview, int master_track ); -//format and queue vims messages from extern - -void gvr_queue_mmmvims( void *preview, int track_id, int vims_id, int val1,int val2, int val3 ); -void gvr_queue_mmvims( void *preview, int track_id, int vims_id, int val1,int val2 ); -void gvr_queue_mvims( void *preview, int track_id, int vims_id, int val ); -void gvr_queue_vims( void *preview, int track_id, int vims_id ); - -void gvr_queue_cxvims( void *preview, int track_id, int vims_id, int val1,unsigned char *val2 ); - -int gvr_track_already_open( void *preview, const char *hostname, int port ); - -int gvr_get_preview_status( void *preview, int track_num ); - -char* gvr_track_get_hostname( void *preview , int num ); - -int gvr_track_get_portnum( void *preview, int num); - -int gvr_track_test( void *preview, int track_id ); - -sync_info *gvr_sync( void *preview ); - -#endif - - diff --git a/veejay-current/veejay-client/src/tracksources.c b/veejay-current/veejay-client/src/tracksources.c deleted file mode 100644 index 468e9949..00000000 --- a/veejay-current/veejay-client/src/tracksources.c +++ /dev/null @@ -1,198 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ -#include -#include -#include -#include -#include -extern void veejay_release_track(int id, int release_this); -extern void veejay_bind_track( int id, int bind_this ); -extern int multitrack_get_sequence_view_id( void *data ); -extern gchar *_utf8str( const char *c_str ); -typedef struct -{ - int track_id; - GtkWidget *view; -} track_view_t; - -static void cell_data_func( - GtkTreeViewColumn *col, GtkCellRenderer *renderer, - GtkTreeModel *model, GtkTreeIter *iter, - gpointer user_data) -{ - gint state; - gtk_tree_model_get(model, iter, 1, &state, -1 ); - - if(state==1) - g_object_set(renderer, "active", TRUE, NULL ); - else - g_object_set(renderer, "active", FALSE, NULL ); - g_object_set( renderer, "activatable", TRUE, NULL ); -} - -static void cell_toggled_callback( GtkCellRenderer *cell, gchar *path_string, gpointer user_data ) -{ - track_view_t *v = (track_view_t*) user_data; - GtkWidget *view = v->view; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(view)); - GtkTreePath *path = gtk_tree_path_new_from_string( path_string ); - GtkTreeIter iter; - - gtk_tree_model_get_iter( model, &iter, path ); - gchar *data = NULL; - gtk_tree_model_get( model, &iter,0, &data, -1 ); - - int id_data = -1; // invalid - if(sscanf( data, "%d", &id_data ) == 1 ) - { - if( gtk_cell_renderer_toggle_get_active( GTK_CELL_RENDERER_TOGGLE( cell) ) ) - { - veejay_release_track( v->track_id, id_data); - } - else - { - veejay_bind_track( v->track_id, id_data ); - } - g_free(data); - } - gtk_tree_path_free( path ); -} - -extern int *sequence_get_track_status(void *priv ); - -void update_track_view( int n_tracks, GtkWidget *widget, void *user_data ) -{ - GtkTreeView *view = GTK_TREE_VIEW(widget); - GtkTreeModel *model = gtk_tree_view_get_model( view ); - GtkListStore *store = GTK_LIST_STORE( model ); - GtkTreeIter iter; - - gtk_list_store_clear( GTK_LIST_STORE( model ) ); - - int i; - int id = multitrack_get_sequence_view_id( user_data ); - for( i = 0; i < n_tracks; i ++ ) - { - if(id != i) - { - char name[12]; - snprintf(name,sizeof(name),"%d", i); - gchar *uname = _utf8str( name ); - gtk_list_store_append( store, &iter ); - gtk_list_store_set( - store, &iter, - 0, uname, - 1, 0, - -1 ); - g_free( uname ); - } - } - - - gtk_tree_view_set_model( GTK_TREE_VIEW( widget ), model ); - -} - -GtkWidget *get_track_tree( void *data) -{ - track_view_t *t = (track_view_t*) data; - return t->view; -} - -void *create_track_view(int track_id, int ref_tracks, void *user_data) -{ - GtkCellRenderer *renderer, *wrenderer; - GtkTreeModel *model; - GtkWidget *view; - view = gtk_tree_view_new(); - renderer = gtk_cell_renderer_text_new(); - wrenderer = gtk_cell_renderer_toggle_new(); - - track_view_t *my_view = (track_view_t*) vj_calloc(sizeof(track_view_t)); - - gtk_cell_renderer_toggle_set_active( GTK_CELL_RENDERER_TOGGLE(wrenderer) , FALSE ); - - gtk_tree_view_insert_column_with_attributes( - GTK_TREE_VIEW( view ), - -1, - "T", - renderer, - "text", - 0, - NULL ); - gtk_tree_view_insert_column_with_attributes( - GTK_TREE_VIEW( view ), - -1, - "-", - wrenderer, - "activatable", - 1, - NULL); - -// GtkWidget *col = gtk_tree_view_get_column( GTK_TREE_VIEW(view) , 0 ); - GtkTreeViewColumn *col = gtk_tree_view_get_column( GTK_TREE_VIEW(view),0); - gtk_tree_view_column_set_fixed_width( col , 5 ); - - col = gtk_tree_view_get_column( GTK_TREE_VIEW( view ), 1 ); - gtk_tree_view_column_set_clickable( col , TRUE ); - gtk_tree_view_column_set_fixed_width( col , 20 ); - - gtk_tree_view_column_set_cell_data_func( col, - wrenderer, cell_data_func, NULL,NULL); - - /* build model */ - GtkListStore *store; - GtkTreeIter iter; - - store = gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_INT ); - int i; - for( i = 0; i < ref_tracks ; i ++ ) - { - if( i != track_id ) - { - char str[16]; - snprintf(str,sizeof(str),"%d",i); - gchar *ustr = _utf8str( str ); - gtk_list_store_append( store, &iter ); - gtk_list_store_set( store, &iter, - 0, ustr, - 1, 0, - -1); - g_free(ustr); - } - } - - GtkTreeSelection *selection; - selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) ); - gtk_tree_selection_set_mode( selection, GTK_SELECTION_NONE ); - my_view->track_id = track_id; - my_view->view = view; - - g_assert( GTK_IS_TREE_VIEW( view ) ); - - model = GTK_TREE_MODEL( store ); - gtk_tree_view_set_model ( GTK_TREE_VIEW( view ), model ); - g_signal_connect( wrenderer, "toggled", - (GCallback) cell_toggled_callback, (gpointer*) my_view); - - - g_object_unref( model ); - - return (void*) my_view; -} diff --git a/veejay-current/veejay-client/src/tracksources.h b/veejay-current/veejay-client/src/tracksources.h deleted file mode 100644 index 36c86555..00000000 --- a/veejay-current/veejay-client/src/tracksources.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ - -#ifndef TRACCKSOURCES_H -#define TRACCKSOURCES_H - -GtkWidget *get_track_tree( void *data); - -void *create_track_view( int id, int ref, void *data ); - -void update_track_view( int n_tracks, GtkWidget *widget, void *user_data ); -#endif diff --git a/veejay-current/veejay-client/src/utils.c b/veejay-current/veejay-client/src/utils.c deleted file mode 100644 index 237fe883..00000000 --- a/veejay-current/veejay-client/src/utils.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ -#include -#include -#include "yuv4mpeg_intern.h" -#include "yuv4mpeg.h" -#include "mpegconsts.h" -#include "mpegtimecode.h" - -#include -#include - -int status_to_arr( char *status, int *array ) -{ - return sscanf(status, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", - array + 0, - array + 1, - array + 2, - array + 3, - array + 4, - array + 5, - array + 6, - array + 7, - array + 8, - array + 9, - array + 10, - array + 11, - array + 12, - array + 13, - array + 14, - array + 15, - array + 16, - array + 17, - array + 18, - array + 19, - array + 20, - array + 21, - array + 22, - array + 23, - array + 24, - array + 25, - array + 26, - array + 27, - array + 28, - array + 29, - array + 30, - array + 31, - array + 32, - array + 33 - ); -} - -void generator_to_arr( char *line, int *array) -{ - char *p = line; - int i = 0; - while(*p) { - char *end = NULL; - if(p == NULL) - break; - array[i] = strtol(p, &end, 10 ); - if( end == p) - break; - - while(*end == ' ') { - *end++; - if(end == NULL) - break; - } - - p = end; - i++; - } -} - - -char *format_time(int pos, double fps) -{ - char temp[128]; - MPEG_timecode_t tc; - y4m_ratio_t r = mpeg_conform_framerate(fps); - mpeg_timecode(&tc, - pos, - mpeg_framerate_code(r), - fps ); - snprintf(temp,sizeof(temp),"%d:%2.2d:%2.2d:%2.2d",tc.h, tc.m, tc.s, tc.f ); - return strdup(temp); -} - diff --git a/veejay-current/veejay-client/src/utils.h b/veejay-current/veejay-client/src/utils.h deleted file mode 100644 index e4d13a3d..00000000 --- a/veejay-current/veejay-client/src/utils.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ - -#ifndef GVRUTILS -#define GVRUTILS -int status_to_arr( char *status, int *array ); -char *format_time( int pos , double fps); -void generator_to_arr( char *line, int *array); - - -#define MAX_PREVIEW_WIDTH 520 -#define MAX_PREVIEW_HEIGHT 300 - -#endif - diff --git a/veejay-current/veejay-client/src/vj-api.c b/veejay-current/veejay-client/src/vj-api.c deleted file mode 100644 index aef9e0cb..00000000 --- a/veejay-current/veejay-client/src/vj-api.c +++ /dev/null @@ -1,9406 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2004 Niels Elburg - * with contributions by Thomas Rheinhold (2005) - * (initial sampledeck representation in GTK) - * - * - * 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "mpegconsts.h" -#include "mpegtimecode.h" -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_SDL -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//if gtk2_6 is not defined, 2.4 is assumed. -#ifdef GTK_CHECK_VERSION -#if GTK_MINOR_VERSION >= 6 - #define HAVE_GTK2_6 1 -#endif -#if GTK_MINOR_VERSION >= 8 - #define HAVE_GTK2_8 1 -#endif -#endif -#ifdef STRICT_CHECKING -#include -#endif -#define RUP8(num)(((num)+8)&~8) -#ifdef ARCH_X86_64 -static gpointer castIntToGpointer( int val ) -{ - int64_t g_int64_val = (int64_t) val; - return (gpointer) g_int64_val; -} -#else -static gpointer castIntToGpointer( int val) -{ - return (gpointer) val; -} -#endif -static int ui_skin_ = 0; -static struct -{ - const int id; - const char *name; - const int page; -} crappy_design[] = -{ - { 1,"notebook18", 3 }, // On which notebook page is the multitrack view - { 0,"vjdeck", 2 }, - { 0,NULL, 0 } -}; - -#define MAX_SLOW 25 - -static int beta__ = 0; -static int use_vims_mcast = 0; - -static struct -{ - const char *text; -} tooltips[] = -{ - {"Mouse left: Set in point,\nMouse right: Set out point,\nDouble click: Clear selected,\nMouse middle: Drag selection"}, - {"Mouse left/right: Play slot,\nShift + Mouse left: Put sample in slot.\nYou can also put selected samples."}, - {"Mouse left click: Select slot (sample in slot),\nMouse double click: Play sample in slot,\nShift + Mouse left: Set slot as mixing current mixing channel"}, - {"Select a SRT sequence to edit"}, - {"Double click: add effect to current entry in chain list,\n [+] Shift L: add disabled,\n [+] Ctrl L: add to selected sample"}, - {"Filter the effects list by any string"}, - {"Shift + Mouse left : Toogle selected fx chain"}, - {NULL}, -}; - -static struct -{ - const char *name; -} non_feedback_widgets[] = -{ - { "markerframe" }, - { "vbox633" }, - { "hbox910" }, - { "hbox27" }, - { "sample_bank_hbox" }, - { "button_samplebank_prev" }, - { "button_samplebank_next" }, - { "spin_samplebank_select" }, - { "hbox709" }, - { "sample_panel" }, - { "notebook15" }, - { "vbox623" }, - { "samplegrid_frame" }, - { "panels" }, - { NULL }, -}; - -enum -{ - TOOLTIP_TIMELINE = 0, - TOOLTIP_QUICKSELECT = 1, - TOOLTIP_SAMPLESLOT = 2, - TOOLTIP_SRTSELECT = 3, - TOOLTIP_FXSELECT = 4, - TOOLTIP_FXFILTER = 5, - TOOLTIP_FXCHAINTREE = 6 -}; - -#define FX_PARAMETER_DEFAULT_NAME "" -#define FX_PARAMETER_VALUE_DEFAULT_HINT "" - -enum -{ - STREAM_NO_STREAM = 0, - STREAM_RED = 9, - STREAM_GREEN = 8, - STREAM_GENERATOR = 7, - STREAM_CALI = 6, - STREAM_WHITE = 4, - STREAM_VIDEO4LINUX = 2, - STREAM_DV1394 = 17, - STREAM_NETWORK = 13, - STREAM_MCAST = 14, - STREAM_YUV4MPEG = 1, - STREAM_AVFORMAT = 12, - STREAM_CLONE = 15, - STREAM_VLOOP = 3, - STREAM_PICTURE = 5 -}; - -enum -{ - COLUMN_INT = 0, - COLUMN_STRING0, - COLUMN_STRINGA , - COLUMN_STRINGB, - COLUMN_STRINGC, - N_COLUMNS -}; - -enum -{ - ENTRY_FXID = 0, - ENTRY_ISVIDEO = 1, - ENTRY_NUM_PARAMETERS = 2, - ENTRY_KF_STATUS = 3, - ENTRY_KF_TYPE = 4, - ENTRY_TRANSITION_ENABLED = 5, - ENTRY_TRANSITION_LOOP = 6, - ENTRY_SOURCE = 7, - ENTRY_CHANNEL = 8, - ENTRY_VIDEO_ENABLED = 9, - ENTRY_SUBRENDER_ENTRY = 10, - ENTRY_P0 = 11, - ENTRY_P1 = 12, - ENTRY_P2 = 13, - ENTRY_P3 = 14, - ENTRY_P4 = 15, - ENTRY_P5 = 16, - ENTRY_P6 = 17, - ENTRY_P8 = 18, - ENTRY_P9 = 19, - ENTRY_P10 = 20, - ENTRY_P11 = 21, - ENTRY_P12 = 22, - ENTRY_P13 = 23, - ENTRY_P14 = 24, - ENTRY_P15 = 25, - ENTRY_LAST = 26 - /* - ENTRY_P1 = 16, - ENTRY_P2 = 21, - ENTRY_P3 = 26, - ENTRY_P4 = 31, - ENTRY_P5 = 36, - ENTRY_P6 = 41, - ENTRY_P8 = 46, - ENTRY_P9 = 51, - ENTRY_P10 = 56, - ENTRY_P11 = 61, - ENTRY_P12 = 66, - ENTRY_P13 = 71, - ENTRY_P14 = 76, - ENTRY_P15 = 81, - ENTRY_LAST = 86 */ -}; - -#define ENTRY_PARAMSET ENTRY_P0 - -enum -{ - SL_ID = 0, - SL_DESCR = 1, - SL_TIMECODE = 2 -}; - -enum -{ - HINT_CHAIN = 0, - HINT_EL = 1, - HINT_MIXLIST = 2, - HINT_SAMPLELIST = 3, - HINT_ENTRY = 4, - HINT_SAMPLE = 5, - HINT_SLIST = 6, - HINT_V4L = 7, - HINT_RECORDING = 8, - HINT_RGBSOLID = 9, - HINT_BUNDLES = 10, - HINT_HISTORY = 11, - HINT_MARKER = 12, - HINT_KF = 13, - HINT_SEQ_ACT = 14, - HINT_SEQ_CUR = 15, - HINT_GENERATOR =16, - HINT_MACRO=17, - NUM_HINTS = 18, -}; - -enum -{ - PAGE_CONSOLE =0, - PAGE_FX = 3, - PAGE_EL = 1, - PAGE_SAMPLEEDIT = 2, -}; - -typedef struct -{ - int channel; - int dev; -} stream_templ_t; - -enum -{ - V4L_DEVICE=0, - DV1394_DEVICE=1, -}; - -typedef struct -{ - int selected_chain_entry; - int selected_el_entry; - int selected_vims_entry; - int selected_vims_accel[2]; - int render_record; - int entry_tokens[ENTRY_LAST]; - int iterator; - int selected_effect_id; - int reload_hint[NUM_HINTS]; - gboolean reload_force_avoid; - int playmode; - int sample_rec_duration; - int streams[4096]; - int recording[2]; - int selected_mix_sample_id; - int selected_mix_stream_id; - int selected_rgbkey; - int priout_lock; - int pressed_key; - int pressed_mod; - int keysnoop; - int randplayer; - stream_templ_t strtmpl[2]; // v4l, dv1394 - int selected_parameter_id; // current kf - int selected_vims_type; - char *selected_vims_args; - int cali_duration; - int cali_stage; - int expected_num_samples; - int expected_num_streams; - int real_num_samples; - int real_num_streams; -} veejay_user_ctrl_t; - -typedef struct -{ - float fps; - float ratio; - int num_files; - int *offsets; - int num_frames; - int width; - int height; -} veejay_el_t; - -enum -{ - RUN_STATE_LOCAL = 1, - RUN_STATE_REMOTE = 2, -}; - -typedef struct -{ - gint event_id; - gint params; - gchar *format; - gchar *descr; - gchar *args; -} vims_t; - -typedef struct -{ - gint keyval; - gint state; - gchar *args; - gchar *vims; - gint event_id; -} vims_keys_t; - -static int user_preview = 0; -static int NUM_BANKS = 50; -static int NUM_SAMPLES_PER_PAGE = 12; -static int NUM_SAMPLES_PER_COL = 6; -static int NUM_SAMPLES_PER_ROW = 2; -static int use_key_snoop = 0; - -#define G_MOD_OFFSET 200 -#define SEQUENCE_LENGTH 1024 -#define MEM_SLOT_SIZE 32 - -static vims_t vj_event_list[VIMS_MAX]; -static vims_keys_t vims_keys_list[VIMS_MAX]; -static int vims_verbosity = 0; -#define livido_port_t vevo_port_t -static int cali_stream_id = 0; -static int cali_onoff = 0; -static int geo_pos_[2] = { -1,-1 }; -static vevo_port_t *fx_list_ = NULL; -typedef struct -{ - GtkWidget *title; - GtkWidget *timecode; - GtkWidget *hotkey; -// GtkWidget *edit_button; - GtkTooltips *tips; - GtkWidget *image; - GtkWidget *frame; - GtkWidget *event_box; - GtkWidget *main_vbox; - GtkWidget *upper_hbox; - GtkWidget *upper_vbox; -} sample_gui_slot_t; - -typedef struct -{ - gint w; - gint h; - gdouble fps; - gint pixel_format; - gint sampling; - gint audio_rate; - gint norm; - gint sync; - gint timer; - gint deinter; - gchar *mcast_osc; - gchar *mcast_vims; - gint osc; - gint vims; -} config_settings_t; - -typedef struct -{ - GtkWidget *frame; - GtkWidget *image; - GtkWidget *event_box; - GtkWidget *main_vbox; - GdkPixbuf *pixbuf_ref; - gint sample_id; - gint sample_type; -} sequence_gui_slot_t; - -typedef struct -{ - gint slot_number; - gint sample_id; - gint sample_type; - gchar *title; - gchar *timecode; - gint refresh_image; - GdkPixbuf *pixbuf; - guchar *rawdata; -} sample_slot_t; - -typedef struct -{ - gint seq_start; - gint seq_end; - gint w; - gint h; - sequence_gui_slot_t **gui_slot; - sample_slot_t *selected; - gint envelope_size; -} sequence_envelope; - -typedef struct -{ - sample_slot_t *sample; -} sequence_slot_t; - - -typedef struct -{ - gint bank_number; - gint page_num; - sample_slot_t **slot; - sample_gui_slot_t **gui_slot; -} sample_bank_t; - -typedef struct -{ - char *hostname; - int port_num; - int state; // IDLE, PLAYING, RECONNECT, STOPPED - struct timeval p_time; - int w_state; // watchdog state - int w_delay; -} watchdog_t; - -typedef struct -{ - GladeXML *main_window; - vj_client *client; - int status_tokens[STATUS_TOKENS]; /* current status tokens */ - int *history_tokens[4]; /* list last known status tokens */ - int status_passed; - int status_lock; - int slider_lock; - int parameter_lock; - int entry_lock; - int sample[2]; - int selection[3]; - gint status_pipe; - int sensitive; - int launch_sensitive; - struct timeval alarm; - struct timeval timer; -// GIOChannel *channel; - GdkColormap *color_map; - gint connecting; -// gint logging; - gint streamrecording; - gint samplerecording; -// gint cpumeter; - gint cachemeter; - gint image_w; - gint image_h; - veejay_el_t el; - veejay_user_ctrl_t uc; - GList *effect_info; - GList *devlist; - GList *chalist; - GList *editlist; - GList *elref; - long window_id; - int run_state; - int play_direction; - int load_image_slot; - GtkWidget *sample_bank_pad; - GtkWidget *quick_select; - GtkWidget *sample_sequencer; - sample_bank_t **sample_banks; - sample_slot_t *selected_slot; - sample_slot_t *selection_slot; - sample_gui_slot_t *selected_gui_slot; - sample_gui_slot_t *selection_gui_slot; - sequence_envelope *sequence_view; - sequence_envelope *sequencer_view; - int sequencer_col; - int sequencer_row; - int sequence_playing; - gint current_sequence_slot; -// GtkKnob *audiovolume_knob; -// GtkKnob *speed_knob; - int image_dimensions[2]; -// guchar *rawdata; - int prev_mode; - GtkWidget *tl; - config_settings_t config; - int status_frame; - int key_id; - GdkColor *normal; - gboolean key_now; - void *mt; - watchdog_t watch; - int vims_line; - void *midi; - struct timeval time_last; - uint8_t *cali_buffer; -} vj_gui_t; - -enum -{ - STATE_STOPPED = 0, - STATE_RECONNECT = 1, - STATE_PLAYING = 2, - STATE_CONNECT = 3, - STATE_DISCONNECT = 4, - STATE_BUSY = 5, - STATE_LOADING = 6, - STATE_WAIT_FOR_USER = 7, - STATE_QUIT = 8, -}; - -enum -{ - FXC_ID = 0, - FXC_FXID = 1, - FXC_FXSTATUS = 2, - FXC_KF = 3, - FXC_MIXING = 4, - FXC_SUBRENDER = 5, - FXC_N_COLS = 6, -}; - -enum { - MACRO_FRAME = 0, - MACRO_DUP = 1, - MACRO_LOOP = 2, - MACRO_MSG_SEQ = 3, - MACRO_VIMS = 4, - MACRO_VIMS_DESCR = 5, -}; - -enum -{ - V4L_NUM=0, - V4L_NAME=1, - V4L_SPINBOX=2, - V4L_LOCATION=3, -}; - -enum -{ - VIMS_ID=0, - VIMS_KEY=1, - VIMS_MOD=2, - VIMS_DESCR=3, - VIMS_PARAMS=4, - VIMS_FORMAT=5, - VIMS_CONTENTS=6, -}; - -enum -{ - VIMS_LIST_ITEM_ID=0, - VIMS_LIST_ITEM_DESCR=1 -}; - -typedef struct -{ - const char *text; -} widget_name_t; - -typedef struct -{ - GtkListStore *list; - GtkTreeModelSort *sorted; - GtkTreeModelFilter *filtered; -} effectlist_models; - -typedef struct -{ - effectlist_models stores[3]; - gchar *filter_string; -} effectlist_data; - -static widget_name_t *slider_names_ = NULL; -static widget_name_t *param_names_ = NULL; -static widget_name_t *param_incs_ = NULL; -static widget_name_t *param_decs_ = NULL; -static widget_name_t *param_kfs_ = NULL; -static widget_name_t *gen_names_ = NULL; -static widget_name_t *gen_incs_ = NULL; -static widget_name_t *gen_decs_ = NULL; -static effectlist_data fxlist_data; - -#define MAX_PATH_LEN 1024 -#define VEEJAY_MSG_OUTPUT 4 -#define GENERATOR_PARAMS 11 - -#define SEQUENCER_COL 10 -#define SEQUENCER_ROW 10 -static guint macro_line[4] = { 0,0,0,0 }; - -static vj_gui_t *info = NULL; -void *get_ui_info() { return (void*) info; } -void reloaded_schedule_restart(); -/* global pointer to the sample-bank */ - -/* global pointer to the effects-source-list */ -static GtkWidget *effect_sources_tree = NULL; -static GtkListStore *effect_sources_store = NULL; -static GtkTreeModel *effect_sources_model = NULL; - - -static GtkWidget *cali_sourcetree = NULL; -static GtkListStore *cali_sourcestore = NULL; -static GtkTreeModel *cali_sourcemodel = NULL; - -/* global pointer to the editlist-tree */ -static GtkWidget *editlist_tree = NULL; -static GtkListStore *editlist_store = NULL; -static GtkTreeModel *editlist_model = NULL; -//void gtk_configure_window_cb( GtkWidget *w, GdkEventConfigure *ev, gpointer data ); -static int get_slider_val(const char *name); -void vj_msg(int type, const char format[], ...); -//static void vj_msg_detail(int type, const char format[], ...); -void msg_vims(char *message); -static void multi_vims(int id, const char format[],...); -static void single_vims(int id); -static gdouble get_numd(const char *name); -static void vj_kf_select_parameter(int id); -static int get_nums(const char *name); -static gchar *get_text(const char *name); -static void put_text(const char *name, char *text); -static void set_toggle_button(const char *name, int status); -static void update_slider_gvalue(const char *name, gdouble value ); -static void update_slider_value(const char *name, gint value, gint scale); -static void update_slider_range(const char *name, gint min, gint max, gint value, gint scaled); -//static void update_knob_range( GtkWidget *w, gdouble min, gdouble max, gdouble value, gint scaled ); -static void update_spin_range(const char *name, gint min, gint max, gint val); -static void update_spin_incr(const char *name, gdouble step, gdouble page); -//static void update_knob_value(GtkWidget *w, gdouble value, gdouble scale ); -static void update_spin_value(const char *name, gint value); -static void update_label_i(const char *name, int num, int prefix); -static void update_label_f(const char *name, float val); -static void update_label_str(const char *name, gchar *text); -static void update_globalinfo(int *his, int p, int k); -static gint load_parameter_info(); -static void load_v4l_info(); -static void reload_editlist_contents(); -static void load_effectchain_info(); -static void set_feedback_status(); -static void load_effectlist_info(); -static void load_sequence_list(); -static void load_generator_info(); -static void load_samplelist_info(gboolean with_reset_slotselection); -static void load_editlist_info(); -static void set_pm_page_label(int sample_id, int type); -static void notebook_set_page(const char *name, int page); -static void hide_widget(const char *name); -static void show_widget(const char *name); -#ifndef STRICT_CHECKING -static void disable_widget_( const char *name ); -static void enable_widget_(const char *name ); -#define enable_widget(a) enable_widget_(a) -#define disable_widget(a) disable_widget_(a) -#else -static void disable_widget_( const char *name, const char *function, int line ); -static void enable_widget_(const char *name, const char *function, int line ); -#define enable_widget(a) enable_widget_(a,__FUNCTION__,__LINE__ ) -#define disable_widget(a) disable_widget_(a,__FUNCTION__,__LINE__) -#endif -static void setup_tree_spin_column(const char *tree_name, int type, const char *title); -static void setup_tree_text_column( const char *tree_name, int type, const char *title, int expand ); -static void setup_tree_pixmap_column( const char *tree_name, int type, const char *title ); -gchar *_utf8str( const char *c_str ); -static gchar *recv_vims(int len, int *bytes_written); -static gchar *recv_vims_args(int slen, int *bytes_written, int *arg0, int *arg1); -static GdkPixbuf *update_pixmap_entry( int status ); -static gboolean chain_update_row(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter,gpointer data); -int resize_primary_ratio_y(); -int resize_primary_ratio_x(); -static void update_rgbkey(); -static int count_textview_buffer(const char *name); -static void clear_textview_buffer(const char *name); -static void init_recorder(int total_frames, gint mode); -static void reload_bundles(); -static void update_rgbkey_from_slider(); -static gchar *get_textview_buffer(const char *name); -static void create_slot(gint bank_nr, gint slot_nr, gint w, gint h); -static void setup_samplebank(gint c, gint r, GtkWidget *pad, gint *image_w, gint *image_h); -static int add_sample_to_sample_banks( int bank_page,sample_slot_t *slot ); -static void update_sample_slot_data(int bank_num, int slot_num, int id, gint sample_type, gchar *title, gchar *timecode); -static gboolean on_slot_activated_by_mouse (GtkWidget *widget, GdkEventButton *event, gpointer user_data); -static void add_sample_to_effect_sources_list(gint id, gint type, gchar *title, gchar *timecode); -static void set_activation_of_slot_in_samplebank(gboolean activate); -static int bank_exists( int bank_page, int slot_num ); -static int find_bank_by_sample(int sample_id, int sample_type, int *slot ); -static int add_bank( gint bank_num ); -static void set_selection_of_slot_in_samplebank(gboolean active); -static void remove_sample_from_slot(); -static void create_ref_slots(int envelope_size); -static void create_sequencer_slots(int x, int y); -//void setup_knobs(); -void free_samplebank(void); -void reset_samplebank(void); -int verify_bank_capacity(int *bank_page_, int *slot_, int sample_id, int sample_type ); -static void widget_get_rect_in_screen (GtkWidget *widget, GdkRectangle *r); -static void update_curve_widget( GtkWidget *curve ); -/* not used */ /* static void update_curve_accessibility(const char *name); */ -static void reset_tree(const char *name); -static void reload_srt(); -static void reload_fontlist(); -static void indicate_sequence( gboolean active, sequence_gui_slot_t *slot ); -static void set_textview_buffer(const char *name, gchar *utf8text); -void interrupt_cb(); -int get_and_draw_frame(int type, char *wid_name); -GdkPixbuf *vj_gdk_pixbuf_scale_simple( GdkPixbuf *src, int dw, int dh, GdkInterpType inter_type ); -static void vj_kf_refresh(); -static void vj_kf_reset(); -void reload_macros(); -/* not used */ /* static int vj_kf_is_displayed(); */ - -void reset_cali_images( int type, char *wid_name ); - -int disable_sample_image = 0; - -void set_disable_sample_image(int status) -{ - disable_sample_image = status; -} - -static gchar* strduplastn(gchar *title) { - gchar *reversed = g_strreverse(title); - gchar *part = g_strndup(reversed,12); - gchar *reverse = g_strreverse(part); - gchar *result = g_strdup(reverse); - g_free(part); - return result; -} - -GtkWidget *glade_xml_get_widget_( GladeXML *m, const char *name ) -{ - GtkWidget *widget = glade_xml_get_widget( m , name ); - if(!widget) - { - return NULL; - } -#ifdef STRICT_CHECKING - assert( widget != NULL ); -#endif - return widget; -} - -void gtk_notebook_set_current_page__( GtkWidget *w, gint num, const char *f, int line ) -{ - gtk_notebook_set_current_page( GTK_NOTEBOOK(w), num ); -} - -void gtk_widget_set_size_request__( GtkWidget *w, gint iw, gint h, const char *f, int line ) -{ - gtk_widget_set_size_request(w, iw, h ); -} - -#ifndef STRICT_CHECKING -#define gtk_widget_set_size_request_(a,b,c) gtk_widget_set_size_request(a,b,c) -#define gtk_notebook_set_current_page_(a,b) gtk_notebook_set_current_page(a,b) -#else -#define gtk_widget_set_size_request_(a,b,c) gtk_widget_set_size_request__(a,b,c,__FUNCTION__,__LINE__) -#define gtk_notebook_set_current_page_(a,b) gtk_notebook_set_current_page__(a,b,__FUNCTION__,__LINE__) -#endif - -static struct -{ - gchar *text; -} text_msg_[] = -{ - { "Running realtime" }, - { NULL }, -}; - -enum { - TEXT_REALTIME = 0 -}; - -static struct -{ - const char *name; -} capt_label_set[] = -{ - { "label333" }, //brightness - { "label334" }, //contrast - { "label336" }, //hue - { "label777" }, //saturation - { "label29" }, //temperature - { "label337"}, //gamma - { "label25" }, //sharpness - { "label20" }, //gain - { "label21" }, //red balance - { "label22" }, //blue balance - { "label23" }, //green balance - { "label20" }, //gain - { "label26" }, //bl_compensate - { "label34" }, //whiteness - { "label33" }, //blacklevel - { "label31" }, //exposure - { "label24" }, //autowhitebalance - { "label27" }, //autogain - { "label28" }, //autohue - { "label30" }, //fliph - { "label32" }, //flipv - { NULL }, -}; - -static struct -{ - const char *name; -} capt_card_set[] = -{ - { "v4l_brightness" }, - { "v4l_contrast" }, - { "v4l_hue" }, - { "v4l_saturation" }, - { "v4l_temperature"}, - { "v4l_gamma" }, - { "v4l_sharpness" }, - { "v4l_gain" }, - { "v4l_redbalance" }, - { "v4l_bluebalance" }, - { "v4l_greenbalance" }, - { "v4l_gain" }, - { "v4l_backlightcompensation"}, - { "v4l_whiteness"}, - { "v4l_black_level" }, - { "v4l_exposure" }, - { "check_autowhitebalance"}, - { "check_autogain" }, - { "check_autohue" }, - { "check_flip" }, - { "check_flipv"}, - { NULL }, -}; -#define CAPT_CARD_SLIDERS 16 -#define CAPT_CARD_BOOLS 5 - -static int preview_box_w_ = MAX_PREVIEW_WIDTH; -static int preview_box_h_ = MAX_PREVIEW_HEIGHT; - -static void *bankport_ = NULL; - -int vj_get_preview_box_w() -{ - return preview_box_w_; -} - -int vj_get_preview_box_h() -{ - return preview_box_h_; -} - -#ifdef STRICT_CHECKING -static void gtk_image_set_from_pixbuf__( GtkImage *w, GdkPixbuf *p, const char *f, int l ) -{ - assert( GTK_IS_IMAGE(w) ); - gtk_image_set_from_pixbuf(w, p); -} - -static void gtk_widget_set_sensitive___( GtkWidget *w, gboolean state, const char *f, int l ) -{ - assert( GTK_IS_WIDGET(w) ); - gtk_widget_set_sensitive(w, state ); -} -#endif - -static void select_slot(int pm); - -#ifdef STRICT_CHECKING -#define gtk_widget_set_sensitive_( w,p ) gtk_widget_set_sensitive___( w,p,__FUNCTION__,__LINE__ ) -#define gtk_image_set_from_pixbuf_(w,p) gtk_image_set_from_pixbuf__( w,p, __FUNCTION__,__LINE__ ) -#else -#define gtk_widget_set_sensitive_( w,p ) gtk_widget_set_sensitive( w,p ) -#define gtk_image_set_from_pixbuf_(w,p) gtk_image_set_from_pixbuf( w,p ) -#endif - -static struct -{ - const char *name; -} uiwidgets[] = -{ - {"veejay_box"}, - {NULL} -}; - -static struct -{ - const char *name; -} plainwidgets[] = -{ - {"video_navigation_buttons"}, - {"button_084"}, - {"button_083"}, - {"button_samplestart"}, - {"button_sampleend"}, - {"speed_slider"}, - {"slow_slider"}, - {"vjframerate"}, - {"markerframe"}, - {NULL} -}; - -static struct -{ - const char *name; -} samplewidgets[] = -{ - {"sample_loop_box"}, - {"button_084"}, - {"button_083"}, - {"video_navigation_buttons"}, - {"button_samplestart"}, - {"button_sampleend"}, - {"speed_slider"}, - {"slow_slider"}, - {"button_200"}, // mask button - {"frame_fxtree"}, - {"frame_fxtree3"}, - {"fxpanel"}, - {"panels"}, - {"vjframerate"}, - {"scrolledwindow49"}, // srt stuff - {"samplegrid_frame"}, - {"markerframe"}, - {NULL} -}; - -static struct -{ - const char *name; -} streamwidgets[] = -{ - {"button_200"}, // mask button - {"frame_fxtree"}, - {"frame_fxtree3"}, - {"fxpanel"}, - {"panels"}, - {"scrolledwindow49"}, // srt stuff - {"samplegrid_frame"}, - {NULL}, -}; - -enum -{ - TC_SAMPLE_L = 0, - TC_SAMPLE_F = 1, - TC_SAMPLE_S = 2, - TC_SAMPLE_M = 3, - TC_SAMPLE_H = 4, - TC_STREAM_F = 5, - TC_STREAM_M = 6, - TC_STREAM_H = 7 -}; - -static sample_slot_t *find_slot_by_sample( int sample_id , int sample_type ); -static sample_gui_slot_t *find_gui_slot_by_sample( int sample_id , int sample_type ); - -gchar *_utf8str(const char *c_str) -{ - gsize bytes_read = 0; - gsize bytes_written = 0; - GError *error = NULL; - if(!c_str) - return NULL; - char *result = (char*) g_locale_to_utf8( c_str, -1, &bytes_read, &bytes_written, &error ); - - if(error) - { - g_free(error); - if( result ) - g_free(result); - result = NULL; - } - - return result; -} - -GdkColor *widget_get_fg(GtkWidget *w ) -{ - if(!w) - return NULL; - GdkColor *c = (GdkColor*)vj_calloc(sizeof(GdkColor)); - GtkStyle *s = gtk_widget_get_style( w); - c->red = s->fg[0].red; - c->green = s->fg[0].green; - c->blue = s->fg[0].blue; - return c; -} - -static void scan_devices( const char *name) -{ - GtkWidget *tree = glade_xml_get_widget_(info->main_window,name); - GtkListStore *store; - GtkTreeIter iter; - - reset_tree(name); - gint len = 0; - single_vims( VIMS_DEVICE_LIST ); - gchar *text = recv_vims(6,&len); - if(len <= 0|| !text ) - { - veejay_msg(VEEJAY_MSG_WARNING, "No capture devices found on veejay server"); - return; - } - GtkTreeModel *model = gtk_tree_view_get_model - (GTK_TREE_VIEW(tree)); - - store = GTK_LIST_STORE(model); - - gint offset =0; - gint i = 0; - gchar *ptr = text + offset; - while( offset < len ) - { - char tmp[4]; - - gchar *name = NULL; - gdouble gchannel = 1.0; - gchar *loca = NULL; - - gint name_len=0; - gint loc_len=0; - - strncpy(tmp,ptr+offset,3); - tmp[3] = '\0'; - offset += 3; - name_len = atoi( tmp ); - if(name_len <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "Reading name of capture device: '%s'",ptr+offset ); - return; - } - name = strndup( ptr + offset, name_len ); - offset += name_len; - strncpy( tmp, ptr + offset, 3 ); - tmp[3] = '\0'; - offset += 3; - - loc_len = atoi( tmp ); - if( loc_len <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "Reading location of capture device"); - return; - } - loca = strndup( ptr + offset, loc_len ); - offset += loc_len; - gchar *thename = _utf8str( name ); - gchar *theloca = _utf8str( loca ); - - gtk_list_store_append( store, &iter); - gtk_list_store_set(store, &iter, - V4L_NUM, i, - V4L_NAME, thename, - V4L_SPINBOX, gchannel, - V4L_LOCATION, theloca, - -1); - - g_free(thename); - g_free(theloca); - - free(loca); - free(name); - i ++; - } - free(text); - - gtk_tree_view_set_model(GTK_TREE_VIEW(tree), model ); -} - -static void scan_generators( const char *name) -{ - GtkWidget *tree = glade_xml_get_widget_(info->main_window,name); - GtkListStore *store; - GtkTreeIter iter; - - reset_tree(name); - gint len = 0; - single_vims( VIMS_GET_GENERATORS ); - gchar *text = recv_vims(5,&len); - if(len <= 0|| !text ) - { - veejay_msg(VEEJAY_MSG_WARNING, "No generators found on veejay server"); - return; - } - GtkTreeModel *model = gtk_tree_view_get_model - (GTK_TREE_VIEW(tree)); - - store = GTK_LIST_STORE(model); - - gint offset =0; - gint i = 0; - gchar *ptr = text + offset; - while( offset < len ) - { - char tmp[4]; - - gchar *name = NULL; - gint name_len=0; - - strncpy(tmp,ptr+offset,3); - tmp[3] = '\0'; - offset += 3; - name_len = atoi( tmp ); - if(name_len <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "Reading name of generator: '%s'",ptr+offset ); - return; - } - name = strndup( ptr + offset, name_len ); - offset += name_len; - gchar *thename = _utf8str( name ); - - gtk_list_store_append( store, &iter); - gtk_list_store_set(store, &iter,0,thename,-1); - - g_free(thename); - - free(name); - i ++; - } - free(text); - - gtk_tree_view_set_model(GTK_TREE_VIEW(tree), model ); -} - - -static void set_tooltip_by_widget(GtkWidget *w, const char *text) -{ - gtk_widget_set_tooltip_text( w,text ); -} - -static void set_tooltip(const char *name, const char *text) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) { -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); -#endif - return; - } - gtk_widget_set_tooltip_text( w,text ); -} - -void on_devicelist_row_activated(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - - model = gtk_tree_view_get_model(treeview); - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gint channel = info->uc.strtmpl[0].channel; - gint num = info->uc.strtmpl[0].dev; - - multi_vims( VIMS_STREAM_NEW_V4L,"%d %d", - num, - channel - ); - } -} - -gboolean device_selection_func( GtkTreeSelection *sel, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata ) -{ - GtkTreeIter iter; - GValue val = { 0, }; - if( gtk_tree_model_get_iter( model, &iter, path ) ) - { - gint num = 0; - //gtk_tree_model_get(model, &iter, V4L_NUM,&num, -1 ); - gchar *file = NULL; - gtk_tree_model_get( model, &iter, V4L_LOCATION, &file, -1 ); - sscanf( file, "/dev/video%d", &num ); - if(! path_currently_selected ) - { - gtk_tree_model_get_value(model, &iter, V4L_SPINBOX, &val); - info->uc.strtmpl[0].dev = num; - info->uc.strtmpl[0].channel = (int) g_value_get_float(&val); - } - g_free(file); - } - return TRUE; -} - -static void setup_v4l_devices() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_v4ldevices"); - GtkListStore *store = gtk_list_store_new( 4, G_TYPE_INT, G_TYPE_STRING, G_TYPE_FLOAT, - G_TYPE_STRING ); - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - GtkTreeSelection *sel = gtk_tree_view_get_selection( GTK_TREE_VIEW( tree ) ); - gtk_tree_selection_set_mode( sel, GTK_SELECTION_SINGLE ); - gtk_tree_selection_set_select_function( sel, device_selection_func, NULL,NULL ); - -// gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(tree), TRUE ); - - g_object_unref( G_OBJECT( store )); - setup_tree_text_column( "tree_v4ldevices", V4L_NUM, "#",0 ); - setup_tree_text_column( "tree_v4ldevices", V4L_NAME, "Device Name",0); - setup_tree_spin_column( "tree_v4ldevices", V4L_SPINBOX, "Channel"); - setup_tree_text_column( "tree_v4ldevices", V4L_LOCATION, "Location",0); - - g_signal_connect( tree, "row-activated", - (GCallback) on_devicelist_row_activated, NULL ); - - //scan_devices( "tree_v4ldevices" ); -} - -gboolean vims_macro_selection_func( GtkTreeSelection *sel, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data) -{ - GtkTreeIter iter; - if( gtk_tree_model_get_iter( model, &iter, path) ) { - - guint frame_num = 0, dup_num = 0, loop_num = 0, seq_no = 0; - - gchar *message = NULL; - gtk_tree_model_get( model, &iter, MACRO_FRAME, &frame_num, -1); - gtk_tree_model_get( model, &iter, MACRO_DUP, &dup_num, -1); - gtk_tree_model_get( model, &iter, MACRO_MSG_SEQ, &seq_no, -1); - gtk_tree_model_get( model, &iter, MACRO_LOOP, &loop_num, -1); - gtk_tree_model_get( model, &iter, MACRO_VIMS, &message, -1 ); - - macro_line[0] = frame_num; - macro_line[1] = dup_num; - macro_line[2] = loop_num; - macro_line[3] = seq_no; - - update_spin_value( "macro_frame_position", frame_num ); - update_spin_value( "macro_dup_position", dup_num ); - update_spin_value( "macro_loop_position", loop_num ); - put_text( "macro_vims_message", message ); - - g_free(message); - } - return TRUE; -} - -static void setup_macros() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "macro_macros" ); - GtkListStore *store = gtk_list_store_new( 6, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING ); - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store) ); - GtkTreeSelection *sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(tree) ); - gtk_tree_selection_set_mode( sel, GTK_SELECTION_SINGLE ); - gtk_tree_selection_set_select_function( sel, vims_macro_selection_func, NULL,NULL ); - - g_object_unref( G_OBJECT(store) ); - - setup_tree_text_column( "macro_macros", MACRO_FRAME, "Frame",0 ); - setup_tree_text_column( "macro_macros", MACRO_DUP, "Dup",0); - setup_tree_text_column( "macro_macros", MACRO_LOOP, "Loop",0); - setup_tree_text_column( "macro_macros", MACRO_MSG_SEQ, "#",0); - setup_tree_text_column( "macro_macros", MACRO_VIMS, "VIMS Message",0); - setup_tree_text_column( "macro_macros", MACRO_VIMS_DESCR, "Description",0); -} - -#define SAMPLE_MAX_PARAMETERS 32 - -static gchar* format_selection_time(int start, int end); - -typedef struct -{ - int id; - int nl; - long n1; - long n2; - int tf; -} el_ref; - -typedef struct -{ - int pos; - char *filename; - char *fourcc; - int num_frames; -} el_constr; - -typedef struct { - char **description; -} value_hint; - -typedef struct { - int defaults[SAMPLE_MAX_PARAMETERS]; - int min[SAMPLE_MAX_PARAMETERS]; - int max[SAMPLE_MAX_PARAMETERS]; - char description[150]; - char *param_description[SAMPLE_MAX_PARAMETERS]; - value_hint *hints[SAMPLE_MAX_PARAMETERS]; - int id; - int is_video; - int num_arg; - int has_rgb; - int is_gen; -} effect_constr; - -int _effect_is_gen(int effect_id) -{ - int n = g_list_length(info->effect_info); - int i; - if(effect_id < 0) return -1; - for(i=0; i <= n; i++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if(ec != NULL) - { - if(ec->id == effect_id) return ec->is_gen; - } - } - return 0; -} - -int _effect_get_mix(int effect_id) -{ - int n = g_list_length(info->effect_info); - int i; - if(effect_id < 0) return -1; - for(i=0; i <= n; i++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if(ec != NULL) - { - if(ec->id == effect_id) return ec->is_video; - } - } - return 0; -} - -int _effect_get_rgb(int effect_id) -{ - int n = g_list_length(info->effect_info); - int i; - if(effect_id < 0) return -1; - for(i=0; i <= n; i++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if(ec != NULL) - { - if(ec->id == effect_id) return ec->has_rgb; - } - } - return 0; -} - -int _effect_get_np(int effect_id) -{ - int n = g_list_length(info->effect_info); - int i; - if(effect_id < 0) return -1; - for(i=0; i <= n; i++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if(ec != NULL) - { - if(ec->id == effect_id) return ec->num_arg; - } - } - return 0; -} - -int _effect_get_minmax( int effect_id, int *min, int *max, int index ) -{ - int n = g_list_length(info->effect_info); - int i; - if(effect_id < 0) return 0; - for(i=0; i <= n; i++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if(ec != NULL) - { - if(ec->id == effect_id) - { - if( index > ec->num_arg ) - return 0; - *min = ec->min[index]; - *max = ec->max[index]; - return 1; - } - } - } - return 0; -} - -char *_effect_get_param_description(int effect_id, int param) -{ - int n = g_list_length( info->effect_info ); - int i; - for(i = 0;i <= n ; i++) - { - effect_constr *ec = g_list_nth_data(info->effect_info, i); - if(ec != NULL) - { - if(effect_id == ec->id ) - return ec->param_description[param]; - } - } - return FX_PARAMETER_DEFAULT_NAME; -} - -char *_effect_get_description(int effect_id) -{ - int n = g_list_length( info->effect_info ); - int i; - for(i = 0;i <= n ; i++) - { - effect_constr *ec = g_list_nth_data(info->effect_info, i); - if(ec != NULL) - { - if(effect_id == ec->id ) - return ec->description; - } - } - return FX_PARAMETER_DEFAULT_NAME; -} - -char *_effect_get_hint(int effect_id, int p, int v) -{ - int n = g_list_length( info->effect_info ); - int i; - for(i = 0;i <= n ; i++) - { - effect_constr *ec = g_list_nth_data(info->effect_info, i); - if(ec == NULL) - continue; - - if(effect_id == ec->id ) - { - if( ec->hints[p] == NULL) - break; - - return ec->hints[p]->description[v]; - } - } - return FX_PARAMETER_VALUE_DEFAULT_HINT; -} - -el_constr *_el_entry_new( int pos, char *file, int nf , char *fourcc) -{ - el_constr *el = g_new( el_constr , 1 ); - el->filename = strdup( file ); - el->num_frames = nf; - el->pos = pos; - el->fourcc = strdup(fourcc); - return el; -} - -void _el_entry_free( el_constr *entry ) -{ - if(entry) - { - if(entry->filename) free(entry->filename); - if(entry->fourcc) free(entry->fourcc); - free(entry); - } -} - -void _el_entry_reset( ) -{ - if(info->editlist != NULL) - { - int n = g_list_length( info->editlist ); - int i; - for( i = 0; i <= n ; i ++) - _el_entry_free( g_list_nth_data( info->editlist, i ) ); - g_list_free(info->editlist); - info->editlist=NULL; - } -} - -int _el_get_nframes( int pos ) -{ - int n = g_list_length( info->editlist ); - int i; - for( i = 0; i <= n ; i ++) - { - el_constr *el = g_list_nth_data( info->editlist, i ); - if(!el) return 0; - if(el->pos == pos) - return el->num_frames; - } - return 0; -} - -el_ref *_el_ref_new( int row_num,int nl, long n1, long n2, int tf) -{ - el_ref *el = vj_malloc(sizeof(el_ref)); - el->id = row_num; - el->nl = nl; - el->n1 = n1; - el->n2 = n2; - el->tf = tf; - return el; -} - -void _el_ref_free( el_ref *entry ) -{ - if(entry) free(entry); -} - -void _el_ref_reset() -{ - if(info->elref != NULL) - { - int n = g_list_length( info->elref ); - int i; - for(i = 0; i < n; i ++ ) - { - el_ref *edl = g_list_nth_data(info->elref, i ); - if(edl) - free(edl); - } - g_list_free(info->elref); - info->elref = NULL; - } -} - -int _el_ref_end_frame( int row_num ) -{ - int n = g_list_length( info->elref ); - int i; - for ( i = 0 ; i <= n; i ++ ) - { - el_ref *el = g_list_nth_data( info->elref, i ); - if(el->id == row_num ) - { -// int offset = info->el.offsets[ el->nl ]; -// return (offset + el->n1 + el->n2 ); - return (el->tf + el->n2 - el->n1); - } - } - return 0; -} - -int _el_ref_start_frame( int row_num ) -{ - int n = g_list_length( info->elref ); - int i; - for ( i = 0 ; i <= n; i ++ ) - { - el_ref *el = g_list_nth_data( info->elref, i ); - if(el->id == row_num ) - { -// int offset = info->el.offsets[ el->nl ]; -// return (offset + el->n1 ); -// printf("Start pos of row %d : %d = n1, %d = n2, %d = tf\n", -// row_num,el->n1,el->n2, el->tf ); - return (el->tf); - } - } - return 0; -} - -char *_el_get_fourcc( int pos ) -{ - int n = g_list_length( info->editlist ); - int i; - for( i = 0; i <= n; i ++ ) - { - el_constr *el = g_list_nth_data( info->editlist, i ); - if(el->pos == pos) - return el->fourcc; - } - return NULL; -} - - -char *_el_get_filename( int pos ) -{ - int n = g_list_length( info->editlist ); - int i; - for( i = 0; i <= n; i ++ ) - { - el_constr *el = g_list_nth_data( info->editlist, i ); - if(el->pos == pos) - return el->filename; - } - return NULL; -} - -effect_constr* _effect_new( char *effect_line ) -{ - effect_constr *ec; - int descr_len = 0; - int p,q; - char len[4]; - //char line[100]; - int offset = 0; - - veejay_memset(len,0,sizeof(len)); - - if(!effect_line) return NULL; - - strncpy(len, effect_line, 3); - sscanf(len, "%03d", &descr_len); - if(descr_len <= 0) return NULL; - - ec = vj_calloc( sizeof(effect_constr)); - strncpy( ec->description, effect_line+3, descr_len ); - - sscanf(effect_line+(descr_len+3), "%03d%1d%1d%1d%02d", &(ec->id),&(ec->is_video),&(ec->has_rgb),&(ec->is_gen), &(ec->num_arg)); - offset = descr_len + 11; - for(p=0; p < ec->num_arg; p++) - { - int len = 0; - int n = sscanf(effect_line+offset,"%06d%06d%06d%03d", - &(ec->min[p]), &(ec->max[p]),&(ec->defaults[p]),&len ); - if( n <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR,"Parse error in FX list" ); - break; - } - ec->param_description[p] = (char*) vj_calloc(sizeof(char) * (len+1) ); - strncpy( ec->param_description[p], effect_line + offset + 6 + 6 + 6 + 3, len ); - offset += 3; - offset += len; - offset+=18; - } - - for(p=0; p < ec->num_arg; p++) - { - int hint_len = 0; - int n = sscanf( effect_line + offset, "%03d", &hint_len ); - if( n <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR,"Parse error in FX list hints"); - break; - } - - offset += 3; - - if(hint_len == 0) - continue; - - ec->hints[p] = (value_hint*) vj_calloc(sizeof(value_hint)); - ec->hints[p]->description = (char**) vj_calloc(sizeof(char*) * (ec->max[p]+2) ); - for(q = 0; q <= ec->max[p]; q ++ ) - { - int value_hint = 0; - n = sscanf( effect_line + offset, "%03d", &value_hint ); - if( n != 1) { - veejay_msg(VEEJAY_MSG_ERROR,"Parse error in FX list value hint"); - break; - } - - offset += 3; - ec->hints[p]->description[q] = (char*) vj_calloc(sizeof(char) * value_hint + 1 ); - strncpy( ec->hints[p]->description[q], effect_line + offset, value_hint ); - offset += value_hint; - } - } - - return ec; -} - -void _effect_free( effect_constr *effect ) -{ - if(effect) - { - int p; - for( p = 0; p < effect->num_arg; p ++ ) { - free( effect->param_description[p] ); - } - if( effect->hints ) { - for( p = 0; p < effect->num_arg; p ++ ) { - if( effect->hints[p] == NULL ) - continue; - int q; - for( q = 0; effect->hints[p]->description[q] != NULL; q ++ ) { - free( effect->hints[p]->description[q] ); - } - free( effect->hints[p]->description ); - free( effect->hints[p] ); - } - } - - free(effect); - } -} - -void _effect_reset(void) -{ - if( info->effect_info != NULL) - { - int n = g_list_length(info->effect_info); - int i; - for( i = 0; i <=n ; i ++ ) - _effect_free( g_list_nth_data( info->effect_info , i ) ); - g_list_free( info->effect_info ); - info->effect_info = NULL; - } -} - -static gchar *get_relative_path(char *path) -{ - return _utf8str( basename( path )); -} - -gchar *dialog_save_file(const char *title ) -{ - GtkWidget *parent_window = glade_xml_get_widget_(info->main_window, - "gveejay_window" ); - GtkWidget *dialog = gtk_file_chooser_dialog_new(title, - GTK_WINDOW(parent_window), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, - NULL); -#ifdef HAVE_GTK2_8 - gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(dialog), TRUE ); -#endif - gtk_file_chooser_set_filename( GTK_FILE_CHOOSER(dialog), "veejay-samplelist.sl" ); - - if( gtk_dialog_run( GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - gchar *file = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog) ); - gtk_widget_destroy(dialog); - return file; - } - gtk_widget_destroy(dialog); - return NULL; -} - -static void clear_progress_bar( const char *name, gdouble val ) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(w), val ); -} - -static struct -{ - const char *descr; - const char *filter; -} content_file_filters[] = { - { "AVI Files (*.avi)", "*.avi", }, - { "Digital Video Files (*.dv)", "*.dv" }, - { "Edit Decision List Files (*.edl)", "*.edl" }, - { "PNG (Portable Network Graphics) (*.png)", "*.png" }, - { "JPG (Joint Photographic Experts Group) (*.jpg)", "*.jpg" }, - { NULL, NULL }, -}; - -static void add_file_filters(GtkWidget *dialog, int type ) -{ - GtkFileFilter *filter = NULL; - - if(type == 0 ) - { - int i; - for( i = 0; content_file_filters[i].descr != NULL ; i ++ ) - { - filter = gtk_file_filter_new(); - gtk_file_filter_set_name( filter, content_file_filters[i].descr); - gtk_file_filter_add_pattern( filter, content_file_filters[i].filter); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter ); - } - } - if(type == 1 ) - { - filter = gtk_file_filter_new(); - gtk_file_filter_set_name( filter, "Sample List Files (*.sl)"); - gtk_file_filter_add_pattern( filter, "*.sl"); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter); - } - if(type == 2 ) - { - filter = gtk_file_filter_new(); - gtk_file_filter_set_name( filter, "Action Files (*.xml)"); - gtk_file_filter_add_pattern( filter, "*.xml"); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter); - } - if(type == 3 ) - { - filter = gtk_file_filter_new(); - gtk_file_filter_set_name( filter, "YUV4MPEG files (*.yuv)"); - gtk_file_filter_add_pattern( filter, "*.yuv" ); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter); - } - - filter = gtk_file_filter_new(); - gtk_file_filter_set_name( filter, "All Files (*.*)"); - gtk_file_filter_add_pattern( filter, "*"); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter); -} - - -gchar *dialog_open_file(const char *title, int type) -{ - static gchar *_file_path = NULL; - - GtkWidget *parent_window = glade_xml_get_widget_( - info->main_window, "gveejay_window" ); - GtkWidget *dialog = gtk_file_chooser_dialog_new(title, - GTK_WINDOW(parent_window), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - - add_file_filters(dialog, type ); - gchar *file = NULL; - if( _file_path ) - { - gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(dialog), _file_path); - g_free(_file_path); - _file_path = NULL; - } - - if( gtk_dialog_run( GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - file = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog) ); - _file_path = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER(dialog)); - } - gtk_widget_destroy(GTK_WIDGET(dialog)); - return file; -} - -static char *produce_os_str() -{ - char os_str[512]; - char cpu_type[32]; - char *simd = vj_calloc( 128 ); -#ifdef ARCH_X86 - sprintf(cpu_type,"x86"); -#endif -#ifdef ARCH_X86_64 - sprintf(cpu_type, "x86-64"); -#endif -#ifdef ARCH_PPC - sprintf(cpu_type, "ppc"); -#endif -#ifdef ARCH_MIPS - sprintf(cpu_type, "mips"); -#endif -#ifdef HAVE_ASM_MMX - strcat( simd, "MMX "); -#endif -#ifdef HAVE_ASM_MMX2 - strcat( simd, "MMX2 "); -#endif -#ifdef HAVE_ASM_SSE - strcat( simd, "SSE " ); -#endif -#ifdef HAVE_ASM_SSE2 - strcat( simd, "SSE2" ); -#endif -#ifdef HAVE_ASM_CMOV - strcat( simd, "cmov" ); -#endif -#ifdef HAVE_ASM_3DNOW - strcat( simd, "3DNow"); -#endif -#ifdef ARCH_PPC -#ifdef HAVE_ALTIVEC - strcat( simd, "altivec"); -#else - strcat( simd, "no optimizations"); -#endif -#endif -#ifdef ARCH_MIPS - strcat( simd, "no optimizations"); -#endif - sprintf(os_str,"Arch: %s with %s", - cpu_type, simd ); - - return strdup( os_str ); -} - -void about_dialog() -{ - const gchar *artists[] = - { - "Matthijs v. Henten (glade, pixmaps) ", - "Dursun Koca (V-logo)", - NULL - }; - - const gchar *authors[] = - { - "Developed by:", - "Matthijs v. Henten ", - "Dursun Koca", - "Niels Elburg ", - "\n", - "Contributions by:", - "Thomas Reinhold ", - "Toni ", - "d/j/a/y ", - NULL - }; - - const gchar *web = - { - "http://www.veejayhq.net" - }; - - char blob[1024]; - char *os_str = produce_os_str(); - const gchar *donate = - { - "You can donate cryptocoins!\n"\ - "Bitcoin: 1PUNRsv8vDt1upTx9tTpY5sH8mHW1DTrKJ\n" - "or via PayPal: veejayhq@gmail.com\n" - }; - - sprintf(blob, "Veejay - A visual instrument and realtime video sampler for GNU/Linux\n%s\n%s", os_str, donate ); - - free(os_str); - - const gchar *license = - { - "This program is Free Software; You can redistribute it and/or modify\n" \ - "under the terms of the GNU General Public License as published by\n" \ - "the Free Software Foundation; either version 2, or (at your option)\n"\ - "any later version.\n\n"\ - "This program is distributed in the hope it will be useful,\n"\ - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"\ - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"\ - "See the GNU General Public License for more details.\n\n"\ - "For more information , see also: http://www.gnu.org\n" - }; - -#ifdef HAVE_GTK2_6 - char path[MAX_PATH_LEN]; - veejay_memset( path,0, sizeof(path)); - get_gd( path, NULL, "veejay-logo.png" ); - GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file - ( path, NULL ); - GtkWidget *about = g_object_new( - GTK_TYPE_ABOUT_DIALOG, - "program_name", "reloaded", - "name", VEEJAY_CODENAME, - "version", VERSION, - "copyright", "(C) 2004 - 2015 N. Elburg et all.", - "comments", "The graphical interface for Veejay", - "website", web, - "authors", authors, - "artists", artists, - "comments", blob, - "license", license, - "logo", pixbuf, NULL ); - g_object_unref(pixbuf); - - g_signal_connect( about , "response", G_CALLBACK( gtk_widget_destroy),NULL); - gtk_window_present( GTK_WINDOW( about ) ); -#endif -} - -gboolean dialogkey_snooper( GtkWidget *w, GdkEventKey *event, gpointer user_data) -{ - GtkWidget *entry = (GtkWidget*) user_data; - - if( !gtk_widget_is_focus( entry ) ) - { - return FALSE; - } -#ifdef HAVE_SDL - if(event->type == GDK_KEY_PRESS) - { - gchar tmp[100]; - info->uc.pressed_key = gdk2sdl_key( event->keyval ); - info->uc.pressed_mod = gdk2sdl_mod( event->state ); - gchar *text = gdkkey_by_id( event->keyval ); - gchar *mod = gdkmod_by_id( event->state ); - - if( text ) - { - if(!mod || strncmp(mod, " ", 1 ) == 0 ) - snprintf(tmp, sizeof(tmp),"%s", text ); - else - snprintf(tmp, sizeof(tmp), "%s + %s", mod,text); - - gchar *utf8_text = _utf8str( tmp ); - gtk_entry_set_text( GTK_ENTRY(entry), utf8_text); - g_free(utf8_text); - } - } -#endif - return FALSE; -} - -#ifdef HAVE_SDL -static gboolean key_handler( GtkWidget *w, GdkEventKey *event, gpointer user_data) -{ - if(event->type != GDK_KEY_PRESS) - return FALSE; - - int gdk_keyval = gdk2sdl_key( event->keyval ); - int gdk_state = gdk2sdl_mod( event->state ); - if( gdk_keyval >= 0 && gdk_state >= 0 ) - { - char *message = vims_keys_list[(gdk_state * G_MOD_OFFSET)+gdk_keyval].vims; - if(message) - msg_vims(message); - } - return FALSE; -} -#endif - -static int check_format_string( char *args, char *format ) -{ - if(!format || !args ) - return 0; - char dirty[128]; - int n = sscanf( args, format, &dirty,&dirty, &dirty,&dirty, &dirty,&dirty, &dirty,&dirty, &dirty,&dirty ); - return n; -} - -int prompt_keydialog(const char *title, char *msg) -{ - if(!info->uc.selected_vims_entry ) - return 0; - info->uc.pressed_mod = 0; - info->uc.pressed_key = 0; - - char pixmap[1024]; - veejay_memset(pixmap,0,sizeof(pixmap)); - get_gd( pixmap, NULL, "icon_keybind.png"); - - GtkWidget *mainw = glade_xml_get_widget_(info->main_window, "gveejay_window"); - GtkWidget *dialog = gtk_dialog_new_with_buttons(title, - GTK_WINDOW( mainw ), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, - GTK_RESPONSE_REJECT, - GTK_STOCK_OK, - GTK_RESPONSE_ACCEPT, - NULL); - - GtkWidget *keyentry = gtk_entry_new(); - gtk_entry_set_text( GTK_ENTRY(keyentry), ""); - gtk_editable_set_editable( GTK_EDITABLE(keyentry), FALSE ); - gtk_dialog_set_default_response( GTK_DIALOG(dialog), GTK_RESPONSE_REJECT ); - gtk_window_set_resizable( GTK_WINDOW(dialog), FALSE ); - - g_signal_connect(G_OBJECT(dialog), "response", - G_CALLBACK( gtk_widget_hide ), G_OBJECT(dialog ) ); - - GtkWidget *hbox1 = gtk_hbox_new( FALSE, 12 ); - gtk_container_set_border_width( GTK_CONTAINER( hbox1 ), 6 ); - GtkWidget *hbox2 = gtk_hbox_new( FALSE, 12 ); - gtk_container_set_border_width( GTK_CONTAINER( hbox2 ), 6 ); - - GtkWidget *icon = gtk_image_new_from_file( pixmap ); - - GtkWidget *label = gtk_label_new( msg ); - gtk_container_add( GTK_CONTAINER( hbox1 ), icon ); - gtk_container_add( GTK_CONTAINER( hbox1 ), label ); - gtk_container_add( GTK_CONTAINER( hbox1 ), keyentry ); - - GtkWidget *pentry = NULL; - - if(vj_event_list[ info->uc.selected_vims_entry ].params) - { - //@ put in default args - char *arg_str = vj_event_list[ info->uc.selected_vims_entry ].args; - pentry = gtk_entry_new(); - GtkWidget *arglabel = gtk_label_new("Arguments:"); - - if(arg_str) - gtk_entry_set_text( GTK_ENTRY(pentry), arg_str ); - gtk_editable_set_editable( GTK_EDITABLE(pentry), TRUE ); - gtk_container_add( GTK_CONTAINER(hbox1), arglabel ); - gtk_container_add( GTK_CONTAINER(hbox1), pentry ); - } -#ifdef HAVE_SDL - if( info->uc.selected_vims_entry ) - { - char tmp[100]; - char *str_mod = sdlmod_by_id( info->uc.pressed_mod ); - char *str_key = sdlkey_by_id( info->uc.pressed_key ); - int key_combo_ok = 0; - - if(str_mod && str_key ) - { - snprintf(tmp,100,"VIMS %d : %s + %s", - info->uc.selected_vims_entry, str_mod, str_key ); - key_combo_ok = 1; - }else if ( str_key ) - { - snprintf(tmp, 100,"VIMS %d: %s", info->uc.selected_vims_entry,str_key); - key_combo_ok = 1; - } - - if( key_combo_ok ) - { - gtk_entry_set_text( GTK_ENTRY(keyentry), tmp ); - } - } -#endif - - gtk_container_add( GTK_CONTAINER( GTK_DIALOG( dialog )->vbox ), hbox1 ); - gtk_container_add( GTK_CONTAINER( GTK_DIALOG( dialog )->vbox ), hbox2 ); - - gtk_widget_show_all( dialog ); - - int id = gtk_key_snooper_install( dialogkey_snooper, keyentry); - int n = gtk_dialog_run(GTK_DIALOG(dialog)); - - gtk_key_snooper_remove( id ); - - if(pentry) - { - gchar *args = (gchar*) gtk_entry_get_text( GTK_ENTRY(pentry)); - int np = check_format_string( args, vj_event_list[ info->uc.selected_vims_entry ].format ); - - if( np == vj_event_list[ info->uc.selected_vims_entry ].params ) - { - if(info->uc.selected_vims_args ) - free(info->uc.selected_vims_args ); - - info->uc.selected_vims_args = strdup( args ); - } - } - - gtk_widget_destroy(dialog); - - return n; -} - -void message_dialog( const char *title, char *msg ) -{ - GtkWidget *mainw = glade_xml_get_widget_(info->main_window, "gveejay_window"); - GtkWidget *dialog = gtk_dialog_new_with_buttons(title, - GTK_WINDOW( mainw ), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_OK, - GTK_RESPONSE_NONE, - NULL); - GtkWidget *label = gtk_label_new( msg ); - g_signal_connect_swapped(dialog, "response", - G_CALLBACK(gtk_widget_destroy),dialog); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), - label ); - gtk_widget_show_all(dialog); -} - - -int -prompt_dialog(const char *title, char *msg) -{ - GtkWidget *mainw = glade_xml_get_widget_(info->main_window, "gveejay_window"); - GtkWidget *dialog = gtk_dialog_new_with_buttons(title, - GTK_WINDOW( mainw ), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_NO, - GTK_RESPONSE_REJECT, - GTK_STOCK_YES, - GTK_RESPONSE_ACCEPT, - NULL); - gtk_dialog_set_default_response( GTK_DIALOG(dialog), GTK_RESPONSE_REJECT ); - gtk_window_set_resizable( GTK_WINDOW(dialog), FALSE ); - g_signal_connect(G_OBJECT(dialog), "response", - G_CALLBACK( gtk_widget_hide ), G_OBJECT(dialog ) ); - GtkWidget *hbox1 = gtk_hbox_new( FALSE, 12 ); - gtk_container_set_border_width( GTK_CONTAINER( hbox1 ), 6 ); - GtkWidget *icon = gtk_image_new_from_stock( GTK_STOCK_DIALOG_QUESTION, - GTK_ICON_SIZE_DIALOG ); - GtkWidget *label = gtk_label_new( msg ); - gtk_container_add( GTK_CONTAINER( hbox1 ), icon ); - gtk_container_add( GTK_CONTAINER( hbox1 ), label ); - gtk_container_add( GTK_CONTAINER( GTK_DIALOG( dialog )->vbox ), hbox1 ); - gtk_widget_show_all( dialog ); - - int n = gtk_dialog_run(GTK_DIALOG(dialog)); - - gtk_widget_destroy(dialog); - - return n; -} - - -int -error_dialog(const char *title, char *msg) -{ - GtkWidget *mainw = glade_xml_get_widget_(info->main_window, "gveejay_window"); - GtkWidget *dialog = gtk_dialog_new_with_buttons(title, - GTK_WINDOW( mainw ), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_OK, - GTK_RESPONSE_OK, - NULL); - gtk_dialog_set_default_response( GTK_DIALOG(dialog), GTK_RESPONSE_OK ); - gtk_window_set_resizable( GTK_WINDOW(dialog), FALSE ); - g_signal_connect(G_OBJECT(dialog), "response", - G_CALLBACK( gtk_widget_hide ), G_OBJECT(dialog ) ); - GtkWidget *hbox1 = gtk_hbox_new( FALSE, 12 ); - gtk_container_set_border_width( GTK_CONTAINER( hbox1 ), 6 ); - GtkWidget *icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_ERROR, - GTK_ICON_SIZE_DIALOG ); - GtkWidget *label = gtk_label_new( msg ); - gtk_container_add( GTK_CONTAINER( hbox1 ), icon ); - gtk_container_add( GTK_CONTAINER( hbox1 ), label ); - gtk_container_add( GTK_CONTAINER( GTK_DIALOG( dialog )->vbox ), hbox1 ); - gtk_widget_show_all( dialog ); - - int n = gtk_dialog_run(GTK_DIALOG(dialog)); - - gtk_widget_destroy(dialog); - - return n; -} - -void veejay_quit( ) -{ - if( prompt_dialog("Quit veejay", "Close Veejay ? All unsaved work will be lost." ) - == GTK_RESPONSE_REJECT ) - return; - single_vims( 600 ); - -// clear_progress_bar( "cpumeter",0.0 ); - clear_progress_bar( "connecting",0.0 ); - clear_progress_bar( "samplerecord_progress",0.0 ); - clear_progress_bar( "streamrecord_progress",0.0 ); - clear_progress_bar( "seq_rec_progress",0.0); - exit(0); -} - -static int running_g_ = 1; -static int restart_ = 0; - -int gveejay_restart() -{ - return restart_; -} - -gboolean gveejay_running() -{ - if(!running_g_) - return FALSE; - return TRUE; -} - -gboolean gveejay_relaunch() -{ - return (info->watch.state == STATE_QUIT ? FALSE: TRUE); -} - -gboolean gveejay_quit( GtkWidget *widget, gpointer user_data) -{ - if(!running_g_) - return FALSE; - - if( info->watch.state == STATE_PLAYING) - { - if( prompt_dialog("Quit Reloaded", "Are you sure?" ) == GTK_RESPONSE_REJECT) - return TRUE; - } - - running_g_ = 0; - info->watch.state = STATE_QUIT; - - return FALSE; -} - -/* Free the slot */ -static void free_slot( sample_slot_t *slot ) -{ - if(slot) - { - if(slot->title) free(slot->title); - if(slot->timecode) free(slot->timecode); - free(slot); - } - slot = NULL; -} - -/* Allocate some memory and create a temporary slot */ -sample_slot_t *create_temporary_slot( gint slot_id, gint id, gint type, gchar *title, gchar *timecode ) -{ - sample_slot_t *slot = (sample_slot_t*) vj_calloc(sizeof(sample_slot_t)); - if(id>0) - { - slot->sample_id = id; - slot->sample_type = type; - slot->timecode = strduplastn(timecode); - //slot->title = strduplastn(title); - slot->title = strdup(title); - slot->slot_number = slot_id; - } - return slot; -} - -int is_current_track(char *host, int port ) -{ - char *remote = get_text( "entry_hostname" ); - int num = get_nums( "button_portnum" ); - if( strncasecmp( remote, host, strlen(host)) == 0 && port == num ) - return 1; - return 0; -} - -void gveejay_popup_err( const char *type, char *msg ) -{ - message_dialog( type, msg ); -} - -void donatenow(); -void reportbug(); -void update_gui(); - -int veejay_get_sample_image(int id, int type, int wid, int hei) -{ - multi_vims( VIMS_GET_SAMPLE_IMAGE, "%d %d %d %d", id, type, wid, hei ); - uint8_t *data_buffer = (uint8_t*) vj_malloc( sizeof(uint8_t) * RUP8(wid * hei * 3)); - int sample_id = 0; - int sample_type =0; - gint bw = 0; - gchar *data = recv_vims_args( 12, &bw, &sample_id, &sample_type ); - if( data == NULL || bw <= 0 ) - { - veejay_msg(VEEJAY_MSG_WARNING, "Can't get a preview image! Only got %d bytes", bw); - if( data_buffer ) - free(data_buffer); - if( data ) - free(data); - return 0; - } - - int expected_len = (wid * hei); - expected_len += (wid*hei/4); - expected_len += (wid*hei/4); - - if( bw != expected_len ) - { - if(data_buffer) - free(data_buffer); - if( data ) - free(data); - return 0; - } - - uint8_t *in = (uint8_t*)data; - uint8_t *out = data_buffer; - - VJFrame *src1 = yuv_yuv_template( in, in + (wid * hei), in + (wid * hei) + (wid*hei)/4,wid,hei,PIX_FMT_YUV420P ); - VJFrame *dst1 = yuv_rgb_template( out, wid,hei,PIX_FMT_BGR24 ); - - yuv_convert_any_ac( src1, dst1, src1->format, dst1->format ); - - GdkPixbuf *img = gdk_pixbuf_new_from_data(out, - GDK_COLORSPACE_RGB, - FALSE, - 8, - wid, - hei, - wid*3, - NULL, - NULL ); - - if( img == NULL ) - return 0; - -/* int poke_slot= 0; int bank_page = 0; - verify_bank_capacity( &bank_page , &poke_slot, sample_id, sample_type); - if(bank_page >= 0 ) - { - if( info->sample_banks[bank_page]->slot[poke_slot]->sample_id <= 0 ) - { - sample_slot_t *tmp_slot = create_temporary_slot(poke_slot,sample_id,sample_type, "PREVIEW","00:00:00" ); - add_sample_to_sample_banks(bank_page, tmp_slot ); - free_slot(tmp_slot); -} - } */ - - sample_slot_t *slot = find_slot_by_sample( sample_id, sample_type ); - sample_gui_slot_t *gui_slot = find_gui_slot_by_sample( sample_id, sample_type ); - - if( slot && gui_slot ) - { - slot->pixbuf = vj_gdk_pixbuf_scale_simple(img,wid,hei, GDK_INTERP_NEAREST); - if( slot->pixbuf) - { - gtk_image_set_from_pixbuf_( GTK_IMAGE( gui_slot->image ), slot->pixbuf ); - g_object_unref( slot->pixbuf ); - slot->pixbuf = NULL; - } - } - - free(data_buffer); - free(data); - g_object_unref(img); - - free(src1); - free(dst1); - - - return bw; -} - -void gveejay_new_slot(int mode) -{ - if( mode == MODE_STREAM ) { - info->uc.expected_num_streams = info->uc.real_num_streams + 1; - } - else { - info->uc.expected_num_samples = info->uc.real_num_samples + 1; - } -} - -#include "callback.c" -enum -{ - COLOR_RED=0, - COLOR_BLUE=1, - COLOR_GREEN=2, - COLOR_BLACK=3, - COLOR_NUM -}; - -void vj_msg(int type, const char format[], ...) -{ - if( type == VEEJAY_MSG_DEBUG && vims_verbosity == 0 ) - return; - - char tmp[1024]; - char buf[1024]; - char prefix[20]; - va_list args; - - va_start( args,format ); - vsnprintf( tmp, sizeof(tmp), format, args ); - - switch(type) - { - case 2: - sprintf(prefix,"Info : "); - break; - case 1: - sprintf(prefix,"Warning: "); - break; - case 0: - sprintf(prefix,"Error : "); - break; - case 3: - sprintf(prefix,"Debug : "); - break; - case 4: - sprintf(prefix, " "); - break; - } - - snprintf(buf, sizeof(buf), "%s %s\n",prefix,tmp ); - gsize nr,nw; - gchar *text = g_locale_to_utf8( buf, -1, &nr, &nw, NULL); - text[strlen(text)-1] = '\0'; - - GtkWidget *sb = glade_xml_get_widget_( info->main_window, "statusbar"); - gtk_statusbar_push( GTK_STATUSBAR(sb),0, text ); - - g_free( text ); - va_end(args); -} - -void msg_vims(char *message) -{ - if(!info->client) - return; - int n = vj_client_send(info->client, V_CMD, (unsigned char*)message); - if( n <= 0 ) - reloaded_schedule_restart(); -} - -int get_loop_value() -{ - if( is_button_toggled( "loop_none" ) ) - return 0; - - if( is_button_toggled( "loop_normal" )) - return 1; - - if( is_button_toggled( "loop_pingpong" )) - return 2; - - if (is_button_toggled("loop_random")) - return 3; - - if( is_button_toggled( "loop_oncenop" )) - return 4; - - return 1; // loop normal -} - -static void multi_vims(int id, const char format[],...) -{ - char block[1024]; - char tmp[1024]; - va_list args; - if(!info->client) - return; - va_start(args, format); - vsnprintf(tmp, sizeof(tmp)-1, format, args ); - snprintf(block, sizeof(block)-1, "%03d:%s;",id,tmp); - va_end(args); - - if(vj_client_send( info->client, V_CMD, (unsigned char*) block)<=0 ) - reloaded_schedule_restart(); -} - -static void single_vims(int id) -{ - char block[10]; - if(!info->client) - return; - sprintf(block, "%03d:;",id); - if(vj_client_send( info->client, V_CMD, (unsigned char*) block)<=0 ) - reloaded_schedule_restart(); -} - -static gchar *recv_vims_args(int slen, int *bytes_written, int *arg0, int *arg1) -{ - int tmp_len = slen+1; - unsigned char tmp[tmp_len]; - veejay_memset(tmp,0,sizeof(tmp)); - int ret = vj_client_read( info->client, V_CMD, tmp, slen ); - if( ret == -1 ) - reloaded_schedule_restart(); - int len = 0; - if( sscanf( (char*)tmp, "%06d", &len ) != 1 ) - return NULL; - if( sscanf( (char*)tmp + 6, "%04d", arg0 ) != 1 ) - return NULL; - if( sscanf( (char*)tmp + 10, "%02d", arg1) != 1 ) - return NULL; - unsigned char *result = NULL; - if( ret <= 0 || len <= 0 || slen <= 0) - return (gchar*)result; - result = (unsigned char*) vj_calloc(sizeof(unsigned char) * RUP8(len + 1 + 16) ); - *bytes_written = vj_client_read( info->client, V_CMD, result, len ); - if( *bytes_written == -1 ) - reloaded_schedule_restart(); - return (gchar*) result; -} - -static gchar *recv_vims(int slen, int *bytes_written) -{ - int tmp_len = slen+1; - unsigned char tmp[tmp_len]; - veejay_memset(tmp,0,sizeof(tmp)); - int ret = vj_client_read( info->client, V_CMD, tmp, slen ); - if( ret == -1 ) - reloaded_schedule_restart(); - int len = 0; - if( sscanf( (char*)tmp, "%d", &len ) != 1 ) - return NULL; - unsigned char *result = NULL; - if( ret <= 0 || len <= 0 || slen <= 0) - return (gchar*)result; - result = (unsigned char*) vj_calloc(sizeof(unsigned char) * (len + 1) ); - *bytes_written = vj_client_read( info->client, V_CMD, result, len ); - if( *bytes_written == -1 ) - reloaded_schedule_restart(); - return (gchar*) result; -} - -static gdouble get_numd(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name); - if(!w) return 0; - return (gdouble) gtk_spin_button_get_value( GTK_SPIN_BUTTON( w ) ); -} - -static int get_slider_val(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) return 0; - return ((gint)GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment)->value); -} - -static void vj_kf_reset() -{ - GtkWidget *curve = glade_xml_get_widget_(info->main_window, "curve"); - - reset_curve( curve ); - set_toggle_button( "curve_chain_toggleentry", 0 ); - set_toggle_button( "curve_toggleentry_param", 0); - update_label_str( "curve_parameter",FX_PARAMETER_DEFAULT_NAME); -} - -/* not used -static int vj_kf_is_displayed() -{ - GtkWidget *ww = glade_xml_get_widget_( info->main_window, crappy_design[ui_skin_].name ); - int deckpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(ww)); - if(deckpage == 1) - return 1; - return 0; -} -*/ - -static void vj_kf_refresh() -{ - int *entry_tokens = &(info->uc.entry_tokens[0]); - if( entry_tokens[ENTRY_FXID] > 0 ) { - enable_widget( "frame_fxtree3" ); - update_curve_widget(glade_xml_get_widget_(info->main_window, "curve")); - } - else { - set_toggle_button( "curve_toggleentry_param", 0 ); - disable_widget( "frame_fxtree3" ); - vj_kf_reset(); - } -} - -static void vj_kf_select_parameter(int num) -{ - sample_slot_t *s = info->selected_slot; - if(!s) - { - update_label_str( "curve_parameter", FX_PARAMETER_DEFAULT_NAME); - return; - } - int *entry_tokens = &(info->uc.entry_tokens[0]); - - info->uc.selected_parameter_id = num; - - gchar *name = _utf8str(_effect_get_param_description(entry_tokens[ENTRY_FXID],info->uc.selected_parameter_id)); - update_label_str( "curve_parameter", name ); - g_free(name); - - GtkWidget *curve = glade_xml_get_widget_(info->main_window, "curve"); - reset_curve( curve ); - - update_curve_widget( curve ); -} - -static void update_curve_widget(GtkWidget *curve) -{ - sample_slot_t *s = info->selected_slot; - if(!s ) return; - int i = info->uc.selected_chain_entry; /* chain entry */ - int id = info->uc.entry_tokens[ENTRY_FXID]; - int blen = 0; - int lo = 0, hi = 0, curve_type=0; - int p = -1; - int status = 0; - - multi_vims( VIMS_SAMPLE_KF_GET, "%d %d",i,info->uc.selected_parameter_id ); - - unsigned char *blob = (unsigned char*) recv_vims( 8, &blen ); - if( blob && blen > 0 ) - { - p = set_points_in_curve_ext( curve, blob,id,i, &lo,&hi, &curve_type,&status ); - if( p >= 0 ) - { - info->uc.selected_parameter_id = p; - switch( curve_type ) - { - case GTK_CURVE_TYPE_SPLINE: - set_toggle_button( "curve_typespline", 1 ); - break; - case GTK_CURVE_TYPE_FREE: - set_toggle_button( "curve_typefreehand",1 ); - break; - default: set_toggle_button( "curve_typelinear", 1 ); - break; - } - set_toggle_button( "curve_toggleentry_param", status ); - } - } - - if( lo == hi && hi == 0 ) - { - if( info->status_tokens[PLAY_MODE] == MODE_SAMPLE ) - { - lo = info->status_tokens[SAMPLE_START]; - hi = info->status_tokens[SAMPLE_END]; - } - else - { - lo = 0; - hi = info->status_tokens[SAMPLE_MARKER_END]; - } - } - update_spin_range( "curve_spinstart", lo, hi, lo ); - update_spin_range( "curve_spinend", lo, hi, hi ); - if(blob) free(blob); -} - -/* Not used -static void update_curve_accessibility(const char *name) -{ - sample_slot_t *s = info->selected_slot; - if(!s ) return; - - if( info->status_tokens[PLAY_MODE] == MODE_PLAIN ) - { - disable_widget( "frame_fxtree3" ); - } - else - { - enable_widget( "frame_fxtree3" ); - } -} -*/ - -static int get_nums(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (spin): '%s'",name); - return 0; - } - return (int) gtk_spin_button_get_value( GTK_SPIN_BUTTON( w ) ); -} - -static int count_textview_buffer(const char *name) -{ - GtkWidget *view = glade_xml_get_widget_( info->main_window, name ); - if(view) - { - GtkTextBuffer *tb = NULL; - tb = gtk_text_view_get_buffer( GTK_TEXT_VIEW(view) ); - return gtk_text_buffer_get_char_count( tb ); - } - return 0; -} - -static void clear_textview_buffer(const char *name) -{ - GtkWidget *view = glade_xml_get_widget_( info->main_window, name ); - if(!view) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (textview): '%s'",name); - return; - } - if(view) - { - GtkTextBuffer *tb = NULL; - tb = gtk_text_view_get_buffer( GTK_TEXT_VIEW(view) ); - GtkTextIter iter1,iter2; - gtk_text_buffer_get_start_iter( tb, &iter1 ); - gtk_text_buffer_get_end_iter( tb, &iter2 ); - gtk_text_buffer_delete( tb, &iter1, &iter2 ); - } -} - -static gchar *get_textview_buffer(const char *name) -{ - GtkWidget *view = glade_xml_get_widget_( info->main_window,name ); - if(!view) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (textview): '%s'",name); - return NULL; - } - if(view) - { - GtkTextBuffer *tb = NULL; - tb = gtk_text_view_get_buffer( GTK_TEXT_VIEW(view) ); - GtkTextIter iter1,iter2; - - gtk_text_buffer_get_start_iter(tb, &iter1); - gtk_text_buffer_get_end_iter( tb, &iter2); - gchar *res = gtk_text_buffer_get_text( tb, &iter1,&iter2 , TRUE ); - return res; - } - return NULL; -} - -static void set_textview_buffer(const char *name, gchar *utf8text) -{ - GtkWidget *view = glade_xml_get_widget_( info->main_window, name ); - if(!view) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (textview): '%s'",name); - return; - } - if(view) - { - GtkTextBuffer *tb = gtk_text_view_get_buffer( - GTK_TEXT_VIEW(view) ); - gtk_text_buffer_set_text( tb, utf8text, -1 ); - } -} - -static gchar *get_text(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (text): '%s'",name); - return NULL; - } - return (gchar*) gtk_entry_get_text( GTK_ENTRY(w)); -} - -static void put_text(const char *name, char *text) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (text): '%s'",name); - return; - } - if(w) - { - gchar *utf8_text = _utf8str( text ); - gtk_entry_set_text( GTK_ENTRY(w), utf8_text ); - g_free(utf8_text); - } -} - -int is_button_toggled(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (togglebutton): '%s'",name); - return 0; - } - - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(w) ) == TRUE ) - return 1; - return 0; -} -static void set_toggle_button(const char *name, int status) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (togglebutton): '%s'",name); - return; - } - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), (status==1 ? TRUE: FALSE)); - -} - - -static void update_slider_gvalue(const char *name, gdouble value) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (slider): '%s'",name); - return; - } - gtk_adjustment_set_value( GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment), value ); -} - -static void update_slider_value(const char *name, gint value, gint scale) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (slider): '%s'",name); - return; - } - gdouble gvalue; - if(scale) - gvalue = (gdouble) value / (gdouble) scale; - else - gvalue = (gdouble) value; - - gtk_adjustment_set_value( - GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment), gvalue ); -} - -static void update_spin_incr( const char *name, gdouble step, gdouble page ) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (spin): '%s'",name); - return; - } -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_DEBUG, "SpinButton: %s, step=%g,page=%g",name,step,page); -#endif - gtk_spin_button_set_increments(GTK_SPIN_BUTTON(w),step,page ); -} - -static void update_spin_range(const char *name, gint min, gint max, gint val) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (spin): '%s'",name); - return; - } - - gtk_spin_button_set_range( GTK_SPIN_BUTTON(w), (gdouble)min, (gdouble) max ); - gtk_spin_button_set_value( GTK_SPIN_BUTTON(w), (gdouble)val); -} - -/*static int get_mins(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) return 0; - GtkAdjustment *adj = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON(w) ); - return (int) adj->lower; -} - -static int get_maxs(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) return 0; - GtkAdjustment *adj = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON(w) ); - return (int) adj->upper; -}*/ - -static void update_spin_value(const char *name, gint value ) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (spin): '%s'",name); - return; - } -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_DEBUG, "SpinButton: %s, value=%d",name,value); -#endif - - gtk_spin_button_set_value( GTK_SPIN_BUTTON(w), (gdouble) value ); -} - -static void update_slider_range(const char *name, gint min, gint max, gint value, gint scaled) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, name ); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (slider): '%s'",name); - return; - } - - if(min == max) { - return; - } - - GtkRange *range = GTK_RANGE(w); - if(!scaled) - { - gtk_range_set_range(range, (gdouble) min, (gdouble) max ); - gtk_range_set_value(range, value ); - } - else - { - gdouble gmin =0.0; - gdouble gmax =100.0; - gdouble gval = gmax / value; - gtk_range_set_range(range, gmin, gmax); - gtk_range_set_value(range, gval ); - } - - gtk_range_set_adjustment(range, GTK_ADJUSTMENT(GTK_RANGE(w)->adjustment ) ); -} - -static void update_label_i(const char *name, int num, int prefix) -{ - GtkWidget *label = glade_xml_get_widget_( - info->main_window, name); - if(!label) { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (label): '%s'",name); - return; - } - char str[20]; - if(prefix) - g_snprintf( str,sizeof(str), "%09d", num ); - else - g_snprintf( str,sizeof(str), "%d", num ); - gchar *utf8_value = _utf8str( str ); - gtk_label_set_text( GTK_LABEL(label), utf8_value); - g_free( utf8_value ); -} - -static void update_label_f(const char *name, float val ) -{ - GtkWidget *label = glade_xml_get_widget_( info->main_window, name); - if(!label) - { - veejay_msg(VEEJAY_MSG_ERROR, "No such widget (label): '%s'",name); - return; - } - char value[10]; - snprintf( value, sizeof(value)-1, "%2.2f", val ); - - gchar *utf8_value = _utf8str( value ); - gtk_label_set_text( GTK_LABEL(label), utf8_value ); - g_free(utf8_value); -} - -static void update_label_str(const char *name, gchar *text) -{ - GtkWidget *label = glade_xml_get_widget_( - info->main_window, name); -#ifdef STRICT_CHECKING - if(!label) veejay_msg(VEEJAY_MSG_ERROR, "No such widget (label): '%s'",name); - assert( label != NULL ); -#else - if(!label ||!text) return; -#endif - gchar *utf8_text = _utf8str( text ); - if(!utf8_text) return; - gtk_label_set_text( GTK_LABEL(label), utf8_text); - g_free(utf8_text); -} - -static void label_set_markup(const char *name, gchar *str) -{ - GtkWidget *label = glade_xml_get_widget_( - info->main_window, name); - if(!label) - return; - - gtk_label_set_markup( GTK_LABEL(label), str ); -} - -static void selection_get_paths(GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, gpointer data) -{ - GSList **paths = data; - *paths = g_slist_prepend(*paths, gtk_tree_path_copy(path)); -} - -GSList *gui_tree_selection_get_paths(GtkTreeView *view) -{ - GtkTreeSelection *sel; - GSList *paths; - - /* get paths of selected rows */ - paths = NULL; - sel = gtk_tree_view_get_selection(view); - gtk_tree_selection_selected_foreach(sel, selection_get_paths, &paths); - - return paths; -} - -static void update_colorselection() -{ - GtkWidget *colorsel = glade_xml_get_widget_(info->main_window, - "colorselection"); - GdkColor color; - - color.red = 255 * info->status_tokens[STREAM_COL_R]; - color.green = 255 * info->status_tokens[STREAM_COL_G]; - color.blue = 255 * info->status_tokens[STREAM_COL_B]; - - gtk_color_selection_set_current_color(GTK_COLOR_SELECTION( colorsel ), - &color ); -} - -int resize_primary_ratio_y() -{ - float ratio = (float)info->el.width / (float)info->el.height; - float result = (float) get_nums( "priout_width" ) / ratio; - return (int) result; -} - -int resize_primary_ratio_x() -{ - float ratio = (float)info->el.height / (float)info->el.width; - float result = (float) get_nums( "priout_height" ) / ratio; - return (int) result; -} - -static void update_rgbkey() -{ - if(!info->entry_lock) - { - info->entry_lock =1; - GtkWidget *colorsel = glade_xml_get_widget_(info->main_window, - "rgbkey"); - GdkColor color; - /* update from entry tokens (delivered by GET_CHAIN_ENTRY */ - int *p = &(info->uc.entry_tokens[0]); - - color.red = 255 * p[ENTRY_P1]; - color.green = 255 * p[ENTRY_P2]; - color.blue = 255 * p[ENTRY_P3]; - - gtk_color_selection_set_current_color( - GTK_COLOR_SELECTION( colorsel ), - &color ); - info->entry_lock = 0; - } -} - -static void update_rgbkey_from_slider() -{ - if(!info->entry_lock) - { - GtkWidget *colorsel = glade_xml_get_widget_(info->main_window, - "rgbkey"); - info->entry_lock = 1; - GdkColor color; - - color.red = 255 * ( get_slider_val( "slider_p1" ) ); - color.green = 255 * ( get_slider_val( "slider_p2" ) ); - color.blue = 255 * ( get_slider_val( "slider_p3" ) ); - - gtk_color_selection_set_current_color(GTK_COLOR_SELECTION( colorsel ), - &color ); - info->entry_lock = 0; - } -} - -int update_gveejay() -{ - return vj_midi_handle_events( info->midi ); -} - -static GdkPixbuf *update_pixmap_entry( int status ) -{ - char path[MAX_PATH_LEN]; - char filename[MAX_PATH_LEN]; - - snprintf(filename,sizeof(filename), "fx_entry_%s.png", - ( status == 1 ? "on" : "off" )); - get_gd(path,NULL, filename); - - GError *error = NULL; - GdkPixbuf *icon = gdk_pixbuf_new_from_file(path, &error); - if(error) - return 0; - return icon; -} - -static gboolean chain_update_row(GtkTreeModel * model, - GtkTreePath * path, - GtkTreeIter * iter, - gpointer data) -{ - vj_gui_t *gui = (vj_gui_t*) data; - if(!gui->selected_slot) - return FALSE; - int entry = info->uc.selected_chain_entry; - gint gentry = 0; - gtk_tree_model_get (model, iter, - FXC_ID, &gentry, -1); - - if(gentry == entry) - { - int effect_id = gui->uc.entry_tokens[ ENTRY_FXID ]; - if( effect_id <= 0 ) - { - gtk_list_store_set( GTK_LIST_STORE(model),iter, FXC_ID, entry, -1 ); - disable_widget( "fx_m1" ); - disable_widget( "fx_m2" ); - disable_widget( "fx_m3" ); - disable_widget( "fx_m4" ); - } - else - { - gchar *descr = _utf8str( _effect_get_description( effect_id )); - char tmp[128]; - if( _effect_get_mix( effect_id ) ) - { - snprintf(tmp,sizeof(tmp),"%s %d", (gui->uc.entry_tokens[ENTRY_SOURCE] == 0 ? "Sample " : "T " ), - gui->uc.entry_tokens[ENTRY_CHANNEL]); - enable_widget( "fx_m4" ); - enable_widget( "fx_m3" ); - enable_widget( "transition_enabled" ); - enable_widget( "transition_loop" ); - enable_widget( "subrender_entry_toggle" ); - } - else - { - snprintf(tmp,sizeof(tmp),"%s"," "); - disable_widget( "fx_m4" ); - disable_widget( "fx_m3" ); - disable_widget( "transition_enabled" ); - disable_widget( "transition_loop" ); - disable_widget( "subrender_entry_toggle" ); - } - - gchar *mixing = _utf8str(tmp); - GdkPixbuf *toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_VIDEO_ENABLED] ); - GdkPixbuf *kf_toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_KF_STATUS] ); - GdkPixbuf *subrender_toggle = update_pixmap_entry( gui->uc.entry_tokens[ENTRY_SUBRENDER_ENTRY]); - gtk_list_store_set( GTK_LIST_STORE(model),iter, - FXC_ID, entry, - FXC_FXID, descr, - FXC_FXSTATUS, toggle, - FXC_KF, kf_toggle, - FXC_MIXING, mixing, - FXC_SUBRENDER, subrender_toggle, - -1 ); - g_free(descr); - g_free(mixing); - g_object_unref( kf_toggle ); - g_object_unref( toggle ); - g_object_unref( subrender_toggle ); - - enable_widget( "fx_m1" ); - enable_widget( "fx_m2" ); - - /* if( gui->uc.entry_tokens[FADE_METHOD] <= 1 || - gui->uc.entry_tokens[FADE_ENTRY] != info->uc.selected_chain_entry ) - set_toggle_button( "fx_mnone",1 ); */ - - } - } - return FALSE; -} - -/* Cut from global_info() - This function updates the sample/stream editor if the current playing stream/sample - matches with the selected sample slot */ -static void update_record_tab(int pm) -{ - if(pm == MODE_STREAM) - { - update_spin_value( "spin_streamduration" , 1 ); - gint n_frames = get_nums( "spin_streamduration" ); - char *time = format_time(n_frames, (double) info->el.fps); - update_label_str( "label_streamrecord_duration", time ); - free(time); - } - if(pm == MODE_SAMPLE) - { - update_spin_value( "spin_sampleduration", 1 ); - // combo_samplecodec - gint n_frames = sample_calctime(); - char *time = format_time( n_frames,(double) info->el.fps ); - update_label_str( "label_samplerecord_duration", time ); - free(time); - } -} - -static void update_current_slot(int *history, int pm, int last_pm) -{ - gint update = 0; - gint fx_anim = 0; - - if( pm != last_pm || info->status_tokens[CURRENT_ID] != history[CURRENT_ID] ) - { - int k; - update = 1; - update_record_tab( pm ); - - if( info->status_tokens[STREAM_TYPE] == STREAM_VIDEO4LINUX ) - { - info->uc.reload_hint[HINT_V4L] = 1; - for(k = 0; capt_card_set[k].name != NULL; k ++ ) - { - show_widget( capt_card_set[k].name ); - show_widget( capt_label_set[k].name ); - } - } - else - { - for(k = 0; capt_card_set[k].name != NULL ; k ++ ) - { - hide_widget( capt_card_set[k].name ); - hide_widget( capt_label_set[k].name ); - } - } - - switch(info->status_tokens[STREAM_TYPE]) - { - case STREAM_GENERATOR: - show_widget("frame_fxtree1"); - enable_widget("frame_fxtree1"); - hide_widget("notebook16"); - break; - case STREAM_WHITE: - hide_widget("frame_fxtree1"); - disable_widget("frame_fxtree1"); - show_widget("notebook16"); - notebook_set_page("notebook16",1 ); - break; - case STREAM_VIDEO4LINUX: - hide_widget("frame_fxtree1"); - disable_widget("frame_fxtree1"); - show_widget("notebook16"); - notebook_set_page("notebook16",0 ); - break; - default: - hide_widget( "frame_fxtree1"); - disable_widget("frame_fxtree1"); - hide_widget( "notebook16"); - break; - } - - info->uc.reload_hint[HINT_HISTORY] = 1; - info->uc.reload_hint[HINT_CHAIN] = 1; - info->uc.reload_hint[HINT_ENTRY] = 1; - - put_text( "entry_samplename", "" ); - set_pm_page_label( info->status_tokens[CURRENT_ID], pm ); - - fx_anim = 1; - } - if( info->status_tokens[CURRENT_ENTRY] != history[CURRENT_ENTRY] || - info->uc.reload_hint[HINT_ENTRY] == 1 ) - { - info->uc.selected_chain_entry = info->status_tokens[CURRENT_ENTRY]; - if(info->uc.selected_chain_entry < 0 || info->uc.selected_chain_entry >= MAX_CHAIN_LEN ) - info->uc.selected_chain_entry = 0; - info->uc.reload_hint[HINT_ENTRY] = 1; - load_parameter_info(); - if( info->status_tokens[CURRENT_ENTRY] != history[CURRENT_ENTRY] ) - update_label_str( "value_friendlyname",FX_PARAMETER_VALUE_DEFAULT_HINT ); - fx_anim = 1; - } - - /* Actions for stream */ - if( ( info->status_tokens[CURRENT_ID] != history[CURRENT_ID] || pm != last_pm ) && pm == MODE_STREAM ) - { - /* Is a solid color stream */ - if( info->status_tokens[STREAM_TYPE] == STREAM_WHITE ) - { - if( ( history[STREAM_COL_R] != info->status_tokens[STREAM_COL_R] ) || - ( history[STREAM_COL_G] != info->status_tokens[STREAM_COL_G] ) || - ( history[STREAM_COL_B] != info->status_tokens[STREAM_COL_B] ) ) - { - info->uc.reload_hint[HINT_RGBSOLID] = 1; - } - } - - if( info->status_tokens[STREAM_TYPE] == STREAM_GENERATOR ) - { - info->uc.reload_hint[HINT_GENERATOR] = 1; - } - - char *time = format_time( info->status_frame,(double)info->el.fps ); - update_label_str( "label_curtime", time ); - free(time); - fx_anim = 1; - update_label_str( "playhint", "Streaming"); - } - - /* Actions for sample */ - if( pm == MODE_SAMPLE ) - { - int marker_go = 0; - /* Update marker bounds */ - if( (history[SAMPLE_MARKER_START] != info->status_tokens[SAMPLE_MARKER_START]) ) - { - update = 1; - gint nm = info->status_tokens[SAMPLE_MARKER_START]; - if(nm >= 0) - { - gdouble in = (1.0 / (gdouble)info->status_tokens[TOTAL_FRAMES]) * nm; - timeline_set_in_point( info->tl, in ); - marker_go = 1; - } - else - { - if(pm == MODE_SAMPLE) - { - timeline_set_in_point( info->tl, 0.0 ); - marker_go = 1; - } - } - char *dur = format_time( info->status_tokens[SAMPLE_MARKER_END] - info->status_tokens[SAMPLE_MARKER_START], - (double)info->el.fps ); - update_label_str( "label_markerduration", dur ); - free(dur); - } - - if( (history[SAMPLE_MARKER_END] != info->status_tokens[SAMPLE_MARKER_END]) ) - { - gint nm = info->status_tokens[SAMPLE_MARKER_END]; - if(nm > 0 ) - { - gdouble out = (1.0/ (gdouble)info->status_tokens[TOTAL_FRAMES]) * nm; - - timeline_set_out_point( info->tl, out ); - marker_go = 1; - } - else - { - if(pm == MODE_SAMPLE) - { - timeline_set_out_point(info->tl, 1.0 ); - marker_go = 1; - } - } - update = 1; - } - - if( marker_go ) - { - info->uc.reload_hint[HINT_MARKER] = 1; - } - - if( history[SAMPLE_LOOP] != info->status_tokens[SAMPLE_LOOP]) - { - switch( info->status_tokens[SAMPLE_LOOP] ) - { - case 0: - set_toggle_button( "loop_none", 1 ); - break; - case 1: - set_toggle_button( "loop_normal", 1 ); - break; - case 2: - set_toggle_button("loop_pingpong", 1 ); - break; - case 3: - set_toggle_button("loop_random", 1 ); - break; - case 4: - set_toggle_button("loop_oncenop", 1 ); - break; - } - } - - gint speed = info->status_tokens[SAMPLE_SPEED]; - - if( history[SAMPLE_SPEED] != info->status_tokens[SAMPLE_SPEED] ) - { - speed = info->status_tokens[SAMPLE_SPEED]; - update_slider_value( "speed_slider", speed, 0 ); - - if( speed < 0 ) info->play_direction = -1; else info->play_direction = 1; - if( speed < 0 ) speed *= -1; - update_spin_value( "spin_samplespeed", speed); - - if( pm == MODE_SAMPLE ) { - if( speed == 0 ) - update_label_str( "playhint", "Paused" ); - else - update_label_str( "playhint", "Playing"); - } - } - - if( history[FRAME_DUP] != info->status_tokens[FRAME_DUP] ) - { - update_spin_value( "spin_framedelay", info->status_tokens[FRAME_DUP]); - update_slider_value("slow_slider", info->status_tokens[FRAME_DUP],0); - } - - /* veejay keeps sample limits , dont use update_spin_range for spin_samplestart and spin_sampleend */ - if( (history[SAMPLE_START] != info->status_tokens[SAMPLE_START] || get_nums("spin_samplestart") != info->status_tokens[SAMPLE_START])) - { - update = 1; - } - if( (history[SAMPLE_END] != info->status_tokens[SAMPLE_END] || get_nums("spin_sampleend") != info->status_tokens[SAMPLE_END]) ) - { - update = 1; - } - - if( (history[SUBRENDER] != info->status_tokens[SUBRENDER] || is_button_toggled( "toggle_subrender") != info->status_tokens[SUBRENDER]) ) - { - set_toggle_button( "toggle_subrender", info->status_tokens[SUBRENDER] ); - } - - if( history[FADE_ALPHA] != info->status_tokens[FADE_ALPHA] || info->status_tokens[FADE_ALPHA] != is_button_toggled( "toggle_fademethod" )) - { - set_toggle_button( "toggle_fademethod", info->status_tokens[FADE_ALPHA]); - } - - if( info->status_tokens[FADE_ENTRY] >= 0 ) - { - if( info->status_tokens[FADE_METHOD] == 0 && !is_button_toggled( "fx_mnone" )) - { - set_toggle_button( "fx_mmone", 1 ); - } else if (info->status_tokens[FADE_METHOD] == 1 && !is_button_toggled( "fx_m1" )) - { - set_toggle_button( "fx_m1",1 ); - } else if (info->status_tokens[FADE_METHOD] == 2 && !is_button_toggled( "fx_m2" )) - { - set_toggle_button( "fx_m2",1 ); - } else if (info->status_tokens[FADE_METHOD] == 3 && !is_button_toggled( "fx_m3" )) - { - set_toggle_button( "fx_m3",1); - } else if (info->status_tokens[FADE_METHOD] == 4 && !is_button_toggled( "fx_m4" )) - { - set_toggle_button( "fx_m4",1); - } - } else - { - set_toggle_button( "fx_mnone", 1 ); - } - - if(update) - { - speed = info->status_tokens[SAMPLE_SPEED]; - if(speed < 0 ) info->play_direction = -1; else info->play_direction = 1; - - gint len = info->status_tokens[SAMPLE_END] - info->status_tokens[SAMPLE_START]; - - int speed = info->status_tokens[SAMPLE_SPEED]; - if(speed < 0 ) info->play_direction = -1; else info->play_direction = 1; - if(speed < 0 ) speed *= -1; - - update_spin_range( "spin_samplespeed", -1 * len, len, speed ); - - update_spin_value( "spin_samplestart", info->status_tokens[SAMPLE_START]); - update_spin_value( "spin_sampleend", info->status_tokens[SAMPLE_END]); - - gint n_frames = sample_calctime(); - - timeline_set_length( info->tl, - (gdouble) n_frames , info->status_tokens[FRAME_NUM]- info->status_tokens[SAMPLE_START] ); - - update_spin_range( "spin_text_start", 0, n_frames ,0); - update_spin_range( "spin_text_end", 0, n_frames,n_frames ); - - } - } - - if( pm == MODE_SAMPLE|| pm == MODE_STREAM ) - if( history[CHAIN_FADE] != info->status_tokens[CHAIN_FADE] ) - { - double val = (double) info->status_tokens[CHAIN_FADE]; - update_slider_value( "manualopacity", val,0 ); - } - - if( fx_anim ) { - set_toggle_button("kf_none",1); - reset_curve(glade_xml_get_widget(info->main_window, "curve")); - } -} - - -static void on_vims_messenger (void) -{ - GtkTextIter start, end; - GtkTextBuffer* buffer; - GtkTextView* t= NULL; - gchar *str = NULL; - static int wait = 0; - t = GTK_TEXT_VIEW(GTK_WIDGET(glade_xml_get_widget - (info->main_window,"vims_messenger_textview"))); - buffer = gtk_text_view_get_buffer(t); - - if(info->vims_line >= gtk_text_buffer_get_line_count(buffer)) - { - info->vims_line = 0; - } - - if(is_button_toggled( "vims_messenger_play" )) - { - if(wait) - { - wait--; - } - else - { - gtk_text_buffer_get_iter_at_line(buffer, &start, info->vims_line); - end = start; - - gtk_text_iter_forward_sentence_end(&end); - str = gtk_text_buffer_get_text (buffer, &start, &end, TRUE); - - if(strlen(str) <= 0) { - vj_msg(VEEJAY_MSG_INFO, "Nothing to do at line %d", info->vims_line); - info->vims_line++; - return; - } - - if(str[0] == '+') - { - str[0] = ' '; - g_strstrip(str); - wait = atoi(str); - vj_msg(VEEJAY_MSG_INFO, "Next VIMS message in %d frames", wait); - } - else - { - msg_vims( str ); - vj_msg(VEEJAY_MSG_INFO, "Sent VIMS message '%s' (line %d)",str, info->vims_line ); - } - info->vims_line++; - } - } -} - -static int total_frames_ = 0; - -int get_total_frames() -{ - return total_frames_; -} -/* -static char *bugbuffer_ = NULL; -static int bugoffset_ = 0; - -gboolean capture_data (GIOChannel *source, GIOCondition condition, gpointer data ) -{ - int fd = g_io_channel_unix_get_fd( source ); - GIOStatus ret; - GError *err = NULL; - gchar *msg; - gsize len; - - if (condition & G_IO_HUP) - g_error ("Read end of pipe died!\n"); - - ret = g_io_channel_read_line (source, &msg, &len, NULL, &err); - if (ret == G_IO_STATUS_ERROR) - g_error ("Error reading: %s\n", err->message); - - memcpy( bugbuffer_ + (sizeof(char) * bugoffset_) , msg , len ); - - bugoffset_ += len; - - g_free (msg); - return TRUE; -} -*/ -void reportbug () -{ - char l[3] = { 'e','n', '\0'}; - char *lang = getenv("LANG"); - char URL[1024]; - - if(lang) { - l[0] = lang[0]; - l[1] = lang[1]; - } -/* char veejay_homedir[1024]; - char body[1024]; - char subj[100]; - gchar **argv = (gchar**) malloc ( sizeof(gchar*) * 5 ); - int i; - argv[0] = malloc( sizeof(char) * 100 ); - memset( argv[0], 0, sizeof(char) * 100 ); - argv[2] = NULL; - -// snprintf(subj,sizeof(subj),"reloaded %s has a problem", VERSION); - snprintf(veejay_homedir, sizeof(veejay_homedir),"%s/.veejay/", home ); - sprintf(argv[0], "%s/report_problem.sh" ,veejay_homedir); - argv[1] = strdup( veejay_homedir ); - - if( bugoffset_ > 0 ) { - free(bugbuffer_); - bugoffset_= 0; - bugbuffer_ = NULL; - } - -// GError error = NULL; - gint stdout_pipe = 0; - gint pid =0; - gboolean ret = g_spawn_async_with_pipes( - NULL, - argv, - NULL, - G_SPAWN_LEAVE_DESCRIPTORS_OPEN & G_SPAWN_STDERR_TO_DEV_NULL, - NULL, - NULL, - &pid, - NULL, - &stdout_pipe, - NULL, - NULL ); - if( !ret ) { - veejay_msg(VEEJAY_MSG_ERROR, "Error executing bug report tool"); - return; - } - - GIOChannel *chan = g_io_channel_unix_new( stdout_pipe ); - bugbuffer_ = (char*) malloc(sizeof(char) * 32000 ); - memset(bugbuffer_, 0, sizeof(char) * 32000); - guint retb = g_io_add_watch( chan, G_IO_IN, capture_data, NULL ); -*/ -// if( prompt_dialog("Report a problem", "" ) -// == GTK_RESPONSE_ACCEPT ) - snprintf(URL , sizeof(URL), - "firefox \"http://groups.google.com/group/veejay-discussion/post?hl=%s\" &",l ); - - puts(URL); - - if( system(URL) <= 0 ) { - veejay_msg(VEEJAY_MSG_ERROR, "Unable to open browser to veejay homepage"); - } -} - -void donatenow() -{ - char URL[512]; - snprintf(URL , sizeof(URL), - "firefox \"http://www.veejayhq.net/contributing\" &" ); - - if( system(URL) <= 0 ) { - veejay_msg(VEEJAY_MSG_ERROR, "Unable to open browser to veejay homepage"); - } -} - -static void reset_fxtree() -{ - int i; - for(i = 0; i < 3; i ++ ) - { - gtk_list_store_clear(fxlist_data.stores[i].list); - } - -} - -static void reset_tree(const char *name) -{ - GtkWidget *tree_widget = glade_xml_get_widget_( info->main_window,name ); - GtkTreeModel *tree_model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree_widget) ); - - - if(GTK_IS_TREE_MODEL_SORT(tree_model)) { - GtkTreeModel *child_model = gtk_tree_model_sort_get_model( GTK_TREE_MODEL_SORT(tree_model) ); - - gtk_list_store_clear( GTK_LIST_STORE( child_model ) ); - } - else { - if( GTK_IS_LIST_STORE(tree_model) ) { - gtk_list_store_clear(GTK_LIST_STORE(tree_model)); - } - else { - veejay_msg(0,"%s: wrong tree model type" ,__FUNCTION__); - } - } -} - -// load effect controls - -gboolean view_entry_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gint name = 0; - - gtk_tree_model_get(model, &iter, FXC_ID, &name, -1); - if (!path_currently_selected && name != info->uc.selected_chain_entry) - { - multi_vims( VIMS_CHAIN_SET_ENTRY, "%d", name ); - if( !is_button_toggled( "fx_mnone" )) { - multi_vims( VIMS_CHAIN_FADE_ENTRY,"%d %d",0, name ); - } - update_label_i( "label_fxentry", name, 0 ); - vj_midi_learning_vims_msg( info->midi, NULL, VIMS_CHAIN_SET_ENTRY,name ); - } - } - - return TRUE; /* allow selection state to change */ -} - -gboolean cali_sources_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gchar *name = NULL; - - if( info->uc.cali_stage != 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "%d", info->uc.cali_stage); - return TRUE; - } - - gtk_tree_model_get(model, &iter, FXC_ID, &name, -1); - - if (!path_currently_selected) - { - gint id = 0; - sscanf(name+1, "[ %d]", &id); - if(name[0] != 'S') - { - cali_stream_id = id; - update_label_str("current_step_label","Please take an image with the cap on the lens."); - GtkWidget *nb = glade_xml_get_widget_(info->main_window, "cali_notebook"); - gtk_notebook_next_page( GTK_NOTEBOOK(nb)); - } - if(name) g_free(name); - } - } - return TRUE; /* allow selection state to change */ -} - -gboolean view_sources_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gchar *name = NULL; - - gtk_tree_model_get(model, &iter, FXC_ID, &name, -1); - - if (!path_currently_selected) - { - gint id = 0; - sscanf(name+1, "[ %d]", &id); - if(name[0] == 'S') - { - info->uc.selected_mix_sample_id = id; - info->uc.selected_mix_stream_id = 0; - } - else - { - info->uc.selected_mix_sample_id = 0; - info->uc.selected_mix_stream_id = id; - } - } - - if(name) g_free(name); - } - - return TRUE; /* allow selection state to change */ -} - -static void cell_data_func_dev (GtkTreeViewColumn *col, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) -{ - gchar buf[32]; - GValue val = {0, }; - gtk_tree_model_get_value(model, iter, V4L_SPINBOX, &val); - g_snprintf(buf, sizeof(buf), "%.0f",g_value_get_float(&val)); - g_object_set(cell, "text", buf, NULL); -} - -static void on_dev_edited (GtkCellRendererText *celltext, - const gchar *string_path, - const gchar *new_text, - gpointer data) -{ - GtkTreeModel *model = GTK_TREE_MODEL(data); - GtkTreeIter iter; - gfloat oldval = 0.0; - gfloat newval = 0.0; - - gtk_tree_model_get_iter_from_string(model, &iter, string_path); - - gtk_tree_model_get(model, &iter, V4L_SPINBOX, &oldval, -1); - if (sscanf(new_text, "%f", &newval) != 1) - g_warning("in %s: problem converting string '%s' into float.\n", __FUNCTION__, new_text); - - gtk_list_store_set(GTK_LIST_STORE(model), &iter, V4L_SPINBOX, newval, -1); -} - - -static void setup_tree_spin_column( const char *tree_name, int type, const char *title) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, tree_name ); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - renderer = gui_cell_renderer_spin_new(0.0, 3.0 , 1.0, 1.0, 1.0, 1.0, 0.0); - column = gtk_tree_view_column_new(); - gtk_tree_view_column_set_title(column, title ); - gtk_tree_view_column_pack_start(column, renderer, TRUE); - gtk_tree_view_column_set_cell_data_func( column, renderer, - cell_data_func_dev, NULL,NULL ); - gtk_tree_view_append_column( GTK_TREE_VIEW(tree), column); - g_object_set(renderer, "editable", TRUE, NULL); - - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - g_signal_connect(renderer, "edited", G_CALLBACK(on_dev_edited), model ); - -} - -static void setup_tree_text_column( const char *tree_name, int type, const char *title,int len ) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, tree_name ); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes( title, renderer, "text", type, NULL ); - gtk_tree_view_append_column( GTK_TREE_VIEW( tree ), column ); - - if(len) - { - veejay_msg(VEEJAY_MSG_DEBUG, "Tree %s ,Title %s, width=%d", tree_name,title, len ); - gtk_tree_view_column_set_min_width( column, len); - } -} - -static void setup_tree_pixmap_column( const char *tree_name, int type, const char *title ) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, tree_name ); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - renderer = gtk_cell_renderer_pixbuf_new(); - column = gtk_tree_view_column_new_with_attributes( title, renderer, "pixbuf", type, NULL ); - gtk_tree_view_append_column( GTK_TREE_VIEW( tree ), column ); -} - -void server_files_selection_func (GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(treeview); - - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gchar *name = NULL; - gtk_tree_model_get(model, &iter, 0, &name, -1); - - multi_vims(VIMS_EDITLIST_ADD_SAMPLE, "0 %s" , name ); - vj_msg(VEEJAY_MSG_INFO, "Tried to open %s",name); - g_free(name); - } -} - -void generators_selection_func(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(treeview); - - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gchar *name = NULL; - gtk_tree_model_get(model, &iter, 0, &name, -1); - - multi_vims(VIMS_STREAM_NEW_GENERATOR, "0 %s" , name ); - vj_msg(VEEJAY_MSG_INFO, "Tried to open %s",name); - g_free(name); - - gveejay_new_slot(MODE_STREAM); - - gtk_widget_hide( glade_xml_get_widget(info->main_window, "generator_window") ); - } -} - -static void setup_generators() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "generators"); - GtkListStore *store = gtk_list_store_new( 1, G_TYPE_STRING ); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - g_object_unref( G_OBJECT( store )); - - setup_tree_text_column( "generators", 0, "Filename",0 ); - - g_signal_connect( tree, "row-activated", (GCallback) generators_selection_func, NULL); -} - -static void setup_server_files(void) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "server_files"); - GtkListStore *store = gtk_list_store_new( 1, G_TYPE_STRING ); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - g_object_unref( G_OBJECT( store )); - - setup_tree_text_column( "server_files", 0, "Filename",0 ); - - g_signal_connect( tree, "row-activated", (GCallback) server_files_selection_func, NULL); -} - -static void load_v4l_info() -{ - int values[21]; - int len = 0; - - veejay_memset(values,-1,sizeof(values)); - - multi_vims( VIMS_STREAM_GET_V4L, "%d", (info->selected_slot == NULL ? 0 : info->selected_slot->sample_id )); - gchar *answer = recv_vims(3, &len); - if(len > 0 && answer ) - { - int res = sscanf(answer, "%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d%05d", - &values[0],&values[1],&values[2],&values[3],&values[4],&values[5], - &values[6],&values[7],&values[8],&values[9],&values[10],&values[11], - &values[12],&values[13],&values[14],&values[15],&values[16],&values[17],&values[18],&values[19],&values[20]); - if(res < 21 ) - { - free(answer); - return; - } - - int i; - int n = CAPT_CARD_SLIDERS; - for(i = 0; i < n; i ++ ) - { - if( values[i] < 0 ) { - hide_widget( capt_card_set[i].name ); - hide_widget( capt_label_set[i].name ); - } - else { - show_widget( capt_card_set[i].name ); - show_widget( capt_label_set[i].name); - update_slider_gvalue( capt_card_set[i].name, (gdouble)values[i]/65535.0 ); - } - } - n += CAPT_CARD_BOOLS; - for( ; i < n; i ++ ) { - if( values[i] < 0 ) { - hide_widget( capt_card_set[i].name ); - hide_widget( capt_label_set[i].name ); - } - else { - show_widget( capt_card_set[i].name ); - show_widget( capt_label_set[i].name); - set_toggle_button( capt_card_set[i].name, values[i] ); - } - } - free(answer); - } -} - -static gint load_parameter_info() -{ - int *p = &(info->uc.entry_tokens[0]); - int len = 0; - int i = 0; - - veejay_memset( p, 0, sizeof(info->uc.entry_tokens)); - - multi_vims( VIMS_CHAIN_GET_ENTRY, "%d %d", 0, info->uc.selected_chain_entry ); - - gchar *answer = recv_vims(3,&len); - if(len <= 0 || answer == NULL ) - { - if(answer) free(answer); - veejay_memset(p,0,sizeof(info->uc.entry_tokens)); - if(info->uc.selected_rgbkey ) - disable_widget("rgbkey"); - return 0; - } - - char *ptr; - char *token = strtok_r( answer," ", &ptr ); - if(!token) { - veejay_msg(VEEJAY_MSG_ERROR,"Invalid reply from %d", VIMS_CHAIN_GET_ENTRY ); - return 0; - } - p[i] = atoi(token); - while( (token = strtok_r( NULL, " ", &ptr ) ) != NULL ) - { - i++; - p[i] = atoi( token ); - } - - info->uc.selected_rgbkey = _effect_get_rgb( p[0] ); - if(info->uc.selected_rgbkey) - { - enable_widget( "rgbkey"); - update_rgbkey(); - } - else - { - disable_widget( "rgbkey"); - info->uc.selected_rgbkey = 0; - } - - set_toggle_button( "curve_chain_toggleentry", p[ENTRY_KF_STATUS] ); -//FIXME: -/* - if(info->status_tokens[PLAY_MODE] == MODE_SAMPLE ) - { - update_spin_range( "curve_spinstart", - info->status_tokens[SAMPLE_START], - info->status_tokens[SAMPLE_END], p[ENTRY_KF_START] ); - update_spin_range( "curve_spinend", info->status_tokens[SAMPLE_START], - info->status_tokens[SAMPLE_END] ,p[ENTRY_KF_END] ); - } - else - { - int nl = info->status_tokens[SAMPLE_MARKER_END]; - update_spin_range( "curve_spinstart", 0, nl, p[ENTRY_KF_START] ); - update_spin_range( "curve_spinend", 0,nl, p[ENTRY_KF_END] ); - }*/ - - update_label_str( "curve_parameter", FX_PARAMETER_DEFAULT_NAME); - - switch( p[ENTRY_KF_TYPE] ) - { - case 1: - set_toggle_button( "curve_typespline", 1 ); - break; - case 2: - set_toggle_button( "curve_typefreehand",1 ); - break; - default: - case GTK_CURVE_TYPE_LINEAR: set_toggle_button( "curve_typelinear", 1 ); - break; - break; - } - - - set_toggle_button("subrender_entry_toggle", p[ENTRY_SUBRENDER_ENTRY]); - update_spin_value("transition_loop", p[ENTRY_TRANSITION_LOOP] ); - set_toggle_button("transition_enabled", p[ENTRY_TRANSITION_ENABLED] ); - - free(answer); - return 1; -} - -static void load_generator_info() -{ - int args[GENERATOR_PARAMS+1]; - gint fxlen = 0; - multi_vims( VIMS_GET_STREAM_ARGS,"%d",0 ); - gchar *fxtext = recv_vims(3,&fxlen); - - veejay_memset(args,0,sizeof(args)); - generator_to_arr(fxtext, args); - - int np = _effect_get_np( args[0] ); - int i; - - for( i = 0; i < np ; i ++ ) - { - enable_widget( gen_names_[i].text ); - enable_widget( gen_incs_[i].text ); - enable_widget( gen_decs_[i].text ); - - gchar *tt1 = _utf8str(_effect_get_param_description( args[0],i)); - set_tooltip( gen_names_[i].text, tt1 ); - - gint min=0,max=0,value = 0; - value = args[1 + i]; - - if( _effect_get_minmax( args[0], &min,&max, i )) - { - update_slider_range( gen_names_[i].text,min,max, value, 0); - } - g_free(tt1); - } - - for( i = np; i < GENERATOR_PARAMS; i ++ ) - { - gint min = 0, max = 1, value = 0; - update_slider_range( gen_names_[i].text, min,max, value, 0 ); - disable_widget( gen_names_[i].text ); - disable_widget( gen_incs_[i].text ); - disable_widget( gen_decs_[i].text ); - set_tooltip( gen_names_[i].text, NULL ); - update_slider_range( gen_names_[i].text, min,max, value, 0 ); - } - - free(fxtext); -} - -/****************************************************** - * get_col_number_from_tree_view_column() - * - * Returns column number or -1 if not found or on error - ******************************************************/ -/* Actually not used -gint get_treeview_col_number_from_column (GtkTreeViewColumn *col) -{ - GList *cols; - gint num; - - g_return_val_if_fail ( col != NULL, -1 ); - g_return_val_if_fail ( col->tree_view != NULL, -1 ); - - cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(col->tree_view)); - num = g_list_index(cols, (gpointer) col); - g_list_free(cols); - - return num; -} -*/ - -/****************************************************** - * - * EFFECT CHAIN - * - ******************************************************/ - -/****************************************************** - * setup_effectchain_info() - * setup tree effect chain model and selection mode - * - ******************************************************/ -static void setup_effectchain_info( void ) -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_chain"); - GtkListStore *store = gtk_list_store_new( FXC_N_COLS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF,GDK_TYPE_PIXBUF,G_TYPE_STRING, GDK_TYPE_PIXBUF ); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - g_object_unref( G_OBJECT( store )); - - setup_tree_text_column( "tree_chain", FXC_ID, "#",0 ); - setup_tree_text_column( "tree_chain", FXC_FXID, "Effect",0 ); //FIXME - setup_tree_pixmap_column( "tree_chain", FXC_FXSTATUS, "Run"); - setup_tree_pixmap_column( "tree_chain", FXC_KF , "Anim" ); // TODO parameter interpolation on/off per entry - setup_tree_text_column( "tree_chain", FXC_MIXING, "Channel",0); - setup_tree_pixmap_column( "tree_chain", FXC_SUBRENDER, "Subrender"); - GtkTreeSelection *selection; - - // selection stuff - selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); - gtk_tree_selection_set_select_function(selection, view_entry_selection_func, NULL, NULL); - - // signal stuff (button press) - g_signal_connect(GTK_TREE_VIEW(tree), "button-press-event", - (GCallback) on_effectchain_button_pressed, NULL); -} - - -/****************************************************** - * load_effectchain_info() - * load effect chain from server (VIMS transmition) - * to the fx chain tree view - * - ******************************************************/ -static void load_effectchain_info() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_chain"); - - set_tooltip_by_widget (tree, tooltips[TOOLTIP_FXCHAINTREE].text); - - GtkListStore *store; - gchar toggle[4]; - guint arr[VIMS_CHAIN_LIST_ENTRY_VALUES]; - GtkTreeIter iter; - gint offset=0; - - gint fxlen = 0; - multi_vims( VIMS_CHAIN_LIST,"%d",0 ); - gchar *fxtext = recv_vims(3,&fxlen); - - reset_tree( "tree_chain" ); - update_label_str( "value_friendlyname",FX_PARAMETER_VALUE_DEFAULT_HINT ); - - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - store = GTK_LIST_STORE(model); - - // no fx, clean list and return - if(fxlen <= 0 ) - { - int i; - for( i = 0; i < SAMPLE_MAX_EFFECTS; i ++ ) - { - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, FXC_ID, i ,-1); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - } - return; - } - - if(fxlen == 5 ) - offset = fxlen; - - gint last_index =0; - - while( offset < fxlen ) - { - char line[VIMS_CHAIN_LIST_ENTRY_LENGTH+1]; - veejay_memset(arr,0,sizeof(arr)); - veejay_memset(line,0,sizeof(line)); - - strncpy( line, fxtext + offset, VIMS_CHAIN_LIST_ENTRY_LENGTH ); - int n_tokens = sscanf( line, VIMS_CHAIN_LIST_ENTRY_FORMAT, - &arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6], &arr[7], &arr[8]); - if( n_tokens != VIMS_CHAIN_LIST_ENTRY_VALUES ) { - veejay_msg(0,"Error parsing FX chain response"); - break; - } - - // clean list until next entry - while( last_index < arr[0] ) - { - gtk_list_store_append( store, &iter ); - gtk_list_store_set( store, &iter, FXC_ID, last_index,-1); - last_index ++; - } - - // time to fill current entry - char *name = _effect_get_description( arr[1] ); - snprintf(toggle,sizeof(toggle),"%s",arr[3] == 1 ? "on" : "off" ); - - if( last_index == arr[0]) - { - gchar *utf8_name = _utf8str( name ); - char tmp[128]; - if( _effect_get_mix( arr[1] ) ) { - snprintf(tmp,sizeof(tmp),"%s %d", (arr[5] == 0 ? "Sample " : "T " ), - arr[6]); - } - else { - snprintf(tmp,sizeof(tmp),"%s"," "); - } - gchar *mixing = _utf8str(tmp); - - gtk_list_store_append( store, &iter ); - GdkPixbuf *toggle = update_pixmap_entry( arr[3] ); - GdkPixbuf *kf_togglepf = update_pixmap_entry( arr[7] ); - GdkPixbuf *subrender_toggle = update_pixmap_entry(arr[8]); - gtk_list_store_set( store, &iter, - FXC_ID, arr[0], - FXC_FXID, utf8_name, - FXC_FXSTATUS, toggle, - FXC_KF, kf_togglepf, - FXC_MIXING,mixing, - FXC_SUBRENDER, subrender_toggle, -1 ); - last_index ++; - g_free(utf8_name); - g_free(mixing); - g_object_unref( toggle ); - g_object_unref( kf_togglepf ); - g_object_unref( subrender_toggle ); - } - offset += VIMS_CHAIN_LIST_ENTRY_LENGTH; - } - - // finally clean list end - while( last_index < SAMPLE_MAX_EFFECTS ) - { - gtk_list_store_append( store, &iter ); - gtk_list_store_set( store, &iter, - FXC_ID, last_index , -1 ); - last_index ++; - } - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - free(fxtext); -} - - -/****************************************************** - * - * EFFECTS LISTS - * - ******************************************************/ - -enum -{ -// FX_ID = 0, - FX_STRING = 0, - FX_NUM, -}; - -gboolean view_fx_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gchar *name = NULL; - gtk_tree_model_get(model, &iter, FX_STRING, &name, -1); - - if (!path_currently_selected) - { - int value = 0; - vevo_property_get( fx_list_, name, 0, &value ); - if(value) - { - info->uc.selected_effect_id = value; - } - } - g_free(name); - } - - return TRUE; /* allow selection state to change */ -} - -static guint effectlist_add_mask = 0; -static const guint FXLIST_ADD_DISABLED = 1 << 1; -static const guint FXLIST_ADD_TO_SELECTED = 1 << 2; - -gboolean on_effectlist_row_key_pressed (GtkWidget *widget, GdkEventKey *event, gpointer user_data) -{ - if(event->type & GDK_KEY_PRESS){ - switch(event->keyval){ - case GDK_KEY_Shift_L: - effectlist_add_mask |= FXLIST_ADD_DISABLED; - break; - case GDK_KEY_Control_L: - effectlist_add_mask |= FXLIST_ADD_TO_SELECTED; - break; - } - } - return FALSE; -} - -gboolean on_effectlist_row_key_released (GtkWidget *widget, GdkEventKey *event, gpointer user_data) -{ - if(event->type & GDK_KEY_RELEASE){ - switch(event->keyval){ - case GDK_KEY_Shift_L: - effectlist_add_mask &= !(FXLIST_ADD_DISABLED); - break; - case GDK_KEY_Control_L: - effectlist_add_mask &= !(FXLIST_ADD_TO_SELECTED); - break; - } - } - return FALSE; -} - -void on_effectlist_row_activated(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(treeview); - - if(gtk_tree_model_get_iter(model,&iter,path)) { - gint gid =0; - gchar *name = NULL; - gtk_tree_model_get(model,&iter, FX_STRING, &name, -1); - if(vevo_property_get( fx_list_, name, 0, &gid ) == 0 ) { - guint slot = 0; - if((effectlist_add_mask & FXLIST_ADD_TO_SELECTED) && info->selection_slot) - slot = info->selection_slot->sample_id; - multi_vims(VIMS_CHAIN_ENTRY_SET_EFFECT, "%d %d %d %d", - slot, info->uc.selected_chain_entry,gid, !(effectlist_add_mask & FXLIST_ADD_DISABLED) ); - info->uc.reload_hint[HINT_ENTRY] = 1; - char trip[100]; - snprintf(trip,sizeof(trip), "%03d:%d %d %d %d;", VIMS_CHAIN_ENTRY_SET_EFFECT,slot,info->uc.selected_chain_entry, gid, !(effectlist_add_mask & FXLIST_ADD_DISABLED) ); - vj_midi_learning_vims( info->midi, NULL, trip, 0 ); - update_label_str( "value_friendlyname", FX_PARAMETER_VALUE_DEFAULT_HINT ); - info->uc.reload_hint[HINT_CHAIN] = 1; - } - g_free(name); - } -} - -gint sort_iter_compare_func( GtkTreeModel *model, - GtkTreeIter *a, - GtkTreeIter *b, - gpointer userdata) -{ - gint sortcol = GPOINTER_TO_INT(userdata); - gint ret = 0; - - if(sortcol == FX_STRING) - { - gchar *name1=NULL; - gchar *name2=NULL; - gtk_tree_model_get(model,a, FX_STRING, &name1, -1 ); - gtk_tree_model_get(model,b, FX_STRING, &name2, -1 ); - if( name1 == NULL || name2 == NULL ) - { - if( name1==NULL && name2==NULL) - { - return 0; - } - ret = (name1 == NULL) ? -1 : 1; - } - else - { - ret = g_utf8_collate(name1,name2); - } - if(name1) g_free(name1); - if(name2) g_free(name2); - } - return ret; -} - -gint sort_vims_func(GtkTreeModel *model, - GtkTreeIter *a, - GtkTreeIter *b, - gpointer userdata) -{ - gint sortcol = GPOINTER_TO_INT(userdata); - gint ret = 0; - - if(sortcol == VIMS_ID) - { - gchar *name1 = NULL; - gchar *name2 = NULL; - - gtk_tree_model_get(model,a, VIMS_ID, &name1, -1 ); - gtk_tree_model_get(model,b, VIMS_ID, &name2, -1 ); - if( name1 == NULL || name2 == NULL ) - { - if( name1==NULL && name2== NULL) - { - return 0; - } - ret = (name1==NULL) ? -1 : 1; - } - else - { - ret = g_utf8_collate(name1,name2); - } - if(name1) g_free(name1); - if(name2) g_free(name2); - } - return ret; -} - - -//EffectListData* get_effectlistdata - -static gboolean effect_row_visible (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) -{ - effectlist_data *fxlistdata = (effectlist_data*) user_data; - gboolean value=TRUE; - if(fxlistdata != NULL && fxlistdata->filter_string != NULL) { - if(strlen(fxlistdata->filter_string)) { - value=FALSE; - gchar *idstr = NULL; - gtk_tree_model_get(model, iter, SL_ID, &idstr, -1); - if((idstr != NULL) && strcasestr(idstr, fxlistdata->filter_string) != NULL) { - value = TRUE; - } - g_free (idstr); - } - } - return value; -} - - -/****************************************************** - * setup_effectlist_info() - * prepare the views of effects lists - * - * Three treeview : fxlist mixlist, alphalist - * - ******************************************************/ -void setup_effectlist_info() -{ - int i; - GtkWidget *trees[3]; - trees[0] = glade_xml_get_widget_( info->main_window, "tree_effectlist"); - trees[1] = glade_xml_get_widget_( info->main_window, "tree_effectmixlist"); - trees[2] = glade_xml_get_widget_( info->main_window, "tree_alphalist" ); - - set_tooltip_by_widget (trees[0], tooltips[TOOLTIP_FXSELECT].text); - set_tooltip_by_widget (trees[1], tooltips[TOOLTIP_FXSELECT].text); - set_tooltip_by_widget (trees[2], tooltips[TOOLTIP_FXSELECT].text); - - fx_list_ = (vevo_port_t*) vpn( 200 ); - - for(i = 0; i < 3; i ++ ) - { - fxlist_data.stores[i].list = gtk_list_store_new( 1, G_TYPE_STRING ); - - fxlist_data.stores[i].filtered = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (GTK_TREE_MODEL (fxlist_data.stores[i].list), NULL)); - fxlist_data.stores[i].sorted = GTK_TREE_MODEL_SORT (gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (fxlist_data.stores[i].filtered))); - - fxlist_data.filter_string = NULL; - gtk_tree_model_filter_set_visible_func (fxlist_data.stores[i].filtered, - effect_row_visible, - &fxlist_data, NULL); - - GtkTreeSortable *sortable = GTK_TREE_SORTABLE(fxlist_data.stores[i].list); - gtk_tree_sortable_set_sort_func(sortable, FX_STRING, - sort_iter_compare_func, - GINT_TO_POINTER(FX_STRING),NULL); - - gtk_tree_sortable_set_sort_column_id(sortable, FX_STRING, GTK_SORT_ASCENDING); - gtk_tree_view_set_headers_visible( GTK_TREE_VIEW(trees[i]), FALSE ); - - gtk_tree_view_set_model( GTK_TREE_VIEW(trees[i]),GTK_TREE_MODEL( fxlist_data.stores[i].sorted)); - g_object_unref( G_OBJECT( fxlist_data.stores[i].list )); - } - - setup_tree_text_column( "tree_effectlist", FX_STRING, "Effect",0 ); - setup_tree_text_column( "tree_effectmixlist", FX_STRING, "Effect",0 ); - setup_tree_text_column( "tree_alphalist", FX_STRING, "Alpha",0); - - for(i = 0; i < 3; i ++ ) - { - g_signal_connect( trees[i],"row-activated", (GCallback) on_effectlist_row_activated, NULL ); - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(trees[i])); - gtk_tree_selection_set_select_function(selection, view_fx_selection_func, NULL, NULL); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); - - g_signal_connect( G_OBJECT(trees[i]), "key_press_event", G_CALLBACK( on_effectlist_row_key_pressed ), NULL ); - g_signal_connect( G_OBJECT(trees[i]), "key-release-event", G_CALLBACK( on_effectlist_row_key_released ), NULL ); - } - - GtkWidget *entry_filterfx = glade_xml_get_widget_( info->main_window, "filter_effects"); - set_tooltip_by_widget (entry_filterfx, tooltips[TOOLTIP_FXFILTER].text); - g_signal_connect(G_OBJECT(entry_filterfx), - "changed", - G_CALLBACK( on_filter_effects_changed ), - &fxlist_data ); - -} - -void set_feedback_status() -{ - int len = 0; - single_vims(VIMS_GET_FEEDBACK); - gchar *answer = recv_vims(3,&len); - if(answer == NULL) - return; - - int status = atoi(answer); - - set_toggle_button("feedbackbutton", status); - - g_free(answer); -} - -/****************************************************** - * load_effectlist_info() - * load the effects information from the server - * (VIMS transmission) to the treeviews - * - ******************************************************/ -void load_effectlist_info() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_effectlist"); - GtkWidget *tree2 = glade_xml_get_widget_( info->main_window, "tree_effectmixlist"); - GtkWidget *tree3 = glade_xml_get_widget_( info->main_window, "tree_alphalist"); - GtkListStore *store,*store2,*store3; - char line[4096]; - - GtkTreeIter iter; - gint i,offset=0; - gint fxlen = 0; - single_vims( VIMS_EFFECT_LIST ); - gchar *fxtext = recv_vims(6,&fxlen); - - _effect_reset(); - - reset_fxtree(); - - store = fxlist_data.stores[0].list; - store2 = fxlist_data.stores[1].list; - store3 = fxlist_data.stores[2].list; - - while( offset < fxlen ) - { - char tmp_len[4]; - veejay_memset(tmp_len,0,sizeof(tmp_len)); - strncpy(tmp_len, fxtext + offset, 3 ); - int len = atoi(tmp_len); - offset += 3; - if(len > 0) - { - effect_constr *ec; - veejay_memset( line,0,sizeof(line)); - strncpy( line, fxtext + offset, len ); - - ec = _effect_new(line); - if(ec) info->effect_info = g_list_append( info->effect_info, ec ); - } - offset += len; - } - - fxlen = g_list_length( info->effect_info ); - for( i = 0; i < fxlen; i ++) - { - effect_constr *ec = g_list_nth_data( info->effect_info, i ); - if( ec->is_gen ) - continue; - gchar *name = _utf8str( _effect_get_description( ec->id ) ); - - if( name != NULL) - { - // tree_alphalist - if( strncasecmp( "alpha:" , ec->description, 6 ) == 0 ) - { - gtk_list_store_append( store3, &iter ); - int len = strlen( ec->description ); - char *newName = vj_calloc( len ); - veejay_memcpy(newName,ec->description+6, len-6 ); - gtk_list_store_set( store3,&iter, FX_STRING, newName, -1 ); - vevo_property_set( fx_list_, newName, VEVO_ATOM_TYPE_INT,1,&(ec->id)); - free(newName); - } - else - { - // tree_effectmixlist - if( _effect_get_mix(ec->id) > 0 ) - { - gtk_list_store_append( store2, &iter ); - gtk_list_store_set( store2, &iter, FX_STRING, name, -1 ); - vevo_property_set( fx_list_, name, VEVO_ATOM_TYPE_INT, 1, &(ec->id)); - } - else - { - // tree_effectlist - gtk_list_store_append( store, &iter ); - gtk_list_store_set( store, &iter, FX_STRING, name, -1 ); - vevo_property_set( fx_list_, name, VEVO_ATOM_TYPE_INT, 1, &(ec->id)); - } - } - } - g_free(name); - } - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(fxlist_data.stores[0].sorted)); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree2), GTK_TREE_MODEL(fxlist_data.stores[1].sorted)); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree3), GTK_TREE_MODEL(fxlist_data.stores[2].sorted)); - free(fxtext); -} - -void on_effectlist_sources_row_activated(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(treeview); - - - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gchar *idstr = NULL; - gtk_tree_model_get(model,&iter, SL_ID, &idstr, -1); - gint id = 0; - if( sscanf( idstr+1, "[ %d]", &id ) ) - { - // set source / channel - multi_vims( VIMS_CHAIN_ENTRY_SET_SOURCE_CHANNEL, - "%d %d %d %d", - 0, - info->uc.selected_chain_entry, - ( idstr[0] == 'T' ? 1 : 0 ), - id ); - vj_msg(VEEJAY_MSG_INFO, "Set source channel to %d, %d", info->uc.selected_chain_entry,id ); - - char trip[100]; - snprintf(trip, sizeof(trip), "%03d:%d %d %d %d",VIMS_CHAIN_ENTRY_SET_SOURCE_CHANNEL, - 0, - info->uc.selected_chain_entry, - ( idstr[0] == 'T' ? 1 : 0 ), - id ); - vj_midi_learning_vims( info->midi, NULL, trip, 0 ); - } - if(idstr) g_free(idstr); - } -} - -/****************************************************** - * - * SAMPLES LIST - * - ******************************************************/ - -/* Return a bank page and slot number to place sample in */ -int verify_bank_capacity(int *bank_page_, int *slot_, int sample_id, int sample_type ) -{ - int poke_slot = 0; - int bank_page = find_bank_by_sample( sample_id, sample_type, &poke_slot ); - - if(bank_page == -1) { - veejay_msg(VEEJAY_MSG_ERROR, "No slot found for (%d,%d)",sample_id,sample_type); - return -1; - } - - if( !bank_exists(bank_page, poke_slot)) - add_bank( bank_page ); - - *bank_page_ = bank_page; - *slot_ = poke_slot; - -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_DEBUG, "(type=%d,id=%d) needs new slot, suggesting page %d, slot %d", - sample_type, sample_id, bank_page, poke_slot ); - -// if( info->sample_banks[bank_page] ) -// assert( info->sample_banks[bank_page]->slot[poke_slot]->sample_id <= 0 ); -#endif - - return 1; -} - -void setup_samplelist_info() -{ - effect_sources_tree = glade_xml_get_widget_( info->main_window, "tree_sources"); - effect_sources_store = gtk_list_store_new( 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING ); - - gtk_tree_view_set_headers_visible( GTK_TREE_VIEW(effect_sources_tree), FALSE ); - - gtk_tree_view_set_model( GTK_TREE_VIEW(effect_sources_tree), GTK_TREE_MODEL(effect_sources_store)); - g_object_unref( G_OBJECT( effect_sources_store )); - effect_sources_model = gtk_tree_view_get_model( GTK_TREE_VIEW(effect_sources_tree )); - effect_sources_store = GTK_LIST_STORE(effect_sources_model); - - setup_tree_text_column( "tree_sources", SL_ID, "Id",0 ); - setup_tree_text_column( "tree_sources", SL_TIMECODE, "Length" ,0); - - GtkTreeSelection *selection; - selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(effect_sources_tree)); - gtk_tree_selection_set_select_function(selection, view_sources_selection_func, NULL, NULL); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); - - g_signal_connect( effect_sources_tree, "row-activated", (GCallback) on_effectlist_sources_row_activated, (gpointer*)"tree_sources"); - - cali_sourcetree = glade_xml_get_widget_(info->main_window, "cali_sourcetree"); - cali_sourcestore= gtk_list_store_new( 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING ); - - gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( cali_sourcetree), FALSE ); - gtk_tree_view_set_model( GTK_TREE_VIEW(cali_sourcetree), GTK_TREE_MODEL(cali_sourcestore)); - g_object_unref( G_OBJECT(cali_sourcestore)); - - cali_sourcemodel = gtk_tree_view_get_model( GTK_TREE_VIEW(cali_sourcetree )); - cali_sourcestore = GTK_LIST_STORE(cali_sourcemodel); - - setup_tree_text_column( "cali_sourcetree", SL_ID, "Id",0 ); - setup_tree_text_column( "cali_sourcetree", SL_TIMECODE, "Length" ,0); - - GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cali_sourcetree)); - gtk_tree_selection_set_select_function(sel, cali_sources_selection_func, NULL, NULL); - gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); - -// g_signal_connect( cali_sourcetree, "row-activated", (GCallback) on_effectlist_sources_row_activated, (gpointer*)"tree_sources"); -} - -static uint8_t *ref_trashcan[3] = { NULL,NULL,NULL }; -static GdkPixbuf *pix_trashcan[3] = { NULL,NULL,NULL }; - -void reset_cali_images( int type, char *wid_name ) -{ - GtkWidget *dstImage = glade_xml_get_widget( info->main_window, wid_name ); - - if( pix_trashcan[type] != NULL ) { - g_object_unref( pix_trashcan[type] ); - pix_trashcan[type] = NULL; - } - if( ref_trashcan[type] != NULL ) { - free( ref_trashcan[type] ); - ref_trashcan[type] = NULL; - } - gtk_image_clear( GTK_IMAGE(dstImage) ); -} - -int get_and_draw_frame(int type, char *wid_name) -{ - GtkWidget *dstImage = glade_xml_get_widget( info->main_window, wid_name ); - if(dstImage == 0 ) { - veejay_msg(VEEJAY_MSG_ERROR, "No widget '%s'",wid_name); - return 0; - } - - multi_vims( VIMS_CALI_IMAGE, "%d %d", cali_stream_id,type); - - int bw = 0; - gchar *buf = recv_vims( 3, &bw ); - - if( bw <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "Unable to get calibration image."); - return 0; - } - - int len = 0; - int uvlen = 0; - int w = 0; - int h = 0; - int tlen = 0; - if( sscanf(buf,"%08d%06d%06d%06d%06d",&tlen, &len, &uvlen,&w,&h) != 5 ) { - free(buf); - veejay_msg(VEEJAY_MSG_ERROR,"Error reading calibration data header" ); - return 0; - } - - uint8_t *out = (uint8_t*) vj_malloc(sizeof(uint8_t) * (w*h*3)); - uint8_t *srcbuf = (uint8_t*) vj_malloc(sizeof(uint8_t) * len ); - - int res = vj_client_read(info->client, V_CMD, srcbuf, tlen ); - if( res <= 0 ) { - free(out); - free(srcbuf); - free(buf); - veejay_msg(VEEJAY_MSG_ERROR, "Error while receiving calibration image."); - return 0; - } - - VJFrame *src = yuv_yuv_template(srcbuf, - srcbuf, - srcbuf, - w, - h, - PIX_FMT_GRAY8 ); - - VJFrame *dst = yuv_rgb_template( out, w,h,PIX_FMT_BGR24 ); - - yuv_convert_any_ac( src,dst, src->format, dst->format ); - - GdkPixbuf *pix = gdk_pixbuf_new_from_data(out, - GDK_COLORSPACE_RGB, - FALSE, - 8, - w, - h, - w*3, - NULL, - NULL ); - - if( ref_trashcan[type] != NULL ) - { - free(ref_trashcan[type]); - ref_trashcan[type]=NULL; - } - if( pix_trashcan[type] != NULL ) - { - g_object_unref( pix_trashcan[type] ); - pix_trashcan[type] = NULL; - } - - gtk_image_set_from_pixbuf_( GTK_IMAGE( dstImage ), pix ); - - // gdk_pixbuf_unref( pix ); - - free(src); - free(dst); - free(buf); -// free(out); - free(srcbuf); - - ref_trashcan[type] = out; - pix_trashcan[type] = pix; - - return 1; -} - -static void select_slot( int pm ) -{ - if( pm == MODE_SAMPLE || pm == MODE_STREAM ) - { - int b = 0; int p = 0; - /* falsify activation */ - if(info->status_tokens[CURRENT_ID] > 0) - { - if(verify_bank_capacity( &b, &p, info->status_tokens[CURRENT_ID], info->status_tokens[STREAM_TYPE] )) - { - if( info->selected_slot ) - { - if ( info->selected_slot->sample_type != pm || info->selected_slot->sample_id != - info->status_tokens[CURRENT_ID] ) { - set_activation_of_slot_in_samplebank(FALSE); - } - } - info->selected_slot = info->sample_banks[b]->slot[p]; - info->selected_gui_slot = info->sample_banks[b]->gui_slot[p]; - set_activation_of_slot_in_samplebank(TRUE); - } - /*bank_page = find_bank_by_sample( info->status_tokens[CURRENT_ID], pm, &poke_slot ); - - info->selected_slot= info->sample_banks[bank_page]->slot[poke_slot]; - info->selected_gui_slot= info->sample_banks[bank_page]->gui_slot[poke_slot];*/ - } - } - else - { - set_activation_of_slot_in_samplebank(FALSE); - info->selected_slot = NULL; - info->selected_gui_slot = NULL; - } -} - -static void load_sequence_list() -{ - single_vims( VIMS_SEQUENCE_LIST ); - gint len = 0; - gchar *text = recv_vims( 6, &len ); - if( len <= 0 || text == NULL ) - return; - - int playing=0; - int size =0; - int active=0; - - sscanf( text, "%04d%04d%4d",&playing,&size,&active ); - int nlen = len - 12; - int offset = 0; - int id = 0; - gchar *in = text + 12; - while( offset < nlen ) - { - int sample_id = 0; - int type = 0; - char seqtext[32]; - sscanf( in + offset, "%04d%02d", &sample_id, &type ); - offset += 6; - if( sample_id > 0 ) - { - sprintf(seqtext,"%c%d",( type == 0 ? 'S' : 'T' ), sample_id); - gtk_label_set_text( - GTK_LABEL(info->sequencer_view->gui_slot[id]->image), - seqtext ); - } - else - { - gtk_label_set_text( - GTK_LABEL(info->sequencer_view->gui_slot[id]->image), - NULL ); - } - - id ++; - } - free(text); -} - -static void load_samplelist_info(gboolean with_reset_slotselection) -{ - char line[300]; - char source[255]; - char descr[255]; - gint offset=0; - if( cali_onoff == 1 ) - reset_tree( "cali_sourcetree"); - - if( with_reset_slotselection ) - { - reset_samplebank(); - reset_tree( "tree_sources" ); - } - - int load_from = info->uc.expected_num_samples; - if( load_from < 0 ) - load_from = 0; - - - multi_vims( VIMS_SAMPLE_LIST,"%d", (with_reset_slotselection ? 0 : load_from) ); - gint fxlen = 0; - gchar *fxtext = recv_vims(8,&fxlen); - - if(fxlen > 0 && fxtext != NULL) - { - while( offset < fxlen ) - { - char tmp_len[8] = { 0 }; - strncpy(tmp_len, fxtext + offset, 3 ); - int len = atoi(tmp_len); - offset += 3; - if(len > 0) - { - veejay_memset( line,0,sizeof(line)); - veejay_memset( descr,0,sizeof(descr)); - strncpy( line, fxtext + offset, len ); - int values[4] = { 0,0,0,0 }; - sscanf( line, "%05d%09d%09d%03d",&values[0], &values[1], &values[2], &values[3]); - strncpy( descr, line + 5 + 9 + 9 + 3 , values[3] ); - gchar *title = _utf8str( descr ); - gchar *timecode = format_selection_time( 0,(values[2]-values[1]) ); - int int_id = values[0]; - int poke_slot= 0; int bank_page = -1; - verify_bank_capacity( &bank_page , &poke_slot, int_id, values[1]); - if(bank_page >= 0 ) - { - if( info->sample_banks[bank_page]->slot[poke_slot]->sample_id <= 0 ) - { - sample_slot_t *tmp_slot = create_temporary_slot(poke_slot,int_id,0, title,timecode ); - add_sample_to_sample_banks(bank_page, tmp_slot ); - add_sample_to_effect_sources_list( int_id,0, title, timecode); - free_slot(tmp_slot); - if( !disable_sample_image ) - veejay_get_sample_image( int_id, 0, info->image_dimensions[0], info->image_dimensions[1] ); - } - else - { - update_sample_slot_data( bank_page, poke_slot, int_id,0,title,timecode); - } - } - if( info->status_tokens[CURRENT_ID] == values[0] && info->status_tokens[PLAY_MODE] == 0 ) - put_text( "entry_samplename", title ); - free(timecode); - g_free(title); - } - offset += len; - } - offset = 0; - } - - if( fxtext ) free(fxtext); - fxlen = 0; - - load_from = info->uc.expected_num_streams; - if( load_from < 0 ) - load_from = 0; - - multi_vims( VIMS_STREAM_LIST,"%d",(with_reset_slotselection ? 0 : load_from) ); - fxtext = recv_vims(5, &fxlen); - - if( fxlen > 0 && fxtext != NULL) - { - while( offset < fxlen ) - { - char tmp_len[4]; - veejay_memset(tmp_len,0,sizeof(tmp_len)); - strncpy(tmp_len, fxtext + offset, 3 ); - - int len = atoi(tmp_len); - offset += 3; - if(len > 0) - { - veejay_memset(line,0,sizeof(line)); - veejay_memset(descr,0,sizeof(descr)); - strncpy( line, fxtext + offset, len ); - - int values[10]; - veejay_memset(values,0, sizeof(values)); - sscanf( line, "%05d%02d%03d%03d%03d%03d%03d%03d", - &values[0], &values[1], &values[2], - &values[3], &values[4], &values[5], - &values[6], &values[7]); - - strncpy( descr, line + 22, values[6] ); - switch( values[1] ) - { - case STREAM_CALI: - snprintf(source,sizeof(source),"calibrate %d",values[0]); - break; - case STREAM_VIDEO4LINUX: - snprintf(source,sizeof(source),"capture %d",values[0]); - break; - case STREAM_WHITE: - snprintf(source,sizeof(source),"solid %d",values[0]); - break; - case STREAM_MCAST: - snprintf(source,sizeof(source),"multicast %d",values[0]); - break; - case STREAM_NETWORK: - snprintf(source,sizeof(source),"unicast %d",values[0]); - break; - case STREAM_YUV4MPEG: - snprintf(source,sizeof(source),"y4m %d",values[0]); - break; - case STREAM_DV1394: - snprintf(source,sizeof(source),"dv1394 %d",values[0]); - break; - case STREAM_PICTURE: - snprintf(source,sizeof(source),"image %d",values[0]); - break; - case STREAM_GENERATOR: - snprintf(source,sizeof(source),"Z%d",values[0]); - break; - case STREAM_CLONE: - snprintf(source,sizeof(source),"T%d", values[0]); - break; - case STREAM_VLOOP: - snprintf(source,sizeof(source),"vloop %d", values[0]); - break; - case STREAM_AVF: - snprintf(source,sizeof(source),"stream %d", values[0]); - break; - default: - snprintf(source,sizeof(source),"??? %d", values[0]); - break; - } - gchar *gsource = _utf8str( descr ); - gchar *gtype = _utf8str( source ); - int bank_page = -1; - int poke_slot = 0; - - verify_bank_capacity( &bank_page , &poke_slot, values[0], values[1]); - - if(bank_page >= 0) - { - if( info->sample_banks[bank_page]->slot[poke_slot]->sample_id <= 0 ) - { - sample_slot_t *tmp_slot = create_temporary_slot(poke_slot,values[0],values[1], gtype,gsource ); - add_sample_to_sample_banks(bank_page, tmp_slot ); - add_sample_to_effect_sources_list( values[0], values[1],gsource,gtype); - free_slot(tmp_slot); - } - else - { - update_sample_slot_data( bank_page, poke_slot, values[0],values[1],gsource,gtype); - } - } - g_free(gsource); - g_free(gtype); - } - offset += len; - } - - } - - if(fxtext) free(fxtext); - - select_slot( info->status_tokens[PLAY_MODE] ); - -} - -gboolean view_el_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gint num = 0; - gtk_tree_model_get(model, &iter, COLUMN_INT, &num, -1); - - if (!path_currently_selected) - { - info->uc.selected_el_entry = num; - gint frame_num =0; - frame_num = _el_ref_start_frame( num ); - update_spin_value( "button_el_selstart", frame_num); - update_spin_value( "button_el_selend", _el_ref_end_frame( num ) ); - } - } - return TRUE; /* allow selection state to change */ -} - -void on_vims_row_activated(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - model = gtk_tree_view_get_model(treeview); - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gchar *vimsid = NULL; - gint event_id =0; - gtk_tree_model_get(model,&iter, VIMS_ID, &vimsid, -1); - - if(sscanf( vimsid, "%d", &event_id )) - { - if(event_id >= VIMS_BUNDLE_START && event_id < VIMS_BUNDLE_END) - { - multi_vims( VIMS_BUNDLE, "%d", event_id ); - info->uc.reload_hint[HINT_CHAIN] = 1; - } - else - { - gchar *args = NULL; - gchar *format = NULL; - gtk_tree_model_get(model,&iter, VIMS_FORMAT, &format, -1); - gtk_tree_model_get(model,&iter, VIMS_CONTENTS, &args, -1 ); - - if( event_id == VIMS_QUIT ) - { - if( prompt_dialog("Stop Veejay", "Are you sure ? (All unsaved work will be lost)" ) == - GTK_RESPONSE_REJECT ) - return; - } - if( (format == NULL||args==NULL) || (strlen(format) <= 0) ) - single_vims( event_id ); - else - { - if( args != NULL && strlen(args) > 0 ) - { - char msg[100]; - sprintf(msg, "%03d:%s;", event_id, args ); - msg_vims(msg); - } - } - } - } - if( vimsid ) g_free( vimsid ); - } -} - -gboolean view_vims_selection_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer userdata) -{ - GtkTreeIter iter; - if (gtk_tree_model_get_iter(model, &iter, path)) - { - gchar *vimsid = NULL; - gint event_id = 0; - gchar *text = NULL; - gint n_params = 0; - gtk_tree_model_get(model, &iter, VIMS_ID, &vimsid, -1); - gtk_tree_model_get(model, &iter, VIMS_CONTENTS, &text, -1 ); - gtk_tree_model_get(model, &iter, VIMS_PARAMS, &n_params, -1); - int k=0; - int m=0; - gchar *key = NULL; - gchar *mod = NULL; -#ifdef HAVE_SDL - gtk_tree_model_get(model,&iter, VIMS_KEY, &key, -1); - gtk_tree_model_get(model,&iter, VIMS_MOD, &mod, -1); -#endif - if(sscanf( vimsid, "%d", &event_id )) - { -#ifdef HAVE_SDL - k = sdlkey_by_name( key ); - m = sdlmod_by_name( mod ); -#endif - info->uc.selected_vims_entry = event_id; - - if( event_id >= VIMS_BUNDLE_START && event_id < VIMS_BUNDLE_END ) - info->uc.selected_vims_type = 0; - else - info->uc.selected_vims_type = 1; - - if(info->uc.selected_vims_args ) - free(info->uc.selected_vims_args); - info->uc.selected_vims_args = NULL; - - if( n_params > 0 && text ) - info->uc.selected_vims_args = strdup( text ); - - info->uc.selected_vims_accel[0] = m; - info->uc.selected_vims_accel[1] = k; - - clear_textview_buffer( "vimsview" ); - if(text) - set_textview_buffer( "vimsview", text ); - } - if(vimsid) g_free( vimsid ); - if(text) g_free( text ); - if(key) g_free( key ); - if(mod) g_free( mod ); - } - - return TRUE; /* allow selection state to change */ -} - -void -on_editlist_row_activated(GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *col, - gpointer user_data) -{ - GtkTreeModel *model; - GtkTreeIter iter; - - model = gtk_tree_view_get_model(treeview); - if(gtk_tree_model_get_iter(model,&iter,path)) - { - gint num = 0; - gtk_tree_model_get(model,&iter, COLUMN_INT, &num, -1); - gint frame_num = _el_ref_start_frame( num ); - - multi_vims( VIMS_VIDEO_SET_FRAME, "%d", (int) frame_num ); - } -} - -void on_stream_color_changed(GtkColorSelection *colorsel, gpointer user_data) -{ - if(!info->status_lock && info->selected_slot) - { - GdkColor current_color; - GtkWidget *colorsel = glade_xml_get_widget_(info->main_window, - "colorselection" ); - gtk_color_selection_get_current_color(GTK_COLOR_SELECTION( colorsel ), - ¤t_color ); - - gint red = current_color.red / 255.0; - gint green = current_color.green / 255.0; - gint blue = current_color.blue / 255.0; - - multi_vims(VIMS_STREAM_COLOR, "%d %d %d %d", - info->selected_slot->sample_id, - red, - green, - blue ); - } - -} - -static void setup_colorselection() -{ - GtkWidget *sel = glade_xml_get_widget_(info->main_window, "colorselection"); - g_signal_connect(sel, - "color-changed", - (GCallback) on_stream_color_changed, NULL ); -} - -void on_rgbkey_color_changed(GtkColorSelection *colorsel, gpointer user_data) -{ - if(!info->entry_lock) - { - GdkColor current_color; - GtkWidget *colorsel = glade_xml_get_widget_(info->main_window, - "rgbkey" ); - gtk_color_selection_get_current_color(GTK_COLOR_SELECTION( colorsel ), - ¤t_color ); - - // scale to 0 - 255 - gint red = current_color.red / 255.0; - gint green = current_color.green / 255.0; - gint blue = current_color.blue / 255.0; - - multi_vims(VIMS_CHAIN_ENTRY_SET_ARG_VAL, - "%d %d %d %d", - 0, - info->uc.selected_chain_entry, - 1, - red ); - multi_vims(VIMS_CHAIN_ENTRY_SET_ARG_VAL, - "%d %d %d %d", - 0, - info->uc.selected_chain_entry, - 2, - green ); - multi_vims(VIMS_CHAIN_ENTRY_SET_ARG_VAL, - "%d %d %d %d", - 0, - info->uc.selected_chain_entry, - 3, - blue ); - - info->parameter_lock = 1; - update_slider_value("slider_p1", red, 0 ); - update_slider_value("slider_p2", green, 0 ); - update_slider_value("slider_p3", blue, 0 ); - - info->parameter_lock = 0; - } -} - -static void setup_rgbkey() -{ - GtkWidget *sel = glade_xml_get_widget_(info->main_window, "rgbkey"); - g_signal_connect( sel, "color-changed", - (GCallback) on_rgbkey_color_changed, NULL ); -} - -static void setup_vimslist() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_vims"); - GtkListStore *store = gtk_list_store_new( 2,G_TYPE_STRING, G_TYPE_STRING); - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - g_object_unref( G_OBJECT( store )); - - setup_tree_text_column( "tree_vims", VIMS_LIST_ITEM_ID, "VIMS ID",0); - setup_tree_text_column( "tree_vims", VIMS_LIST_ITEM_DESCR, "Description",0 ); - - GtkTreeSortable *sortable = GTK_TREE_SORTABLE(store); - - gtk_tree_sortable_set_sort_func(sortable, - VIMS_ID, - sort_vims_func, - GINT_TO_POINTER(VIMS_ID), - NULL); - - gtk_tree_sortable_set_sort_column_id(sortable, - VIMS_ID, GTK_SORT_ASCENDING); -} - -static void setup_bundles() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_bundles"); - GtkListStore *store = gtk_list_store_new( 7,G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING ,G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING); - - gtk_widget_set_size_request_( tree, 300, -1 ); - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - GtkTreeSortable *sortable = GTK_TREE_SORTABLE(store); - - gtk_tree_sortable_set_sort_func( - sortable, VIMS_ID, sort_vims_func, - GINT_TO_POINTER(VIMS_ID),NULL); - - gtk_tree_sortable_set_sort_column_id( sortable, VIMS_ID, GTK_SORT_ASCENDING); - - g_object_unref( G_OBJECT( store )); - - setup_tree_text_column( "tree_bundles", VIMS_ID, "Event ID",0); - setup_tree_text_column( "tree_bundles", VIMS_KEY, "Key",0); - setup_tree_text_column( "tree_bundles", VIMS_MOD, "Mod",0); - setup_tree_text_column( "tree_bundles", VIMS_DESCR, "Description",0 ); - setup_tree_text_column( "tree_bundles", VIMS_PARAMS, "Max args",0); - setup_tree_text_column( "tree_bundles", VIMS_FORMAT, "Format",0 ); - g_signal_connect(tree, - "row-activated", - (GCallback) on_vims_row_activated, - NULL ); - - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); - gtk_tree_selection_set_select_function(selection, view_vims_selection_func, NULL, NULL); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); - - GtkWidget *tv = glade_xml_get_widget_( info->main_window, "vimsview" ); - gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(tv), GTK_WRAP_WORD_CHAR ); -} - -static void setup_editlist_info() -{ - editlist_tree = glade_xml_get_widget_( info->main_window, "editlisttree"); - editlist_store = gtk_list_store_new( 5,G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING ,G_TYPE_STRING); - gtk_tree_view_set_model( GTK_TREE_VIEW(editlist_tree), GTK_TREE_MODEL(editlist_store)); - g_object_unref( G_OBJECT( editlist_store )); - editlist_model = gtk_tree_view_get_model( GTK_TREE_VIEW(editlist_tree )); - editlist_store = GTK_LIST_STORE(editlist_model); - - setup_tree_text_column( "editlisttree", COLUMN_INT, "#",0); - setup_tree_text_column( "editlisttree", COLUMN_STRING0, "Timecode",0 ); - setup_tree_text_column( "editlisttree", COLUMN_STRINGA, "Filename",0); - setup_tree_text_column( "editlisttree", COLUMN_STRINGB, "Duration",0); - setup_tree_text_column( "editlisttree", COLUMN_STRINGC, "FOURCC",0); - - g_signal_connect( editlist_tree, "row-activated", - (GCallback) on_editlist_row_activated, NULL ); - - GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(editlist_tree)); - gtk_tree_selection_set_select_function(selection, view_el_selection_func, NULL, NULL); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); -} - -static void reload_keys() -{ - gint len = 0; - single_vims( VIMS_KEYLIST ); - gchar *text = recv_vims( 6, &len ); - gint offset = 0; - - if( len == 0 || text == NULL ) - return; - - gint k,index; - for( k = 0; k < VIMS_MAX ; k ++ ) - { - vims_keys_t *p = &vims_keys_list[k]; - if(p->vims) - free(p->vims); - p->keyval = 0; - p->state = 0; - p->event_id = 0; - p->vims = NULL; - } - - char *ptr = text; - - while( offset < len ) - { - int val[6]; - veejay_memset(val,0,sizeof(val)); - int n = sscanf( ptr + offset, "%04d%03d%03d%03d", &val[0],&val[1],&val[2],&val[3]); - if( n != 4 ) - { - free(text); - return; - } - - offset += 13; - char *message = strndup( ptr + offset , val[3] ); - - offset += val[3]; - - index = (val[1] * G_MOD_OFFSET) + val[2]; - - if( index < 0 || index >= VIMS_MAX ) { - free(message); - continue; - } - - vims_keys_list[ index ].keyval = val[2]; - vims_keys_list[ index ].state = val[1]; - vims_keys_list[ index ].event_id = val[0]; - vims_keys_list[ index ].vims = message; - } - free(text); -} - -static void reload_bundles() -{ - reload_keys(); - - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_bundles"); - GtkListStore *store; - GtkTreeIter iter; - - gint len = 0; - single_vims( VIMS_BUNDLE_LIST ); - gchar *eltext = recv_vims(6,&len); // msg len - gint offset = 0; - - reset_tree("tree_bundles"); - - if(len == 0 || eltext == NULL ) - { -#ifdef STRICT_CHECKING - assert(eltext != NULL && len > 0); -#endif - return; - } - - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - store = GTK_LIST_STORE(model); - - char *ptr = eltext; - - while( offset < len ) - { - char *message = NULL; - char *format = NULL; - char *args = NULL; - int val[6] = { 0,0,0,0,0,0 }; - - sscanf( ptr + offset, "%04d%03d%03d%04d", &val[0],&val[1],&val[2],&val[3]); - - offset += 14; - - message = strndup( ptr + offset , val[3] ); - offset += val[3]; - - sscanf( ptr + offset, "%03d%03d", &val[4], &val[5] ); - - offset += 6; - - if(val[4]) // format string - { - format = strndup( ptr + offset, val[4] ); - offset += val[4]; - } - - if(val[5]) // argument string - { - args = strndup( ptr + offset, val[5] ); - offset += val[5]; - } - - gchar *g_descr = NULL; - gchar *g_format = NULL; - gchar *g_content = NULL; -#ifdef HAVE_SDL - gchar *g_keyname = sdlkey_by_id( val[1] ); - gchar *g_keymod = sdlmod_by_id( val[2] ); -#else - gchar *g_keyname = "N/A"; - gchar *g_keymod = ""; -#endif - gchar *g_vims[5]; - - sprintf( (char*) g_vims, "%03d", val[0] ); - - if( val[0] >= VIMS_BUNDLE_START && val[0] < VIMS_BUNDLE_END ) - { - g_content = _utf8str( message ); - g_descr = _utf8str("Bundle"); - } - else - { - g_descr = _utf8str( message ); - if( format ) - g_format = _utf8str( format ); - if( args ) - { - g_content = _utf8str( args ); - //@ set default VIMS argument: - if(vj_event_list[val[0]].args ) - { - free(vj_event_list[val[0]].args ); - vj_event_list[val[0]].args = NULL; - } - vj_event_list[ val[0] ].args = strdup( args ); - } - } - - gtk_list_store_append( store, &iter ); - gtk_list_store_set(store, &iter, - VIMS_ID, g_vims, - VIMS_KEY, g_keyname, - VIMS_MOD, g_keymod, - VIMS_DESCR, g_descr, - VIMS_PARAMS, vj_event_list[ val[0] ].params, - VIMS_FORMAT, g_format, - VIMS_CONTENTS, g_content, /* this is a hidden column, when the item is selected, the text is displayed in the textview widget */ - -1 ); - - if(message) free(message); - if(format) free(format); - if(args) free(args); - - if( g_descr ) g_free(g_descr ); - if( g_format ) g_free(g_format ); - if( g_content) g_free(g_content ); - } - /* entry, start frame, end frame */ - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - free( eltext ); -} - -static void reload_vimslist() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "tree_vims"); - GtkListStore *store; - GtkTreeIter iter; - - gint len = 0; - single_vims( VIMS_VIMS_LIST ); - gchar *eltext = recv_vims(5,&len); // msg len - gint offset = 0; - reset_tree("tree_vims"); - - if(len == 0 || eltext == NULL ) - { -#ifdef STRICT_CHECKING - assert(eltext != NULL && len > 0); -#endif - return; - } - - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - store = GTK_LIST_STORE(model); - - while( offset < len ) - { - char *format = NULL; - char *descr = NULL; - char *line = strndup( eltext + offset, 14 ); - int val[4]; - sscanf(line, "%04d%02d%03d%03d", - &val[0],&val[1],&val[2],&val[3]); - - char vimsid[5]; - - offset += 12; - if(val[2] > 0) - { - format = strndup( eltext + offset, val[2] ); - offset += val[2]; - } - - if(val[3] > 0 ) - { - descr = strndup( eltext + offset, val[3] ); - offset += val[3]; - } - - gchar *g_format = (format == NULL ? NULL :_utf8str( format )); - gchar *g_descr = (descr == NULL ? NULL :_utf8str( descr )); - - if(vj_event_list[val[0]].format ) - free(vj_event_list[val[0]].format); - if(vj_event_list[val[0]].descr ) - free(vj_event_list[val[0]].descr); - - gtk_list_store_append( store, &iter ); - - vj_event_list[ val[0] ].event_id = val[0]; - vj_event_list[ val[0] ].params = val[1]; - vj_event_list[ val[0] ].format = (format == NULL ? NULL :_utf8str( format )); - vj_event_list[ val[0] ].descr = (descr == NULL ? NULL : _utf8str( descr )); - - sprintf(vimsid, "%03d", val[0] ); - gtk_list_store_set(store, &iter, - VIMS_LIST_ITEM_ID, vimsid, - VIMS_LIST_ITEM_DESCR, g_descr,-1 ); - - if(g_format) g_free(g_format); - if(g_descr) g_free(g_descr); - - if(format) free(format); - if(descr) free(descr); - - free( line ); - } - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - free( eltext ); -} - -static void remove_all (GtkComboBox *combo_box) -{ - GtkTreeModel* model = gtk_combo_box_get_model (combo_box); - gtk_list_store_clear (GTK_LIST_STORE(model)); -} - -static char *tokenize_on_space( char *q ) -{ - int n = 0; - char *r = NULL; - char *p = q; - while( *p != '\0' && !isblank( *p ) && *p != ' ' && *p != 20) - { - (*p)++; - n++; - } - if( n <= 0 ) - return NULL; - r = vj_calloc( n+1 ); - strncpy( r, q, n ); - return r; -} - -static int have_srt_ = 0; - -static void init_srt_editor() -{ - reload_fontlist(); - update_spin_range( "spin_text_x", 0, info->el.width-1 , 0 ); - update_spin_range( "spin_text_y", 0, info->el.height-1, 0 ); - update_spin_range( "spin_text_size", 10, 500, 40 ); - update_spin_range( "spin_text_start", 0, total_frames_, 0 ); -} - -static void reload_fontlist() -{ - GtkWidget *box = glade_xml_get_widget( info->main_window, "combobox_fonts"); - remove_all( GTK_COMBO_BOX( box ) ); - single_vims( VIMS_FONT_LIST ); - gint len = 0; - gchar *srts = recv_vims(6,&len ); - gint i = 0; - gchar *p = srts; - - while( i < len ) - { - char tmp[4]; - veejay_memset(tmp,0,sizeof(tmp)); - strncpy(tmp, p, 3 ); - int slen = atoi(tmp); - p += 3; - gchar *seq_str = strndup( p, slen ); - gtk_combo_box_append_text( GTK_COMBO_BOX(box), seq_str ); - p += slen; - free(seq_str); - i += (slen + 3); - } - free(srts); -} - -static void reload_srt() -{ - if(!have_srt_) - { - init_srt_editor(); - have_srt_ = 1; - } - - GtkWidget *box = glade_xml_get_widget( info->main_window, "combobox_textsrt"); - remove_all( GTK_COMBO_BOX( box ) ); - - clear_textview_buffer( "textview_text"); - - single_vims( VIMS_SRT_LIST ); - gint i=0, len = 0; - - gchar *srts = recv_vims(6,&len ); - if( srts == NULL || len <= 0 ) - { - // disable_widget( "SRTframe" ); - return; - } - - gchar *p = srts; - gchar *token = NULL; - - while( i < len ) - { - token = tokenize_on_space( p ); - if(!token) - break; - if(token) - { - gtk_combo_box_append_text( GTK_COMBO_BOX(box),token ); - i += strlen(token) + 1; - free(token); - } - else - i++; - p = srts + i; - } - free(srts); -} - -void _edl_reset(void) -{ - if( info->elref != NULL) - { - int n = g_list_length(info->elref); - int i; - for( i = 0; i <=n ; i ++ ) - { - void *ptr = g_list_nth_data( info->elref , i ); - if(ptr) - free(ptr); - } - g_list_free( info->elref ); - } -} - -void reload_macros() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "macro_macros" ); - GtkListStore *store; - GtkTreeIter iter; - - gint consumed = 0; - gint len = 0; - single_vims( VIMS_GET_ALL_MACRO ); - gchar *answer = recv_vims(8, &len); - - reset_tree("macro_macros"); - - if( answer == NULL || len < 0 ) - return; - - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - store = GTK_LIST_STORE(model); - - gchar *ptr = answer; - - int error = 0; - - while(consumed < len) { - - long frame_num = 0; - int at_dup = 0; - int at_loop = 0; - int at_seq = 0; - int msg_len = 0; - - int n = sscanf( ptr, "%08ld%02d%08d%02d%03d", &frame_num, &at_dup, &at_loop, &at_seq, &msg_len ); - if( n != 5) { - error = 1; - break; - } - - ptr += (8 + 2 + 8 + 2 + 3); - - char *msg = strndup( ptr, msg_len ); - int vims_id = -1; - n = sscanf(msg,"%03d:", &vims_id); - char *descr = NULL; - if( vims_id >= 0 && vims_id < VIMS_QUIT ) - descr = vj_event_list[vims_id].descr; - - gtk_list_store_append( store, &iter ); - gtk_list_store_set(store, &iter, - MACRO_FRAME, (guint) frame_num, - MACRO_DUP, (guint) at_dup, - MACRO_LOOP, (guint) at_loop, - MACRO_MSG_SEQ, (guint) at_seq, - MACRO_VIMS, msg, - MACRO_VIMS_DESCR, (descr == NULL ? "Unknown": descr), - -1 ); - - ptr += msg_len; - - free(msg); - - consumed += (8 + 2 + 8 + 2 + 3); - consumed += msg_len; - } - - if(error){ - veejay_msg(0,"Unable to read all VIMS macros"); - } - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - - free(answer); - - info->uc.reload_hint[HINT_MACRO] = 0; -} - -static void reload_editlist_contents() -{ - GtkWidget *tree = glade_xml_get_widget_( info->main_window, "editlisttree"); - GtkListStore *store; - GtkTreeIter iter; - - gint i; - gint len = 0; - single_vims( VIMS_EDITLIST_LIST ); - gchar *eltext = recv_vims(6,&len); // msg len - gint offset = 0; - gint num_files=0; - reset_tree("editlisttree"); - _el_ref_reset(); - _el_entry_reset(); - _edl_reset(); - - if( eltext == NULL || len < 0 ) - { - return; - } - - el_constr *el; - - char *tmp = strndup( eltext + offset, 4 ); - if( sscanf( tmp,"%d",&num_files ) != 1 ) - { - free(tmp); - free(eltext); - return; - } - free(tmp); - - offset += 4; - - for( i = 0; i < num_files ; i ++ ) - { - int name_len = 0; - tmp = strndup( eltext + offset, 4 ); - if( sscanf( tmp,"%d", &name_len ) != 1 ) - { - free(tmp); - free(eltext); - return; - } - offset += 4; - free(tmp); - char *file = strndup( eltext + offset, name_len ); - - offset += name_len; - int iter = 0; - tmp = strndup( eltext + offset, 4 ); - if( sscanf( tmp, "%d", &iter ) != 1 ) - { - free(tmp); - free(eltext); - return; - } - free(tmp); - offset += 4; - - long num_frames = 0; - tmp = strndup( eltext + offset, 10 ); - if( sscanf(tmp, "%ld", &num_frames ) != 1 ) - { - free(tmp); - free(eltext); - return; - } - free(tmp); - offset += 10; - - int fourcc_len = 0; - tmp = strndup( eltext + offset, 2 ); - if( sscanf( tmp, "%d", &fourcc_len) != 1 ) - { - free(tmp); - free(eltext); - return; - } - offset += fourcc_len; - char *fourcc = strndup( eltext + offset - 1, fourcc_len ); - - el = _el_entry_new( iter, file, num_frames, fourcc ); - info->editlist = g_list_append( info->editlist, el ); - - offset += 2; - - free(file); - free(fourcc); - free(tmp); - } - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(tree )); - store = GTK_LIST_STORE(model); - - int total_frames = 0; // running total of frames - int row_num = 0; - while( offset < len ) - { - tmp = (char*)strndup( eltext + offset, (3*16) ); - offset += (3*16); - long nl=0, n1=0,n2=0; - - sscanf( tmp, "%016ld%016ld%016ld", - &nl,&n1,&n2 ); - - if(nl < 0 || nl >= num_files) - { - free(tmp); - free(eltext); - return; - } - int file_len = _el_get_nframes( nl ); - if(file_len <= 0) - { - free(tmp); - row_num++; - continue; - } - if(n1 < 0 ) - n1 = 0; - if(n2 >= file_len) - n2 = file_len; - - if(n2 <= n1 ) - { - free(tmp); - row_num++; - continue; - } - - info->elref = g_list_append( info->elref, _el_ref_new( row_num,(int) nl,n1,n2,total_frames ) ) ; - char *tmpname = _el_get_filename(nl); - gchar *fname = get_relative_path(tmpname); - gchar *timecode = format_selection_time( n1,n2 ); - gchar *gfourcc = _utf8str( _el_get_fourcc(nl) ); - gchar *timeline = format_selection_time( 0, total_frames ); - - gtk_list_store_append( store, &iter ); - gtk_list_store_set(store, &iter, - COLUMN_INT, (guint) row_num, - COLUMN_STRING0, timeline, - COLUMN_STRINGA, fname, - COLUMN_STRINGB, timecode, - COLUMN_STRINGC, gfourcc,-1 ); - - free(timecode); - g_free(gfourcc); - g_free(fname); - free(timeline); - free(tmp); - - total_frames = total_frames + (n2-n1) + 1; - row_num ++; - } - - gtk_tree_view_set_model( GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); - - free( eltext ); -} - -// execute after el change: -static void load_editlist_info() -{ - char norm; - float fps; - int values[10] = { 0 }; - long rate = 0; - long dum[2]; - char tmp[16]; - int len = 0; - - single_vims( VIMS_VIDEO_INFORMATION ); - gchar *res = recv_vims(3,&len); - if( len <= 0 || res==NULL) - { -#ifdef STRICT_CHECKING - assert(len > 0 && res != NULL); -#endif - return; - } - sscanf(res, "%d %d %d %c %f %d %d %ld %d %ld %ld %d %d", - &values[0], &values[1], &values[2], &norm,&fps, - &values[4], &values[5], &rate, &values[7], - &dum[0], &dum[1], &values[8], &use_vims_mcast); - snprintf( tmp, sizeof(tmp)-1, "%dx%d", values[0],values[1]); - - info->el.width = values[0]; - info->el.height = values[1]; - info->el.num_frames = dum[1]; - update_label_str( "label_el_wh", tmp ); - snprintf( tmp, sizeof(tmp)-1, "%s", - (norm == 'p' ? "PAL" : "NTSC" ) ); - update_label_str( "label_el_norm", tmp); - update_label_f( "label_el_fps", fps ); - - update_spin_value( "screenshot_width", info->el.width ); - update_spin_value( "screenshot_height", info->el.height ); - - info->el.fps = fps; -#ifdef STRICT_CHECKING - assert( info->el.fps > 0 ); -#endif - info->el.num_files = dum[0]; - snprintf( tmp, sizeof(tmp)-1, "%s", - ( values[2] == 0 ? "progressive" : (values[2] == 1 ? "top first" : "bottom first" ) ) ); - update_label_str( "label_el_inter", tmp ); - update_label_i( "label_el_arate", (int)rate, 0); - update_label_i( "label_el_achans", values[7], 0); - update_label_i( "label_el_abits", values[5], 0); - - if( values[4] == 0 ) - { - disable_widget( "button_5_4" ); - } - else - { - set_toggle_button( "button_5_4", values[8]); - enable_widget( "button_5_4" ); - } - - if( use_vims_mcast ) { - enable_widget( "toggle_multicast" ); - } - else { - disable_widget( "toggle_multicast" ); - } - - free(res); -} - -static void notebook_set_page(const char *name, int page) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); - return; - } - gtk_notebook_set_page( GTK_NOTEBOOK(w), page ); -} - -static void hide_widget(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); - return; - } - gtk_widget_hide(w); -} - -static void show_widget(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); - return; - } - gtk_widget_show(w); -} - - -#ifndef STRICT_CHECKING -static void disable_widget_(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); - return; - } - gtk_widget_set_sensitive_( GTK_WIDGET(w), FALSE ); -} - -static void enable_widget_(const char *name) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found",name); - return; - } - gtk_widget_set_sensitive_( GTK_WIDGET(w), TRUE ); -} -#else -static void disable_widget_(const char *name, const char *s, int line) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found, caller is %s:%d",name,s,line); - return; - } - gtk_widget_set_sensitive_( GTK_WIDGET(w), FALSE ); -} - -static void enable_widget_(const char *name, const char *s, int line) -{ - GtkWidget *w = glade_xml_get_widget_(info->main_window,name); - if(!w) - { - veejay_msg(VEEJAY_MSG_ERROR, "Widget '%s' not found, caller is %s:%d",name,s,line); - return; - } - gtk_widget_set_sensitive_( GTK_WIDGET(w), TRUE ); -} -#endif - - -static gchar *format_selection_time(int start, int end) -{ - double fps = (double) info->el.fps; - int pos = (end-start); - - return format_time( pos, fps ); -} - -static gboolean update_cpumeter_timeout( gpointer data ) -{ - gdouble ms = (gdouble)info->status_tokens[ELAPSED_TIME]; - gdouble fs = (gdouble)get_slider_val( "framerate" ); - gdouble lim = (1.0f/fs)*1000.0; - - if( ms < lim ) - { - update_label_str( "cpumeter", text_msg_[TEXT_REALTIME].text ); - } else - { - char text[32]; - sprintf(text, "%2.2f FPS", ( 1.0f / ms ) * 1000.0 ); - - update_label_str( "cpumeter", text ); - } - return TRUE; -} - -static gboolean update_cachemeter_timeout( gpointer data ) -{ - char text[32]; - gint v = info->status_tokens[TOTAL_MEM]; - sprintf(text,"%d MB cached",v); - update_label_str( "cachemeter", text ); - - return TRUE; -} - -static gboolean update_sample_record_timeout(gpointer data) -{ - if( info->uc.playmode == MODE_SAMPLE ) - { - GtkWidget *w; - if( is_button_toggled("seqactive" ) ) - { - w = glade_xml_get_widget_( info->main_window, - "rec_seq_progress" ); - } - else - { - w = glade_xml_get_widget_( info->main_window, - "samplerecord_progress" ); - - } - gdouble tf = info->status_tokens[STREAM_DURATION]; - gdouble cf = info->status_tokens[STREAM_RECORDED]; - - gdouble fraction = cf / tf; - - if(!info->status_tokens[STREAM_RECORDING] ) - { - gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(w), 0.0); - info->samplerecording = 0; - info->uc.recording[MODE_SAMPLE] = 0; - if(info->uc.render_record) - { - info->uc.render_record = 0; // render list has private edl - } - else - { - info->uc.reload_hint[HINT_EL] = 1; - } - return FALSE; - } - else - { - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(w), - fraction ); - } - } - return TRUE; -} - -static gboolean update_stream_record_timeout(gpointer data) -{ - GtkWidget *w = glade_xml_get_widget_( info->main_window, - "streamrecord_progress" ); - if( info->uc.playmode == MODE_STREAM ) - { - gdouble tf = info->status_tokens[STREAM_DURATION]; - gdouble cf = info->status_tokens[STREAM_RECORDED]; - - gdouble fraction = cf / tf; - if(!info->status_tokens[STREAM_RECORDING] ) - { - gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(w), 0.0); - info->streamrecording = 0; - info->uc.recording[MODE_STREAM] = 0; - info->uc.reload_hint[HINT_EL] = 1; // recording finished, reload edl - return FALSE; - } - else - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(w), - fraction ); - - } - return TRUE; -} - -static void init_recorder(int total_frames, gint mode) -{ - if(mode == MODE_STREAM) - { - info->streamrecording = g_timeout_add(300, update_stream_record_timeout, (gpointer*) info ); - } - if(mode == MODE_SAMPLE) - { - info->samplerecording = g_timeout_add(300, update_sample_record_timeout, (gpointer*) info ); - } - info->uc.recording[mode] = 1; -} - -static char theme_path[1024]; -static char glade_path[1024]; -static char theme_file[1024]; -static char theme_dir[1024]; -static int use_default_theme_ = 0; -static char **theme_list = NULL; -GtkSettings *theme_settings = NULL; - -static int select_f(const struct dirent *d ) -{ - if ((strcmp(d->d_name, ".") == 0) || - (strcmp(d->d_name, "..") == 0)) - return 0; - return 1; -} - -static void set_default_theme() -{ - snprintf( theme_path,sizeof(theme_path), "%s", RELOADED_DATADIR); - snprintf( theme_file,sizeof(theme_file), "%s/gveejay.rc", RELOADED_DATADIR ); - use_default_theme_ = 1; -} - -void find_user_themes(int theme) -{ - char *home = getenv("HOME"); - char location[1024]; - char path[1024]; - veejay_memset( theme_path, 0, sizeof(theme_path)); - veejay_memset( theme_file, 0, sizeof(theme_file)); - - theme_settings = gtk_settings_get_default(); - - if(!home) - { - if(theme) set_default_theme(); - return; - } - - if(!theme) - { - veejay_msg(VEEJAY_MSG_INFO,"Not loading veejay themes"); - return; - } - snprintf( path, sizeof(path),"%s/.veejay/theme/theme.config", home ); - - int sloppy = open( path,O_RDONLY ); - if( sloppy < 0 ) - { - veejay_msg(VEEJAY_MSG_WARNING, "Theme config '%s' not found, creating default.", path ); - veejay_msg(VEEJAY_MSG_WARNING, "Please setup symbolic links from %s/theme/", RELOADED_DATADIR ); - veejay_msg(VEEJAY_MSG_WARNING, " to %s/.veejay/theme/",home); - veejay_msg(VEEJAY_MSG_WARNING, "and set the name of the theme in theme.config" ); - set_default_theme(); - int wd= open( path, O_WRONLY ); - if(wd) - { - char text[7] = "Default"; - write(wd,text, sizeof(text)); - close(wd); - } - return; - } - - veejay_memset(location,0,sizeof(location)); - - if( read( sloppy, location, sizeof(location) ) <= 0 ) - strcat( location, "Default" ); - - close( sloppy ); - - if( strcmp( location, "Default" ) == 0 ) - { - veejay_msg(VEEJAY_MSG_INFO, "Using default theme."); - set_default_theme(); - } - else - { - snprintf(theme_path, sizeof(theme_path), "%s/.veejay/theme/%s", home, location ); - snprintf(theme_file, sizeof(theme_file), "%s/gveejay.rc", theme_path ); - use_default_theme_ = 0; - veejay_msg(VEEJAY_MSG_INFO, "RC-style '%s'", theme_file ); - veejay_msg(VEEJAY_MSG_INFO, "Theme location: '%s'", theme_path); - } - - struct dirent **files = NULL; - struct stat sbuf; - snprintf(theme_dir,sizeof(theme_dir), "%s/.veejay/theme/", home ); - - veejay_memset( &sbuf,0,sizeof(struct stat)); - - int n_files = scandir( theme_dir, &files, select_f, alphasort ); - if( n_files <= 0 ) - { - veejay_msg(VEEJAY_MSG_ERROR, "No themes found in %s", theme_dir ); - return; - } - - theme_list = (char**) vj_calloc(sizeof(char*) * (n_files+2) ); - int i,k=0; - for( i = 0; i < n_files; i ++ ) - { - char *name = files[i]->d_name; - if( name && strcmp(name, "Default" ) != 0) - { - snprintf(location, sizeof(location), "%s/%s", theme_dir, name ); - veejay_memset( &sbuf,0, sizeof(struct stat )); - if( lstat( location, &sbuf ) == 0 ) - { - if( S_ISLNK( sbuf.st_mode )) - { - veejay_memset( &sbuf,0,sizeof(struct stat)); - stat(location, &sbuf); - } - if( S_ISDIR( sbuf.st_mode )) - { - //@ test for gveejay.rc - struct stat inf; - gchar *test_file = g_strdup_printf( "%s/%s/gveejay.rc",theme_dir,name ); - if( stat( test_file, &inf) == 0 && (S_ISREG(inf.st_mode) || S_ISLNK( inf.st_mode))) - { - theme_list[k] = strdup( name ); - k++; - } - else - { - veejay_msg(VEEJAY_MSG_WARNING, "Cannot read %s/%s/gveejay.rc", theme_dir,name); - } - g_free(test_file); - } - } - } - } - - if( k == 0 ) - { - free(theme_list); - theme_list = NULL; - return; - } - - theme_list[ k ] = strdup("Default"); - for( k = 0; theme_list[k] != NULL ; k ++ ) - veejay_msg(VEEJAY_MSG_DEBUG, "Added Theme #%d %s", k, theme_list[k]); -} - -void gui_load_theme() -{ - gtk_rc_parse( theme_file ); -} - -char *get_glade_path() -{ - return glade_path; -} - -char *get_gveejay_dir() -{ - return RELOADED_DATADIR; -} - -void get_gd(char *buf, char *suf, const char *filename) -{ - const char *dir = RELOADED_DATADIR; - - if(filename !=NULL && suf != NULL) - sprintf(buf, "%s/%s/%s",dir,suf, filename ); - if(filename !=NULL && suf==NULL) - sprintf(buf, "%s/%s", dir, filename); - if(filename == NULL && suf != NULL) - sprintf(buf, "%s/%s/" , dir, suf); -} - -GdkPixbuf *vj_gdk_pixbuf_scale_simple( GdkPixbuf *src, int dw, int dh, GdkInterpType inter_type ) -{ - return gdk_pixbuf_scale_simple( src,dw,dh,inter_type ); -/* - GdkPixbuf *res = gdk_pixbuf_new( GDK_COLORSPACE_RGB, FALSE, 8, dw, dh ); -#ifdef STRICT_CHECKING - assert( GDK_IS_PIXBUF( res ) ); -#endif - uint8_t *res_out = gdk_pixbuf_get_pixels( res ); - uint8_t *src_in = gdk_pixbuf_get_pixels( src ); - uint32_t src_w = gdk_pixbuf_get_width( src ); - uint32_t src_h = gdk_pixbuf_get_height( src ); - int dst_w = gdk_pixbuf_get_width( res ); - int dst_h = gdk_pixbuf_get_height( res ); - VJFrame *src1 = yuv_rgb_template( src_in, src_w, src_h, PIX_FMT_BGR24 ); - VJFrame *dst1 = yuv_rgb_template( res_out, dst_w, dst_h, PIX_FMT_BGR24 ); - - veejay_msg(VEEJAY_MSG_ERROR, "%s: %dx%d -> %dx%d", __FUNCTION__, src_w,src_h,dst_w,dst_h ); - - yuv_convert_any_ac( src1,dst1, src1->format, dst1->format ); - - free(src1); - free(dst1); - - return res;*/ -} - -void gveejay_sleep( void *u ) -{ - struct timespec nsecsleep; -// nsecsleep.tv_nsec = 1000000 * 4; //@ too long - nsecsleep.tv_nsec = 500000; - nsecsleep.tv_sec = 0; - nanosleep( &nsecsleep, NULL ); -} - -int gveejay_time_to_sync( void *ptr ) -{ - vj_gui_t *ui = (vj_gui_t*) ptr; - struct timeval time_now; - gettimeofday( &time_now, 0 ); - - double diff = time_now.tv_sec - ui->time_last.tv_sec + - (time_now.tv_usec - ui->time_last.tv_usec ) * 1.e-6; - float fps = 0.0; - struct timespec nsecsleep; - - long nsec = 1600000; // some default sleep time in nanoseconds - - if ( ui->watch.state == STATE_PLAYING ) - { - fps = ui->el.fps; - float spvf = 1.0f / fps; - float ela = ( info->status_tokens[ELAPSED_TIME] / 1000.0 ); - float delay = spvf - ela; - // calculate time to sleep based on seconds per video frame - nsec = (delay * 1000000000); - - // if elapsed time > seconds per video frame or diff > delay, update the UI now - if( diff >= delay || ela >= spvf ) { - return 1; - } - } - else if ( ui->watch.state == STATE_STOPPED ) - { - reloaded_restart(); - } - - nsecsleep.tv_nsec = nsec; - nsecsleep.tv_sec = 0; - nanosleep( &nsecsleep, NULL ); - return 0; -} - -// skin 0: notebook18, page 3 -// skin 1: vjdeck , page 2 -int veejay_update_multitrack( void *ptr ) -{ - sync_info *s = multitrack_sync( info->mt ); - - if( s->status_list[s->master] == NULL ) { - info->watch.w_state = STATE_STOPPED; - free(s->status_list); - free(s->img_list ); - free(s->widths); - free(s->heights); - free(s); - return 1; - } - - GtkWidget *maintrack = glade_xml_get_widget( info->main_window, "imageA"); - int i; - GtkWidget *ww = glade_xml_get_widget_( info->main_window, crappy_design[ui_skin_].name ); - int deckpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(ww)); - -#ifdef STRICT_CHECKING - assert( s->status_list[s->master] != NULL ); -#endif - - int tmp = 0; - - for ( i = 0; i < STATUS_TOKENS; i ++ ) - { - tmp += s->status_list[s->master][i]; - info->status_tokens[i] = s->status_list[s->master][i]; - } - - if( tmp == 0 ) - { - free(s->status_list); - free(s->img_list ); - free(s->widths); - free(s->heights); - free(s); - return 0; - } - - info->status_lock = 1; - info->uc.playmode = info->status_tokens[ PLAY_MODE ]; - update_gui(); - info->prev_mode = info->status_tokens[ PLAY_MODE ]; - - int pm = info->status_tokens[PLAY_MODE]; -#ifdef STRICT_CHECKING - assert( pm >= 0 && pm < 4 ); -#endif - int *history = info->history_tokens[pm]; - - veejay_memcpy( history, info->status_tokens, sizeof(int) * STATUS_TOKENS ); - - for( i = 0; i < s->tracks ; i ++ ) - { - if( s->status_list[i] ) - { - update_multitrack_widgets( info->mt, s->status_list[i], i ); - - free(s->status_list[i]); - } - if( s->img_list[i] ) - { - if( i == s->master ) - { -#ifdef STRICT_CHECKING - assert( s->widths[i] > 0 ); - assert( s->heights[i] > 0 ); - assert( GDK_IS_PIXBUF( s->img_list[i] ) ); -#endif - if( gdk_pixbuf_get_height(s->img_list[i]) == preview_box_w_ && - gdk_pixbuf_get_width(s->img_list[i]) == preview_box_h_ ) - gtk_image_set_from_pixbuf_( GTK_IMAGE( maintrack ), s->img_list[i] ); - else - { - GdkPixbuf *result = vj_gdk_pixbuf_scale_simple( s->img_list[i],preview_box_w_,preview_box_h_, GDK_INTERP_NEAREST ); - if(result) - { - gtk_image_set_from_pixbuf_( GTK_IMAGE( maintrack ), result ); - g_object_unref(result); - } - } - vj_img_cb( s->img_list[i] ); - } - - if(deckpage == crappy_design[ui_skin_].page) - multitrack_update_sequence_image( info->mt, i, s->img_list[i] ); - - if( s->img_list[i] ) - g_object_unref( s->img_list[i] ); - } - } - - info->status_lock = 0; - - - free(s->status_list); - free(s->img_list ); - free(s->widths); - free(s->heights); - free(s); - - gettimeofday( &(info->time_last) , 0 ); - - - return 1; -} - -static void update_status_accessibility(int old_pm, int new_pm) -{ - int i; - - if( old_pm == new_pm ) - return; - - if( new_pm == MODE_STREAM ) - { - for(i=0; samplewidgets[i].name != NULL; i++) - disable_widget( samplewidgets[i].name); - for(i=0; plainwidgets[i].name != NULL; i++) - disable_widget( plainwidgets[i].name); - for(i=0; streamwidgets[i].name != NULL; i++) - enable_widget( streamwidgets[i].name); - } - - if( new_pm == MODE_SAMPLE ) - { - for(i=0; streamwidgets[i].name != NULL; i++) - disable_widget( streamwidgets[i].name); - for(i=0; plainwidgets[i].name != NULL; i++) - disable_widget( plainwidgets[i].name); - for(i=0; samplewidgets[i].name != NULL; i++) - enable_widget( samplewidgets[i].name); - } - - if( new_pm == MODE_PLAIN) - { - for(i=0; streamwidgets[i].name != NULL; i++) - disable_widget( streamwidgets[i].name); - for(i=0; samplewidgets[i].name != NULL; i++) - disable_widget( samplewidgets[i].name); - for(i=0; plainwidgets[i].name != NULL; i++) - enable_widget( plainwidgets[i].name); - } - - GtkWidget *n = glade_xml_get_widget_( info->main_window, "panels" ); - int page_needed = 0; - switch( new_pm ) - { - case MODE_SAMPLE: - page_needed =0 ; break; - case MODE_STREAM: - page_needed = 1; break; - case MODE_PLAIN: - page_needed = 2; break; - default: - break; - } - gtk_notebook_set_page( GTK_NOTEBOOK(n), page_needed ); -} - -static void set_pm_page_label(int sample_id, int type) -{ - gchar ostitle[100]; - gchar ftitle[100]; - switch(type) - { - case 0: - snprintf(ostitle, sizeof(ostitle), "Sample %d",sample_id);break; - case 1: - snprintf(ostitle, sizeof(ostitle), "Stream %d",sample_id);break; - default: - snprintf(ostitle,sizeof(ostitle), "Plain");break; - } - gchar *title = _utf8str(ostitle); - snprintf(ftitle,sizeof(ftitle), "%s", ostitle); - label_set_markup( "label_current_mode", ftitle); - update_label_str( "label_currentsource", title ); - g_free(title); -} - -static int reload_entry_tick_=0; -static void update_globalinfo(int *history, int pm, int last_pm) -{ - int i; - - if( last_pm != pm ) - update_status_accessibility( last_pm, pm); - - if( info->status_tokens[FEEDBACK] != history[FEEDBACK] ) { - if(info->status_tokens[FEEDBACK] == 1) { // when feedback is enabled - for( i = 0; non_feedback_widgets[i].name != NULL ; i ++ ) { - disable_widget( non_feedback_widgets[i].name ); - } - } - else { - for( i = 0; non_feedback_widgets[i].name != NULL ; i ++ ) { - enable_widget( non_feedback_widgets[i].name ); - } - } - set_toggle_button( "feedbackbutton", info->status_tokens[FEEDBACK]); - } - - if( info->status_tokens[MACRO] != history[MACRO] ) - { - switch(info->status_tokens[MACRO]) - { - case 1: - set_toggle_button( "macrorecord",1); break; - case 2: - set_toggle_button( "macroplay",1 ); break; - default: - set_toggle_button( "macrostop",1); break; - } - } - - if( pm != MODE_PLAIN ) - { - GtkWidget *ww = glade_xml_get_widget_( info->main_window, crappy_design[ui_skin_].name ); - int deckpage = gtk_notebook_get_current_page( GTK_NOTEBOOK( ww )); - if(deckpage != 1) - { - int rate = 1; - if( info->el.fps > 1 ) { - rate = info->el.fps; // less often - } - - if( (reload_entry_tick_ % rate)==0) - { - info->uc.reload_hint[HINT_ENTRY] = 1; - } - if( deckpage == 5 && info->status_tokens[STREAM_TYPE] == STREAM_GENERATOR){ - if( (reload_entry_tick_ % rate)==0) - { - info->uc.reload_hint[HINT_GENERATOR] = 1; - } - } - } - reload_entry_tick_++; - } - - if( info->status_tokens[CURRENT_ID] != history[CURRENT_ID] || last_pm != pm ) - { - info->uc.reload_hint[HINT_ENTRY] = 1; - info->uc.reload_hint[HINT_CHAIN] = 1; - info->uc.reload_hint[HINT_MACRO] = 1; - - if( pm != MODE_STREAM ) - info->uc.reload_hint[HINT_EL] = 1; - if( pm != MODE_PLAIN ) - info->uc.reload_hint[HINT_KF] = 1; - - if( pm == MODE_SAMPLE ) - timeline_set_selection( info->tl, TRUE ); - else - timeline_set_selection( info->tl, FALSE ); - - select_slot( info->status_tokens[PLAY_MODE] ); - - -#ifdef STRICT_CHECKING - if( pm != MODE_PLAIN ) - assert( info->selected_slot != NULL ); -#endif - } - - if( info->status_tokens[TOTAL_SLOTS] != history[TOTAL_SLOTS] ) - { - int n_samples = 0; - int n_streams = 0; - - if( pm == MODE_PLAIN || pm == MODE_SAMPLE ) { - n_samples = info->status_tokens[SAMPLE_COUNT]; - n_streams = info->status_tokens[SAMPLE_INV_COUNT]; - } - else { - n_streams = info->status_tokens[SAMPLE_COUNT]; - n_samples = info->status_tokens[SAMPLE_INV_COUNT]; - } - - if( (info->uc.real_num_samples > 0 && n_samples > info->uc.real_num_samples ) || - (info->uc.real_num_streams > 0 && n_streams > info->uc.real_num_streams) ) - { - info->uc.reload_hint[HINT_SLIST] = 1; - } - else { - info->uc.reload_hint[HINT_SLIST] = 2; - } - - info->uc.real_num_samples = n_samples; - info->uc.real_num_streams = n_streams; - } - - if( info->status_tokens[SAMPLE_LOOP_STAT_STOP] != history[SAMPLE_LOOP_STAT_STOP] ) { - update_label_i( "label_loop_stat_stop", info->status_tokens[SAMPLE_LOOP_STAT_STOP],0); - } - if( info->status_tokens[SAMPLE_LOOP_STAT ] != history[SAMPLE_LOOP_STAT] ) { - update_label_i( "label_loop_stats", info->status_tokens[SAMPLE_LOOP_STAT], 0); - } - - - if( info->status_tokens[SEQ_ACT] != history[SEQ_ACT] ) - { - info->uc.reload_hint[HINT_SEQ_ACT] = 1; - } - if( info->status_tokens[SEQ_CUR] != history[SEQ_CUR] ) - { - int in = info->status_tokens[SEQ_CUR]; - if( in < MAX_SEQUENCES ) - { - set_toggle_button( "seqactive" , 1 ); - indicate_sequence( FALSE, info->sequencer_view->gui_slot[ info->sequence_playing ] ); - info->sequence_playing = in; - indicate_sequence( TRUE, info->sequencer_view->gui_slot[ info->sequence_playing ] ); - } - else - { - indicate_sequence( FALSE, info->sequencer_view->gui_slot[ info->sequence_playing ] ); - set_toggle_button( "seqactive" , 0 ); - } - } - - total_frames_ = (pm == MODE_STREAM ? info->status_tokens[SAMPLE_MARKER_END] : info->status_tokens[TOTAL_FRAMES] ); - gint history_frames_ = (pm == MODE_STREAM ? history[SAMPLE_MARKER_END] : history[TOTAL_FRAMES] ); - gint current_frame_ = info->status_tokens[FRAME_NUM]; - - if( total_frames_ != history_frames_ || total_frames_ != (int) timeline_get_length(TIMELINE_SELECTION(info->tl))) - { - char *time = format_time( total_frames_,(double) info->el.fps ); - if( pm == MODE_STREAM ) - { - update_spin_value( "stream_length", info->status_tokens[SAMPLE_MARKER_END] ); - update_label_str( "stream_length_label", time ); - } - update_spin_range("button_fadedur", 0, total_frames_, ( total_frames_ > 25 ? 25 : total_frames_-1 ) ); - update_label_i( "label_totframes", total_frames_, 1 ); - update_label_str( "label_samplelength",time); - if( pm == MODE_PLAIN ) - { - for( i = 0; i < 3; i ++) - if(info->selection[i] > total_frames_ ) info->selection[i] = total_frames_; - update_spin_range("button_el_selstart", - 0, - total_frames_, - info->selection[0]); - update_spin_range("button_el_selend", - 0, - total_frames_, - info->selection[1]); - update_spin_range("button_el_selpaste", - 0, - total_frames_, - info->selection[2]); - } - update_label_i( "label_totframes", total_frames_, 1 ); - update_label_str( "label_totaltime", time ); - if(pm == MODE_SAMPLE) - update_label_str( "sample_length_label", time ); - else - update_label_str( "sample_length_label", "0:00:00:00" ); - - timeline_set_length( info->tl, - (gdouble) total_frames_ , current_frame_); - - if( pm != MODE_STREAM ) - info->uc.reload_hint[HINT_EL] = 1; - - free(time); - } - - info->status_frame = info->status_tokens[FRAME_NUM]; - timeline_set_pos( info->tl, (gdouble) info->status_frame ); - char *current_time_ = format_time( info->status_frame, (double) info->el.fps ); - update_label_i( "label_curframe", info->status_frame ,1 ); - update_label_str( "label_curtime", current_time_ ); - update_label_str( "label_sampleposition", current_time_); - free(current_time_); - - if( pm == MODE_SAMPLE ) - update_label_i( "label_samplepos", - info->status_frame , 1); - else - update_label_i( "label_samplepos" , 0 , 1 ); - - if( history[CURRENT_ID] != info->status_tokens[CURRENT_ID] ) - { - if(pm == MODE_SAMPLE || pm == MODE_STREAM) - update_label_i( "label_currentid", info->status_tokens[CURRENT_ID] ,0); - } - - if( history[STREAM_RECORDING] != info->status_tokens[STREAM_RECORDING] ) - { - if(pm == MODE_SAMPLE || pm == MODE_STREAM) - { - if( history[CURRENT_ID] == info->status_tokens[CURRENT_ID] ) - info->uc.reload_hint[HINT_RECORDING] = 1; - if( info->status_tokens[STREAM_RECORDING]) - vj_msg(VEEJAY_MSG_INFO, "Veejay is recording"); - else - vj_msg(VEEJAY_MSG_INFO, "Recording has stopped"); - } - } - - if( pm == MODE_PLAIN ) - { - if( history[SAMPLE_SPEED] != info->status_tokens[SAMPLE_SPEED] ) - { - int plainspeed = info->status_tokens[SAMPLE_SPEED]; - - update_slider_value( "speed_slider", plainspeed, 0); - if( plainspeed < 0 ) - info->play_direction = -1; - else - info->play_direction = 1; - if( plainspeed < 0 ) plainspeed *= -1; - if( plainspeed == 0 ) - { - update_label_str( "playhint", "Paused"); - } else - { - update_label_str( "playhint", "Playing"); - } - } - } - - if( pm == MODE_STREAM ) - { - if( info->status_tokens[STREAM_TYPE] == STREAM_VIDEO4LINUX ) - { - if(info->uc.cali_duration > 0 ) - { - GtkWidget *tb = glade_xml_get_widget_( info->main_window, "cali_take_button"); - info->uc.cali_duration--; - vj_msg(VEEJAY_MSG_INFO, - "Calibrate step %d of %d", - info->uc.cali_duration, - info->uc.cali_stage); - if(info->uc.cali_duration == 0) - { - info->uc.cali_stage ++; //@ cali_stage = 1, done capturing black frames - - switch(info->uc.cali_stage) - { - case 1: //@ capturing black frames - update_label_str( "current_step_label", - "Please take an image of a uniformly lit area in placed in front of your lens."); - gtk_button_set_label( GTK_BUTTON(tb), "Take White Frames"); - break; - case 2: - case 3: - update_label_str( "current_step_label", - "Image calibrated. You may need to adjust brightness."); - enable_widget( "cali_save_button"); - break; - default: - update_label_str( "current_step_label","Image calibrated. You may need to adjust brightness."); - gtk_button_set_label( GTK_BUTTON(tb), "Take Black Frames"); - veejay_msg(VEEJAY_MSG_ERROR, "Warning, mem leak if not reset first."); - break; - } - veejay_msg(VEEJAY_MSG_ERROR, "Label update for case %d", info->uc.cali_stage); - - if(info->uc.cali_stage >= 2 ) - { - info->uc.cali_stage = 0; - } - } - } - } - } - - update_current_slot(history, pm, last_pm); -// info->uc.playmode = pm; -} - -static void process_reload_hints(int *history, int pm) -{ - int *entry_tokens = &(info->uc.entry_tokens[0]); - - if( pm == MODE_STREAM ) - { - if(info->uc.reload_hint[HINT_V4L]) - load_v4l_info(); - - if( info->uc.reload_hint[HINT_RGBSOLID]) - update_colorselection(); - } - - if( info->uc.reload_hint[HINT_EL] ) - { - load_editlist_info(); - reload_editlist_contents(); - } - - if( info->uc.reload_hint[HINT_SLIST] ) - { - gboolean reload_sl = FALSE; - if( info->uc.reload_hint[HINT_SLIST] == 2 ) { - info->uc.expected_num_samples = -1; - info->uc.expected_num_streams = -1; - reload_sl = TRUE; - } - - load_samplelist_info( reload_sl ); - } - - if( info->uc.reload_hint[HINT_SEQ_ACT] == 1 ) - { - load_sequence_list(); - } - - if( info->uc.reload_hint[HINT_RECORDING] == 1 && pm != MODE_PLAIN) - { - if(info->status_tokens[STREAM_RECORDING]) - { - if(!info->uc.recording[pm]) init_recorder( info->status_tokens[STREAM_DURATION], pm ); - } - } - - if(info->uc.reload_hint[HINT_BUNDLES] == 1 ) - reload_bundles(); - - if( info->selected_slot && info->selected_slot->sample_id == info->status_tokens[CURRENT_ID] && - info->selected_slot->sample_type == 0 && pm == MODE_PLAIN) - { - if( history[SAMPLE_FX] != info->status_tokens[SAMPLE_FX]) - { - //also for stream (index is equivalent) - if(pm == MODE_SAMPLE) - set_toggle_button( "check_samplefx", - info->status_tokens[SAMPLE_FX]); - if(pm == MODE_STREAM) - set_toggle_button( "check_streamfx", - info->status_tokens[SAMPLE_FX]); - } - } - if( info->uc.reload_hint[HINT_CHAIN] == 1 ) - { - load_effectchain_info(); - } - - info->parameter_lock = 1; - if(info->uc.reload_hint[HINT_ENTRY] == 1 && pm != MODE_PLAIN) - { - gint np = 0; - gint i; - /* update effect description */ - info->uc.reload_hint[HINT_KF] = 1; - if( entry_tokens[ENTRY_FXID] == 0) - { - put_text( "entry_effectname" ,"" ); - // disable fx widgets but keep "button_fx_entry" enabled - disable_widget( "frame_fxtree2" ); - disable_widget( "entry_effectname"); - disable_widget( "button_entry_toggle"); - disable_widget( "tree_sources"); - disable_widget( "rgbkey"); - set_toggle_button( "button_entry_toggle", FALSE ); - set_toggle_button( "transition_enabled", FALSE); - update_spin_value( "transition_loop",0); - disable_widget( "transition_enabled"); - disable_widget( "transition_loop"); - disable_widget( "subrender_entry_toggle"); - update_label_str( "value_friendlyname", FX_PARAMETER_VALUE_DEFAULT_HINT ); - } - else - { - put_text( "entry_effectname", _effect_get_description( entry_tokens[ENTRY_FXID] )); - // enable fx widgets - enable_widget( "frame_fxtree2"); - enable_widget( "entry_effectname"); - enable_widget( "button_entry_toggle"); - enable_widget( "tree_sources"); - enable_widget( "rgbkey" ); - enable_widget( "transition_enabled" ); - enable_widget( "transition_loop" ); - enable_widget( "subrender_entry_toggle"); - set_toggle_button( "button_entry_toggle", entry_tokens[ENTRY_VIDEO_ENABLED] ); - set_toggle_button( "subrender_entry_toggle", entry_tokens[ENTRY_SUBRENDER_ENTRY]); - np = _effect_get_np( entry_tokens[ENTRY_FXID] ); - for( i = 0; i < np ; i ++ ) - { - enable_widget( slider_names_[i].text ); - enable_widget( param_incs_[i].text ); - enable_widget( param_decs_[i].text ); - enable_widget( param_kfs_[i].text ); - - gchar *tt1 = _utf8str(_effect_get_param_description(entry_tokens[ENTRY_FXID],i)); - set_tooltip( slider_names_[i].text, tt1 ); - gtk_label_set_text(GTK_LABEL(glade_xml_get_widget_(info->main_window, - param_names_[i].text)), - tt1); - - gint min,max,value; - value = entry_tokens[ENTRY_PARAMSET + i]; - if( _effect_get_minmax( entry_tokens[ENTRY_FXID], &min,&max, i )) - { - update_slider_range( slider_names_[i].text,min,max, value, 0); - } - set_tooltip( param_kfs_[i].text, tt1 ); - g_free(tt1); - } - } - update_spin_value( "button_fx_entry", info->uc.selected_chain_entry); - update_spin_value( "transition_loop", entry_tokens[ENTRY_TRANSITION_LOOP] ); - set_toggle_button( "transition_enabled", entry_tokens[ENTRY_TRANSITION_ENABLED] ); - - for( i = np; i < MAX_UI_PARAMETERS; i ++ ) - { - gint min = 0, max = 1, value = 0; - update_slider_range( slider_names_[i].text, min,max, value, 0 ); - disable_widget( slider_names_[i].text ); - disable_widget( param_incs_[i].text ); - disable_widget( param_decs_[i].text ); - disable_widget( param_kfs_[i].text ); - set_tooltip( param_kfs_[i].text, NULL ); - set_tooltip( slider_names_[i].text, NULL ); - gtk_label_set_text(GTK_LABEL (glade_xml_get_widget_(info->main_window, - param_names_[i].text)), - NULL); - update_slider_range( slider_names_[i].text, min,max, value, 0 ); - } - - GtkTreeView *view = GTK_TREE_VIEW(glade_xml_get_widget_(info->main_window, "tree_chain")); - GtkTreeModel *model = gtk_tree_view_get_model( view ); - - gtk_tree_model_foreach( model, chain_update_row, (gpointer*) info ); - - /* upate effect tree chain selection */ - { - GtkTreeSelection *selection = gtk_tree_view_get_selection( view ); - GtkTreeIter iter; - - GtkTreePath *path = gtk_tree_path_new_from_indices(info->uc.selected_chain_entry, -1); - gtk_tree_model_get_iter(model, &iter, path); - - gtk_tree_selection_select_iter (selection, &iter); - } - } - info->parameter_lock = 0; - - if( info->uc.reload_hint[HINT_GENERATOR]) - { - load_generator_info(); - } - - /* Curve needs update (start/end changed, effect id changed */ - if ( info->uc.reload_hint[HINT_KF] ) { - vj_kf_refresh(); - } - - if( beta__ && info->uc.reload_hint[HINT_HISTORY] ) { - reload_srt(); - } - - if( info->uc.reload_hint[HINT_MACRO] ) { - reload_macros(); - } - - veejay_memset( info->uc.reload_hint, 0, sizeof(info->uc.reload_hint )); -} - -void update_gui() -{ - int pm = info->status_tokens[PLAY_MODE]; - int last_pm = info->prev_mode; - - int *history = NULL; - - if( last_pm < 0 ) - history = info->history_tokens[0]; - else - history = info->history_tokens[ last_pm ]; - - if( info->uc.randplayer && pm != last_pm ) - { - info->uc.randplayer = 0; - set_toggle_button( "samplerand", 0 ); - } - - if( pm == MODE_PATTERN && last_pm != pm) - { - if(!info->uc.randplayer ) - { - info->uc.randplayer = 1; - set_toggle_button( "samplerand", 1 ); - } - info->status_tokens[PLAY_MODE] = MODE_SAMPLE; - pm = MODE_SAMPLE; - } - - update_globalinfo(history, pm, last_pm); - - process_reload_hints(history, pm); - on_vims_messenger(); - - update_cpumeter_timeout(NULL); - update_cachemeter_timeout(NULL); -} - -/* -void vj_fork_or_connect_veejay(char *configfile) -{ - char *files = get_text( "entry_filename" ); - int port = get_nums( "button_portnum" ); - gchar **args; - int n_args = 0; - char port_str[15]; - char config[512]; - char tmp[20]; - int i = 0; - - int arglen = vims_verbosity ? 15 :14 ; - arglen += (info->config.deinter); - arglen += (info->config.osc); - arglen += (info->config.vims); - args = g_new ( gchar *, arglen ); - - args[0] = g_strdup("veejay"); - - sprintf(port_str, "-p%d", port); - args[1] = g_strdup( port_str ); - - if(configfile) - sprintf(config, "-l%s", configfile); - - if( config_file_status == 0 ) - { - if(files == NULL || strlen(files)<= 0) - args[2] = g_strdup("-d"); - else - args[2] = g_strdup(files); -} - else - { - args[2] = g_strdup( config ); - } - - args[3] = g_strdup( "-O5" ); - sprintf(tmp, "-W%d", info->config.w ); - args[4] = g_strdup( tmp ); - sprintf(tmp, "-H%d", info->config.h ); - args[5] = g_strdup( tmp ); - sprintf(tmp, "-R%g", info->config.fps ); - args[6] = g_strdup( tmp ); - sprintf(tmp, "-N%d", info->config.norm ); - args[7] = g_strdup( tmp ); - sprintf(tmp, "-Y%d", info->config.pixel_format ); - args[8] = g_strdup( tmp ); - sprintf(tmp, "-m%d", info->config.sampling ); - args[9] = g_strdup( tmp ); - sprintf(tmp, "-c%d", info->config.sync ); - args[10] = g_strdup( tmp ); - sprintf(tmp, "-t%d", info->config.timer == 0 ? 0 : 2); - args[11] = g_strdup( tmp ); - sprintf(tmp, "-r%d", info->config.audio_rate ); - args[12] = g_strdup( tmp ); - args[13] = NULL; - int k=13; - while( k <= (arglen-1)) - args[k++] = NULL; - - if( vims_verbosity ) - args[13] = g_strdup( "-v" ); - - if( info->config.deinter ) - { - if(args[13]==NULL) - args[13] = g_strdup( "-I"); - else args[14] = g_strdup( "-I" ); - } - if( info->config.osc) - { - gchar osc_token[20]; - sprintf(osc_token , "-M %s", info->config.mcast_osc ); - int f = 13; - while(args[f] != NULL ) f ++; - args[f] = g_strdup( osc_token ); -} - if( info->config.vims) - { - gchar vims_token[20]; - sprintf(vims_token, "-V %s", info->config.mcast_vims ); - int f = 13; - while(args[f] != NULL) f++; - args[f] = g_strdup( vims_token ); - } - if( info->watch.state == STATE_STOPPED) - { - info->watch.state = STATE_CONNECT; - info->run_state = RUN_STATE_REMOTE; - } - - for( i = 0; i < n_args; i ++) - g_free(args[i]); -} -*/ - -void vj_gui_free() -{ - if(info) - { - int i; - if(info->client) - vj_client_free(info->client); - - for( i = 0; i < 4; i ++ ) - { - if(info->history_tokens[i]) - free(info->history_tokens[i]); - } - free(info); - } - info = NULL; - - vpf( fx_list_ ); - vpf( bankport_ ); -} - -void vj_gui_style_setup() -{ - if(!info) return; - info->color_map = gdk_colormap_get_system(); -} - -void vj_gui_theme_setup(int default_theme) -{ - gtk_rc_parse(theme_file); -} - -void send_refresh_signal(void) -{ - GdkEventClient event; - event.type = GDK_CLIENT_EVENT; - event.send_event = TRUE; - event.window = NULL; - event.message_type = gdk_atom_intern("_GTK_READ_RCFILES", FALSE); - event.data_format = 8; - gdk_event_send_clientmessage_toall((GdkEvent *)&event); -} - -gint gui_client_event_signal(GtkWidget *widget, - GdkEventClient *event, - void *data) -{ - static GdkAtom atom_rcfiles = GDK_NONE; - if(!atom_rcfiles) - atom_rcfiles = gdk_atom_intern("_GTK_READ_RCFILES", FALSE); - - if(event->message_type == atom_rcfiles) - { - gtk_rc_parse( theme_file ); - - gtk_widget_reset_rc_styles(glade_xml_get_widget_(info->main_window, - "gveejay_window") - ); - - gtk_rc_reparse_all(); - - veejay_msg(VEEJAY_MSG_WARNING, - "Loaded GTK theme %s (catched _GTK_READ_RCFILES)", theme_file ); - veejay_msg(VEEJAY_MSG_INFO, - "If the new theme is using an engine that modifies the internal structure"); - veejay_msg(VEEJAY_MSG_INFO, - "of the widgets, there is no way for me to undo those changes and display"); - veejay_msg(VEEJAY_MSG_INFO, - "%s correctly", theme_file ); - return TRUE; - } - return FALSE; -} - -void vj_gui_set_debug_level(int level, int n_tracks, int pw, int ph ) -{ - veejay_set_debug_level( level ); - - vims_verbosity = level; - - if( !mt_set_max_tracks(n_tracks) ) { - mt_set_max_tracks(5); - } -} - -int vj_gui_get_preview_priority(void) -{ - return 1; -} - -void default_bank_values(int *col, int *row ) -{ - int nsc = 2; - int nsy = 6; - - if( ui_skin_ == 1 ) { - nsc = 5; - nsy = 4; - } - - if( *col == 0 && *row == 0 ) - { - NUM_SAMPLES_PER_COL = nsc; - NUM_SAMPLES_PER_ROW = nsy; - } - else - { - NUM_SAMPLES_PER_ROW = *row; - NUM_SAMPLES_PER_COL = *col; - } - NUM_SAMPLES_PER_PAGE = NUM_SAMPLES_PER_COL * NUM_SAMPLES_PER_ROW; - NUM_BANKS = (4096 / NUM_SAMPLES_PER_PAGE ); - - veejay_msg(VEEJAY_MSG_INFO, "Sample bank layout is %d rows by %d columns", NUM_SAMPLES_PER_ROW,NUM_SAMPLES_PER_COL ); -} - -void set_skin(int skin, int invert) -{ - ui_skin_ = skin; - timeline_theme_colors( invert ); -} - -int vj_gui_sleep_time( void ) -{ - float f = (float) info->status_tokens[ELAPSED_TIME]; - float t = info->el.fps; - - if( t <= 0.0 || t>= 200.0 ) - t = 25.0; - float n = (1.0 / t) * 1000.0f; - - if( f < n ) - return (int)( n - f ); - return (int) n; -} - -int vj_img_cb(GdkPixbuf *img ) -{ - int i; - if( !info->selected_slot || !info->selected_gui_slot ) { - return 0; - } - - int sample_id = info->status_tokens[ CURRENT_ID ]; - int sample_type = info->status_tokens[ PLAY_MODE ]; - - if( info->selected_slot->sample_type != sample_type || info->selected_slot->sample_id != sample_id ) { - return 0; - } - if( sample_type == MODE_SAMPLE || sample_type == MODE_STREAM ) - { - sample_slot_t *slot = find_slot_by_sample( sample_id, sample_type ); - sample_gui_slot_t *gui_slot = find_gui_slot_by_sample( sample_id, sample_type ); - - if( slot && gui_slot ) - { - slot->pixbuf = vj_gdk_pixbuf_scale_simple(img, - info->image_dimensions[0],info->image_dimensions[1], GDK_INTERP_NEAREST); - if(slot->pixbuf) { - gtk_image_set_from_pixbuf_( GTK_IMAGE( gui_slot->image ), slot->pixbuf ); - g_object_unref( slot->pixbuf ); - slot->pixbuf = NULL; - } - } - } - - for( i = 0; i < info->sequence_view->envelope_size; i ++ ) - { - sequence_gui_slot_t *g = info->sequence_view->gui_slot[i]; - sample_slot_t *s = info->selected_slot; - if(g->sample_id == info->selected_slot->sample_id && g->sample_type == info->selected_slot->sample_type && s->pixbuf) - { - g->pixbuf_ref = vj_gdk_pixbuf_scale_simple(img, - info->sequence_view->w, - info->sequence_view->h, - GDK_INTERP_NEAREST ); - if( g->pixbuf_ref) - { - gtk_image_set_from_pixbuf_( GTK_IMAGE( g->image ), g->pixbuf_ref ); - g_object_unref( g->pixbuf_ref ); - g->pixbuf_ref = NULL; - } - } - } - return 1; -} - -void vj_gui_cb(int state, char *hostname, int port_num) -{ - info->watch.state = STATE_RECONNECT; - put_text( "entry_hostname", hostname ); - update_spin_value( "button_portnum", port_num ); - - //@ clear status - int i; - for( i = 0; i < 4; i ++ ) { - int *h = info->history_tokens[i]; - veejay_memset( h, 0, sizeof(int) * STATUS_TOKENS ); - } -} - -void vj_gui_setup_defaults( vj_gui_t *gui ) -{ - gui->config.w = MAX_PREVIEW_WIDTH; - gui->config.h = MAX_PREVIEW_HEIGHT; - gui->config.fps = 25.0; - gui->config.sampling = 1; - gui->config.pixel_format = 1; - gui->config.sync = 1; - gui->config.timer = 1; - gui->config.deinter = 1; - gui->config.norm = 0; - gui->config.audio_rate = 0; - gui->config.osc = 0; - gui->config.vims = 0; - gui->config.mcast_osc = g_strdup( "224.0.0.32" ); - gui->config.mcast_vims = g_strdup( "224.0.0.33" ); -} - -static void theme_response( gchar *string ) -{ - char theme_config[1024]; - snprintf(theme_config,sizeof(theme_config), "%stheme.config", theme_dir ); - snprintf(theme_file,sizeof(theme_file), "%s/%s/gveejay.rc", theme_dir, string ); - int fd = open( theme_config , O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU); - - if(fd > 0) - { - veejay_msg(VEEJAY_MSG_DEBUG, "Setting up theme %s in %s", string, theme_file ); - write( fd, string, strlen(string)); - close(fd); - vj_msg(VEEJAY_MSG_INFO, "Restart GveejayReloaded for changes to take effect"); - if( prompt_dialog("Restart GveejayReloaded", "For changes to take effect, you should restart now" ) == GTK_RESPONSE_ACCEPT) - { - info->watch.w_state = STATE_DISCONNECT; - running_g_ = 0; - restart_ = 1; - } - } - else - { - vj_msg(VEEJAY_MSG_ERROR, "Unable to write to %s", theme_file ); - } - -} -static void reloaded_sighandler(int x) -{ - veejay_msg(VEEJAY_MSG_WARNING, "Caught signal %x", x); - - if( x == SIGPIPE ) { - reloaded_schedule_restart(); - } - else if ( x == SIGINT || x == SIGABRT ) { - veejay_msg(VEEJAY_MSG_WARNING, "Stopping reloaded"); - exit(0); - } else if ( x == SIGSEGV ) { - veejay_msg(VEEJAY_MSG_ERROR, "Found Gremlins in your system."); - veejay_msg(VEEJAY_MSG_WARNING, "No fresh ale found in the fridge."); - veejay_msg(VEEJAY_MSG_INFO, "Running with sub-atomic precision..."); - veejay_msg(VEEJAY_MSG_ERROR, "Bugs compromised the system."); - exit(0); - } -} - -static void veejay_backtrace_handler(int n , siginfo_t *si, void *ptr) -{ - switch(n) { - case SIGSEGV: - veejay_msg(VEEJAY_MSG_ERROR,"Found Gremlins in your system."); //@ Suggested by Matthijs - veejay_msg(VEEJAY_MSG_WARNING, "No fresh ale found in the fridge."); //@ - veejay_msg(VEEJAY_MSG_INFO, "Running with sub-atomic precision..."); //@ - - veejay_print_backtrace(); - break; - default: - veejay_print_backtrace(); - break; - } - - //@ Bye - veejay_msg(VEEJAY_MSG_ERROR, "Bugs compromised the system."); - report_bug(); - exit(EX_SOFTWARE); -} - -static void sigsegfault_handler(void) { - struct sigaction sigst; - sigst.sa_sigaction = veejay_backtrace_handler; - sigemptyset(&sigst.sa_mask); - sigaddset(&sigst.sa_mask, SIGSEGV ); - sigst.sa_flags = SA_SIGINFO | SA_ONESHOT; - if( sigaction(SIGSEGV, &sigst, NULL) == - 1 ) - veejay_msg(VEEJAY_MSG_ERROR,"%s", strerror(errno)); -} - -void register_signals() -{ - signal( SIGINT, reloaded_sighandler ); - signal( SIGPIPE, reloaded_sighandler ); - signal( SIGQUIT, reloaded_sighandler ); -// signal( SIGSEGV, reloaded_sighandler ); - signal( SIGABRT, reloaded_sighandler ); - - sigsegfault_handler(); -} - -void vj_gui_wipe() -{ - int i; - veejay_memset( info->status_tokens, 0, sizeof(int) * STATUS_TOKENS ); - veejay_memset( info->uc.entry_tokens,0, sizeof(int) * ENTRY_LAST); - for( i = 0 ; i < 4; i ++ ) - { - veejay_memset(info->history_tokens[i],0, sizeof(int) * (STATUS_TOKENS+1)); - } - - reset_samplebank(); -} - -GtkWidget *new_bank_pad(GtkWidget *box) -{ - GtkWidget *pad = info->sample_bank_pad = gtk_notebook_new(); - gtk_notebook_set_tab_pos( GTK_NOTEBOOK(pad), GTK_POS_BOTTOM ); - gtk_notebook_set_show_tabs( GTK_NOTEBOOK(pad ), FALSE ); - gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET(pad), TRUE, TRUE, 0); - return pad; -} - -gboolean slider_scroll_event( GtkWidget *widget, GdkEventScroll *ev, gpointer user_data) -{ - gint i = GPOINTER_TO_INT(user_data); - if(ev->direction == GDK_SCROLL_UP ) { - PARAM_CHANGED( i, 1, slider_names_[i].text ); - } else if (ev->direction == GDK_SCROLL_DOWN ) { - PARAM_CHANGED( i, -1, slider_names_[i].text ); - } - return FALSE; -} - -gboolean speed_scroll_event( GtkWidget *widget, GdkEventScroll *ev, gpointer user_data) -{ - int plainspeed = info->status_tokens[SAMPLE_SPEED]; - if(ev->direction == GDK_SCROLL_UP ) { - plainspeed = plainspeed + 1; - } else if (ev->direction == GDK_SCROLL_DOWN ) { - plainspeed = plainspeed - 1; - } - update_slider_value( "speed_slider", plainspeed, 0 ); - return FALSE; -} - -gboolean slow_scroll_event( GtkWidget *widget, GdkEventScroll *ev, gpointer user_data) -{ - int plainspeed = get_slider_val("slow_slider"); - if(ev->direction == GDK_SCROLL_DOWN ) { - plainspeed = plainspeed - 1; - } else if (ev->direction == GDK_SCROLL_UP ) { - plainspeed = plainspeed + 1; - } - if(plainspeed < 1 ) - plainspeed = 1; - update_slider_value("slow_slider",plainspeed,0); - vj_msg(VEEJAY_MSG_INFO, "Slow video to %2.2f fps", - info->el.fps / (float) plainspeed ); - return FALSE; -} - -void vj_gui_set_geom( int x, int y ) -{ - geo_pos_[0] = x; - geo_pos_[1] = y; -} - -void vj_event_list_free() -{ - int i; - for( i = 0; i < VIMS_MAX; i ++ ) { - if( vj_event_list[i].format ) - free(vj_event_list[i].format); - if( vj_event_list[i].descr ) - free(vj_event_list[i].descr); - if( vj_event_list[i].args ) - free(vj_event_list[i].args); - } - - veejay_memset( vj_event_list, 0, sizeof(vj_event_list)); -} - -void vj_gui_init(char *glade_file, - int launcher, - char *hostname, - int port_num, - int use_threads, - int load_midi, - char *midi_file, - int beta, - int auto_connect) -{ - int i; - char text[100]; - vj_gui_t *gui = (vj_gui_t*)vj_calloc(sizeof(vj_gui_t)); - if(!gui) - { - return; - } - snprintf( glade_path, sizeof(glade_path), "%s/%s",RELOADED_DATADIR,glade_file); - - veejay_msg(VEEJAY_MSG_DEBUG, "Loading glade file %s", glade_path); - - veejay_memset( gui->status_tokens, 0, sizeof(int) * STATUS_TOKENS ); - veejay_memset( gui->sample, 0, 2 ); - veejay_memset( gui->selection, 0, 3 ); - veejay_memset( &(gui->uc), 0, sizeof(veejay_user_ctrl_t)); - gui->uc.selected_parameter_id = -1; - veejay_memset( gui->uc.entry_tokens,0, sizeof(int) * ENTRY_LAST); - gui->prev_mode = -1; - veejay_memset( &(gui->el), 0, sizeof(veejay_el_t)); - gui->sample_banks = (sample_bank_t**) vj_calloc(sizeof(sample_bank_t*) * NUM_BANKS ); - - for( i = 0 ; i < 4; i ++ ) - { - gui->history_tokens[i] = (int*) vj_calloc(sizeof(int) * (STATUS_TOKENS+1)); - } - - slider_names_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - param_names_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - param_incs_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - param_decs_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - param_kfs_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - gen_decs_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - gen_incs_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - gen_names_ = (widget_name_t*) vj_calloc(sizeof(widget_name_t) * MAX_UI_PARAMETERS ); - - for( i = 0; i < MAX_UI_PARAMETERS; i ++ ) - { - snprintf(text,sizeof(text),"slider_p%d" , i ); - slider_names_[i].text = strdup( text ); - - snprintf(text,sizeof(text),"label_p%d" , i ); - param_names_[i].text = strdup( text ); - - snprintf(text,sizeof(text),"inc_p%d", i ); - param_incs_[i].text = strdup( text ); - - snprintf(text,sizeof(text), "dec_p%d", i ); - param_decs_[i].text = strdup( text ); - - snprintf(text,sizeof(text), "kf_p%d", i ); - param_kfs_[i].text = strdup( text ); - } - - for( i = 0; i < GENERATOR_PARAMS; i ++ ) - { - snprintf(text,sizeof(text), "slider_g%d",i); - gen_names_[i].text = strdup( text ); - - snprintf(text,sizeof(text), "dec_g%d", i); - gen_decs_[i].text = strdup(text); - - snprintf(text,sizeof(text), "inc_g%d", i ); - gen_incs_[i].text = strdup(text); - } - - gui->uc.reload_force_avoid = FALSE; - - veejay_memset( vj_event_list, 0, sizeof(vj_event_list)); - - gui->client = NULL; - gui->main_window = glade_xml_new(glade_path,NULL,NULL); - if(gui->main_window == NULL) - { - free(gui); - veejay_msg(VEEJAY_MSG_ERROR, "Cannot find '%s'", glade_path ); - return; - } - info = gui; - - //set "connection" button has default in veejay connection dialog - gtk_entry_set_activates_default(GTK_ENTRY(glade_xml_get_widget_( info->main_window, - "entry_hostname" )), - TRUE); - gtk_entry_set_activates_default(GTK_ENTRY(glade_xml_get_widget_( info->main_window, - "button_portnum" )), - TRUE); - GtkWidget *vj_button = glade_xml_get_widget_( info->main_window, "button_veejay" ); - gtk_widget_set_can_default(vj_button,TRUE); - GtkWidget *connection_dial = glade_xml_get_widget_( info->main_window, - "veejay_connection"); - gtk_window_set_default(GTK_WINDOW(connection_dial), vj_button); - - glade_xml_signal_autoconnect( gui->main_window ); - GtkWidget *frame = glade_xml_get_widget_( info->main_window, "markerframe" ); - info->tl = timeline_new(); - - set_tooltip_by_widget(info->tl, tooltips[TOOLTIP_TIMELINE].text ); - - g_signal_connect( info->tl, "pos_changed", - (GCallback) on_timeline_value_changed, NULL ); - g_signal_connect( info->tl, "in_point_changed", - (GCallback) on_timeline_in_point_changed, NULL ); - g_signal_connect( info->tl, "out_point_changed", - (GCallback) on_timeline_out_point_changed, NULL ); - g_signal_connect( info->tl, "bind_toggled", - (GCallback) on_timeline_bind_toggled, NULL ); - g_signal_connect( info->tl, "cleared", - (GCallback) on_timeline_cleared, NULL ); - - bankport_ = vpn( VEVO_ANONYMOUS_PORT ); - - gtk_widget_show(frame); - gtk_container_add( GTK_CONTAINER(frame), info->tl ); - gtk_widget_show(info->tl); - - GtkWidget *mainw = glade_xml_get_widget_(info->main_window,"gveejay_window" ); - -#ifdef STRICT_CHECKING - debug_spinboxes(); -#endif - - snprintf(text, sizeof(text), "Reloaded - version %s",VERSION); - gtk_label_set_text(GTK_LABEL(glade_xml_get_widget_(info->main_window, - "build_revision")), - text); - - g_signal_connect_after( GTK_OBJECT(mainw), "client_event", - GTK_SIGNAL_FUNC( G_CALLBACK(gui_client_event_signal) ), NULL ); - - g_signal_connect( GTK_OBJECT(mainw), "destroy", - G_CALLBACK( gveejay_quit ), - NULL ); - g_signal_connect( GTK_OBJECT(mainw), "delete-event", - G_CALLBACK( gveejay_quit ), - NULL ); - - GtkWidget *box = glade_xml_get_widget_( info->main_window, "sample_bank_hbox" ); - info->sample_bank_pad = new_bank_pad( box ); - - //QuickSelect slots - create_ref_slots( 10 ); - - //SEQ - create_sequencer_slots( SEQUENCER_COL, SEQUENCER_ROW ); - - veejay_memset( vj_event_list, 0, sizeof( vj_event_list )); - veejay_memset( vims_keys_list, 0, sizeof( vims_keys_list) ); - - gtk_widget_show( info->sample_bank_pad ); - - info->elref = NULL; - info->effect_info = NULL; - info->devlist = NULL; - info->chalist = NULL; - info->editlist = NULL; - - vj_gui_setup_defaults(gui); - setup_vimslist(); - setup_effectchain_info(); - setup_effectlist_info(); - setup_editlist_info(); - setup_samplelist_info(); - setup_v4l_devices(); - setup_macros(); - setup_colorselection(); - setup_rgbkey(); - setup_bundles(); - setup_server_files(); - setup_generators(); - - text_defaults(); - - GtkWidget *fgb = glade_xml_get_widget(info->main_window, "boxtext" ); - GtkWidget *bgb = glade_xml_get_widget(info->main_window, "boxbg" ); - GtkWidget *rb = glade_xml_get_widget(info->main_window, "boxred" ); - GtkWidget *gb = glade_xml_get_widget(info->main_window, "boxgreen" ); - GtkWidget *bb = glade_xml_get_widget(info->main_window, "boxblue" ); - GtkWidget *lnb = glade_xml_get_widget(info->main_window,"boxln" ); - g_signal_connect(G_OBJECT( bgb ), "expose_event", - G_CALLBACK( boxbg_expose_event ), NULL); - g_signal_connect(G_OBJECT( fgb ), "expose_event", - G_CALLBACK( boxfg_expose_event ), NULL); - g_signal_connect(G_OBJECT( lnb ), "expose_event", - G_CALLBACK( boxln_expose_event ), NULL); - g_signal_connect(G_OBJECT( rb ), "expose_event", - G_CALLBACK( boxred_expose_event ), NULL); - g_signal_connect(G_OBJECT( gb ), "expose_event", - G_CALLBACK( boxgreen_expose_event ), NULL); - g_signal_connect(G_OBJECT( bb ), "expose_event", - G_CALLBACK( boxblue_expose_event ), NULL); - - set_toggle_button( "button_252", vims_verbosity ); - - int pw = MAX_PREVIEW_WIDTH; - int ph = MAX_PREVIEW_HEIGHT; - - GtkWidget *img_wid = glade_xml_get_widget_( info->main_window, "imageA"); - - gui->mt = multitrack_new((void(*)(int,char*,int)) vj_gui_cb, - NULL, - glade_xml_get_widget_( info->main_window, - "gveejay_window" ), - glade_xml_get_widget_( info->main_window, - "mt_box" ), - glade_xml_get_widget_( info->main_window, - "statusbar") , - glade_xml_get_widget_( info->main_window, - "previewtoggle"), - pw, - ph, - img_wid, - (void*) gui, - use_threads); - - veejay_memset( &info->watch, 0, sizeof(watchdog_t)); - info->watch.state = STATE_WAIT_FOR_USER; // - - //connect client at first available server - //and try to connect multitrack to all existing server - if( auto_connect ) - { - for( i = DEFAULT_PORT_NUM; i < 9999; i+= 1000 ) - { - if (multrack_audoadd( gui->mt, "localhost", i) != -1 && auto_connect) - { - update_spin_value( "button_portnum", i ); - info->watch.state = STATE_CONNECT; - auto_connect = 0; - } - } - } - - if( theme_list ) - { - GtkWidget *menu = gtk_menu_new(); - for( i = 0; theme_list[i] != NULL ; i ++ ) - { - GtkWidget *mi = gtk_menu_item_new_with_label( theme_list[i] ); - gtk_menu_shell_append( GTK_MENU_SHELL( menu ), mi ); - - g_signal_connect_swapped(G_OBJECT(mi), "activate", - G_CALLBACK(theme_response), - (gpointer) g_strdup( theme_list[i] )); - - gtk_widget_show( mi ); - } - - GtkWidget *root_menu = gtk_menu_item_new_with_label( "Themes" ); - gtk_menu_item_set_submenu( GTK_MENU_ITEM( root_menu ), menu ); - - GtkWidget *menu_bar = glade_xml_get_widget_(info->main_window, "menubar1"); - gtk_menu_shell_append( GTK_MENU_SHELL(menu_bar), root_menu); - - gtk_widget_show( root_menu ); - - } - veejay_memset(&(info->watch.p_time),0,sizeof(struct timeval)); - info->midi = vj_midi_new( info->main_window ); - gettimeofday( &(info->time_last) , 0 ); - - GtkWidget *srtbox = glade_xml_get_widget( info->main_window, "combobox_textsrt"); - set_tooltip_by_widget( srtbox, tooltips[TOOLTIP_SRTSELECT].text); - - if(!beta) - { - GtkWidget *ww = glade_xml_get_widget_(info->main_window, - crappy_design[ui_skin_].name ); - GtkWidget *srtpad = gtk_notebook_get_nth_page(GTK_NOTEBOOK(ww),4); - gtk_widget_hide(srtpad); - } - - beta__ = beta; - - update_spin_range( "spin_framedelay", 1, MAX_SLOW, 0); - update_spin_range( "spin_samplespeed", -25,25,1); - update_slider_range( "speed_slider", -25,25,1,0); - update_slider_range( "slow_slider",1,MAX_SLOW,1,0); - - - if( load_midi ) - vj_midi_load(info->midi,midi_file); - - for( i = 0 ; i < MAX_UI_PARAMETERS; i ++ ) - { - GtkWidget *slider = glade_xml_get_widget( info->main_window, slider_names_[i].text ); - g_signal_connect( GTK_OBJECT(slider), "scroll-event", G_CALLBACK(slider_scroll_event), (gpointer) castIntToGpointer(i) ); - update_slider_range( slider_names_[i].text, 0,1,0,0); - } - - g_signal_connect(GTK_OBJECT( glade_xml_get_widget(info->main_window, "speed_slider") ), "scroll-event", - G_CALLBACK(speed_scroll_event), NULL ); - g_signal_connect(GTK_OBJECT( glade_xml_get_widget(info->main_window, "slow_slider") ), "scroll-event", - G_CALLBACK(slow_scroll_event), NULL ); - - GtkWidget *lw = glade_xml_get_widget_( info->main_window, "veejay_connection"); - - if( geo_pos_[0] >= 0 && geo_pos_[1] >= 0 ) - gtk_window_move( GTK_WINDOW(lw), geo_pos_[0], geo_pos_[1] ); - - char *have_snoop = getenv( "RELOADED_KEY_SNOOP" ); - if( have_snoop == NULL ) - { - veejay_msg(VEEJAY_MSG_DEBUG, "Use setenv RELOADED_KEY_SNOOP=1 to mirror veejay server keyb layout" ); - }else - { - use_key_snoop = atoi(have_snoop); - if( use_key_snoop < 0 || use_key_snoop > 1 ) - use_key_snoop = 0; - } -} - -void vj_gui_preview(void) -{ - gint w = 0; - gint h = 0; - gint tmp_w = info->el.width; - gint tmp_h = info->el.height; - - multitrack_get_preview_dimensions( tmp_w,tmp_h, &w, &h ); - - update_spin_value( "priout_width", w ); - update_spin_value( "priout_height", h ); - - update_spin_range( "preview_width", 16, w, w); - update_spin_range( "preview_height", 16, h, h ); - - update_spin_incr( "preview_width", 16, 0 ); - update_spin_incr( "preview_height", 16, 0 ); - update_spin_incr( "priout_width", 16,0 ); - update_spin_incr( "priout_height", 16, 0 ); - - info->image_w = w; - info->image_h = h; - - GdkRectangle result; - widget_get_rect_in_screen( - glade_xml_get_widget_(info->main_window, "quickselect"), - &result - ); - gdouble ratio = (gdouble) h / (gdouble) w; - - gint image_width = 32; - gint image_height = 32 *ratio; - - info->sequence_view->w = image_width; - info->sequence_view->h = image_height; - gtk_widget_set_size_request_(info->quick_select, image_width, image_height ); -} - -void gveejay_preview( int p ) -{ - user_preview = p; -} - -int gveejay_user_preview() -{ - return user_preview; -} - -int vj_gui_reconnect(char *hostname,char *group_name, int port_num) -{ - int k = 0; - for( k = 0; k < 4; k ++ ) - veejay_memset( info->history_tokens[k] , 0, (sizeof(int) * STATUS_TOKENS) ); - - veejay_memset( info->status_tokens, 0, sizeof(int) * STATUS_TOKENS ); - - if(!hostname && !group_name ) - { - veejay_msg(VEEJAY_MSG_ERROR,"Invalid host/group name given"); - return 0; - } - - if(info->client ) - { - error_dialog("Warning", "You should disconnect first"); - return 0; - } - - if(!info->client) - { - info->client = vj_client_alloc(0,0,0); - if(!info->client) - { - return 0; - } - } - - if(!vj_client_connect( info->client, hostname, group_name, port_num ) ) - { - if(info->client) - vj_client_free(info->client); - info->client = NULL; - return 0; - } - - vj_msg(VEEJAY_MSG_INFO, - "New connection with Veejay running on %s port %d", - (group_name == NULL ? hostname : group_name), port_num ); - - veejay_msg(VEEJAY_MSG_INFO, - "Connection established with %s:%d (Track 0)", - hostname,port_num); - - info->status_lock = 1; - info->parameter_lock = 1; - info->uc.expected_num_samples = -1; - info->uc.expected_num_streams = -1; - - single_vims( VIMS_PROMOTION ); - - load_editlist_info(); - - update_slider_value( "framerate", info->el.fps, 0 ); - - veejay_memset( vims_keys_list, 0 , sizeof(vims_keys_list)); - veejay_memset( vj_event_list, 0, sizeof( vj_event_list)); - - load_effectlist_info(); - reload_vimslist(); - reload_editlist_contents(); - reload_bundles(); - - set_feedback_status(); - - GtkWidget *w = glade_xml_get_widget_(info->main_window, "gveejay_window" ); - gtk_widget_show( w ); - - if( geo_pos_[0] >= 0 && geo_pos_[1] >= 0 ) - gtk_window_move(GTK_WINDOW(w), geo_pos_[0], geo_pos_[1] ); - - /* int speed = info->status_tokens[SAMPLE_SPEED]; - if( speed < 0 ) - info->play_direction = -1; else info->play_direction=1; - if( speed < 0 ) speed *= -1;*/ - update_label_str( "label_hostnamex", (hostname == NULL ? group_name: hostname ) ); - update_label_i( "label_portx",port_num,0); - - info->status_lock = 0; - info->parameter_lock = 0; - - multitrack_configure(info->mt, - info->el.fps, - info->el.width, - info->el.height, - &preview_box_w_, - &preview_box_h_ ); - - vj_gui_preview(); - - info->uc.reload_hint[HINT_SLIST] = 2; - info->uc.reload_hint[HINT_CHAIN] = 1; - info->uc.reload_hint[HINT_ENTRY] = 1; - info->uc.reload_hint[HINT_SEQ_ACT] = 1; - info->uc.reload_hint[HINT_HISTORY] = 1; - - return 1; -} - -static void veejay_stop_connecting(vj_gui_t *gui) -{ - GtkWidget *veejay_conncection_window; - - if(!gui->sensitive) - vj_gui_enable(); - - info->launch_sensitive = 0; - - veejay_conncection_window = glade_xml_get_widget(info->main_window, "veejay_connection"); - gtk_widget_hide(veejay_conncection_window); - GtkWidget *mw = glade_xml_get_widget_(info->main_window,"gveejay_window" ); - - gtk_widget_show( mw ); - if( geo_pos_[0] >= 0 && geo_pos_[1] >= 0 ) - gtk_window_move( GTK_WINDOW(mw), geo_pos_[0], geo_pos_[1] ); -} - -void reloaded_launcher(char *hostname, int port_num) -{ - info->watch.state = STATE_RECONNECT; - put_text( "entry_hostname", hostname ); - update_spin_value( "button_portnum", port_num ); -} - -void reloaded_show_launcher() -{ - info->watch.state = STATE_WAIT_FOR_USER; - info->launch_sensitive = TRUE; - - GtkWidget *mw = glade_xml_get_widget_(info->main_window,"veejay_connection" ); - gtk_widget_show(mw); -} - -void reloaded_schedule_restart() -{ - info->watch.state = STATE_STOPPED; -} - -void reloaded_restart() -{ - GtkWidget *mw = glade_xml_get_widget_(info->main_window,"gveejay_window" ); - // disable and hide mainwindow - if(info->sensitive) - vj_gui_disable(); - gtk_widget_hide( mw ); - - vj_gui_wipe(); - - multitrack_disconnect(info->mt); -/* - //@ bring up the launcher window - gtk_widget_show( cd ); -// info->watch.state = STATE_CONNECT; - info->watch.state = STATE_WAIT_FOR_USER; - info->launch_sensitive = TRUE; - - veejay_msg(VEEJAY_MSG_INFO, "Ready to make a connection to a veejay server");*/ -} - -gboolean is_alive( int *do_sync ) -{ - void *data = info; - vj_gui_t *gui = (vj_gui_t*) data; - - if( gui->watch.state == STATE_PLAYING ) - { - *do_sync = 1; - return TRUE; - } - - if( gui->watch.state == STATE_RECONNECT ) - { - vj_gui_disconnect(); - gui->watch.state = STATE_CONNECT; - } - - if(gui->watch.state == STATE_DISCONNECT ) - { - gui->watch.state = STATE_STOPPED; - vj_gui_disconnect(); - return FALSE; - } - - if( gui->watch.state == STATE_STOPPED ) - { - if(info->client) - vj_gui_disconnect(); - vj_gui_wipe(); - // reloaded_schedule_restart(); - reloaded_restart(); - // *do_sync = 0; - gui->watch.state = STATE_WAIT_FOR_USER; - if( info->launch_sensitive == 0 ) { - return FALSE; - } - - return TRUE; - // return FALSE; - } - - if( gui->watch.state == STATE_QUIT ) - { - if(info->client) vj_gui_disconnect(); - return FALSE; - } - - if( gui->watch.state == STATE_CONNECT ) - { - char *remote; - int port; - remote = get_text( "entry_hostname" ); - port = get_nums( "button_portnum" ); - - veejay_msg(VEEJAY_MSG_INFO, "Connecting to %s: %d", remote,port ); - if(!vj_gui_reconnect( remote, NULL, port )) - { - reloaded_schedule_restart(); - } - else - { - info->watch.state = STATE_PLAYING; - - if( use_key_snoop ) { - -#ifdef HAVE_SDL - info->key_id = gtk_key_snooper_install( key_handler , NULL); -#endif - } - multrack_audoadd( info->mt, remote, port ); - multitrack_set_quality( info->mt, 1 ); - - *do_sync = 1; - if( user_preview ) { - set_toggle_button( "previewtoggle", 1 ); - } - veejay_stop_connecting(gui); - } - } - - if( gui->watch.state == STATE_WAIT_FOR_USER ) - { - *do_sync = 0; - gveejay_sleep(NULL); - } - - return TRUE; -} - -void vj_gui_disconnect() -{ - if(info->key_id) - gtk_key_snooper_remove( info->key_id ); - free_samplebank(); - - if(info->client) - { - vj_client_close(info->client); - vj_client_free(info->client); - info->client = NULL; - } - /* reset all trees */ -// reset_tree("tree_effectlist"); -// reset_tree("tree_effectmixlist"); - - reset_fxtree(); - reset_tree("tree_chain"); - reset_tree("tree_sources"); - reset_tree("editlisttree"); - - multitrack_close_track(info->mt); - - reloaded_schedule_restart(); - info->key_id = 0; -} - -void vj_gui_disable() -{ - int i = 0; - - while( uiwidgets[i].name != NULL ) - { - disable_widget( uiwidgets[i].name ); - i++; - } - - info->sensitive = 0; -} - -void vj_gui_enable() -{ - int i =0; - while( uiwidgets[i].name != NULL) - { - enable_widget( uiwidgets[i].name ); - i++; - } - info->sensitive = 1; -} - -static void widget_get_rect_in_screen (GtkWidget *widget, GdkRectangle *r) -{ -//GdkRectangle extents; -//GdkWindow *window; -//window = GDK_WINDOW(gtk_widget_get_parent_window(widget)); /* getting parent window */ -//gdk_window_get_root_origin(window, &x,&y); /* parent's left-top screen coordinates */ -//gdk_drawable_get_size(window, &w,&h); /* parent's width and height */ -//gdk_window_get_frame_extents(window, &extents); /* parent's extents (including decorations) */ -//r->x = x + (extents.width-w)/2 + widget->allocation.x; /* calculating x (assuming: left border size == right border size) */ -//r->y = y + (extents.height-h)-(extents.width-w)/2 + widget->allocation.y; /* calculating y (assuming: left border size == right border size == bottom border size) */ - r->x = 0; - r->y = 0; - r->width = widget->allocation.width; - r->height = widget->allocation.height; -} - -/* -------------------------------------------------------------------------------------------------------------------------- - * Function that creates the sample-bank initially, just add the widget to the GUI and create references for the - * sample_banks-structure so that the widgets are easiely accessable - * The GUI componenets are in sample_bank[i]->gui_slot[j] - * - -------------------------------------------------------------------------------------------------------------------------- */ - -int power_of_2(int x) -{ - int p = 1; - while( p < x ) - p <<= 1; - return p; -} - -/* Add a page to the notebook and initialize slots */ -static int add_bank( gint bank_num ) -{ - gchar str_label[5]; - gchar frame_label[20]; - sprintf(str_label, "%d", bank_num ); - sprintf(frame_label, "Slots %d to %d", - (bank_num * NUM_SAMPLES_PER_PAGE), (bank_num * NUM_SAMPLES_PER_PAGE) + NUM_SAMPLES_PER_PAGE ); - - setup_samplebank( NUM_SAMPLES_PER_COL, NUM_SAMPLES_PER_ROW, info->sample_bank_pad, &(info->image_dimensions[0]), - &(info->image_dimensions[1]) ); - - info->sample_banks[bank_num] = (sample_bank_t*) vj_calloc(sizeof(sample_bank_t)); - info->sample_banks[bank_num]->bank_number = bank_num; - sample_slot_t **slot = (sample_slot_t**) vj_calloc(sizeof(sample_slot_t*) * NUM_SAMPLES_PER_PAGE); - sample_gui_slot_t **gui_slot = (sample_gui_slot_t**) vj_calloc(sizeof(sample_gui_slot_t*) * NUM_SAMPLES_PER_PAGE ); - - int j; - for(j = 0;j < NUM_SAMPLES_PER_PAGE; j ++ ) - { - slot[j] = (sample_slot_t*) vj_calloc(sizeof(sample_slot_t) ); - gui_slot[j] = (sample_gui_slot_t*) vj_calloc(sizeof(sample_gui_slot_t)); -// slot[j]->rawdata = (guchar*) vj_calloc(sizeof(guchar) * 3 * 128 * 128 ); - slot[j]->slot_number = j; - slot[j]->sample_id = -1; - slot[j]->sample_type = -1; - } - - info->sample_banks[bank_num]->slot = slot; - info->sample_banks[bank_num]->gui_slot = gui_slot; - - GtkWidget *sb = info->sample_bank_pad; - GtkWidget *frame = gtk_frame_new(frame_label); - GtkWidget *label = gtk_label_new( str_label ); - - gtk_container_set_border_width( GTK_CONTAINER( frame), 0 ); - - gtk_widget_show(frame); - info->sample_banks[bank_num]->page_num = gtk_notebook_append_page(GTK_NOTEBOOK(info->sample_bank_pad), frame, label); - - GtkWidget *table = gtk_table_new( NUM_SAMPLES_PER_COL, NUM_SAMPLES_PER_ROW, TRUE ); - gtk_container_add( GTK_CONTAINER(frame), table ); - gtk_widget_show(table); - gtk_widget_show(sb ); - - gint col, row; - for( col = 0; col < NUM_SAMPLES_PER_COL; col ++ ) - { - for( row = 0; row < NUM_SAMPLES_PER_ROW; row ++ ) - { - int slot_nr = col * NUM_SAMPLES_PER_ROW + row; - if(slot_nr < NUM_SAMPLES_PER_PAGE) - { - create_slot( bank_num, slot_nr ,info->image_dimensions[0], info->image_dimensions[1]); - sample_gui_slot_t *gui_slot = info->sample_banks[bank_num]->gui_slot[slot_nr]; - gtk_table_attach_defaults ( GTK_TABLE(table), gui_slot->event_box, row, row+1, col, col+1); - set_tooltip_by_widget( gui_slot->frame, tooltips[TOOLTIP_SAMPLESLOT].text); - } - } - } - - if( !info->normal ) - { - info->normal = widget_get_fg( GTK_WIDGET(info->sample_banks[bank_num]->gui_slot[0]->frame) ); - } - return bank_num; -} - -void reset_samplebank(void) -{ - info->selection_slot = NULL; - info->selection_gui_slot = NULL; - info->selected_slot = NULL; - info->selected_gui_slot = NULL; - int i,j; - for( i = 0; i < NUM_BANKS; i ++ ) - { - if(info->sample_banks[i]) - { - for(j = 0; j < NUM_SAMPLES_PER_PAGE ; j ++ ) - { - sample_slot_t *slot = info->sample_banks[i]->slot[j]; - - if(slot->sample_id) - { - if(slot->title) free(slot->title); - if(slot->timecode) free(slot->timecode); - if(slot->pixbuf) { - g_object_unref( slot->pixbuf ); - slot->pixbuf = NULL; - } - slot->title = NULL; - slot->timecode = NULL; - slot->sample_id = 0; - slot->sample_type = 0; - } - update_sample_slot_data( i,j, slot->sample_id,slot->sample_type,slot->title,slot->timecode); - } - } - } -} - -void free_samplebank(void) -{ - int i,j; - while( gtk_notebook_get_n_pages(GTK_NOTEBOOK(info->sample_bank_pad) ) > 0 ) - gtk_notebook_remove_page( GTK_NOTEBOOK(info->sample_bank_pad), -1 ); - - info->selection_slot = NULL; - info->selection_gui_slot = NULL; - info->selected_slot = NULL; - info->selected_gui_slot = NULL; - - for( i = 0; i < NUM_BANKS; i ++ ) - { - if(info->sample_banks[i]) - { - /* free memory in use */ - for(j = 0; j < NUM_SAMPLES_PER_PAGE ; j ++ ) - { - sample_slot_t *slot = info->sample_banks[i]->slot[j]; - sample_gui_slot_t *gslot = info->sample_banks[i]->gui_slot[j]; - if(slot->title) free(slot->title); - if(slot->timecode) free(slot->timecode); - if(slot->pixbuf) { - g_object_unref(slot->pixbuf); - slot->pixbuf = NULL; - } - free(slot); - free(gslot); - info->sample_banks[i]->slot[j] = NULL; - info->sample_banks[i]->gui_slot[j] = NULL; - } - free(info->sample_banks[i]); - info->sample_banks[i] = NULL; - } - } - veejay_memset( info->sample_banks, 0, sizeof(sample_bank_t*) * NUM_BANKS ); -} - -void setup_samplebank(gint num_cols, gint num_rows, GtkWidget *pad, int *idx, int *idy) -{ - GdkRectangle result; - widget_get_rect_in_screen( - pad, - &result - ); - - gint image_width = result.width / num_rows; - gint image_height = result.height / num_cols; - - if( image_width > 64 && image_height > 64 ) { - image_width -= 4; /* some spacing between slot border and image */ - image_height -= 4; - } - - float ratio = (float) info->el.height / (float) info->el.width; - - float w,h; - if( ratio <= 1.0f ) { - h = ratio * image_width; - w = image_width; - } - else { - h = image_height; - w = image_width / ratio; - } - - *idx = (int)w; - *idy = (int)h; -} - -/* -------------------------------------------------------------------------------------------------------------------------- - * Function that resets the visualized sample-informations of the samplebanks, it does this by going through all - * slots that allready used and resets them (which means cleaning the shown infos as well as set them free for further use) - * with_selection should be TRUE when the actual selection of a sample-bank-slot should also be reseted - * (what is for instance necessary when vj reconnected) - -------------------------------------------------------------------------------------------------------------------------- */ -static int bank_exists( int bank_page, int slot_num ) -{ - if(!info->sample_banks[bank_page]) - return 0; - return 1; -} - -static sample_slot_t *find_slot_by_sample( int sample_id , int sample_type ) -{ - char key[32]; - sprintf(key, "S%04d%02d",sample_id, sample_type ); - - void *slot = NULL; - vevo_property_get( bankport_, key, 0,&slot ); - if(!slot) - return NULL; - return (sample_slot_t*) slot; -} - -static sample_gui_slot_t *find_gui_slot_by_sample( int sample_id , int sample_type ) -{ - char key[32]; - sprintf(key, "G%04d%02d",sample_id, sample_type ); - - void *slot = NULL; - vevo_property_get( bankport_, key, 0,&slot ); - if(!slot) - return NULL; - return (sample_gui_slot_t*) slot; -} - -static int find_bank_by_sample(int sample_id, int sample_type, int *slot ) -{ - int i,j; - - for( i = 0; i < NUM_BANKS; i ++ ) - { - if(!info->sample_banks[i]) - { - continue; - } - - for( j = 0; j < NUM_SAMPLES_PER_PAGE; j ++ ) - { - if(info->sample_banks[i]->slot[j]->sample_id == sample_id && - info->sample_banks[i]->slot[j]->sample_type == sample_type) - { - *slot = j; -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_DEBUG, "using existing slot (%d,%d)", - sample_id,sample_type ); -#endif - return i; - } - } - } - - for( i = 0; i < NUM_BANKS; i ++ ) - { - if(!info->sample_banks[i]) - { - *slot = 0; - return i; - } - - for( j = 0; j < NUM_SAMPLES_PER_PAGE; j ++ ) - { - if ( info->sample_banks[i]->slot[j]->sample_id <= 0) - { - *slot = j; -#ifdef STRICT_CHECKING - veejay_msg(VEEJAY_MSG_DEBUG, "using new slot (%d,%d)", - sample_id,sample_type); -#endif - return i; - } - } - } - - *slot = -1; - return -1; -} - -static int find_bank(int page_nr) -{ - int i = 0; - for ( i = 0 ; i < NUM_BANKS; i ++ ) - if( info->sample_banks[i] && info->sample_banks[i]->page_num == page_nr ) - { - return info->sample_banks[i]->bank_number; - } - return -1; -} - -static void set_activation_of_cache_slot_in_samplebank(sequence_gui_slot_t *gui_slot, - gboolean activate) -{ - if (activate) - { - gtk_frame_set_shadow_type(GTK_FRAME(gui_slot->frame),GTK_SHADOW_IN); - } - else { - gtk_frame_set_shadow_type(GTK_FRAME(gui_slot->frame),GTK_SHADOW_ETCHED_IN); - } -} - -static gboolean on_sequencerslot_activated_by_mouse(GtkWidget *widget, - GdkEventButton *event, - gpointer user_data) -{ - gint slot_nr = GPOINTER_TO_INT(user_data); - - if( event->type == GDK_BUTTON_PRESS && (event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK ) - { - multi_vims( VIMS_SEQUENCE_DEL, "%d", slot_nr ); - gtk_label_set_text(GTK_LABEL(info->sequencer_view->gui_slot[slot_nr]->image), - NULL ); - } - else - if(event->type == GDK_BUTTON_PRESS) - { - int id = info->status_tokens[CURRENT_ID]; - int type=info->status_tokens[STREAM_TYPE]; - if( info->selection_slot ) { - id = info->selection_slot->sample_id; - type=info->selection_slot->sample_type; - } - multi_vims( VIMS_SEQUENCE_ADD, "%d %d %d", slot_nr, id,type ); - info->uc.reload_hint[HINT_SEQ_ACT] = 1; - } - return FALSE; -} - -static gboolean on_cacheslot_activated_by_mouse (GtkWidget *widget, GdkEventButton *event, gpointer user_data) -{ - gint slot_nr = -1; - if(info->status_tokens[PLAY_MODE] == MODE_PLAIN ) - return FALSE; - - slot_nr =GPOINTER_TO_INT( user_data ); - set_activation_of_cache_slot_in_samplebank( info->sequence_view->gui_slot[slot_nr], FALSE ); - - if( event->type == GDK_BUTTON_PRESS && (event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK ) - { - info->current_sequence_slot = slot_nr; - sample_slot_t *s = info->selected_slot; - sequence_gui_slot_t *g = info->sequence_view->gui_slot[slot_nr]; -#ifdef STRICT_CHECKING - assert( s != NULL ); - assert( g != NULL ); -#endif - g->sample_id = s->sample_id; - g->sample_type = s->sample_type; - vj_msg(VEEJAY_MSG_INFO, "Placed %s %d in Memory slot %d", - (g->sample_type == 0 ? "Sample" : "Stream" ), g->sample_id, slot_nr ); - } - else - if(event->type == GDK_BUTTON_PRESS) - { - sequence_gui_slot_t *g = info->sequence_view->gui_slot[slot_nr]; - if(g->sample_id <= 0) - { - vj_msg(VEEJAY_MSG_ERROR, "Memory slot %d empty, put with SHIFT + mouse button1",slot_nr); - return FALSE; - } - multi_vims(VIMS_SET_MODE_AND_GO, "%d %d", g->sample_type, g->sample_id ); - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SET_MODE_AND_GO, g->sample_type,g->sample_id ); - } - return FALSE; -} - -static void create_sequencer_slots(int nx, int ny) -{ - GtkWidget *vbox = glade_xml_get_widget_ (info->main_window, "SampleSequencerBox"); - info->sample_sequencer = gtk_frame_new(NULL); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET(info->sample_sequencer), TRUE, TRUE, 0); - gtk_widget_show(info->sample_sequencer); - - info->sequencer_view = (sequence_envelope*) vj_calloc(sizeof(sequence_envelope) ); - info->sequencer_view->gui_slot = (sequence_gui_slot_t**) vj_calloc(sizeof(sequence_gui_slot_t*) * ( nx * ny + 1 ) ); - - GtkWidget *table = gtk_table_new( nx, ny, TRUE ); - - gtk_container_add( GTK_CONTAINER(info->sample_sequencer), table ); - gtk_widget_show(table); - - info->sequencer_col = nx; - info->sequencer_row = ny; - - gint col=0; - gint row=0; - gint k = 0; - for( col = 0; col < ny; col ++ ) - for( row = 0; row < nx; row ++ ) - { - sequence_gui_slot_t *gui_slot = (sequence_gui_slot_t*)vj_calloc(sizeof(sequence_gui_slot_t)); - info->sequencer_view->gui_slot[k] = gui_slot; - - gui_slot->event_box = gtk_event_box_new(); - gtk_event_box_set_visible_window(GTK_EVENT_BOX(gui_slot->event_box), TRUE); - GTK_WIDGET_SET_FLAGS(gui_slot->event_box,GTK_CAN_FOCUS); - - g_signal_connect( G_OBJECT(gui_slot->event_box), - "button_press_event", - G_CALLBACK(on_sequencerslot_activated_by_mouse), //@@@@ - (gpointer) castIntToGpointer(k) - ); - gtk_widget_show(GTK_WIDGET(gui_slot->event_box)); - - gui_slot->frame = gtk_frame_new(NULL); - gtk_container_set_border_width (GTK_CONTAINER(gui_slot->frame),0); - gtk_frame_set_shadow_type(GTK_FRAME( gui_slot->frame), GTK_SHADOW_IN ); - gtk_widget_show(GTK_WIDGET(gui_slot->frame)); - gtk_container_add (GTK_CONTAINER (gui_slot->event_box), gui_slot->frame); - - /* the slot main container */ - gui_slot->main_vbox = gtk_vbox_new(FALSE,0); - gtk_container_add (GTK_CONTAINER (gui_slot->frame), gui_slot->main_vbox); - gtk_widget_show( GTK_WIDGET(gui_slot->main_vbox) ); - - gui_slot->image = gtk_label_new(NULL); - gtk_box_pack_start (GTK_BOX (gui_slot->main_vbox), GTK_WIDGET(gui_slot->image), TRUE, TRUE, 0); - gtk_widget_show( gui_slot->image); - gtk_table_attach_defaults ( GTK_TABLE(table), gui_slot->event_box, row, row+1, col, col+1); - k++; - } -// gtk_widget_set_size_request_( table, 300,300); -// info->sequencer_view->envelope_size = envelope_size; -} - -static void create_ref_slots(int envelope_size) -{ - gchar frame_label[50]; - GtkWidget *vbox = glade_xml_get_widget_ (info->main_window, "quickselect"); - info->quick_select = gtk_frame_new(NULL); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET(info->quick_select), TRUE, TRUE, 0); - gtk_widget_show(info->quick_select); - info->sequence_view = (sequence_envelope*) vj_calloc(sizeof(sequence_envelope) ); - info->sequence_view->gui_slot = (sequence_gui_slot_t**) vj_calloc(sizeof(sequence_gui_slot_t*) * envelope_size ); - sprintf(frame_label, "Last played" ); - GtkWidget *table = gtk_table_new( 1, envelope_size, TRUE ); - gtk_container_add( GTK_CONTAINER(info->quick_select), table ); - gtk_widget_show(table); - - gint col=0; - gint row=0; - for( row = 0; row < envelope_size; row ++ ) - { - sequence_gui_slot_t *gui_slot = (sequence_gui_slot_t*)vj_calloc(sizeof(sequence_gui_slot_t)); - info->sequence_view->gui_slot[row] = gui_slot; - gui_slot->event_box = gtk_event_box_new(); - gtk_event_box_set_visible_window(GTK_EVENT_BOX(gui_slot->event_box), TRUE); - GTK_WIDGET_SET_FLAGS(gui_slot->event_box,GTK_CAN_FOCUS); - /* Right mouse button is popup menu, click = play */ - g_signal_connect( G_OBJECT(gui_slot->event_box), - "button_press_event", - G_CALLBACK(on_cacheslot_activated_by_mouse), - (gpointer) castIntToGpointer(row) - ); - gtk_widget_show(GTK_WIDGET(gui_slot->event_box)); - /* the surrounding frame for each slot */ - gui_slot->frame = gtk_frame_new(NULL); - set_tooltip_by_widget(gui_slot->frame, tooltips[TOOLTIP_QUICKSELECT].text ); - gtk_container_set_border_width (GTK_CONTAINER(gui_slot->frame),1); - gtk_widget_show(GTK_WIDGET(gui_slot->frame)); - gtk_container_add (GTK_CONTAINER (gui_slot->event_box), gui_slot->frame); - - /* the slot main container */ - gui_slot->main_vbox = gtk_vbox_new(FALSE,0); - gtk_container_add (GTK_CONTAINER (gui_slot->frame), gui_slot->main_vbox); - gtk_widget_show( GTK_WIDGET(gui_slot->main_vbox) ); - - /* The sample's image */ - gui_slot->image = gtk_image_new(); - gtk_box_pack_start (GTK_BOX (gui_slot->main_vbox), GTK_WIDGET(gui_slot->image), TRUE, TRUE, 0); -// gtk_widget_set_size_request_( gui_slot->image, info->sequence_view->w,info->sequence_view->h ); - gtk_widget_show( GTK_WIDGET(gui_slot->image)); - - gtk_table_attach_defaults ( GTK_TABLE(table), gui_slot->event_box, row, row+1, col, col+1); - } - info->sequence_view->envelope_size = envelope_size; -} - -static void create_slot(gint bank_nr, gint slot_nr, gint w, gint h) -{ - gchar hotkey[5]; - - sample_bank_t **sample_banks = info->sample_banks; - sample_gui_slot_t *gui_slot = sample_banks[bank_nr]->gui_slot[slot_nr]; - - // to reach clicks on the following GUI-Elements of one slot, they are packed into an event_box - gui_slot->event_box = gtk_event_box_new(); - gtk_event_box_set_visible_window(GTK_EVENT_BOX(gui_slot->event_box), TRUE); - - GTK_WIDGET_SET_FLAGS(gui_slot->event_box,GTK_CAN_FOCUS); - g_signal_connect( G_OBJECT(gui_slot->event_box), - "button_press_event", - G_CALLBACK(on_slot_activated_by_mouse), - (gpointer) castIntToGpointer(slot_nr) - ); - gtk_widget_show(GTK_WIDGET(gui_slot->event_box)); - /* the surrounding frame for each slot */ - gui_slot->frame = gtk_frame_new(NULL); - - gtk_container_set_border_width (GTK_CONTAINER(gui_slot->frame),0); - gtk_widget_show(GTK_WIDGET(gui_slot->frame)); - gtk_container_add (GTK_CONTAINER (gui_slot->event_box), GTK_WIDGET(gui_slot->frame)); - - /* the slot main container */ - gui_slot->main_vbox = gtk_vbox_new(FALSE,0); - gtk_container_add (GTK_CONTAINER (gui_slot->frame), gui_slot->main_vbox); - gtk_widget_show( GTK_WIDGET(gui_slot->main_vbox) ); - - gui_slot->image = gtk_image_new(); -// gui_slot->image = gtk_drawing_area_new(); - gtk_box_pack_start (GTK_BOX (gui_slot->main_vbox), GTK_WIDGET(gui_slot->image), TRUE, TRUE, 0); -// gtk_widget_show(GTK_WIDGET(gui_slot->image)); - gtk_widget_set_size_request_( gui_slot->image, info->image_dimensions[0],info->image_dimensions[1] ); -/* - g_signal_connect( gui_slot->image, "expose_event", - G_CALLBACK(image_expose_event), - (gpointer) info->sample_banks[bank_nr]->slot[slot_nr]->slot_number ); -*/ - gtk_widget_show( GTK_WIDGET(gui_slot->image)); - - /* the upper container for all slot-informations */ - gui_slot->upper_hbox = gtk_hbox_new(FALSE,0); - gtk_box_pack_start (GTK_BOX (gui_slot->main_vbox), gui_slot->upper_hbox, FALSE, TRUE, 0); - gtk_widget_show(GTK_WIDGET(gui_slot->upper_hbox)); - - if( sample_banks[bank_nr]->slot[slot_nr]->sample_type >= 0 ) - { - /* the hotkey that is assigned to this slot */ - snprintf(hotkey,sizeof(hotkey), "F-%d", (slot_nr+1)); - gui_slot->hotkey = gtk_label_new(hotkey); - } - else - { - gui_slot->hotkey = gtk_label_new(""); - } - - gtk_misc_set_alignment(GTK_MISC(gui_slot->hotkey), 0.0, 0.0); - gtk_misc_set_padding (GTK_MISC(gui_slot->hotkey), 0, 0); - gtk_box_pack_start (GTK_BOX (gui_slot->upper_hbox), GTK_WIDGET(gui_slot->hotkey), FALSE, FALSE, 0); - gtk_widget_show(GTK_WIDGET(gui_slot->hotkey)); - gui_slot->upper_vbox = gtk_vbox_new(FALSE,0); - gtk_box_pack_start (GTK_BOX (gui_slot->upper_hbox), gui_slot->upper_vbox, TRUE, TRUE, 0); - gtk_widget_show(GTK_WIDGET(gui_slot->upper_vbox)); - gui_slot->title = gtk_label_new(""); - - gui_slot->timecode = gtk_label_new(""); - gtk_misc_set_alignment(GTK_MISC(gui_slot->timecode), 0.5, 0.0); - gtk_misc_set_alignment(GTK_MISC(gui_slot->title), 0.5, 0.0); - - gtk_misc_set_padding (GTK_MISC(gui_slot->timecode), 0,0 ); - gtk_box_pack_start (GTK_BOX (gui_slot->upper_vbox), GTK_WIDGET(gui_slot->timecode), FALSE, FALSE, 0); - gtk_widget_show(GTK_WIDGET(gui_slot->timecode)); -} - - -/* -------------------------------------------------------------------------------------------------------------------------- - * Handler of mouse clicks on the GUI-elements of one slot - * single-click activates the slot and the loaded sample (if there is one) - * double-click or tripple-click activates it and plays it immediatelly - -------------------------------------------------------------------------------------------------------------------------- */ -static gboolean on_slot_activated_by_mouse (GtkWidget *widget, GdkEventButton *event, gpointer user_data) -{ - gint bank_nr = -1; - gint slot_nr = -1; - - bank_nr = find_bank( gtk_notebook_get_current_page(GTK_NOTEBOOK(info->sample_bank_pad))); - if(bank_nr < 0 ) - return FALSE; - - slot_nr = GPOINTER_TO_INT(user_data); - sample_bank_t **sample_banks = info->sample_banks; - - if( info->sample_banks[ bank_nr ]->slot[ slot_nr ]->sample_id <= 0 ) - return FALSE; - - if( event->type == GDK_2BUTTON_PRESS ) - { - sample_slot_t *s = sample_banks[bank_nr]->slot[slot_nr]; - multi_vims( VIMS_SET_MODE_AND_GO, "%d %d", (s->sample_type==0? 0:1), s->sample_id); - vj_midi_learning_vims_msg2( info->midi, NULL, VIMS_SET_MODE_AND_GO, s->sample_type, s->sample_id ); - vj_msg(VEEJAY_MSG_INFO, - "Start playing %s %d", - (s->sample_type==0 ? "Sample" : "Stream" ), s->sample_id ); - } - else if(event->type == GDK_BUTTON_PRESS ) - { - if( (event->state & GDK_SHIFT_MASK ) == GDK_SHIFT_MASK ) - { - sample_slot_t *x = sample_banks[bank_nr]->slot[slot_nr]; - multi_vims( VIMS_CHAIN_ENTRY_SET_SOURCE_CHANNEL, - "%d %d %d %d", - 0, - info->uc.selected_chain_entry, - x->sample_type, - x->sample_id ); - - if(x->sample_id == 1 ) - { - vj_msg(VEEJAY_MSG_INFO, - "Set mixing channel %d to Stream %d", - info->uc.selected_chain_entry, - x->sample_id ); - } else - { - vj_msg(VEEJAY_MSG_INFO, - "Set mixing channel %d to Sample %d", - info->uc.selected_chain_entry, - x->sample_id); - } - - char trip[100]; - snprintf(trip, sizeof(trip), "%03d:%d %d %d %d",VIMS_CHAIN_ENTRY_SET_SOURCE_CHANNEL, - 0, - info->uc.selected_chain_entry, - x->sample_type, - x->sample_id ); - - vj_midi_learning_vims( info->midi, NULL, trip, 0 ); - } else - { - if(info->selection_slot) - set_selection_of_slot_in_samplebank(FALSE); - info->selection_slot = sample_banks[bank_nr]->slot[slot_nr]; - info->selection_gui_slot = sample_banks[bank_nr]->gui_slot[slot_nr]; - - set_selection_of_slot_in_samplebank(TRUE ); - } - } - return FALSE; -} - -static void indicate_sequence( gboolean active, sequence_gui_slot_t *slot ) -{ - if(!active) - gtk_frame_set_shadow_type( GTK_FRAME(slot->frame), GTK_SHADOW_IN ); - else - gtk_frame_set_shadow_type( GTK_FRAME(slot->frame), GTK_SHADOW_OUT ); -} - -static void set_activation_of_slot_in_samplebank( gboolean activate) -{ - if(!info->selected_gui_slot || !info->selected_slot ) - return; - GdkColor color; - color.red = info->normal->red; - color.green = info->normal->green; - color.blue = info->normal->blue; - - if( activate ) { - color.green = 0xffff; - color.red = 0; - color.blue = 0; - } - - if(info->selected_slot->sample_id <= 0 ) - { - gtk_frame_set_shadow_type( GTK_FRAME(info->selected_gui_slot->frame), GTK_SHADOW_ETCHED_IN ); - } - else - { - if (activate) - { - gtk_frame_set_shadow_type(GTK_FRAME(info->selected_gui_slot->frame),GTK_SHADOW_IN); - gtk_widget_grab_focus(GTK_WIDGET(info->selected_gui_slot->frame)); - } - else - { - gtk_frame_set_shadow_type(GTK_FRAME(info->selected_gui_slot->frame),GTK_SHADOW_ETCHED_IN); - } - } - - gtk_widget_modify_fg ( GTK_WIDGET(info->selected_gui_slot->timecode),GTK_STATE_NORMAL, &color ); -} - -static void set_selection_of_slot_in_samplebank(gboolean active) -{ - if(!info->selection_slot || info->selection_slot->sample_id <= 0) - return; - - GdkColor color; - color.red = info->normal->red; - color.green = info->normal->green; - color.blue = info->normal->blue; - - if(info->selected_slot == info->selection_slot) - { - color.green = 0xffff; - color.red = 0; - color.blue = 0; - } - else if(active) - { - color.blue = 0xffff; - color.green = 0; - color.red =0; - } - -// gtk_widget_modify_fg ( GTK_WIDGET(info->selection_gui_slot->title), -// GTK_STATE_NORMAL, &color ); - gtk_widget_modify_fg ( GTK_WIDGET(info->selection_gui_slot->timecode), - GTK_STATE_NORMAL, &color ); -// gtk_widget_modify_fg ( gtk_frame_get_label_widget( info->selection_gui_slot->frame ), -// GTK_STATE_NORMAL, &color ); -} - -static int add_sample_to_sample_banks(int bank_page,sample_slot_t *slot) -{ - int bp = 0; int s = 0; -#ifdef STRICT_CHECKING - int result = verify_bank_capacity( &bp, &s, slot->sample_id, slot->sample_type ); - - veejay_msg(VEEJAY_MSG_DEBUG, - "add slot on page %d: type=%d id=%d. result=%d", - bank_page,slot->sample_type,slot->sample_id,result ); - - if( result ) - update_sample_slot_data( bp, s, slot->sample_id,slot->sample_type,slot->title,slot->timecode); - -#else - if(verify_bank_capacity( &bp, &s, slot->sample_id, slot->sample_type )) - update_sample_slot_data( bp, s, slot->sample_id,slot->sample_type,slot->title,slot->timecode); -#endif - return 1; -} - - -/* -------------------------------------------------------------------------------------------------------------------------- - * Removes a selected sample from the specific sample-bank-slot and update the free_slots-GList as well as - -------------------------------------------------------------------------------------------------------------------------- */ -static void remove_sample_from_slot() -{ - gint bank_nr = -1; - gint slot_nr = -1; - - bank_nr = find_bank( gtk_notebook_get_current_page( - GTK_NOTEBOOK( info->sample_bank_pad ) ) ); - if(bank_nr < 0 ) - return; - if(!info->selection_slot) - return; - - slot_nr = info->selection_slot->slot_number; - - if( info->selection_slot->sample_id == info->status_tokens[CURRENT_ID] && - info->selection_slot->sample_type == info->status_tokens[STREAM_TYPE] ) - { - gchar error_msg[100]; - sprintf(error_msg, "Cannot delete %s %d while playing", - (info->selection_slot->sample_type == MODE_SAMPLE ? "Sample" : "Stream" ), - info->selection_slot->sample_id ); - message_dialog( "Error while deleting", error_msg ); - - return; - } - - multi_vims( (info->selection_slot->sample_type == 0 ? VIMS_SAMPLE_DEL : - VIMS_STREAM_DELETE ), - "%d", - info->selection_slot->sample_id ); - - update_sample_slot_data( bank_nr, slot_nr, 0, -1, NULL, NULL); - - sample_gui_slot_t *gui_slot = info->sample_banks[bank_nr]->gui_slot[slot_nr]; - if(gui_slot) - gtk_image_clear( GTK_IMAGE( gui_slot->image) ); - - //set_selection_of_slot_in_samplebank( FALSE ); - - info->selection_gui_slot = NULL; - info->selection_slot = NULL; - - info->uc.reload_hint[HINT_SLIST] = 2; - -} - - -/* -------------------------------------------------------------------------------------------------------------------------- - * Function adds the given infos to the list of effect-sources - -------------------------------------------------------------------------------------------------------------------------- */ -static void add_sample_to_effect_sources_list(gint id, - gint type, - gchar *title, - gchar *timecode) -{ - gchar id_string[512]; - GtkTreeIter iter; - - if (type == STREAM_NO_STREAM) - snprintf( id_string,sizeof(id_string), "S[%4d] %s", id, title); - else - snprintf( id_string,sizeof(id_string), "T[%4d]", id); - - gtk_list_store_append( effect_sources_store, &iter ); - gtk_list_store_set(effect_sources_store, &iter, - SL_ID, id_string, - SL_DESCR, title, - SL_TIMECODE , timecode, - -1 ); - - GtkTreeIter iter2; - if(type == STREAM_NO_STREAM) - { - gtk_list_store_append( cali_sourcestore,&iter2); - gtk_list_store_set(cali_sourcestore,&iter2, - SL_ID, id_string, - SL_DESCR,title, - SL_TIMECODE,timecode, - -1); - } -} - -/* - Update a slot, either set from function arguments or clear it - */ -static void update_sample_slot_data(int page_num, - int slot_num, - int sample_id, - gint sample_type, - gchar *title, - gchar *timecode) -{ - sample_slot_t *slot = info->sample_banks[page_num]->slot[slot_num]; - sample_gui_slot_t *gui_slot = info->sample_banks[page_num]->gui_slot[slot_num]; - - if(slot->timecode) { free(slot->timecode); slot->timecode = NULL; } - if(slot->title) { free(slot->title); slot->title = NULL; } - - slot->sample_id = sample_id; - slot->sample_type = sample_type; - - slot->timecode = timecode == NULL ? NULL : strduplastn( timecode ); - slot->title = title == NULL ? NULL : strduplastn( title ); - - if( sample_id ) - { - char sample_key[32]; - snprintf(sample_key,sizeof(sample_key), "S%04d%02d", sample_id, sample_type ); - vevo_property_set( bankport_, sample_key, VEVO_ATOM_TYPE_VOIDPTR,1, &slot ); - snprintf(sample_key,sizeof(sample_key), "G%04d%02d", sample_id, sample_type ); - vevo_property_set( bankport_, sample_key, VEVO_ATOM_TYPE_VOIDPTR,1,&gui_slot); - } - - if(gui_slot) - { - if(sample_id > 0 ) - { - gtk_frame_set_label( GTK_FRAME(gui_slot->frame),slot->title ); - gtk_label_set_text( GTK_LABEL( gui_slot->timecode ), slot->timecode ); - gtk_label_set_text( GTK_LABEL( gui_slot->title ), slot->title ); - } - else - { - gtk_frame_set_label(GTK_FRAME(gui_slot->frame), "" ); - gtk_label_set_text( GTK_LABEL(gui_slot->timecode), "" ); - gtk_label_set_text( GTK_LABEL(gui_slot->title), "" ); - } - } - - if( sample_id == 0 ) - { - if(slot->pixbuf) - { - g_object_unref( slot->pixbuf ); - slot->pixbuf = NULL; - } - } -} - -void veejay_release_track(int id, int release_this) -{ - multitrack_release_track( info->mt, id, release_this ); -} - -void veejay_bind_track( int id, int bind_this ) -{ - multitrack_bind_track(info->mt, id, bind_this ); - info->uc.reload_hint[HINT_SLIST] = 2; -} diff --git a/veejay-current/veejay-client/src/vj-api.h b/veejay-current/veejay-client/src/vj-api.h deleted file mode 100644 index 39acf3ef..00000000 --- a/veejay-current/veejay-client/src/vj-api.h +++ /dev/null @@ -1,78 +0,0 @@ -/* gveejay - Linux VeeJay - GVeejay GTK+-2/Glade User Interface - * (C) 2002-2005 Niels Elburg - * - * - * 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. - */ - -#ifndef VJAPI_H -#define VJAPI_H - -#define DEFAULT_PORT_NUM 3490 - -int veejay_tick(); -void veejay_preview(int p); -int veejay_update_multitrack(); -void veejay_sleep( void *ui ); -void reloaded_restart(); -void *get_ui_info(); -char *get_glade_path(); -char *get_gveejay_dir(); -int get_total_frames(); -void get_gd(char *buf, char *suf, const char *filename); - -void set_disable_sample_image(int status); -void set_skin(int skin, int invert); - -void default_bank_values(int *col, int *row ); -gboolean is_alive( int *sync ); - -int _effect_get_minmax( int effect_id, int *min, int *max, int index ); -void find_user_themes(); -void register_signals(); -int is_button_toggled(const char *name); -gchar *_utf8str( const char *c_str ); -void gui_load_theme(); - -void vj_gui_cb(int state, char *hostname, int port_num); -void vj_gui_init(char *glade_file, int launcher, char *hostname, int port_num, int threads,int load_midi, char *midi_file, int beta, int auto_connect); -int vj_gui_reconnect( char *host, char *group, int port); -void vj_gui_free(); -void vj_gui_wipe(); -void vj_gui_enable(void); -void vj_gui_disable(void); -void vj_gui_disconnect(void); -int vj_get_preview_box_w(); -int vj_get_preview_box_h(); -void vj_gui_set_geom(int x, int y); -void vj_gui_set_debug_level(int level, int preview_p, int pw, int ph); -void vj_gui_set_timeout(int timer); -int vj_gui_sleep_time( void ); -void vj_gui_style_setup(); -void vj_gui_theme_setup(int default_theme); - -int vj_img_cb(GdkPixbuf *img ); -void vj_fork_or_connect_veejay(); -void vj_event_list_free(); -gboolean gveejay_running(); -gboolean gveejay_relaunch(); -int gveejay_user_preview(); -void gveejay_preview(int p); -int gveejay_restart(); -int gveejay_update(); -int gveejay_time_to_sync( void *ptr ); -int update_gveejay(); -void reloaded_show_launcher(); -#endif diff --git a/veejay-current/veejay-client/src/vj-midi.c b/veejay-current/veejay-client/src/vj-midi.c deleted file mode 100644 index 5ace482d..00000000 --- a/veejay-current/veejay-client/src/vj-midi.c +++ /dev/null @@ -1,600 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2007 Niels Elburg - * - * 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. - */ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -extern GtkWidget *glade_xml_get_widget_( GladeXML *m, const char *name ); -extern void msg_vims(char *message); -extern void vj_msg(int type, const char format[], ...); -extern int prompt_dialog(const char *title, char *msg); -static int vj_midi_events(void *vv ); - -typedef struct -{ - snd_seq_t *sequencer; - void *vims; - struct pollfd *pfd; - int npfd; - int learn; - int learn_event[4]; - int active; - void *mw; -} vmidi_t; - -typedef struct -{ - int extra; - char *widget; - char *msg; -} dvims_t; - - -void vj_midi_learn( void *vv ) -{ - vmidi_t *v = (vmidi_t*) vv; - if(!v->active) return; - v->learn = 1; - vj_msg(VEEJAY_MSG_INFO, "Learning MIDI commands. Touch a midi key and then click a widget"); -} - -void vj_midi_play(void *vv ) -{ - vmidi_t *v = (vmidi_t*) vv; - if(!v->active) return; - - v->learn = 0; - int a = vj_midi_events(vv); - char msg[100]; - snprintf(msg,sizeof(msg), "MIDI listener active, %d events registered", a ); - vj_msg(VEEJAY_MSG_INFO, "%s",msg); -} -static int vj_midi_events(void *vv ) -{ - vmidi_t *v = (vmidi_t*)vv; - char **items = vevo_list_properties(v->vims); - if(!items) return 0; - - int i; - int len = 0; - for( i = 0; items[i] != NULL ; i ++ ) - { - len ++; - free(items[i]); - } - free(items); - return len; -} -void vj_midi_reset( void *vv ) -{ - vmidi_t *v = (vmidi_t*)vv; - - int a = vj_midi_events(vv); - if( a > 0 ) - { - char warn[200]; - snprintf(warn,sizeof(warn), "This will clear %d MIDI events, Continue ?",a ); - if( prompt_dialog( "MIDI", warn ) == GTK_RESPONSE_REJECT ) - return; - - } - - char **items = vevo_list_properties(v->vims); - if(!items) { - vj_msg(VEEJAY_MSG_INFO,"No MIDI events to clear"); - return; - } - int i; - for( i = 0; items[i] != NULL ; i ++ ) - { - dvims_t *d = NULL; - if( vevo_property_get( v->vims, items[i],0,&d ) == VEVO_NO_ERROR ) - { - if(d->msg) free(d->msg); - if(d->widget) free(d->widget); - free(d); - } - free(items[i]); - } - free(items); - - vpf(v->vims); - - v->vims = vpn(VEVO_ANONYMOUS_PORT); - - vj_msg(VEEJAY_MSG_INFO, "Cleared %d MIDI events.",a); -} - -void vj_midi_load(void *vv, const char *filename) -{ - vmidi_t *v = (vmidi_t*) vv; - if(!v->active) return; - - int a = vj_midi_events(vv); - if( a > 0 ) - { - char warn[200]; - snprintf(warn,sizeof(warn), "There are %d MIDI event known, loading from file will overwrite any existing events. Continue ?", a ); - if( prompt_dialog( "MIDI", warn ) == GTK_RESPONSE_REJECT ) - return; - - } - - int fd = open( filename, O_RDONLY ); - if(!fd) - { - vj_msg(VEEJAY_MSG_ERROR, "Unable to open file '%s': %s", filename, strerror(errno)); - return; - } - struct stat t; - if( fstat( fd, &t) != 0 ) - { - veejay_msg(0, "Error loading MIDI config '%s':%s",filename,strerror(errno)); - vj_msg(VEEJAY_MSG_ERROR,"Unable to load %s: %s", filename, strerror(errno)); - return; - } - else - { - if( !S_ISREG( t.st_mode ) && !S_ISLNK(t.st_mode) ) - { - vj_msg(VEEJAY_MSG_ERROR, "File '%s' is not a regular file or symbolic link. Refusing to load it.", - filename ); - return; - } - } - - char *buf = (char*) vj_calloc( 128000 ); - uint32_t count = 0; - if (read( fd, buf, 128000 ) > 0 ) - { - int len = strlen( buf ); - int j,k=0; - - char value[1024]; - veejay_memset(value,0,sizeof(value)); - - for( j = 0; j < len; j ++ ) - { - if( buf[j] == '\0' ) break; - if( buf[j] == '\n' ) - { - char key[32]; - char widget[100]; - char message[512]; - int extra = 0; - - veejay_memset( key,0,sizeof(key)); - veejay_memset( widget,0,sizeof(widget)); - veejay_memset( message,0,sizeof(message)); - - if(sscanf( value, "%s %d %s \"%[^\"]", key, &extra, widget, message ) == 4 ) - { - veejay_memset( value,0,sizeof(value)); - k = 0; - dvims_t *d = (dvims_t*) vj_calloc(sizeof(dvims_t)); - dvims_t *cur = NULL; - d->extra = extra; - d->widget = NULL; - if( strncasecmp( widget, "none", 4 ) !=0 ) - d->widget = strdup(widget); - d->msg = strdup(message); - if( vevo_property_get( v->vims, key, 0, &cur ) == VEVO_NO_ERROR ) - { - if(cur->widget) free(cur->widget); - if(cur->msg) free(cur->msg); - free(cur); - } - int error = vevo_property_set( v->vims, key, 1, VEVO_ATOM_TYPE_VOIDPTR, &d); - if( error == VEVO_NO_ERROR ) - count ++; -#ifdef STRICT_CHECKING - else { - veejay_msg(VEEJAY_MSG_ERROR, "Error loading MIDI event '%s': %d",key, error ); - - } -#endif - } - - } - if( buf[j] != '\n' && buf[j] != '\0' ) - value[k++] = buf[j]; - - } - - } - free(buf); - veejay_msg(VEEJAY_MSG_INFO, "loaded %d midi events from %s",count,filename); - vj_msg(VEEJAY_MSG_INFO, "Loaded %d MIDI events from %s", count ,filename); -} - -void vj_midi_save(void *vv, const char *filename) -{ - vmidi_t *v = (vmidi_t*) vv; - if(!v->active) return; - - int fd = open( filename, O_TRUNC|O_CREAT|O_WRONLY,S_IRWXU ); - if(!fd) - { - vj_msg(VEEJAY_MSG_ERROR, "Unable to save MIDI settings to %s",filename); - return; - } - - char **items = vevo_list_properties( v->vims ); - int i; - if( items == NULL ) - { - vj_msg(VEEJAY_MSG_ERROR, "No MIDI events learned yet"); - return; - } - uint32_t count = 0; - for( i =0 ; items[i] != NULL ;i ++ ) - { - char tmp[512]; - dvims_t *d = NULL; - if( vevo_property_get( v->vims, items[i], 0, &d ) == VEVO_NO_ERROR ) - { - snprintf(tmp, 512, "%s %d %s \"%s\"\n", - items[i], - d->extra, - (d->widget == NULL ? "none" : d->widget ), - d->msg ); - if( write( fd, tmp, strlen( tmp )) >= 0 ) - count ++; - } - free(items[i]); - } - free(items); - close(fd); - - vj_msg(VEEJAY_MSG_INFO, "Wrote %d MIDI events to %s", count, filename ); -} - -void vj_midi_learning_vims( void *vv, char *widget, char *msg, int extra ) -{ - vmidi_t *v = (vmidi_t*) vv; - if(!v->active) return; - - if( !v->learn ) - return; - - if( v->learn_event[0] == -1 || v->learn_event[1] == -1 || v->learn_event[2] == -1 ) { - veejay_msg(0, "Cannot learn '%s' (%s) - unknown midi event.", - widget, msg ); - return; - } - - dvims_t *d = (dvims_t*) vj_malloc(sizeof(dvims_t)); - d->extra = extra; - d->msg = (msg == NULL ? NULL : strdup(msg)); - d->widget = (widget == NULL ? NULL : strdup(widget)); - char key[32]; - snprintf(key,sizeof(key), "%03d%03d", v->learn_event[0],v->learn_event[1] ); - - dvims_t *cur = NULL; - if( vevo_property_get( v->vims, key, 0, &cur ) == VEVO_NO_ERROR ) - { - if( cur->widget ) free(cur->widget ); - if( cur->msg ) free(cur->msg); - free(cur); - } - int error = vevo_property_set( v->vims, key, 1, VEVO_ATOM_TYPE_VOIDPTR, &d ); - if( error != VEVO_NO_ERROR ) - return; - vj_msg( VEEJAY_MSG_INFO, - "Midi %x: %x ,%x learned", v->learn_event[0],v->learn_event[1],v->learn_event[2]); -} - -void vj_midi_learning_vims_simple( void *vv, char *widget, int id ) -{ - char message[100]; - if( widget == NULL ) - snprintf(message,sizeof(message), "%03d:;", id ); - else - snprintf(message,sizeof(message), "%03d:", id ); - vj_midi_learning_vims( vv, widget, message, (widget == NULL ? 0 : 1 ) ); -} - -void vj_midi_learning_vims_spin( void *vv, char *widget, int id ) -{ - char message[100]; - if( widget == NULL ) - snprintf(message,sizeof(message), "%03d:;", id ); - else - snprintf(message,sizeof(message), "%03d:", id ); - vj_midi_learning_vims( vv, widget, message, (widget == NULL ? 0 : 2) ); -} - - -void vj_midi_learning_vims_complex( void *vv, char *widget, int id, int first , int extra) -{ - char message[100]; - snprintf( message, sizeof(message), "%03d:%d",id, first ); - - vj_midi_learning_vims( vv, widget, message, extra ); -} - -void vj_midi_learning_vims_msg( void *vv, char *widget, int id, int arg ) -{ - char message[100]; - snprintf(message, sizeof(message), "%03d:%d;",id, arg ); - - vj_midi_learning_vims( vv, widget, message, 0 ); -} - -void vj_midi_learning_vims_msg2(void *vv, char *widget, int id, int arg, int b ) -{ - char message[100]; - snprintf(message,sizeof(message), "%03d:%d %d;", id, arg,b ); - vj_midi_learning_vims( vv, widget, message, 0 ); -} - -void vj_midi_learning_vims_fx( void *vv, int widget, int id, int a, int b, int c, int extra ) -{ - char message[100]; - char wid[100]; - snprintf(message,sizeof(message), "%03d:%d %d %d", id, a,b,c ); - snprintf(wid, sizeof(wid),"slider_p%d", widget ); - vj_midi_learning_vims( vv, wid, message, extra ); -} - -static void vj_midi_send_vims_now( vmidi_t *v, int *data ) -{ - // format vims message and send it now - // it would be nice to filter out unique events per frame step - - // this can be done by keeping a temporary vevo port - // and store (instead of send) the VIMS message - // including the sample_id and chain_entry_id but - // cutting off all other arguments. - // then, last SET_SPEED will overwrite any previous ones for this frame step. - // - // last, send all messages in temporary port out and cleanup - - char key[32]; - - if( v->learn ) - { - veejay_memcpy( v->learn_event, data, sizeof(v->learn_event )); - vj_msg(VEEJAY_MSG_INFO, "MIDI %x:%x,%x -> ?", v->learn_event[0],v->learn_event[1], - v->learn_event[2]); - return; - } - - snprintf(key,sizeof(key), "%03d%03d", data[0],data[1] ); //@ event key is midi event type + midi control/param id - - dvims_t *d = NULL; - int error = vevo_property_get( v->vims, key, 0, &d); - if( error == VEVO_NO_ERROR ) - { - if( d->extra ) - { //@ argument is dynamic - double min = 0.0; - double max = 0.0; - double val = 0.0; - switch(d->extra) - { - case 1: //slider - { - GtkAdjustment *a = gtk_range_get_adjustment( GTK_RANGE( - glade_xml_get_widget_( v->mw, d->widget ) ) ); - - min = a->lower; - max = a->upper; - } - break; - case 2: //spinbox - gtk_spin_button_get_range( GTK_SPIN_BUTTON( - glade_xml_get_widget_( v->mw, d->widget)), &min, &max); - - break; - } - - if( data[0] == SND_SEQ_EVENT_PITCHBEND ) - { - val = ( (data[2]/16384.0f) * (max-min) ); - } - else if( data[0] == SND_SEQ_EVENT_CONTROLLER || data[0] == SND_SEQ_EVENT_KEYPRESS ) - { - val = ((max-min)/127.0) * data[2] + min; - } - else { - vj_msg(VEEJAY_MSG_INFO, "MIDI: what's this %x,%x,%x ?",data[0],data[1],data[2]); - return; - } - - char vims_msg[255]; - snprintf(vims_msg,sizeof(vims_msg), "%s %d;", d->msg, (int) val ); - - /* use control/param as sample_id */ - int tmpv[3]; - if ( sscanf(vims_msg, "%03d:%d %d;",&tmpv[0],&tmpv[1],&tmpv[2]) == 3 ) - { - if(tmpv[1] == 0 && tmpv[0] >= 100 && tmpv[0] < 200) //@ VIMS: sample events, replace 0 (current_id) for control/param number - { - snprintf(vims_msg,sizeof(vims_msg),"%03d:%d %d;", tmpv[0], data[1], (int)val); - veejay_msg(VEEJAY_MSG_DEBUG, "(midi) using control/param %d as sample identifer",data[1]); - } - } - - msg_vims( vims_msg ); - vj_msg(VEEJAY_MSG_INFO, "MIDI %x:%x, %x -> vims %s", data[0], data[1],data[2], vims_msg); - } - else - { - msg_vims( d->msg ); - vj_msg(VEEJAY_MSG_INFO, "MIDI %x: %x,%x -> vims %s", data[0],data[1],data[2], d->msg); - } - } - else - { - vj_msg(VEEJAY_MSG_ERROR, "No vims event for MIDI %x:%x,%x found",data[0],data[1],data[2]); - } -} - -static int vj_dequeue_midi_event( vmidi_t *v ) -{ - int ret = 0; - int err = 0; - while( snd_seq_event_input_pending( v->sequencer, 1 ) > 0 ) { - int data[4] = { 0,0,0,0}; - int isvalid = 1; - snd_seq_event_t *ev = NULL; - - err = snd_seq_event_input( v->sequencer, &ev ); - if( err == -ENOSPC || err == -EAGAIN ) - return ret; - - data[0] = ev->type; - switch( ev->type ) - { - /* controller: channel <0-N>, */ - case SND_SEQ_EVENT_CONTROLLER: - data[1] = ev->data.control.channel*256+ev->data.control.param; // OB: added chan+param as identifier - data[2] = ev->data.control.value; - break; - case SND_SEQ_EVENT_PITCHBEND: - data[1] = ev->data.control.channel; - data[2] = ev->data.control.value; - break; - case SND_SEQ_EVENT_NOTE: - data[1] = ev->data.control.channel; - data[2] = ev->data.note.note; - break; - case SND_SEQ_EVENT_NOTEON: - data[2] = ev->data.control.channel; - data[1] = ev->data.note.note; - break; - case SND_SEQ_EVENT_NOTEOFF: - data[2] = ev->data.control.channel; - data[1] = ev->data.note.note; - break; - case SND_SEQ_EVENT_KEYPRESS: - data[1] = ev->data.control.channel; - data[2] = ev->data.note.velocity; - break; - case SND_SEQ_EVENT_PGMCHANGE: - data[1] = ev->data.control.param; - data[2] = ev->data.control.value; - break; - default: - data[1] = -1; - data[2] = -1; - isvalid = 0; - veejay_msg(VEEJAY_MSG_WARNING, "unknown midi event received: %d %x %x",ev->type,data[1],data[2],data[2]); - break; - } - - if( isvalid == 1 ) { - vj_midi_send_vims_now( v, data ); - } - - if( ev ) { - snd_seq_free_event( ev ); - ret ++; - } - } - - return ret; -} - -int vj_midi_handle_events(void *vv) -{ - vmidi_t *v = (vmidi_t*) vv; - - if(!v->active) return 0; - - int status = poll( v->pfd, v->npfd, 0 ); - - if( status == -1 ) { - veejay_msg(VEEJAY_MSG_ERROR, "MIDI: unable to poll file descriptor: %s", strerror(errno)); - return 0; - } - else if( status > 0 ) { - return vj_dequeue_midi_event(v); - } - - /* - - while( poll( v->pfd, v->npfd, 0 ) > 0 ) - { - n_msg ++; - if(vj_midi_action( v )) - continue; - break; - } - if(n_msg>0) - veejay_msg(VEEJAY_MSG_INFO, "MIDI: %d events received", n_msg); - */ - - return 0; -} - - -void *vj_midi_new(void *mw) -{ - vmidi_t *v = (vmidi_t*) vj_calloc(sizeof(vmidi_t)); - int portid = 0; - - if( snd_seq_open( &(v->sequencer), "hw", SND_SEQ_OPEN_DUPLEX | SND_SEQ_NONBLOCK, 0 ) < 0 ) - { - veejay_msg(0, "Error opening ALSA sequencer"); - return v; - } - - snd_seq_set_client_name( v->sequencer, "Veejay" ); - - if( (portid = snd_seq_create_simple_port( v->sequencer, "Reloaded", - SND_SEQ_PORT_CAP_WRITE | SND_SEQ_PORT_CAP_SUBS_WRITE , - SND_SEQ_PORT_TYPE_APPLICATION )) < 0 ) - { - veejay_msg(0, "Error creating sequencer port"); - return v; - } - - v->npfd = snd_seq_poll_descriptors_count( v->sequencer, POLLIN ); - if( v->npfd <= 0 ) - { - veejay_msg(0,"Unable to poll in from sequencer"); - return v; - } - v->pfd = (struct pollfd *) vj_calloc( v->npfd * sizeof( struct pollfd )); - v->mw = mw; - v->learn = 0; - v->vims = vpn(VEVO_ANONYMOUS_PORT); - v->active = 1; - snd_seq_poll_descriptors( v->sequencer, v->pfd, v->npfd, POLLIN ); - - veejay_msg(VEEJAY_MSG_INFO, "MIDI listener active! Type 'aconnect -o' to see where to connect to."); - veejay_msg(VEEJAY_MSG_INFO, "For example: $ aconnect 128 129"); - - return (void*) v; -} - - diff --git a/veejay-current/veejay-client/src/vmidi.h b/veejay-current/veejay-client/src/vmidi.h deleted file mode 100644 index aeb2a2bc..00000000 --- a/veejay-current/veejay-client/src/vmidi.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Gveejay Reloaded - graphical interface for VeeJay - * (C) 2002-2007 Niels Elburg - * - * 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. - */ -#ifndef VMIDI_H -#define VMIDI_H - -void *vj_midi_new(void *mw); - -int vj_midi_handle_events(void *vv); - -void vj_midi_play(void *vv ); - -void vj_midi_learn( void *vv ); - -void vj_midi_load(void *vv, const char *filename); - -void vj_midi_save(void *vv, const char *filename); - -void vj_midi_reset( void *vv ); - -void vj_midi_learning_vims( void *vv, char *widget, char *msg, int extra ); -void vj_midi_learning_vims_simple( void *vv, char *widget, int id ); -void vj_midi_learning_vims_complex( void *vv, char *widget, int id, int first , int extra ); -void vj_midi_learning_vims_fx( void *vv, int widget, int id, int a, int b, int c, int extra ); -void vj_midi_learning_vims_msg2(void *vv, char *widget, int id, int arg, int b ); -void vj_midi_learning_vims_msg( void *vv, char *widget, int id, int arg ); -void vj_midi_learning_vims_spin( void *vv, char *widget, int id ); -#endif diff --git a/veejay-current/veejay-client/src/yuv4mpeg.c b/veejay-current/veejay-client/src/yuv4mpeg.c deleted file mode 100644 index a7775801..00000000 --- a/veejay-current/veejay-client/src/yuv4mpeg.c +++ /dev/null @@ -1,1414 +0,0 @@ -/* - * yuv4mpeg.c: Functions for reading and writing "new" YUV4MPEG streams - * - * Copyright (C) 2001 Matthew J. Marjanovic - * - * - * 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. - * - */ - -#include - -#include -#include -#include -#include -#define INTERNAL_Y4M_LIBCODE_STUFF_QPX -#include "yuv4mpeg.h" -#include "yuv4mpeg_intern.h" -#include "mjpeg_logging.h" - - -static int _y4mparam_allow_unknown_tags = 1; /* default is forgiveness */ -static int _y4mparam_feature_level = 0; /* default is ol YUV4MPEG2 */ - -static void *(*_y4m_alloc)(size_t bytes) = malloc; -static void (*_y4m_free)(void *ptr) = free; - - -int y4m_allow_unknown_tags(int yn) -{ - int old = _y4mparam_allow_unknown_tags; - if (yn >= 0) - _y4mparam_allow_unknown_tags = (yn) ? 1 : 0; - return old; -} - -int y4m_accept_extensions(int level) -{ - int old = _y4mparam_feature_level; - if (level >= 0) - _y4mparam_feature_level = level; - return old; -} - - -/************************************************************************* - * - * Convenience functions for fd read/write - * - * - guaranteed to transfer entire payload (or fail) - * - returns: - * 0 on complete success - * +(# of remaining bytes) on eof (for y4m_read) - * -(# of rem. bytes) on error (and ERRNO should be set) - * - *************************************************************************/ - -ssize_t y4m_read(int fd, void *buf, size_t len) -{ - ssize_t n; - uint8_t *ptr = (uint8_t *)buf; - - while (len > 0) { - n = read(fd, ptr, len); - if (n <= 0) { - /* return amount left to read */ - if (n == 0) - return len; /* n == 0 --> eof */ - else - return -len; /* n < 0 --> error */ - } - ptr += n; - len -= n; - } - return 0; -} - -ssize_t y4m_write(int fd, const void *buf, size_t len) -{ - ssize_t n; - const uint8_t *ptr = (const uint8_t *)buf; - - while (len > 0) { - n = write(fd, ptr, len); - if (n <= 0) return -len; /* return amount left to write */ - ptr += n; - len -= n; - } - return 0; -} - -/* read len bytes from fd into buf */ -ssize_t y4m_read_cb(y4m_cb_reader_t * fd, void *buf, size_t len) - { - return fd->read(fd->data, buf, len); - } - -/* write len bytes from fd into buf */ -ssize_t y4m_write_cb(y4m_cb_writer_t * fd, const void *buf, size_t len) - { - return fd->write(fd->data, buf, len); - } - -/* Functions to use the callback interface from plain filedescriptors */ - -/* read len bytes from fd into buf */ -ssize_t y4m_read_fd(void * data, void *buf, size_t len) - { - int * f = (int*)data; - return y4m_read(*f, buf, len); - } - -/* write len bytes from fd into buf */ -ssize_t y4m_write_fd(void * data, const void *buf, size_t len) - { - int * f = (int*)data; - return y4m_write(*f, buf, len); - } - -static void set_cb_reader_from_fd(y4m_cb_reader_t * ret, int * fd) - { - ret->read = y4m_read_fd; - ret->data = fd; - } - -static void set_cb_writer_from_fd(y4m_cb_writer_t * ret, int * fd) - { - ret->write = y4m_write_fd; - ret->data = fd; - } - - -/************************************************************************* - * - * "Extra tags" handling - * - *************************************************************************/ - -static char *y4m_new_xtag(void) -{ - return _y4m_alloc(Y4M_MAX_XTAG_SIZE * sizeof(char)); -} - -void y4m_init_xtag_list(y4m_xtag_list_t *xtags) -{ - int i; - xtags->count = 0; - for (i = 0; i < Y4M_MAX_XTAGS; i++) { - xtags->tags[i] = NULL; - } -} - -void y4m_fini_xtag_list(y4m_xtag_list_t *xtags) -{ - int i; - for (i = 0; i < Y4M_MAX_XTAGS; i++) { - if (xtags->tags[i] != NULL) { - _y4m_free(xtags->tags[i]); - xtags->tags[i] = NULL; - } - } - xtags->count = 0; -} - -void y4m_copy_xtag_list(y4m_xtag_list_t *dest, const y4m_xtag_list_t *src) -{ - int i; - for (i = 0; i < src->count; i++) { - if (dest->tags[i] == NULL) - dest->tags[i] = y4m_new_xtag(); - strncpy(dest->tags[i], src->tags[i], Y4M_MAX_XTAG_SIZE); - } - dest->count = src->count; -} - -static int y4m_snprint_xtags(char *s, int maxn, const y4m_xtag_list_t *xtags) -{ - int i, room; - - for (i = 0, room = maxn - 1; i < xtags->count; i++) { - int n = snprintf(s, room + 1, " %s", xtags->tags[i]); - if ((n < 0) || (n > room)) return Y4M_ERR_HEADER; - s += n; - room -= n; - } - s[0] = '\n'; /* finish off header with newline */ - s[1] = '\0'; /* ...and end-of-string */ - return Y4M_OK; -} - -int y4m_xtag_count(const y4m_xtag_list_t *xtags) -{ - return xtags->count; -} - -const char *y4m_xtag_get(const y4m_xtag_list_t *xtags, int n) -{ - if (n >= xtags->count) - return NULL; - else - return xtags->tags[n]; -} - -int y4m_xtag_add(y4m_xtag_list_t *xtags, const char *tag) -{ - if (xtags->count >= Y4M_MAX_XTAGS) return Y4M_ERR_XXTAGS; - if (xtags->tags[xtags->count] == NULL) - xtags->tags[xtags->count] = y4m_new_xtag(); - strncpy(xtags->tags[xtags->count], tag, Y4M_MAX_XTAG_SIZE); - (xtags->count)++; - return Y4M_OK; -} - -int y4m_xtag_remove(y4m_xtag_list_t *xtags, int n) -{ - int i; - char *q; - - if ((n < 0) || (n >= xtags->count)) return Y4M_ERR_RANGE; - q = xtags->tags[n]; - for (i = n; i < (xtags->count - 1); i++) - xtags->tags[i] = xtags->tags[i+1]; - xtags->tags[i] = q; - (xtags->count)--; - return Y4M_OK; -} - -int y4m_xtag_clearlist(y4m_xtag_list_t *xtags) -{ - xtags->count = 0; - return Y4M_OK; -} - -int y4m_xtag_addlist(y4m_xtag_list_t *dest, const y4m_xtag_list_t *src) -{ - int i, j; - - if ((dest->count + src->count) > Y4M_MAX_XTAGS) return Y4M_ERR_XXTAGS; - for (i = dest->count, j = 0; - j < src->count; - i++, j++) { - if (dest->tags[i] == NULL) - dest->tags[i] = y4m_new_xtag(); - strncpy(dest->tags[i], src->tags[i], Y4M_MAX_XTAG_SIZE); - } - dest->count += src->count; - return Y4M_OK; -} - - -/************************************************************************* - * - * Creators/destructors for y4m_*_info_t structures - * - *************************************************************************/ - -void y4m_init_stream_info(y4m_stream_info_t *info) -{ - if (info == NULL) return; - /* init substructures */ - y4m_init_xtag_list(&(info->x_tags)); - /* set defaults */ - y4m_clear_stream_info(info); -} - -void y4m_clear_stream_info(y4m_stream_info_t *info) -{ - if (info == NULL) return; - /* clear/initialize info */ - info->width = Y4M_UNKNOWN; - info->height = Y4M_UNKNOWN; - info->interlace = Y4M_UNKNOWN; - info->framerate = y4m_fps_UNKNOWN; - info->sampleaspect = y4m_sar_UNKNOWN; - if (_y4mparam_feature_level < 1) { - info->chroma = Y4M_CHROMA_420JPEG; - } else { - info->chroma = Y4M_UNKNOWN; - } - y4m_xtag_clearlist(&(info->x_tags)); -} - -void y4m_copy_stream_info(y4m_stream_info_t *dest, - const y4m_stream_info_t *src) -{ - if ((dest == NULL) || (src == NULL)) return; - /* copy info */ - dest->width = src->width; - dest->height = src->height; - dest->interlace = src->interlace; - dest->framerate = src->framerate; - dest->sampleaspect = src->sampleaspect; - dest->chroma = src->chroma; - y4m_copy_xtag_list(&(dest->x_tags), &(src->x_tags)); -} - -// returns 0 if equal, nonzero if different -static int y4m_compare_stream_info(const y4m_stream_info_t *s1,const y4m_stream_info_t *s2) -{ - int i,j; - - if( s1->width != s2->width || - s1->height != s2->height || - s1->interlace != s2->interlace || - s1->framerate.n != s2->framerate.n || - s1->framerate.d != s2->framerate.d || - s1->sampleaspect.n != s2->sampleaspect.n || - s1->sampleaspect.d != s2->sampleaspect.d || - s1->chroma != s2->chroma || - s1->x_tags.count != s2->x_tags.count ) - return 1; - - // the tags may not be in the same order - for( i=0; ix_tags.count; i++ ) { - for( j=0; jx_tags.count; j++ ) - if( !strncmp(s1->x_tags.tags[i],s2->x_tags.tags[j],Y4M_MAX_XTAG_SIZE) ) - goto next; - return 1; - next:; - } - return 0; -} - -void y4m_fini_stream_info(y4m_stream_info_t *info) -{ - if (info == NULL) return; - y4m_fini_xtag_list(&(info->x_tags)); -} - -void y4m_si_set_width(y4m_stream_info_t *si, int width) -{ - si->width = width; -} - -int y4m_si_get_width(const y4m_stream_info_t *si) -{ return si->width; } - -void y4m_si_set_height(y4m_stream_info_t *si, int height) -{ - si->height = height; -} - -int y4m_si_get_height(const y4m_stream_info_t *si) -{ return si->height; } - -void y4m_si_set_interlace(y4m_stream_info_t *si, int interlace) -{ si->interlace = interlace; } - -int y4m_si_get_interlace(const y4m_stream_info_t *si) -{ return si->interlace; } - -void y4m_si_set_framerate(y4m_stream_info_t *si, y4m_ratio_t framerate) -{ si->framerate = framerate; } - -y4m_ratio_t y4m_si_get_framerate(const y4m_stream_info_t *si) -{ return si->framerate; } - -void y4m_si_set_sampleaspect(y4m_stream_info_t *si, y4m_ratio_t sar) -{ si->sampleaspect = sar; } - -y4m_ratio_t y4m_si_get_sampleaspect(const y4m_stream_info_t *si) -{ return si->sampleaspect; } - -void y4m_si_set_chroma(y4m_stream_info_t *si, int chroma_mode) -{ si->chroma = chroma_mode; } - -int y4m_si_get_chroma(const y4m_stream_info_t *si) -{ return si->chroma; } - - -int y4m_si_get_plane_count(const y4m_stream_info_t *si) -{ - switch (si->chroma) { - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - case Y4M_CHROMA_444: - case Y4M_CHROMA_422: - case Y4M_CHROMA_411: - return 3; - case Y4M_CHROMA_MONO: - return 1; - case Y4M_CHROMA_444ALPHA: - return 4; - default: - return Y4M_UNKNOWN; - } -} - -int y4m_si_get_plane_width(const y4m_stream_info_t *si, int plane) -{ - switch (plane) { - case 0: - return (si->width); - case 1: - case 2: - switch (si->chroma) { - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - return (si->width) / 2; - case Y4M_CHROMA_444: - case Y4M_CHROMA_444ALPHA: - return (si->width); - case Y4M_CHROMA_422: - return (si->width) / 2; - case Y4M_CHROMA_411: - return (si->width) / 4; - default: - return Y4M_UNKNOWN; - } - case 3: - switch (si->chroma) { - case Y4M_CHROMA_444ALPHA: - return (si->width); - default: - return Y4M_UNKNOWN; - } - default: - return Y4M_UNKNOWN; - } -} - -int y4m_si_get_plane_height(const y4m_stream_info_t *si, int plane) -{ - switch (plane) { - case 0: - return (si->height); - case 1: - case 2: - switch (si->chroma) { - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - return (si->height) / 2; - case Y4M_CHROMA_444: - case Y4M_CHROMA_444ALPHA: - case Y4M_CHROMA_422: - case Y4M_CHROMA_411: - return (si->height); - default: - return Y4M_UNKNOWN; - } - case 3: - switch (si->chroma) { - case Y4M_CHROMA_444ALPHA: - return (si->height); - default: - return Y4M_UNKNOWN; - } - default: - return Y4M_UNKNOWN; - } -} - -int y4m_si_get_plane_length(const y4m_stream_info_t *si, int plane) -{ - int w = y4m_si_get_plane_width(si, plane); - int h = y4m_si_get_plane_height(si, plane); - if ((w != Y4M_UNKNOWN) && (h != Y4M_UNKNOWN)) - return (w * h); - else - return Y4M_UNKNOWN; -} - -int y4m_si_get_framelength(const y4m_stream_info_t *si) -{ - int total = 0; - int planes = y4m_si_get_plane_count(si); - int p; - for (p = 0; p < planes; p++) { - int plen = y4m_si_get_plane_length(si, p); - if (plen == Y4M_UNKNOWN) return Y4M_UNKNOWN; - total += plen; - } - return total; -} - -y4m_xtag_list_t *y4m_si_xtags(y4m_stream_info_t *si) -{ return &(si->x_tags); } - - -void y4m_init_frame_info(y4m_frame_info_t *info) -{ - if (info == NULL) return; - /* init substructures */ - y4m_init_xtag_list(&(info->x_tags)); - /* set defaults */ - y4m_clear_frame_info(info); -} - -void y4m_clear_frame_info(y4m_frame_info_t *info) -{ - if (info == NULL) return; - /* clear/initialize info */ - info->spatial = Y4M_UNKNOWN; - info->temporal = Y4M_UNKNOWN; - info->presentation = Y4M_UNKNOWN; - y4m_xtag_clearlist(&(info->x_tags)); -} - -void y4m_copy_frame_info(y4m_frame_info_t *dest, const y4m_frame_info_t *src) -{ - if ((dest == NULL) || (src == NULL)) return; - /* copy info */ - dest->spatial = src->spatial; - dest->temporal = src->temporal; - dest->presentation = src->presentation; - y4m_copy_xtag_list(&(dest->x_tags), &(src->x_tags)); -} - -void y4m_fini_frame_info(y4m_frame_info_t *info) -{ - if (info == NULL) return; - y4m_fini_xtag_list(&(info->x_tags)); -} - -void y4m_fi_set_presentation(y4m_frame_info_t *fi, int pres) -{ fi->presentation = pres; } - -int y4m_fi_get_presentation(const y4m_frame_info_t *fi) -{ return fi->presentation; } - -void y4m_fi_set_temporal(y4m_frame_info_t *fi, int sampling) -{ fi->temporal = sampling; } - -int y4m_fi_get_temporal(const y4m_frame_info_t *fi) -{ return fi->temporal; } - -void y4m_fi_set_spatial(y4m_frame_info_t *fi, int sampling) -{ fi->spatial = sampling; } - -int y4m_fi_get_spatial(const y4m_frame_info_t *fi) -{ return fi->spatial; } - -y4m_xtag_list_t *y4m_fi_xtags(y4m_frame_info_t *fi) -{ return &(fi->x_tags); } - - -/************************************************************************* - * - * Tag parsing - * - *************************************************************************/ - -int y4m_parse_stream_tags(char *s, y4m_stream_info_t *i) -{ - char *token, *value; - char tag; - int err; - - /* parse fields */ - for (token = strtok(s, Y4M_DELIM); - token != NULL; - token = strtok(NULL, Y4M_DELIM)) { - if (token[0] == '\0') continue; /* skip empty strings */ - tag = token[0]; - value = token + 1; - switch (tag) { - case 'W': /* width */ - i->width = atoi(value); - if (i->width <= 0) return Y4M_ERR_RANGE; - break; - case 'H': /* height */ - i->height = atoi(value); - if (i->height <= 0) return Y4M_ERR_RANGE; - break; - case 'F': /* frame rate (fps) */ - if ((err = y4m_parse_ratio(&(i->framerate), value)) != Y4M_OK) - return err; - if (i->framerate.n < 0) return Y4M_ERR_RANGE; - break; - case 'I': /* interlacing */ - switch (value[0]) { - case 'p': i->interlace = Y4M_ILACE_NONE; break; - case 't': i->interlace = Y4M_ILACE_TOP_FIRST; break; - case 'b': i->interlace = Y4M_ILACE_BOTTOM_FIRST; break; - case 'm': i->interlace = Y4M_ILACE_MIXED; break; - case '?': - default: - i->interlace = Y4M_UNKNOWN; break; - } - break; - case 'A': /* sample (pixel) aspect ratio */ - if ((err = y4m_parse_ratio(&(i->sampleaspect), value)) != Y4M_OK) - return err; - if (i->sampleaspect.n < 0) return Y4M_ERR_RANGE; - break; - case 'C': - i->chroma = y4m_chroma_parse_keyword(value); - if (i->chroma == Y4M_UNKNOWN) - return Y4M_ERR_HEADER; - break; - case 'X': /* 'X' meta-tag */ - if ((err = y4m_xtag_add(&(i->x_tags), token)) != Y4M_OK) return err; - break; - default: - /* possible error on unknown options */ - if (_y4mparam_allow_unknown_tags) { - /* unknown tags ok: store in xtag list and warn... */ - if ((err = y4m_xtag_add(&(i->x_tags), token)) != Y4M_OK) return err; - mjpeg_warn("Unknown stream tag encountered: '%s'", token); - } else { - /* unknown tags are *not* ok */ - return Y4M_ERR_BADTAG; - } - break; - } - } - - /* Without 'C' tag or any other chroma spec, default to 420jpeg */ - if (i->chroma == Y4M_UNKNOWN) - i->chroma = Y4M_CHROMA_420JPEG; - - /* Error checking... */ - /* - Width and Height are required. */ - if ((i->width == Y4M_UNKNOWN) || (i->height == Y4M_UNKNOWN)) - return Y4M_ERR_HEADER; - /* - Non-420 chroma and mixed interlace require level >= 1 */ - if (_y4mparam_feature_level < 1) { - if ((i->chroma != Y4M_CHROMA_420JPEG) && - (i->chroma != Y4M_CHROMA_420MPEG2) && - (i->chroma != Y4M_CHROMA_420PALDV)) - return Y4M_ERR_FEATURE; - if (i->interlace == Y4M_ILACE_MIXED) - return Y4M_ERR_FEATURE; - } - - /* ta da! done. */ - return Y4M_OK; -} - - - -static int y4m_parse_frame_tags(char *s, const y4m_stream_info_t *si, - y4m_frame_info_t *fi) -{ - char *token, *value; - char tag; - int err; - - /* parse fields */ - for (token = strtok(s, Y4M_DELIM); - token != NULL; - token = strtok(NULL, Y4M_DELIM)) { - if (token[0] == '\0') continue; /* skip empty strings */ - tag = token[0]; - value = token + 1; - switch (tag) { - case 'I': - /* frame 'I' tag requires feature level >= 1 */ - if (_y4mparam_feature_level < 1) return Y4M_ERR_FEATURE; - if (si->interlace != Y4M_ILACE_MIXED) return Y4M_ERR_BADTAG; - switch (value[0]) { - case 't': fi->presentation = Y4M_PRESENT_TOP_FIRST; break; - case 'T': fi->presentation = Y4M_PRESENT_TOP_FIRST_RPT; break; - case 'b': fi->presentation = Y4M_PRESENT_BOTTOM_FIRST; break; - case 'B': fi->presentation = Y4M_PRESENT_BOTTOM_FIRST_RPT; break; - case '1': fi->presentation = Y4M_PRESENT_PROG_SINGLE; break; - case '2': fi->presentation = Y4M_PRESENT_PROG_DOUBLE; break; - case '3': fi->presentation = Y4M_PRESENT_PROG_TRIPLE; break; - default: - return Y4M_ERR_BADTAG; - } - switch (value[1]) { - case 'p': fi->temporal = Y4M_SAMPLING_PROGRESSIVE; break; - case 'i': fi->temporal = Y4M_SAMPLING_INTERLACED; break; - default: - return Y4M_ERR_BADTAG; - } - switch (value[2]) { - case 'p': fi->spatial = Y4M_SAMPLING_PROGRESSIVE; break; - case 'i': fi->spatial = Y4M_SAMPLING_INTERLACED; break; - case '?': fi->spatial = Y4M_UNKNOWN; break; - default: - return Y4M_ERR_BADTAG; - } - break; - case 'X': /* 'X' meta-tag */ - if ((err = y4m_xtag_add(&(fi->x_tags), token)) != Y4M_OK) return err; - break; - default: - /* possible error on unknown options */ - if (_y4mparam_allow_unknown_tags) { - /* unknown tags ok: store in xtag list and warn... */ - if ((err = y4m_xtag_add(&(fi->x_tags), token)) != Y4M_OK) return err; - mjpeg_warn("Unknown frame tag encountered: '%s'", token); - } else { - /* unknown tags are *not* ok */ - return Y4M_ERR_BADTAG; - } - break; - } - } - /* error-checking and/or non-mixed defaults */ - switch (si->interlace) { - case Y4M_ILACE_MIXED: - /* T and P are required if stream "Im" */ - if ((fi->presentation == Y4M_UNKNOWN) || (fi->temporal == Y4M_UNKNOWN)) - return Y4M_ERR_HEADER; - /* and S is required if stream is also 4:2:0 */ - if ( ((si->chroma == Y4M_CHROMA_420JPEG) || - (si->chroma == Y4M_CHROMA_420MPEG2) || - (si->chroma == Y4M_CHROMA_420PALDV)) && - (fi->spatial == Y4M_UNKNOWN) ) - return Y4M_ERR_HEADER; - break; - case Y4M_ILACE_NONE: - /* stream "Ip" --> equivalent to frame "I1pp" */ - fi->spatial = Y4M_SAMPLING_PROGRESSIVE; - fi->temporal = Y4M_SAMPLING_PROGRESSIVE; - fi->presentation = Y4M_PRESENT_PROG_SINGLE; - break; - case Y4M_ILACE_TOP_FIRST: - /* stream "It" --> equivalent to frame "Itii" */ - fi->spatial = Y4M_SAMPLING_INTERLACED; - fi->temporal = Y4M_SAMPLING_INTERLACED; - fi->presentation = Y4M_PRESENT_TOP_FIRST; - break; - case Y4M_ILACE_BOTTOM_FIRST: - /* stream "Ib" --> equivalent to frame "Ibii" */ - fi->spatial = Y4M_SAMPLING_INTERLACED; - fi->temporal = Y4M_SAMPLING_INTERLACED; - fi->presentation = Y4M_PRESENT_BOTTOM_FIRST; - break; - default: - /* stream unknown: then, whatever */ - break; - } - /* ta da! done. */ - return Y4M_OK; -} - - - - - -/************************************************************************* - * - * Read/Write stream header - * - *************************************************************************/ - - -static int y4m_read_stream_header_line_cb(y4m_cb_reader_t * fd, y4m_stream_info_t *i,char *line,int n) -{ - int err; - - /* start with a clean slate */ - y4m_clear_stream_info(i); - /* read the header line */ - for (; n < Y4M_LINE_MAX; n++) { - if (y4m_read_cb(fd, line+n, 1)) - return Y4M_ERR_SYSTEM; - if (line[n] == '\n') { - line[n] = '\0'; /* Replace linefeed by end of string */ - break; - } - } - /* look for keyword in header */ - if (strncmp(line, Y4M_MAGIC, strlen(Y4M_MAGIC))) - return Y4M_ERR_MAGIC; - if (n >= Y4M_LINE_MAX) - return Y4M_ERR_HEADER; - if ((err = y4m_parse_stream_tags(line + strlen(Y4M_MAGIC), i)) != Y4M_OK) - return err; - - return Y4M_OK; -} - -static int y4m_reread_stream_header_line_cb(y4m_cb_reader_t *fd,const y4m_stream_info_t *si,char *line,int n) -{ - y4m_stream_info_t i; - int err=y4m_read_stream_header_line_cb(fd,&i,line,n); - if( err==Y4M_OK && y4m_compare_stream_info(si,&i) ) - err=Y4M_ERR_HEADER; - y4m_fini_stream_info(&i); - return err; -} - -int y4m_read_stream_header_cb(y4m_cb_reader_t *fd, y4m_stream_info_t *i) -{ - char line[Y4M_LINE_MAX]; - - return y4m_read_stream_header_line_cb(fd,i,line,0); -} - -int y4m_read_stream_header(int fd, y4m_stream_info_t *i) -{ - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_stream_header_cb(&r, i); -} - -int y4m_write_stream_header_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *i) -{ - char s[Y4M_LINE_MAX+1]; - int n; - int err; - y4m_ratio_t rate = i->framerate; - y4m_ratio_t aspect = i->sampleaspect; - const char *chroma_keyword = y4m_chroma_keyword(i->chroma); - - if ((i->chroma == Y4M_UNKNOWN) || (chroma_keyword == NULL)) - return Y4M_ERR_HEADER; - if (_y4mparam_feature_level < 1) { - if ((i->chroma != Y4M_CHROMA_420JPEG) && - (i->chroma != Y4M_CHROMA_420MPEG2) && - (i->chroma != Y4M_CHROMA_420PALDV)) - return Y4M_ERR_FEATURE; - if (i->interlace == Y4M_ILACE_MIXED) - return Y4M_ERR_FEATURE; - } - y4m_ratio_reduce(&rate); - y4m_ratio_reduce(&aspect); - n = snprintf(s, sizeof(s), "%s W%d H%d F%d:%d I%s A%d:%d C%s", - Y4M_MAGIC, - i->width, - i->height, - rate.n, rate.d, - (i->interlace == Y4M_ILACE_NONE) ? "p" : - (i->interlace == Y4M_ILACE_TOP_FIRST) ? "t" : - (i->interlace == Y4M_ILACE_BOTTOM_FIRST) ? "b" : - (i->interlace == Y4M_ILACE_MIXED) ? "m" : "?", - aspect.n, aspect.d, - chroma_keyword - ); - if ((n < 0) || (n > Y4M_LINE_MAX)) return Y4M_ERR_HEADER; - if ((err = y4m_snprint_xtags(s + n, sizeof(s) - n - 1, &(i->x_tags))) - != Y4M_OK) - return err; - /* non-zero on error */ - return (y4m_write_cb(fd, s, strlen(s)) ? Y4M_ERR_SYSTEM : Y4M_OK); -} - -int y4m_write_stream_header(int fd, const y4m_stream_info_t *i) -{ - y4m_cb_writer_t w; - set_cb_writer_from_fd(&w, &fd); - return y4m_write_stream_header_cb(&w, i); -} - - - - -/************************************************************************* - * - * Read/Write frame header - * - *************************************************************************/ - -int y4m_read_frame_header_cb(y4m_cb_reader_t * fd, - const y4m_stream_info_t *si, - y4m_frame_info_t *fi) -{ - char line[Y4M_LINE_MAX]; - char *p; - int n; - ssize_t remain; - - again: - /* start with a clean slate */ - y4m_clear_frame_info(fi); - /* This is more clever than read_stream_header... - Try to read "FRAME\n" all at once, and don't try to parse - if nothing else is there... - */ - remain = y4m_read_cb(fd, line, sizeof(Y4M_FRAME_MAGIC)-1+1); /* -'\0', +'\n' */ - if (remain < 0) return Y4M_ERR_SYSTEM; - if (remain > 0) { - /* A clean EOF should end exactly at a frame-boundary */ - if (remain == sizeof(Y4M_FRAME_MAGIC)) - return Y4M_ERR_EOF; - else - return Y4M_ERR_BADEOF; - } - if (strncmp(line, Y4M_FRAME_MAGIC, sizeof(Y4M_FRAME_MAGIC)-1)) { - int err=y4m_reread_stream_header_line_cb(fd,si,line,sizeof(Y4M_FRAME_MAGIC)-1+1); - if( err!=Y4M_OK ) - return err; - goto again; - } - if (line[sizeof(Y4M_FRAME_MAGIC)-1] == '\n') - return Y4M_OK; /* done -- no tags: that was the end-of-line. */ - - if (line[sizeof(Y4M_FRAME_MAGIC)-1] != Y4M_DELIM[0]) { - return Y4M_ERR_MAGIC; /* wasn't a space -- what was it? */ - } - - /* proceed to get the tags... (overwrite the magic) */ - for (n = 0, p = line; n < Y4M_LINE_MAX; n++, p++) { - if (y4m_read_cb(fd, p, 1)) - return Y4M_ERR_SYSTEM; - if (*p == '\n') { - *p = '\0'; /* Replace linefeed by end of string */ - break; - } - } - if (n >= Y4M_LINE_MAX) return Y4M_ERR_HEADER; - /* non-zero on error */ - return y4m_parse_frame_tags(line, si, fi); -} - -int y4m_read_frame_header(int fd, - const y4m_stream_info_t *si, - y4m_frame_info_t *fi) - { - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_frame_header_cb(&r, si, fi); - } - - -int y4m_write_frame_header_cb(y4m_cb_writer_t * fd, - const y4m_stream_info_t *si, - const y4m_frame_info_t *fi) -{ - char s[Y4M_LINE_MAX+1]; - int n, err; - - if (si->interlace == Y4M_ILACE_MIXED) { - if (_y4mparam_feature_level < 1) return Y4M_ERR_FEATURE; - n = snprintf(s, sizeof(s), "%s I%c%c%c", Y4M_FRAME_MAGIC, - (fi->presentation == Y4M_PRESENT_TOP_FIRST) ? 't' : - (fi->presentation == Y4M_PRESENT_TOP_FIRST_RPT) ? 'T' : - (fi->presentation == Y4M_PRESENT_BOTTOM_FIRST) ? 'b' : - (fi->presentation == Y4M_PRESENT_BOTTOM_FIRST_RPT) ? 'B' : - (fi->presentation == Y4M_PRESENT_PROG_SINGLE) ? '1' : - (fi->presentation == Y4M_PRESENT_PROG_DOUBLE) ? '2' : - (fi->presentation == Y4M_PRESENT_PROG_TRIPLE) ? '3' : - '?', - (fi->temporal == Y4M_SAMPLING_PROGRESSIVE) ? 'p' : - (fi->temporal == Y4M_SAMPLING_INTERLACED) ? 'i' : - '?', - (fi->spatial == Y4M_SAMPLING_PROGRESSIVE) ? 'p' : - (fi->spatial == Y4M_SAMPLING_INTERLACED) ? 'i' : - '?' - ); - } else { - n = snprintf(s, sizeof(s), "%s", Y4M_FRAME_MAGIC); - } - - if ((n < 0) || (n > Y4M_LINE_MAX)) return Y4M_ERR_HEADER; - if ((err = y4m_snprint_xtags(s + n, sizeof(s) - n - 1, &(fi->x_tags))) - != Y4M_OK) - return err; - /* non-zero on error */ - return (y4m_write_cb(fd, s, strlen(s)) ? Y4M_ERR_SYSTEM : Y4M_OK); -} - -int y4m_write_frame_header(int fd, - const y4m_stream_info_t *si, - const y4m_frame_info_t *fi) -{ - y4m_cb_writer_t w; - set_cb_writer_from_fd(&w, &fd); - return y4m_write_frame_header_cb(&w, si, fi); -} - -/************************************************************************* - * - * Read/Write entire frame - * - *************************************************************************/ - -int y4m_read_frame_data_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *frame) -{ - int planes = y4m_si_get_plane_count(si); - int p; - - /* Read each plane */ - for (p = 0; p < planes; p++) { - int w = y4m_si_get_plane_width(si, p); - int h = y4m_si_get_plane_height(si, p); - if (y4m_read_cb(fd, frame[p], w*h)) return Y4M_ERR_SYSTEM; - } - return Y4M_OK; -} - -int y4m_read_frame_data(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *frame) -{ - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_frame_data_cb(&r, si, fi, frame); -} - -int y4m_read_frame_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *frame) -{ - int err; - - /* Read frame header */ - if ((err = y4m_read_frame_header_cb(fd, si, fi)) != Y4M_OK) return err; - /* Read date */ - return y4m_read_frame_data_cb(fd, si, fi, frame); -} - -int y4m_read_frame(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *frame) -{ - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_frame_cb(&r, si, fi, frame); -} - - - -int y4m_write_frame_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, uint8_t * const *frame) -{ - int planes = y4m_si_get_plane_count(si); - int err, p; - - /* Write frame header */ - if ((err = y4m_write_frame_header_cb(fd, si, fi)) != Y4M_OK) return err; - /* Write each plane */ - for (p = 0; p < planes; p++) { - int w = y4m_si_get_plane_width(si, p); - int h = y4m_si_get_plane_height(si, p); - if (y4m_write_cb(fd, frame[p], w*h)) return Y4M_ERR_SYSTEM; - } - return Y4M_OK; -} - -int y4m_write_frame(int fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, uint8_t * const *frame) -{ - y4m_cb_writer_t w; - set_cb_writer_from_fd(&w, &fd); - return y4m_write_frame_cb(&w, si, fi, frame); -} - -/************************************************************************* - * - * Read/Write entire frame, (de)interleaved (to)from two separate fields - * - *************************************************************************/ - - -int y4m_read_fields_data_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - int p; - int planes = y4m_si_get_plane_count(si); - const int maxrbuf=32*1024; - uint8_t *rbuf=_y4m_alloc(maxrbuf); - int rbufpos=0,rbuflen=0; - - /* Read each plane */ - for (p = 0; p < planes; p++) { - uint8_t *dsttop = upper_field[p]; - uint8_t *dstbot = lower_field[p]; - int height = y4m_si_get_plane_height(si, p); - int width = y4m_si_get_plane_width(si, p); - int y; - /* alternately read one line into each field */ - for (y = 0; y < height; y += 2) { - if( width*2 >= maxrbuf ) { - if (y4m_read_cb(fd, dsttop, width)) goto y4merr; - if (y4m_read_cb(fd, dstbot, width)) goto y4merr; - } else { - if( rbufpos==rbuflen ) { - rbuflen=(height-y)*width; - if( rbuflen>maxrbuf ) - rbuflen=maxrbuf-maxrbuf%(2*width); - if( y4m_read_cb(fd,rbuf,rbuflen) ) - goto y4merr; - rbufpos=0; - } - - memcpy(dsttop,rbuf+rbufpos,width); rbufpos+=width; - memcpy(dstbot,rbuf+rbufpos,width); rbufpos+=width; - } - dsttop+=width; - dstbot+=width; - } - } - _y4m_free(rbuf); - return Y4M_OK; - - y4merr: - _y4m_free(rbuf); - return Y4M_ERR_SYSTEM; -} - -int y4m_read_fields_data(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_fields_data_cb(&r, si, fi, upper_field, lower_field); -} - - -int y4m_read_fields_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - int err; - /* Read frame header */ - if ((err = y4m_read_frame_header_cb(fd, si, fi)) != Y4M_OK) return err; - /* Read data */ - return y4m_read_fields_data_cb(fd, si, fi, upper_field, lower_field); -} - -int y4m_read_fields(int fd, const y4m_stream_info_t *si, y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - y4m_cb_reader_t r; - set_cb_reader_from_fd(&r, &fd); - return y4m_read_fields_cb(&r, si, fi, upper_field, lower_field); -} - -int y4m_write_fields_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - int p, err; - int planes = y4m_si_get_plane_count(si); - int numwbuf=0; - const int maxwbuf=32*1024; - uint8_t *wbuf; - - /* Write frame header */ - if ((err = y4m_write_frame_header_cb(fd, si, fi)) != Y4M_OK) return err; - /* Write each plane */ - wbuf=_y4m_alloc(maxwbuf); - for (p = 0; p < planes; p++) { - uint8_t *srctop = upper_field[p]; - uint8_t *srcbot = lower_field[p]; - int height = y4m_si_get_plane_height(si, p); - int width = y4m_si_get_plane_width(si, p); - int y; - /* alternately write one line from each field */ - for (y = 0; y < height; y += 2) { - if( width*2 >= maxwbuf ) { - if (y4m_write_cb(fd, srctop, width)) goto y4merr; - if (y4m_write_cb(fd, srcbot, width)) goto y4merr; - } else { - if (numwbuf + 2 * width > maxwbuf) { - if(y4m_write_cb(fd, wbuf, numwbuf)) goto y4merr; - numwbuf=0; - } - - memcpy(wbuf+numwbuf,srctop,width); numwbuf += width; - memcpy(wbuf+numwbuf,srcbot,width); numwbuf += width; - } - srctop += width; - srcbot += width; - } - } - if( numwbuf ) - if( y4m_write_cb(fd, wbuf, numwbuf) ) - goto y4merr; - _y4m_free(wbuf); - return Y4M_OK; - - y4merr: - _y4m_free(wbuf); - return Y4M_ERR_SYSTEM; -} - -int y4m_write_fields(int fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field) -{ - y4m_cb_writer_t w; - set_cb_writer_from_fd(&w, &fd); - return y4m_write_fields_cb(&w, si, fi, upper_field, lower_field); -} - -/************************************************************************* - * - * Handy logging of stream info - * - *************************************************************************/ - -void y4m_log_stream_info(log_level_t level, const char *prefix, - const y4m_stream_info_t *i) -{ - char s[256]; - - snprintf(s, sizeof(s), " frame size: "); - if (i->width == Y4M_UNKNOWN) - snprintf(s+strlen(s), sizeof(s)-strlen(s), "(?)x"); - else - snprintf(s+strlen(s), sizeof(s)-strlen(s), "%dx", i->width); - if (i->height == Y4M_UNKNOWN) - snprintf(s+strlen(s), sizeof(s)-strlen(s), "(?) pixels "); - else - snprintf(s+strlen(s), sizeof(s)-strlen(s), "%d pixels ", i->height); - { - int framelength = y4m_si_get_framelength(i); - if (framelength == Y4M_UNKNOWN) - snprintf(s+strlen(s), sizeof(s)-strlen(s), "(? bytes)"); - else - snprintf(s+strlen(s), sizeof(s)-strlen(s), "(%d bytes)", framelength); - mjpeg_log(level, "%s%s", prefix, s); - } - { - const char *desc = y4m_chroma_description(i->chroma); - if (desc == NULL) desc = "unknown!"; - mjpeg_log(level, "%s chroma: %s", prefix, desc); - } - if ((i->framerate.n == 0) && (i->framerate.d == 0)) - mjpeg_log(level, "%s frame rate: ??? fps", prefix); - else - mjpeg_log(level, "%s frame rate: %d/%d fps (~%f)", prefix, - i->framerate.n, i->framerate.d, - (double) i->framerate.n / (double) i->framerate.d); - mjpeg_log(level, "%s interlace: %s", prefix, - (i->interlace == Y4M_ILACE_NONE) ? "none/progressive" : - (i->interlace == Y4M_ILACE_TOP_FIRST) ? "top-field-first" : - (i->interlace == Y4M_ILACE_BOTTOM_FIRST) ? "bottom-field-first" : - (i->interlace == Y4M_ILACE_MIXED) ? "mixed-mode" : - "anyone's guess"); - if ((i->sampleaspect.n == 0) && (i->sampleaspect.d == 0)) - mjpeg_log(level, "%ssample aspect ratio: ?:?", prefix); - else - mjpeg_log(level, "%ssample aspect ratio: %d:%d", prefix, - i->sampleaspect.n, i->sampleaspect.d); -} - - -/************************************************************************* - * - * Convert error code to string - * - *************************************************************************/ - -const char *y4m_strerr(int err) -{ - switch (err) { - case Y4M_OK: return "no error"; - case Y4M_ERR_RANGE: return "parameter out of range"; - case Y4M_ERR_SYSTEM: return "system error (failed read/write)"; - case Y4M_ERR_HEADER: return "bad stream or frame header"; - case Y4M_ERR_BADTAG: return "unknown header tag"; - case Y4M_ERR_MAGIC: return "bad header magic"; - case Y4M_ERR_XXTAGS: return "too many xtags"; - case Y4M_ERR_EOF: return "end-of-file"; - case Y4M_ERR_BADEOF: return "stream ended unexpectedly (EOF)"; - case Y4M_ERR_FEATURE: return "stream requires unsupported features"; - default: - return "unknown error code"; - } -} - - -/************************************************************************* - * - * Chroma subsampling stuff - * - *************************************************************************/ - -y4m_ratio_t y4m_chroma_ss_x_ratio(int chroma_mode) -{ - y4m_ratio_t r; - switch (chroma_mode) { - case Y4M_CHROMA_444ALPHA: - case Y4M_CHROMA_444: - case Y4M_CHROMA_MONO: - r.n = 1; r.d = 1; break; - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - case Y4M_CHROMA_422: - r.n = 1; r.d = 2; break; - case Y4M_CHROMA_411: - r.n = 1; r.d = 4; break; - default: - r.n = 0; r.d = 0; - } - return r; -} - -y4m_ratio_t y4m_chroma_ss_y_ratio(int chroma_mode) -{ - y4m_ratio_t r; - switch (chroma_mode) { - case Y4M_CHROMA_444ALPHA: - case Y4M_CHROMA_444: - case Y4M_CHROMA_MONO: - case Y4M_CHROMA_422: - case Y4M_CHROMA_411: - r.n = 1; r.d = 1; break; - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - r.n = 1; r.d = 2; break; - default: - r.n = 0; r.d = 0; - } - return r; -} - - -#if 0 /* unfinished work here */ -y4m_ratio_t y4m_chroma_ss_x_offset(int chroma_mode, int field, int plane) -{ - y4m_ratio_t r; - switch (chroma_mode) { - case Y4M_CHROMA_444ALPHA: - case Y4M_CHROMA_444: - case Y4M_CHROMA_MONO: - case Y4M_CHROMA_422: - case Y4M_CHROMA_411: - r.n = 0; r.d = 1; break; - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - r.n = 1; r.d = 2; break; - default: - r.n = 0; r.d = 0; - } - return r; -} - -y4m_ratio_t y4m_chroma_ss_y_offset(int chroma_mode, int field, int plane); -{ - y4m_ratio_t r; - switch (chroma_mode) { - case Y4M_CHROMA_444ALPHA: - case Y4M_CHROMA_444: - case Y4M_CHROMA_MONO: - case Y4M_CHROMA_422: - case Y4M_CHROMA_411: - r.n = 0; r.d = 1; break; - case Y4M_CHROMA_420JPEG: - case Y4M_CHROMA_420MPEG2: - case Y4M_CHROMA_420PALDV: - r.n = 1; r.d = 2; break; - default: - r.n = 0; r.d = 0; - } - return r; -} -#endif - -int y4m_chroma_parse_keyword(const char *s) -{ - if (!strcasecmp("420jpeg", s)) - return Y4M_CHROMA_420JPEG; - else if (!strcasecmp("420mpeg2", s)) - return Y4M_CHROMA_420MPEG2; - else if (!strcasecmp("420paldv", s)) - return Y4M_CHROMA_420PALDV; - else if (!strcasecmp("444", s)) - return Y4M_CHROMA_444; - else if (!strcasecmp("422", s)) - return Y4M_CHROMA_422; - else if (!strcasecmp("411", s)) - return Y4M_CHROMA_411; - else if (!strcasecmp("mono", s)) - return Y4M_CHROMA_MONO; - else if (!strcasecmp("444alpha", s)) - return Y4M_CHROMA_444ALPHA; - else - return Y4M_UNKNOWN; -} - -const char *y4m_chroma_keyword(int chroma_mode) -{ - switch (chroma_mode) { - case Y4M_CHROMA_420JPEG: return "420jpeg"; - case Y4M_CHROMA_420MPEG2: return "420mpeg2"; - case Y4M_CHROMA_420PALDV: return "420paldv"; - case Y4M_CHROMA_444: return "444"; - case Y4M_CHROMA_422: return "422"; - case Y4M_CHROMA_411: return "411"; - case Y4M_CHROMA_MONO: return "mono"; - case Y4M_CHROMA_444ALPHA: return "444alpha"; - default: - return NULL; - } -} - -const char *y4m_chroma_description(int chroma_mode) -{ - switch (chroma_mode) { - case Y4M_CHROMA_420JPEG: return "4:2:0 JPEG/MPEG-1 (interstitial)"; - case Y4M_CHROMA_420MPEG2: return "4:2:0 MPEG-2 (horiz. cositing)"; - case Y4M_CHROMA_420PALDV: return "4:2:0 PAL-DV (altern. siting)"; - case Y4M_CHROMA_444: return "4:4:4 (no subsampling)"; - case Y4M_CHROMA_422: return "4:2:2 (horiz. cositing)"; - case Y4M_CHROMA_411: return "4:1:1 (horiz. cositing)"; - case Y4M_CHROMA_MONO: return "luma plane only"; - case Y4M_CHROMA_444ALPHA: return "4:4:4 with alpha channel"; - default: - return NULL; - } -} diff --git a/veejay-current/veejay-core/AUTHORS b/veejay-current/veejay-core/AUTHORS new file mode 100644 index 00000000..baf639e3 --- /dev/null +++ b/veejay-current/veejay-core/AUTHORS @@ -0,0 +1,30 @@ + +veejay contributors: +==================== + + (in no particular order) + + Jeff Carpenter + David Denny + Daniel Jircik + Pilo Chambert + Matthijs van Henten + Dursun Koca + Peter de Man + Stefan Thieme + Andrew Wood + Kyle Davenport + Daniel Rohr + Rupert Reddington + Toni (from Germany) + Thomas Reinhold + Maciek Szczesniak + Jerome Blanchi + +authors: +====================== + + Niels Elburg + + + diff --git a/veejay-current/veejay-core/COPYING b/veejay-current/veejay-core/COPYING new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/veejay-current/veejay-core/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/veejay-current/veejay-client/ChangeLog b/veejay-current/veejay-core/ChangeLog similarity index 100% rename from veejay-current/veejay-client/ChangeLog rename to veejay-current/veejay-core/ChangeLog diff --git a/veejay-current/veejay-core/Makefile.am b/veejay-current/veejay-core/Makefile.am new file mode 100644 index 00000000..72f143ee --- /dev/null +++ b/veejay-current/veejay-core/Makefile.am @@ -0,0 +1,51 @@ +# Process with automake to produce Makefile.in + +SUBDIRS = thirdparty +SUBDIRS += libvjmsg libvjmem +SUBDIRS += libvevo libvjnet libyuv +SUBDIRS += veejaycore + +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = \ + autogen.sh\ + depcomp \ + cpuinfo.sh \ + autogen.sh \ + buildinfo.sh + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = veejaycore.pc + +DISTCLEANFILES = \ + veejaycore.pc \ + config.cache \ + config.status \ + config.log + +MAINTAINERCLEANFILES = \ + compile \ + depcomp \ + install-sh \ + missing \ + mkinstalldirs \ + Makefile.in \ + aclocal.m4 \ + config.guess \ + config.h.in \ + config.sub \ + configure \ + ltmain.sh \ + stamp-h.in + +## make rpms +rpm: Makefile + $(MAKE) dist + rpmbuild -ta --clean $(PACKAGE)-$(VERSION).tar.gz + +release: + rm -rf .deps */.deps + $(MAKE) distcheck + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-`date +%Y-%m-%d` diff --git a/veejay-current/veejay-client/NEWS b/veejay-current/veejay-core/NEWS similarity index 100% rename from veejay-current/veejay-client/NEWS rename to veejay-current/veejay-core/NEWS diff --git a/veejay-current/veejay-core/README b/veejay-current/veejay-core/README new file mode 100644 index 00000000..f7f252a3 --- /dev/null +++ b/veejay-current/veejay-core/README @@ -0,0 +1,243 @@ + + + + + 10x0 0x x10x0x10x0x10x 10x0x10x0x10x0 x0x1 x0x1 10x0 x0x1 + 0x10x0 0x0x x10x0x10x0x10x 10x0x10x0x10x0 x0x1 10x0x10x 10x0x1 10x0x1 +0x0x10 0x0x10 x10x 10x0 x0x1 10x0x10x x0x10x 10x0 +0x0x10x0 0x0x10 x10x0x10x0x1 10x0x10x0x10 x0x1 0x10 0x0 x10x0x10 + 0x10x0 x10x0x x10x0x10x0x10x 10x0x10x0x10 x0x1 0x10x0x10x0 x10x0x10 + 10x0x1 x0x10x x10x 10x0 x0x1 0x10x0x10x0 0x0x + x0x10x0x10x0x1 x10x 10x0 x10x x0x1 0x10x0x10x0x10 0x0x + x10x0x10x0 x10x0x10x0x10x 10x0x10x0x10x0 x10x 10x0 0x0x 0x10 0x0x + 0x0x10 x10x0x10x0x10x 10x0x10x0x10x0 0x010x0 0x0x 0x10 0x0x + + version 1.5 + June 2019 + + ================================================================================================= + + :: Veejay, a visual instrument for GNU :: + http://veejayhq.net + http://veejay.dyne.org + + + + Veejay - a 'visual' instrument and realtime video sampler + +Veejay is a visual instrument and real-time video sampler. +It allows you to "play" the video like you would play a piano. +While playing, you can record the resulting video directly to disk (video sampling). + + +====== quick install: + + order of packages: + veejay-core, veejay-server, veejay-client, veejay-utils, plugin-packs + + for each package: + ./autogen.sh + ./configure + make && sudo make install + sudo ldconfig + + if you want to debug veejay-server (or if you want to submit a meaningful backtrace), build with: + + ./configure --enable-debug + + + to build plugins: + + cd veejay-sever/livido-plugins + ./RUNME.sh /tmp/plugins + + install the plugins in your home-dir: + + mkdir ~/.veejay # or start veejay + echo "/tmp/plugins" >> ~/.veejay/plugins.cfg + + + install GMIC, + + cd plugin-packs/lvdgmic + ./autogen.sh + ./configure && make + + + + +FEATURE OVERVIEW + +General +------- + # Free Software (GNU GPL) (1) + # Servent architecture (2) + # Soft realtime (3) + # Frame accurate (4) + # Loop based editing (5) + # Native YUV(A) processing + # Crash recovery + +Media +----- + # Codecs: MJPEG,MPNG, DV, YUV (raw) + # Containers: AVI , Quicktime, rawDV + # Devices: USB webcams, DV1394, TV capture cards, etc. + # Support for unlimited capture devices + # Support for Image files (PNG ,JPEG,TIFF,etc) + +Editing +------- + # 161 built-in FX , many unique and original FX filters + # 60 Livido filters + # FX chain (20 slots) with Alpha Channels + # All FX parameters can be animated. + # Mix up to two layers per FX slot + # Non destructive edit decision lists (cut/copy/paste/crop video) + # Sample editor + # Sequence editor + # Live disk recorder (sampling) + # Full deck save/restore + # Live clip loading + # Live sample sequencing + + + +Trickplay +--------- + # VIMS event recording/playback (6) + # Various looping modes including bounce looping + # Playback speed and direction + # Video scratching + # Change in-and out points of a sample (marker) + # Slow motion audio / video (7) + # Fast motion audio / video + # Dynamic framerate + # Random frame play + # Random sample play + # Access up to 4096 video samples instantly + +Output +------ + # Audio trough Jack (low latency audio server) (8) + # SDL video + # Headless + # YUV4MPEG streaming + # V4L2 loopback devices + # Network streaming + # Image grabbing + +Interaction +----------- + # Programmable keyboard interface + # VIMS (tcp/ip) + # OSC (udp) + # PureData trough sendVIMS external + +Viewing +------- + # Full screen or windowed mode + # Perspective and foward projection (9) + # Twinview/BigDesktop + # Split-screen video wall + + +Additional +---------- + # Support for Frei0r plugins + # Support for LiVIDO plugins + # Support for FreeFrame plugins (only for 32 bit systems!) + + + + + +(1) Free Software + A matter of liberty, not price. You should think of β€œfree” as in free speech. + Free software is the matter of the users freedom to run, copy, distribute, study, change and improve the software. + +(2) A servent architecture is a peer-to-peer network mode with both functionalities of a + server and a client. The setup is designed so that each veejay-node can send and receive video, + allowing for the creation and maintenance of ad-hoc veejay-networks. + Reloaded , veejay's graphical interface, is a thin client and can be run from another computer + to track one or more veejay servers. + +(3) Soft realtime: A system is realtime if the correctness of the application not only depends on + the logical correctness but also upon the time at which it was performed. + Veejay tolerates such lateness and responds by dropping video frames. + You can instruct veejay to ignore the time aspect of the video and render all frames, effectivly + turning the server into a frame producer. + +(4) VIMS: Veejay Internal Message System. Control data is distributed via this message system, + each message consists of an 'event selector' with a list of arguments. VIMS is the lowest + level control interface available. The keyboard interface and OSC server are built on top of it. + Also all veejay clients communicate usings VIMS. + +(5) Loop based editing: Loops are (short) sections of video (up to any length) that are repeated + continuously. While playing, you can change the properties of the video sample, add filters to it + and record it on the fly to a new sample (which can be used instantly). + +(6) Frame accurate: In veejay, every frame is a key-frame (a whole image). + As a consequence, veejay has no support for video codecs that make use of difference frames. + +(7) In trickplay mode, veejay will always resample the audio analogous to varying the speed + of an analogue tape recorder . Halve the speed results in the pitch going down an octave. + Slow motion video is produced by linearly interpolating in-between frames and + faster motion is accomplished by skipping video frames or, if playing without audio, + by changing the framerate dynamically. + +(8) JACK: A low latency audio server that can connect a number of different applications to an audio device, + allowing them to share audio between themselves. + +(9) Perspective Viewing: You can define a quadrilateral to which the rendered image will be mapped. + This is usefull for setups where the image borders fall outside the projection screen area, or where + the projector/camera has a (wide) angle to the projection. + Last but not least, it can be used for on-body projection performances. + + + + + +Install +======= + +See file 'INSTALL' + +See doc/Howto_Compile.html +See doc/Howto_Compile_on_Ubuntu.html + +Documentation +============= + +See the directory 'doc' in this package, it contains usefull documentation. + + +First time setup +================ + +You need to font a TrueType Font file in $HOME/.veejay/fonts + + +Running +======= + +Start 1 or more Veejay servers: +$ veejay my-movie-A.avi +$ veejay -p 4490 my-movie-B.avi + +CONTACT / FEEDBACK & HELP +========================= + +http://veejayhq.net + + +BUG REPORTS / BLEEDING EDGE SOURCE CODE +======================================= + +Please use the ticket system ! + +http://veejay.dyne.org +http://veejayhq.net + +ENJOY! And let us know about your performances/installations with veejay! + diff --git a/veejay-current/veejay-core/autogen.sh b/veejay-current/veejay-core/autogen.sh new file mode 100755 index 00000000..5331cd99 --- /dev/null +++ b/veejay-current/veejay-core/autogen.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +# if you use autoconf 2.64 or earlier, +# you may have to create the m4 directory yourself +# + + + +## remove the '#' in front of the line for 'autoreconf' + +######################################## +## newer distributions, ubuntu 11. etc +######################################## + +if [ ! -d m4 ]; then + mkdir m4 +fi + +autoreconf -v -fi -I m4 + +######################################### +## slackware 13.1 and older +######################################### + +#autoreconf -v -fi diff --git a/veejay-current/veejay-core/buildinfo.sh b/veejay-current/veejay-core/buildinfo.sh new file mode 100755 index 00000000..7163fd4f --- /dev/null +++ b/veejay-current/veejay-core/buildinfo.sh @@ -0,0 +1,17 @@ +#!/bin/sh +HOST=`uname -n` +KERNEL=`uname -r` +MACHINE=`uname -m` +OS=`uname -s` +DATE=`date -u "+%Y-%m-%d %H:%M:%S"` +cat <build.h +/* +* buildinfo.h +* Do not edit this file, it is auto-generated. +*/ +#define BUILD_HOSTNAME "${HOST}" +#define BUILD_KERNEL "${KERNEL}" +#define BUILD_MACHINE "${MACHINE}" +#define BUILD_OS "${OS}" +#define BUILD_DATE "${DATE} UTC" +EOF diff --git a/veejay-current/veejay-client/configure.ac b/veejay-current/veejay-core/configure.ac similarity index 62% rename from veejay-current/veejay-client/configure.ac rename to veejay-current/veejay-core/configure.ac index 7e6ad9b0..83ff2442 100644 --- a/veejay-current/veejay-client/configure.ac +++ b/veejay-current/veejay-core/configure.ac @@ -1,40 +1,58 @@ dnl Process this file with autoconf to produce a configure script. dnl AC_INIT -AC_INIT([reloaded],[1.5.61],[nwelburg@gmail.com]) +AC_INIT([veejaycore],[1.5.65],[http://www.veejayhq.net]) AC_PREREQ(2.57) -AC_CONFIG_SRCDIR([src/gveejay.c]) +AC_CONFIG_SRCDIR([veejaycore/core.c]) -RELOADED_MAJOR_VERSION=1 -RELOADED_MINOR_VERSION=5 -RELOADED_MICRO_VERSION=61 -RELOADED_VERSION=$VEEJAY_MAJOR_VERSION.$VEEJAY_MINOR_VERSION.$VEEJAY_MICRO_VERSION -RELOADED_CODENAME="Reloaded - build $RELOADED_MAJOR_VERSION $RELOADED_MINOR_VERSION $RELOADED_MICRO_VERSION" +VEEJAYCORE_MAJOR_VERSION=1 +VEEJAYCORE_MINOR_VERSION=5 +VEEJAYCORE_MICRO_VERSION=65 +VEEJAYCORE_VERSION=$VEEJAYCORE_MAJOR_VERSION.$VEEJAYCORE_MINOR_VERSION.$VEEJAYCORE_MICRO_VERSION +VEEJAYCORE_CODENAME="Veejay Core - build $VEEJAY_MINOR_VERSION $VEEJAY_MICRO_VERSION" AC_CONFIG_HEADERS([config.h]) +dnl AX_CONFIG_PREFIXED_HEADER([veejay-config.h], [VEEJAY], [config.h]) AC_CANONICAL_HOST AC_CANONICAL_TARGET AC_CONFIG_MACRO_DIR([m4]) -AM_INIT_AUTOMAKE([1.7]) + +AM_INIT_AUTOMAKE([subdir-objects]) AM_MAINTAINER_MODE +AC_DEFINE(VEEJAYCORE,1,[Building Veejay Core]) AC_DEFINE(HAVE_CONFIG_H,1,[Include config.h]) # libtool versioning -LT_RELEASE=$RELOADED_MAJOR_VERSION.$RELOADED_MINOR_VERSION.$RELOADED_MICRO_VERSION -LT_CURRENT=$RELOADED_MICRO_VERSION -LT_REVISION=$RELOADED_MICRO_VERSION -LT_AGE=$RELOADED_MICRO_VERSION +LT_RELEASE=$VEEJAYCORE_MAJOR_VERSION.$VEEJAYCORE_MINOR_VERSION +LT_CURRENT=$VEEJAYCORE_MAJOR_VERSION +LT_REVISION=$VEEJAYCORE_MINOR_VERSION +LT_AGE=$VEEJAYCORE_MAJOR_VERSION AC_SUBST(LT_RELEASE) AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) +dnl ********************************************************************** +dnl Options AC_CONFIG_MACRO_DIR([m4]) + dnl kill CFLAGS +USER_CFLAGS="$CFLAGS" CFLAGS="" +dnl enable auto vectorization for libvjmem, libvje and libyuv + AC_ARG_ENABLE([strict], AC_HELP_STRING([--enable-strict], [Compile in paranoia assertion checking])) + +AC_ARG_ENABLE([sanitizer], + AC_HELP_STRING([--enable-sanitizer], + [Enable AddressSanitizer])) + +AC_ARG_ENABLE([portleak], + AC_HELP_STRING([--enable-portleak], + [Compile in vevo port validation (requires --enable-strict)])) + AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug], [Compile in debugging information])) @@ -47,19 +65,12 @@ AC_ARG_ENABLE([compile-warnings], AC_ARG_ENABLE([warnings_as_errors], AC_HELP_STRING([--enable-warnings_as_errors], [Compiler warnings are errors.])) -AC_ARG_ENABLE([simd-accel], - AC_HELP_STRING([--enable-simd-accel], - [use SIMD multimedia instructions such as MMX, AltiVec, etc.if possible])) AC_ARG_WITH([extra-cflags], AC_HELP_STRING([--with-extra-cflags=flags], [Options to be added to CFLAGS (optional)])) -AC_ARG_WITH([pixbuf], - AC_HELP_STRING([--without-pixbuf], [Do not use GDK pixbuf]), - [], [with_pixbuf=yes]) - arch_target="auto" -AC_ARG_WITH([arch-target], AS_HELP_STRING( [--with-arch-target=generic or auto], - [Build a generic binary or auto-detect current cpu type (defaults to auto-detect)]), +AC_ARG_WITH(arch-target, AS_HELP_STRING( [--with-arch-target=generic, auto or user defined], + [Build a generic binary, auto-detect current cpu type or user defined -mtune/-march setting)]), [ arch_target="$withval"]) AC_GNU_SOURCE @@ -70,7 +81,6 @@ AC_PROG_LIBTOOL dnl Checks for programs. AC_PROG_AWK AC_PROG_CC -AM_PROG_CC_STDC AC_PROG_YACC AM_PROG_LEX AC_PROG_CXX @@ -84,10 +94,7 @@ AC_SYS_LARGEFILE dnl configure AS and ASFLAGS... AM_PROG_AS -AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h]) - -dnl AX_PREFIXED_DEFINE([RELOADED], [HAVE_STDINT_H]) -dnl AX_PREFIXED_DEFINE([RELOADED], [HAVE_INTTYPES_H]) +AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h sys/time.h sys/times.h]) AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp]) AC_CHECK_FUNCS([sched_get_priority_max]) @@ -107,6 +114,8 @@ AC_CHECK_SIZEOF([long int]) AC_CHECK_SIZEOF([size_t]) AC_CHECK_SIZEOF([float]) +AC_SEARCH_LIBS([clock_gettime], [rt], + [AC_DEFINE(HAVE_POSIX_TIMERS,[1],[Set to 1 if clock_gettime and POSIX timers are available])]) AC_SUBST(LIBGETOPT_LIB) @@ -115,6 +124,13 @@ AC_TYPE_SIGNAL AC_MSG_NOTICE([The host is $host $host_cpu $host_vendor $host_os .]) +dnl e_xdpms=no +dnl ACCHECK_HEADER(X11/extensions/dpms.h, +dnl AC_DEFINE( HAVE_XDPMS, 1, [If we have xpdms] ) have_xdpms=yes,, +dnl []) + +have_linux=false +have_darwin=false case $host in *-*-linux*) AC_CHECK_HEADER(linux/version.h, @@ -143,106 +159,19 @@ dnl ====== check for PKG_CONFIG_PATH if test x"$PKG_CONFIG_PATH" = x ; then AC_MSG_NOTICE([The PKG_CONFIG_PATH variable was not set]) AC_MSG_NOTICE([You should set it to the directories that contain the .pc files]) - PKG_CONFIG_PATH=/usr/lib/pkgconfig + + PKG_CONFIG_PATH=/usr/lib/pkgconfig fi - -AC_SUBST(LIBM_LIBS) - -dnl ********************************************************************* -dnl Check for the pthread lib -dnl -AC_SUBST(PTHREAD_LIBS) -have_pthread=false -AC_CHECK_LIB(pthread, pthread_create, - [ PTHREAD_LIBS="-lpthread" - AC_DEFINE(HAVE_LIBPTHREAD,1,[Compiling with pthread library]) - have_pthread=true ],,) - -AC_CHECK_FUNC(pthread_attr_getstacksize, - [ - AC_DEFINE(HAVE_PTHREADSTACKSIZE,,[Using pthread stack size]) - ] ) - - -have_alsa=false -AC_CHECK_LIB( asound, snd_seq_open, - [ - AC_DEFINE( HAVE_ALSA,1, [Whether or not we have alsa]) - ALSA_LIBS="-lasound" - AC_SUBST(ALSA_LIBS) - have_alsa=true ],,) - -AC_CHECK_HEADER(alsa/asoundlib.h,,[AC_MSG_ERROR([alsa/asoundlib.h not found - please install the alsa header])] ) - -have_dl_dlopen=false -AC_CHECK_LIB(dl,dlopen) -if test "$ac_cv_lib_dl_dlopen" = "yes"; then - AC_DEFINE(HAVE_DL_DLOPEN,1,[Compile with dlopen support]) - have_dl_dlopen=true -fi - -dnl Check for Veejay -have_veejay=false -PKG_CHECK_MODULES( VEEJAY, [veejay >= 1.5.60 ], - [ - AC_SUBST(VEEJAY_CFLAGS) - AC_SUBST(VEEJAY_LIBS) - have_veejay=true - AC_DEFINE(HAVE_VEEJAY,1, [Veejay 1.5.60 installed])] - , - [have_veejay=false]) - -if test x$have_veejay != xtrue ; then - AC_MSG_ERROR([Cannot find veejay 1.5.60 or later]) -fi - -have_pixbuf=false -if test x$with_pixbuf != xno ; then - PKG_CHECK_MODULES(PIXBUF, [gtk+-2.0 >= 2.8 gdk-pixbuf-2.0], - [ - AC_SUBST(PIXBUF_CFLAGS) - AC_SUBST(PIXBUF_LIBS) - have_pixbuf=true - AC_DEFINE(USE_GDK_PIXBUF, 1, [use gdk image load / save])], - [have_pixbuf=false]) -fi - -have_sdl=false -if test x$with_sdl != xno ; then - PKG_CHECK_MODULES(SDL, [sdl >= 1.2], - [ - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) - have_sdl=true - AC_DEFINE(HAVE_SDL,1,[use sdl keybindings])], - [have_sdl=false]) -fi - -if test x$have_sdl != xtrue ; then - AC_MSG_WARN([Cannot find SDL, reloaded will not be able to map keybindings]) -fi - -dnl ******************************************************************** -dnl Check to see if __progname is provided by the system -dnl ******************************************************************** -AC_CACHE_CHECK([for __progname], - [mjt_cv_extern___progname], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], - [[extern char *__progname; - puts(__progname);]])], - [mjt_cv_extern___progname=yes], - [mjt_cv_extern___progname=no])]) -if test x$mjt_cv_extern___progname = xyes ; then - AC_DEFINE(HAVE___PROGNAME, 1, [Is __progname defined by system?]) -fi - -dnl Look for X -AC_PATH_XTRA -AM_CONDITIONAL(HAVE_X, test x$have_x = xyes) - +AC_MSG_CHECKING(whether to compile in debugging information) debugCFLAGS="" - +if test "x$enable_debug" = "xyes" ; then + debugCFLAGS="-g" + CFLAGS="$CFLAGS $debugCFLAGS" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi AC_MSG_CHECKING(whether to compile in profiling information) if test "x$enable_profiling" = "xyes" ; then debugCFLAGS="$debugCFLAGS -fprofile-arcs -ftest-coverage" @@ -252,15 +181,6 @@ if test "x$enable_profiling" = "xyes" ; then else AC_MSG_RESULT([no]) fi - -AC_MSG_CHECKING(whether to compile in debug symbols) -if test "x$enable_debug" = "xyes" ; then - debugCFLAGS="$debugCFLAGS -g" - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - AC_MSG_CHECKING(whether to compile in assertion checking) if test "x$enable_strict" = "xyes" ; then debugCFLAGS="$debugCFLAGS -DSTRICT_CHECKING" @@ -268,6 +188,30 @@ if test "x$enable_strict" = "xyes" ; then else AC_MSG_RESULT([no]) fi +if test "x$enable_sanitizer" = "xyes" ; then + debugCFLAGS="$debugCFLAGS -fsanitize=address -fno-omit-frame-pointer" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_MSG_CHECKING(whether to compile in vevo port tracking) +if test "x$enable_portleak" = "xyes"; then + debugCFLAGS="$debugCFLAGS -DVEVO_TRACKPORTS" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +dnl ******************************************************************** +dnl Test for MMX support if an IA32 platform. If on a PPC then look for +dnl Altivec support. For the IA32 platform see if gcc understands inline +dnl MMX instructions. +dnl +dnl TODO: host = non intel, target = intel do the checks also? +dnl Remember we are checking that the toolchain can generate the +dnl code, not whether the host can execute the code, thats done +dnl at run time with the exception of the SSE code. + have_asm_nasm=false have_asm_mmx=false @@ -285,6 +229,8 @@ have_ps2=false have_arm=false OP_CFLAGS="" +VJE_CFLAGS="" +SUBSAMPLE_CFLAGS="" AC_MSG_CHECKING([Architecture]) case $host_cpu in @@ -296,18 +242,11 @@ case $host_cpu in PROGRAM_NOPIC="-fno-PIC" if test "x$enable_debug" != "xyes" ; then - OP_CFLAGS="-O2" - fi + SUBSAMPLE_CFLAGS="" + VJE_CFLAGS="-O3 -ftree-vectorize -ffast-math" + fi - dnl If the host is pentium, align on double word boundary - case $host_cpu in - i686) - CFLAGS="$CFLAGS" - ;; - *) - ;; - esac - + AC_MSG_RESULT([x86]) ;; x86_64*|k8-*) AC_DEFINE(HAVE_X86_CPU,1, [Compiling for x86-64 architecture CPU]) @@ -315,10 +254,12 @@ case $host_cpu in have_x86cpu=true have_x86_64cpu=true if test "x$enable_debug" != "xyes" ; then - OP_CFLAGS="-O2" - fi - + VJE_CFLAGS="-O3 -ffast-math -ftree-vectorize -m64 -fPIC -DPIC" + SUBSAMPLE_CFLAGS="-m64 -fPIC -DPIC" + fi CFLAGS="$CFLAGS -m64 -fPIC -DPIC" + + AC_MSG_RESULT([x86_64]) ;; powerpc | powerpc64) AC_DEFINE(HAVE_PPCCPU,1, [Compiling for PowerPC CPU]) @@ -335,12 +276,13 @@ dnl CFLAGS="$CFLAGS -no-cpp-precomp" PROGRAM_NOPIC="" ;; esac + + AC_MSG_RESULT([powerpc]) ;; mips | mipsel) - AC_DEFINE(ARCH_MIPS,,[Compiling for MIPS CPU]) - AC_DEFINE(HAVE_MIPS,,[Compiling for MIPS CPU]) + AC_DEFINE(ARCH_MIPS,1,[Compiling for MIPS CPU]) + AC_DEFINE(HAVE_MIPS,1,[Compiling for MIPS CPU]) have_mips=true - AC_MSG_CHECKING([if we are compiling on playstation2 hardware]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#include #include @@ -348,6 +290,9 @@ dnl CFLAGS="$CFLAGS -no-cpp-precomp" [have_ps2=true], [have_ps2=false]) + AC_MSG_RESULT([mips]) + + AC_MSG_CHECKING([if we are compiling on playstation2 hardware]) if test x$have_ps2 = xtrue ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PS2,1,[Compile for playstation2]) @@ -361,18 +306,44 @@ dnl CFLAGS="$CFLAGS -no-cpp-precomp" have_arm=true AC_MSG_RESULT(arm) ;; + *) - AC_MSG_RESULT([unknown]) + +dnl If you get here, you can change AC_MSG_ERROR to AC_MSG_RESULT +dnl and uncomment setting the CFLAGS below to have it compile anyway on your system + AC_MSG_ERROR([unknown]) + +dnl OP_CFLAGS="$USER_CFLAGS" +dnl SUBSAMPLE_CFLAGS="$USER_CFLAGS" +dnl VJE_CFLAGS="$USER_CFLAGS" +dnl CFLAGS="$USER_CFLAGS" + ;; esac -CFLAGS="$CFLAGS -DFILE_OFFSET_BITS=64 -D_LARGE_FILES" -dnl This flag is used for PROGRAMS not SHARED LIBRARIES. PIC code is required -dnl for shared libraries but is slower than non-pic code. Compute bound -dnl programs such as yuvdenoise and y4mspatialfilter can use this flag by -dnl simply adding programname_CFLAGS=@PROGRAM_NOPIC@ to the Makefile.am +CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES" -AC_SUBST(PROGRAM_NOPIC) +if test x$host_alias != x; then + dnl Cross compiling + AC_MSG_CHECKING(sub-architecture settings) + if test x$have_x86cpu = xtrue; then + host_mod_cpu=`echo $host_cpu|tr _ -` + ARCHFLAGS="-march=$host_mod_cpu -mcpu=$host_mod_cpu" + AC_MSG_RESULT($ARCHFLAGS) + fi +else + AC_MSG_CHECKING(sub-architecture settings) + + chmod +x $srcdir/cpuinfo.sh + + if test "$arch_target" = "auto"; then + TMP=`$srcdir/cpuinfo.sh` + ARCHFLAGS=`cat veejay.arch` + else + ARCHFLAGS="-mtune=$arch_target" + fi + AC_MSG_RESULT($ARCHFLAGS) +fi dnl ARM architecture detect NEON and set CFLAGS if test x$have_arm = xtrue @@ -388,10 +359,12 @@ then if test $ac_cv_flag_neon = yes ; then AC_DEFINE(HAVE_ARM_NEON,1,[Compiling in NEON support]) - USER_CFLAGS="-mfpu=neon $USER_CFLAGS" + USER_CFLAGS="-mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad $USER_CFLAGS" + FASTARM_CFLAGS="$ARCHFLAGS -Wa,-march=armv7-a -mthumb -Wa,-mthumb -Wa,-mimplicit-it=always -mthumb-interwork -DCONFIG_THUMB" else - USER_CFLAGS="-march=native $USER_CFLAGS" + USER_CFLAGS="-march=native -ftree-vectorize $USER_CFLAGS" + FASTARM_CFLAGS="$ARCHFLAGS -Wa, -mthumb -Wa,-mthumb -Wa,-mimplicit-it=always -mthumb-interwork -DCONFIG_THUMB" fi if test "x$enable_debug" != "xyes" ; then @@ -400,9 +373,20 @@ then USER_CFLAGS="$USER_CFLAGS -g -Wall" fi + OP_CFLAGS="$USER_CFLAGS" + SUBSAMPLE_CFLAGS="$USER_CFLAGS" + VJE_CFLAGS="$USER_CFLAGS" CFLAGS="$USER_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES" + + AC_SUBST(FASTARM_CFLAGS) fi +dnl This flag is used for PROGRAMS not SHARED LIBRARIES. PIC code is required +dnl for shared libraries but is slower than non-pic code. Compute bound +dnl programs such as yuvdenoise and y4mspatialfilter can use this flag by +dnl simply adding programname_CFLAGS=@PROGRAM_NOPIC@ to the Makefile.am + +AC_SUBST(PROGRAM_NOPIC) if test x$have_x86cpu = xtrue then @@ -434,8 +418,6 @@ then have_asm_sse=true fi - - dnl check for sse2 AC_CACHE_CHECK(for SSE2 on processor(s), ac_cv_flag_sse2, [ if grep "^flags.* sse2" /proc/cpuinfo > /dev/null; then ac_cv_flag_sse2=yes @@ -459,15 +441,25 @@ then ]) if test $ac_cv_flag_3dnow = yes; then - AC_DEFINE(HAVE_ASM_3DNOW,1,[Compiling in 3Dnow]) - have_asm_3dnow=true + AC_MSG_CHECKING([if your CPU understands 3DNOW femms]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], + [[__asm__ __volatile__("femms":::"memory");]])], + [have_asm_3dnow=true], + [have_asm_3dnow=false]) + if test $have_asm_3dnow = true; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ASM_3DNOW,1,[Compiling in 3Dnow]) + have_asm_3dnow=true + else + AC_MSG_RESULT(no) + fi fi AC_CACHE_CHECK(for CMOV on processor(s), ac_cv_flag_cmov, [ if grep "^flags.* cmov" /proc/cpuinfo > /dev/null; then ac_cv_flag_cmov=yes else - ac_cv_flag_cmov=yes + ac_cv_flag_cmov=no fi ]) @@ -482,15 +474,40 @@ then if grep "^flags.* mmxext" /proc/cpuinfo > /dev/null; then ac_cv_flag_mmx2=yes else - ac_cv_flag_mmx2=yes + ac_cv_flag_mmx2=no fi ]) if test $ac_cv_flag_mmx2 = yes; then - AC_DEFINE(HAVE_ASM_MMX2,,[Compiling in MMX2]) + AC_DEFINE(HAVE_ASM_MMX2,1,[Compiling in MMX2]) + AC_DEFINE(HAVE_ASM_MMXEXT,1,[Compiling in MMXEXT]) have_asm_mmx2=true fi + dnl check for AVX + AC_CACHE_CHECK(for AVX on processor(s), ac_cv_flag_avx, [ + if grep "^flags.* avx" /proc/cpuinfo > /dev/null; then + ac_cv_flag_avx=yes + else + ac_cv_flag_avx=no + fi + ]) + + if test $ac_cv_flag_avx = yes; then + AC_DEFINE(HAVE_ASM_AVX,1,[Compiling in AVX]) + have_asm_avx=true + fi + +dnl ac_cv_flag_avx=yes +dnl AC_MSG_CHECKING([for AVX assembler]) +dnl AC_COMPILE_IFELSE( +dnl [AC_LANG_PROGRAM([[]], +dnl [[asm("vmovaps %ymm1,%ymm0");]])], +dnl [AC_DEFINE(HAVE_ASM_AVX,1,[define if compiler supports avx inline assembler]) +dnl AC_MSG_RESULT(yes) +dnl ac_cv_flag_avx=no +dnl ],[AC_MSG_RESULT(no)]) + fi if test x$have_ppccpu = xtrue @@ -525,7 +542,8 @@ EOF ALTIVEC_CFLAGS="-DHAVE_ALTIVEC_H=1 -maltivec -mabi=altivec" fi rm -f conftest*; - + + AC_MSG_CHECKING([if your system supports altivec]) if test x$have_altivec = xtrue then # add -O3 flag @@ -537,70 +555,98 @@ EOF else AC_MSG_RESULT(no) fi - - fi -if test ! -r $srcdir/cpuinfo.sh; then - AC_MSG_ERROR([cpuinfo.sh script not found - do a cvs update]) -fi - - -if test x$have_x86cpu = xtrue -o x$have_ppccpu = xtrue; then - if test x$host_alias != x; then - dnl Cross compiling - AC_MSG_CHECKING(sub-architecture settings) - if test x$have_x86cpu = xtrue; then - host_mod_cpu=`echo $host_cpu|tr _ -` - ARCHFLAGS="-march=$host_mod_cpu -mcpu=$host_mod_cpu" - AC_MSG_RESULT($ARCHFLAGS) - fi - else - AC_MSG_CHECKING(sub-architecture settings ...) - - chmod +x $srcdir/cpuinfo.sh - - if test "$arch_target" = "auto"; then - ARCHFLAGS=`$srcdir/cpuinfo.sh` - else - ARCHFLAGS="-mtune=generic" - fi - AC_MSG_RESULT($ARCHFLAGS) - - fi -fi - - -if test x$have_x86cpu = xtrue; +PKG_CHECK_MODULES(LIBPNG, [libpng], have_libpng=true,have_libpng=false) +PKG_CHECK_MODULES(LIBQRENCODE,[libqrencode >= 3.4.2], have_qrencode=true,have_qrencode=false) +if test x$have_qrencode = xfalse; then - if test "x$enable_debug" != "xyes" ; + AC_MSG_WARN([libqrencode is not present]) +else + if test x$have_libpng = xfalse; then - if test x$ac_cv_flag_sse = xyes; then - CFLAGS="$CFLAGS -msse -mfpmath=sse" - fi - - if test x$av_cv_flag_sse2 = xyes; then - CFLAGS="$CFLAGS -msse2 -mfpmath=sse" - fi - fi + AC_MSG_ERROR([libpng is not present]) + fi + AC_DEFINE( HAVE_QRENCODE,1,[Use QREncode] ) fi -AC_MSG_RESULT($CFLAGS) +glib_modules="glib-2.0 >= 2.4" +PKG_CHECK_MODULES(GLIB, [$glib_modules]) +AC_SUBST(GLIB_CFLAGS) +AC_SUBST(GLIB_LIBS) -PKG_CHECK_MODULES(LIBAVUTIL,[libavutil >= 49.7], have_avutil=true,have_avutil=false) +AC_SUBST(LIBQRENCODE_LIBS) +AC_SUBST(LIBQRENCODE_CFLAGS) +AC_SUBST(LIBPNG_LIBS) +AC_SUBST(LIBPNG_CFLAGS) + +AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED,, + [Defined if building against uninstalled FFmpeg source]) + +PKG_CHECK_MODULES(LIBAVUTIL, [libavutil >= 49.7.0],have_avutil=true,have_avutil=false) +PKG_CHECK_MODULES(LIBAVCODEC,[libavcodec >= 51.35.2],have_avcodec=true,have_avcodec=false) +PKG_CHECK_MODULES(LIBAVFORMAT,[libavformat >= 52.14.0],have_avformat=true,have_avformat=false) +PKG_CHECK_MODULES(LIBSWSCALE,[libswscale >= 0.7.1],have_swscale=true,have_swscale=false) +if test x$have_swscale = xfalse; +then + AC_MSG_ERROR([libswscale not found.]) +fi if test x$have_avutil = xfalse; then - AC_MSG_ERROR([libavutil not found.]) + AC_MSG_ERROR([libavutil not found.]) fi - -PKG_CHECK_MODULES( LIBX11, x11, have_x11=true,have_x11=false) -if test x$have_x11 = xfalse; +if test x$have_avformat = xfalse; then - AC_MSG_ERROR([libx11 not found.]) + AC_MSG_ERROR([libavformat not found.]) +fi +if test x$have_avcodec = xfalse; +then + AC_MSG_ERROR([libavcodec >= 51.57 not found.]) +fi + +AC_SUBST(LIBM_LIBS) + +dnl the check doesnt work on ubuntu, so just fake it. +RT_LIBS="-lrt" +AC_CHECK_LIB( rt, clock_gettime, [ + AC_DEFINE( HAVE_CLOCK_GETTIME, 1, [clock_gettime] ) + RT_LIBS="-lrt" ]) +AC_SUBST(RT_LIBS) + +dnl Check for the pthread lib +dnl +AC_SUBST(PTHREAD_LIBS) +have_pthread=false +AC_CHECK_LIB(pthread, pthread_create, + [ PTHREAD_LIBS="-lpthread" + AC_DEFINE(HAVE_LIBPTHREAD,1,[Compiling with pthread library]) + have_pthread=true ],,) + +if test x$have_pthread != xtrue ; then + AC_MSG_ERROR([Cannot find pthread library]) +fi + +have_dl_dlopen=false +AC_CHECK_LIB(dl,dlopen) +if test "$ac_cv_lib_dl_dlopen" = "yes"; then + AC_DEFINE(HAVE_DL_DLOPEN,1,[Compile with dlopen support]) + have_dl_dlopen=true +fi + +dnl ******************************************************************** +dnl Check to see if __progname is provided by the system +dnl ******************************************************************** +AC_CACHE_CHECK([for __progname], + [mjt_cv_extern___progname], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], + [[extern char *__progname; + puts(__progname);]])], + [mjt_cv_extern___progname=yes], + [mjt_cv_extern___progname=no])]) +if test x$mjt_cv_extern___progname = xyes ; then + AC_DEFINE(HAVE___PROGNAME, 1, [Is __progname defined by system?]) fi -FFMPEG_CFLAGS="${LIBAVUTIL_CFLAGS}" -AC_SUBST(FFMPEG_CFLAGS) dnl ********************************************************************** dnl All the conditional stuff for the Makefiles AM_CONDITIONAL(HAVE_ASM_MMX, test x$have_asm_mmx = xtrue) @@ -608,6 +654,7 @@ AM_CONDITIONAL(HAVE_X86CPU, test x$have_x86cpu = xtrue) AM_CONDITIONAL(HAVE_PPCCPU, test x$have_ppccpu = xtrue) AM_CONDITIONAL(ARCH_PPC, test x$have_ppccpu = xtrue) AM_CONDITIONAL(ARCH_X86, test x$have_x86cpu = xtrue) +AM_CONDITIONAL(ARCH_X86_64, test x$have_x86_64cpu = xtrue) AM_CONDITIONAL(HAVE_ALTIVEC, test x$have_altivec = xtrue) AM_CONDITIONAL(HAVE_ASM_MMX2, test x$have_asm_mmx2 = xtrue) AM_CONDITIONAL(HAVE_ASM_SSE, test x$have_asm_sse = xtrue) @@ -617,6 +664,8 @@ AM_CONDITIONAL(HAVE_MMX, test x$have_asm_mmx = xtrue) AM_CONDITIONAL(HAVE_SSE, test x$have_asm_sse = xtrue) AM_CONDITIONAL(HAVE_SSE2, test x$have_asm_sse2 = xtrue) AM_CONDITIONAL(HAVE_DL_DLOPEN, test x$have_dl_dlopen = xtrue) +AM_CONDITIONAL(HAVE_ARM, test x$have_arm = xtrue ) + dnl ********************************************************************* dnl Check for what warnings we want gcc to use and adjust the CFLAGS dnl as needed. This only works for GCC. @@ -624,6 +673,7 @@ dnl We do this last as it can screw up library detection etc... CFLAGS="$ARCHFLAGS $CFLAGS" CXXFLAGS="$ARCHFLAGS $CXXFLAGS" +OP_CFLAGS="$VJE_CFLAGS" AC_SUBST(OP_CFLAGS) @@ -641,8 +691,8 @@ if test "x$enable_compile_warnings" != "xno" ; then *) warnCFLAGS="-Wall -Wunused " ;; esac if test "x$enable_compile_warnings" = "xyes" ; then - warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wundef -Wshadow -Wbad-function-cast -Wconversion -Wpadded -Wunreachable-code -Wmissing-declarations -Wpointer-arith -Wcast-align -Wwrite-strings -Wcast-qual" - warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -Wcast-qual" + warnCFLAGS="$warnCFLAGS -Wundef -Wshadow -Wbad-function-cast -Wunreachable-code -Wmissing-declarations -Wpointer-arith -Wcast-align -Wwrite-strings -Wall" + warnCXXFLAGS="$warnCXXFLAGS -Wpointer-arith -Wcast-align -Wwrite-strings " fi if test "x$enable_warnings_as_errors" = "xyes" ; then warnCFLAGS="$warnCFLAGS -Werror" @@ -654,15 +704,21 @@ fi if test "x$cflags_set" != "xyes" ; then if test "x$enable_debug" = "xyes" ; then CFLAGS="$debugCFLAGS $warnCFLAGS $CFLAGS" + VJE_CFLAGS="$debugCFLAGS $warnCFLAGS $VJE_CFLAGS" + OP_CFLAGS="$debugCFLAGS $warnCFLAGS $OP_CFLAGS" + SUBSAMPLE_CFLAGS="$debugCFLAGS $warnCFLAGS $SUBSAMPLE_CFLAGS" else CFLAGS="$CFLAGS $warnCFLAGS" + VJE_CFLAGS="$debugCFLAGS $VJE_CFLAGS" + OP_CFLAGS="$debugCFLAGS $OP_CFLAGS" + SUBSAMPLE_CFLAGS="$debugCFLAGS $SUBSAMPLE_CFLAGS" fi CXXFLAGS="$CXXFLAGS $warnCXXFLAGS" cflags_set=yes fi if test "x$enable_debug" != "xyes" ; then - CFLAGS="$CFLAGS -fno-stack-protector" + CFLAGS="$CFLAGS -fno-stack-protector" fi if test x"$with_extra_cflags" != "x"; then @@ -670,43 +726,54 @@ if test x"$with_extra_cflags" != "x"; then CXXFLAGS="$CXXFLAGS $with_extra_cflags" fi -glib_modules="glib-2.0 >= 2.4" -PKG_CHECK_MODULES(GLIB, [$glib_modules]) -AC_SUBST(GLIB_CFLAGS) -AC_SUBST(GLIB_LIBS) +dnl output some info on what veejay was build +BUILD_PLATFORM=${build} +BUILD_CPU=${build_cpu} +BUILD_VENDOR=${build_vendor} +BUILD_OS=${build_os} +AC_SUBST(BUILD_PLATFORM) +AC_SUBST(BUILD_CPU) +AC_SUBST(BUILD_VENDOR) +AC_SUBST(BUILD_OS) -gtk_modules="gtk+-2.0 >= 2.8" -PKG_CHECK_MODULES(GTK, [$gtk_modules]) -AC_SUBST(GTK_CFLAGS) -AC_SUBST(GTK_LIBS) +if test ! -r $srcdir/buildinfo.sh; then + AC_MSG_ERROR([buildinfo.sh script not found.]) +fi -libglade_modules="libglade-2.0 >= 2.0.1" -PKG_CHECK_MODULES(GLADE, [$libglade_modules]) -AC_SUBST(GLADE_CFLAGS) -AC_SUBST(GLADE_LIBS) +chmod +x $srcdir/buildinfo.sh -reloaded_datadir="${datarootdir}/reloaded" -AC_SUBST(reloaded_datadir) +$srcdir/buildinfo.sh dnl ********************************************************************** dnl Output a Makefile or two and the lib/header descriptor script dnl + +AC_CONFIG_FILES([Makefile]) + AC_CONFIG_FILES([ -Makefile -src/Makefile -gveejay-paths.sh +thirdparty/Makefile +thirdparty/mjpegtools/Makefile +thirdparty/fastarm/Makefile +thirdparty/aclib/Makefile +thirdparty/libhash/Makefile +thirdparty/liblzo/Makefile +libvjmsg/Makefile +libvevo/Makefile +libvjmem/Makefile +libvjnet/Makefile +libyuv/Makefile +veejaycore/Makefile +veejaycore.pc ]) AC_OUTPUT -sh gveejay-paths.sh > gveejay-paths.h - AC_DEFINE(VERSION, ${VERSION}) AC_MSG_NOTICE([]) -AC_MSG_NOTICE([ GVeejayReloaded ${VERSION} build configuration :]) +AC_MSG_NOTICE([ Veejay-Core ${VERSION} build configuration :]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Compiler flags: $CFLAGS]) -AC_MSG_NOTICE([ $OP_CFLAGS]) +AC_MSG_NOTICE([ architecture: $arch_target]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Architecture: ${host_cpu} ]) AC_MSG_NOTICE([]) @@ -718,6 +785,7 @@ AC_MSG_NOTICE([ SSE enabled : ${ac_cv_flag_sse}]) AC_MSG_NOTICE([ SSE2 enabled : ${ac_cv_flag_sse2}]) AC_MSG_NOTICE([ 3DNOW enabled : ${ac_cv_flag_3dnow}]) AC_MSG_NOTICE([ CMOV enabled : ${ac_cv_flag_cmov}]) +AC_MSG_NOTICE([ AVX enabled : ${ac_cv_flag_avx}]) fi if test "$have_ppccpu" = "true" ; then @@ -725,16 +793,15 @@ AC_MSG_NOTICE([ ppc]) AC_MSG_NOTICE([ AltiVec enabled : ${have_altivec}]) fi -if test "$have_mips" = "true" ; then -AC_MSG_NOTICE([ mips]) -AC_MSG_NOTICE([ PS/2 enabled : ${have_ps2}]) -fi - if test "$have_arm" = "true" ; then AC_MSG_NOTICE([ arm]) AC_MSG_NOTICE([ NEON enabled : ${ac_cv_flag_neon}]) fi +if test "$have_mips" = "true" ; then +AC_MSG_NOTICE([ mips]) +AC_MSG_NOTICE([ PS/2 enabled : ${have_ps2}]) +fi AC_MSG_NOTICE([]) if test "$have_linux" = "true" ; then AC_MSG_NOTICE([ Platform: Linux]) @@ -746,9 +813,10 @@ AC_MSG_NOTICE([ Good luck! You can be the first! ]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Required dependencies:]) -AC_MSG_NOTICE([ - Veejay 1.5.50 : ${have_veejay}]) AC_MSG_NOTICE([ - POSIX Threads (pthread) : ${have_pthread}]) -AC_MSG_NOTICE([ - GDK Pixbuf support : ${have_pixbuf}]) -AC_MSG_NOTICE([ - Alsa support (midi sequencer) : ${have_alsa}]) -AC_MSG_NOTICE([]) -AC_MSG_NOTICE([ This veejay UI is out of date. Please use reloaded-gtk3 ]) +AC_MSG_NOTICE([ - FFmpeg/AV AVFormat : ${have_avformat} ]) +AC_MSG_NOTICE([ - FFmpeg/AV AVCodec : ${have_avcodec} ]) +AC_MSG_NOTICE([ - FFmpeg/AV Swscaler : ${have_swscale} ]) +AC_MSG_NOTICE([ - FFmpeg/AV AVUtil : ${have_avutil} ]) + +cat NEWS diff --git a/veejay-current/veejay-client/cpuinfo.sh b/veejay-current/veejay-core/cpuinfo.sh similarity index 100% rename from veejay-current/veejay-client/cpuinfo.sh rename to veejay-current/veejay-core/cpuinfo.sh diff --git a/veejay-current/veejay-server/libvevo/Makefile.am b/veejay-current/veejay-core/libvevo/Makefile.am similarity index 100% rename from veejay-current/veejay-server/libvevo/Makefile.am rename to veejay-current/veejay-core/libvevo/Makefile.am diff --git a/veejay-current/veejay-server/libvevo/libvevo.h b/veejay-current/veejay-core/libvevo/libvevo.h similarity index 100% rename from veejay-current/veejay-server/libvevo/libvevo.h rename to veejay-current/veejay-core/libvevo/libvevo.h diff --git a/veejay-current/veejay-server/libvevo/lowlevel.h b/veejay-current/veejay-core/libvevo/lowlevel.h similarity index 100% rename from veejay-current/veejay-server/libvevo/lowlevel.h rename to veejay-current/veejay-core/libvevo/lowlevel.h diff --git a/veejay-current/veejay-server/libvevo/pool.c b/veejay-current/veejay-core/libvevo/pool.c similarity index 100% rename from veejay-current/veejay-server/libvevo/pool.c rename to veejay-current/veejay-core/libvevo/pool.c diff --git a/veejay-current/veejay-server/libvevo/pool.h b/veejay-current/veejay-core/libvevo/pool.h similarity index 100% rename from veejay-current/veejay-server/libvevo/pool.h rename to veejay-current/veejay-core/libvevo/pool.h diff --git a/veejay-current/veejay-server/libvevo/vevo.c b/veejay-current/veejay-core/libvevo/vevo.c similarity index 100% rename from veejay-current/veejay-server/libvevo/vevo.c rename to veejay-current/veejay-core/libvevo/vevo.c diff --git a/veejay-current/veejay-server/libvevo/vevo.h b/veejay-current/veejay-core/libvevo/vevo.h similarity index 100% rename from veejay-current/veejay-server/libvevo/vevo.h rename to veejay-current/veejay-core/libvevo/vevo.h diff --git a/veejay-current/veejay-server/libvjmem/Makefile.am b/veejay-current/veejay-core/libvjmem/Makefile.am similarity index 100% rename from veejay-current/veejay-server/libvjmem/Makefile.am rename to veejay-current/veejay-core/libvjmem/Makefile.am diff --git a/veejay-current/veejay-server/libvjmem/memcpy.c b/veejay-current/veejay-core/libvjmem/memcpy.c similarity index 99% rename from veejay-current/veejay-server/libvjmem/memcpy.c rename to veejay-current/veejay-core/libvjmem/memcpy.c index 22566fc3..2902b064 100644 --- a/veejay-current/veejay-server/libvjmem/memcpy.c +++ b/veejay-current/veejay-core/libvjmem/memcpy.c @@ -138,8 +138,7 @@ #include #include #include -#include -#include +#include #include #ifdef HAVE_ARM #include diff --git a/veejay-current/veejay-server/libvjmem/vj-x86.c b/veejay-current/veejay-core/libvjmem/vj-x86.c similarity index 99% rename from veejay-current/veejay-server/libvjmem/vj-x86.c rename to veejay-current/veejay-core/libvjmem/vj-x86.c index 7ac0a684..b9494b25 100644 --- a/veejay-current/veejay-server/libvjmem/vj-x86.c +++ b/veejay-current/veejay-core/libvjmem/vj-x86.c @@ -28,8 +28,7 @@ #include #include #include -#include -#include +#include extern void find_best_memcpy(void); extern void find_best_memset(void); extern void yuyv_plane_init(); diff --git a/veejay-current/veejay-server/libvjmem/vjmem.h b/veejay-current/veejay-core/libvjmem/vjmem.h similarity index 100% rename from veejay-current/veejay-server/libvjmem/vjmem.h rename to veejay-current/veejay-core/libvjmem/vjmem.h diff --git a/veejay-current/veejay-core/libvjmsg/Makefile.am b/veejay-current/veejay-core/libvjmsg/Makefile.am new file mode 100644 index 00000000..e15faac7 --- /dev/null +++ b/veejay-current/veejay-core/libvjmsg/Makefile.am @@ -0,0 +1,11 @@ +# Makefile for logging/messages + +AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) -I$(top_srcdir)/thirdparty/mjpegtools +AM_CPPFLAGS += $(LIBUNWIND_CFLAGS) + +VJMSG_LIB_FILE = libvjmsg.la +noinst_LTLIBRARIES = $(VJMSG_LIB_FILE) + +pkginclude_HEADERS= vj-msg.h +libvjmsg_la_SOURCES = vj-common.c + diff --git a/veejay-current/veejay-server/libvjmsg/vj-common.c b/veejay-current/veejay-core/libvjmsg/vj-common.c similarity index 87% rename from veejay-current/veejay-server/libvjmsg/vj-common.c rename to veejay-current/veejay-core/libvjmsg/vj-common.c index 6de18955..60b303c5 100644 --- a/veejay-current/veejay-server/libvjmsg/vj-common.c +++ b/veejay-current/veejay-core/libvjmsg/vj-common.c @@ -411,34 +411,6 @@ void veejay_chomp_str( char *msg, int *nlen ) } } -void report_bug(void) -{ - veejay_msg(VEEJAY_MSG_WARNING, "Please report this error to http://groups.google.com/group/veejay-discussion?hl=en"); - veejay_msg(VEEJAY_MSG_WARNING, "Send at least veejay's output and include the command(s) you have used to start it"); - veejay_msg(VEEJAY_MSG_WARNING, "Also, please consider sending in the recovery files if any have been created"); - veejay_msg(VEEJAY_MSG_WARNING, "If you compiled it yourself, please include information about your system"); -/* - veejay_msg(VEEJAY_MSG_WARNING, "Dumping core file to: core.%d",getpid() ); - - char cmd[128]; - memset(cmd,0,sizeof(cmd)); - sprintf(cmd, "generate-core-file"); - int fd = open( "veejay.cmd", O_RDWR|O_CREAT ); - if(!fd) { - veejay_msg(VEEJAY_MSG_ERROR,"Unable to write gdb batch commands, no core dump written. "); - } else { - int res = write( fd , cmd, strlen(cmd)); - close(fd); - sprintf(cmd, "gdb -p %d -batch -x veejay.cmd", getpid()); - veejay_msg(VEEJAY_MSG_WARNING,"Please wait! Running command '%s'", cmd); - system(cmd); - veejay_msg(VEEJAY_MSG_WARNING, "Done!"); - veejay_msg(VEEJAY_MSG_INFO, "Please bzip2 and upload the coredump somewhere and tell us where to find it!"); - } - */ - -} - int has_env_setting( const char *env, const char *value ) { char *tmp = getenv( env ); diff --git a/veejay-current/veejay-server/libvjmsg/vj-msg.h b/veejay-current/veejay-core/libvjmsg/vj-msg.h similarity index 98% rename from veejay-current/veejay-server/libvjmsg/vj-msg.h rename to veejay-current/veejay-core/libvjmsg/vj-msg.h index 8a4cc012..367c804c 100644 --- a/veejay-current/veejay-server/libvjmsg/vj-msg.h +++ b/veejay-current/veejay-core/libvjmsg/vj-msg.h @@ -30,7 +30,6 @@ enum { extern void veejay_print_backtrace(); extern void veejay_strrep(char *s, char delim, char tok); -extern void report_bug(); extern void veejay_msg(int type, const char format[], ...); extern int veejay_is_colored(); extern void veejay_set_debug_level(int level); diff --git a/veejay-current/veejay-server/libvjnet/Makefile.am b/veejay-current/veejay-core/libvjnet/Makefile.am similarity index 92% rename from veejay-current/veejay-server/libvjnet/Makefile.am rename to veejay-current/veejay-core/libvjnet/Makefile.am index 5570ae4b..9654bfcd 100644 --- a/veejay-current/veejay-server/libvjnet/Makefile.am +++ b/veejay-current/veejay-core/libvjnet/Makefile.am @@ -9,6 +9,6 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ VJNET_LIB_FILE = libvjnet.la EXTRA_DIST = vj-client.h bswap.h cmd.h mcastreceiver.h mcastsender.h packet.h vj-server.h -pkginclude_HEADERS = vj-client.h +pkginclude_HEADERS = vj-client.h vj-server.h noinst_LTLIBRARIES = $(VJNET_LIB_FILE) libvjnet_la_SOURCES = packet.c mcastsender.c mcastreceiver.c cmd.c vj-server.c vj-client.c diff --git a/veejay-current/veejay-server/libvjnet/bswap.h b/veejay-current/veejay-core/libvjnet/bswap.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/bswap.h rename to veejay-current/veejay-core/libvjnet/bswap.h diff --git a/veejay-current/veejay-server/libvjnet/cmd.c b/veejay-current/veejay-core/libvjnet/cmd.c similarity index 100% rename from veejay-current/veejay-server/libvjnet/cmd.c rename to veejay-current/veejay-core/libvjnet/cmd.c diff --git a/veejay-current/veejay-server/libvjnet/cmd.h b/veejay-current/veejay-core/libvjnet/cmd.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/cmd.h rename to veejay-current/veejay-core/libvjnet/cmd.h diff --git a/veejay-current/veejay-server/libvjnet/dummy.c b/veejay-current/veejay-core/libvjnet/dummy.c similarity index 100% rename from veejay-current/veejay-server/libvjnet/dummy.c rename to veejay-current/veejay-core/libvjnet/dummy.c diff --git a/veejay-current/veejay-server/libvjnet/mcastreceiver.c b/veejay-current/veejay-core/libvjnet/mcastreceiver.c similarity index 99% rename from veejay-current/veejay-server/libvjnet/mcastreceiver.c rename to veejay-current/veejay-core/libvjnet/mcastreceiver.c index 3f2b1a91..1fa78626 100644 --- a/veejay-current/veejay-server/libvjnet/mcastreceiver.c +++ b/veejay-current/veejay-core/libvjnet/mcastreceiver.c @@ -35,8 +35,7 @@ #include #include #include -#include -#include +#include #include #include "mcastreceiver.h" #include "packet.h" diff --git a/veejay-current/veejay-server/libvjnet/mcastreceiver.h b/veejay-current/veejay-core/libvjnet/mcastreceiver.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/mcastreceiver.h rename to veejay-current/veejay-core/libvjnet/mcastreceiver.h diff --git a/veejay-current/veejay-server/libvjnet/mcastsender.c b/veejay-current/veejay-core/libvjnet/mcastsender.c similarity index 99% rename from veejay-current/veejay-server/libvjnet/mcastsender.c rename to veejay-current/veejay-core/libvjnet/mcastsender.c index 3237ccf0..dd8996f9 100644 --- a/veejay-current/veejay-server/libvjnet/mcastsender.c +++ b/veejay-current/veejay-core/libvjnet/mcastsender.c @@ -33,8 +33,7 @@ #include #include #include -#include -#include +#include #include "packet.h" #include "mcastsender.h" diff --git a/veejay-current/veejay-server/libvjnet/mcastsender.h b/veejay-current/veejay-core/libvjnet/mcastsender.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/mcastsender.h rename to veejay-current/veejay-core/libvjnet/mcastsender.h diff --git a/veejay-current/veejay-server/libvjnet/packet.c b/veejay-current/veejay-core/libvjnet/packet.c similarity index 100% rename from veejay-current/veejay-server/libvjnet/packet.c rename to veejay-current/veejay-core/libvjnet/packet.c diff --git a/veejay-current/veejay-server/libvjnet/packet.h b/veejay-current/veejay-core/libvjnet/packet.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/packet.h rename to veejay-current/veejay-core/libvjnet/packet.h diff --git a/veejay-current/veejay-server/libvjnet/vj-client.c b/veejay-current/veejay-core/libvjnet/vj-client.c similarity index 98% rename from veejay-current/veejay-server/libvjnet/vj-client.c rename to veejay-current/veejay-core/libvjnet/vj-client.c index 60927d90..3ff851c2 100644 --- a/veejay-current/veejay-server/libvjnet/vj-client.c +++ b/veejay-current/veejay-core/libvjnet/vj-client.c @@ -32,10 +32,9 @@ #include #include #include -#include +#include #include -#include -#include +#include #include #include #include @@ -43,7 +42,7 @@ #include #include #include -#include +#include #define VJC_OK 0 #define VJC_NO_MEM 1 #define VJC_SOCKET 2 diff --git a/veejay-current/veejay-server/libvjnet/vj-client.h b/veejay-current/veejay-core/libvjnet/vj-client.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/vj-client.h rename to veejay-current/veejay-core/libvjnet/vj-client.h diff --git a/veejay-current/veejay-server/libvjnet/vj-server.c b/veejay-current/veejay-core/libvjnet/vj-server.c similarity index 99% rename from veejay-current/veejay-server/libvjnet/vj-server.c rename to veejay-current/veejay-core/libvjnet/vj-server.c index a22a849e..29244ec3 100644 --- a/veejay-current/veejay-server/libvjnet/vj-server.c +++ b/veejay-current/veejay-core/libvjnet/vj-server.c @@ -35,9 +35,7 @@ #include #include -#include -#include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libvjnet/vj-server.h b/veejay-current/veejay-core/libvjnet/vj-server.h similarity index 100% rename from veejay-current/veejay-server/libvjnet/vj-server.h rename to veejay-current/veejay-core/libvjnet/vj-server.h diff --git a/veejay-current/veejay-server/libyuv/Makefile.am b/veejay-current/veejay-core/libyuv/Makefile.am similarity index 85% rename from veejay-current/veejay-server/libyuv/Makefile.am rename to veejay-current/veejay-core/libyuv/Makefile.am index 94696d3b..d055cc21 100644 --- a/veejay-current/veejay-server/libyuv/Makefile.am +++ b/veejay-current/veejay-core/libyuv/Makefile.am @@ -11,7 +11,6 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ AM_CPPFLAGS += $(FFMPEG_CFLAGS) YUV_LIB_FILE = libyuv.la -pkginclude_HEADERS=yuvconv.h -EXTRA_DIST = mmx.h yuvconv.h mmx_macros.h +pkginclude_HEADERS=yuvconv.h mmx.h mmx_macros.h noinst_LTLIBRARIES = $(YUV_LIB_FILE) libyuv_la_SOURCES = yuvconv.c diff --git a/veejay-current/veejay-server/libyuv/mmx.h b/veejay-current/veejay-core/libyuv/mmx.h similarity index 100% rename from veejay-current/veejay-server/libyuv/mmx.h rename to veejay-current/veejay-core/libyuv/mmx.h diff --git a/veejay-current/veejay-server/libyuv/mmx_macros.h b/veejay-current/veejay-core/libyuv/mmx_macros.h similarity index 100% rename from veejay-current/veejay-server/libyuv/mmx_macros.h rename to veejay-current/veejay-core/libyuv/mmx_macros.h diff --git a/veejay-current/veejay-server/libyuv/yuvconv.c b/veejay-current/veejay-core/libyuv/yuvconv.c similarity index 99% rename from veejay-current/veejay-server/libyuv/yuvconv.c rename to veejay-current/veejay-core/libyuv/yuvconv.c index 0ceeebbb..532099ef 100644 --- a/veejay-current/veejay-server/libyuv/yuvconv.c +++ b/veejay-current/veejay-core/libyuv/yuvconv.c @@ -22,19 +22,18 @@ #include #include #include -#include +#include #include #include #include #include -#include #include #include #include #include -#include +#include #include -#include +#include #define Y4M_CHROMA_420JPEG 0 /* 4:2:0, H/V centered, for JPEG/MPEG-1 */ #define Y4M_CHROMA_420MPEG2 1 /* 4:2:0, H cosited, for MPEG-2 */ diff --git a/veejay-current/veejay-server/libyuv/yuvconv.h b/veejay-current/veejay-core/libyuv/yuvconv.h similarity index 100% rename from veejay-current/veejay-server/libyuv/yuvconv.h rename to veejay-current/veejay-core/libyuv/yuvconv.h diff --git a/veejay-current/veejay-core/thirdparty/Makefile.am b/veejay-current/veejay-core/thirdparty/Makefile.am new file mode 100644 index 00000000..3946180d --- /dev/null +++ b/veejay-current/veejay-core/thirdparty/Makefile.am @@ -0,0 +1,10 @@ +MAINTAINERCLEANFILES=Makefile.in + +SUBDIRS = aclib libhash liblzo + +SUBDIRS += mjpegtools + +if HAVE_ARM +SUBDIRS += fastarm +endif + diff --git a/veejay-current/veejay-server/thirdparty/aclib/Makefile.am b/veejay-current/veejay-core/thirdparty/aclib/Makefile.am similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/Makefile.am rename to veejay-current/veejay-core/thirdparty/aclib/Makefile.am diff --git a/veejay-current/veejay-server/thirdparty/aclib/ac.h b/veejay-current/veejay-core/thirdparty/aclib/ac.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/ac.h rename to veejay-current/veejay-core/thirdparty/aclib/ac.h diff --git a/veejay-current/veejay-server/thirdparty/aclib/ac_internal.h b/veejay-current/veejay-core/thirdparty/aclib/ac_internal.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/ac_internal.h rename to veejay-current/veejay-core/thirdparty/aclib/ac_internal.h diff --git a/veejay-current/veejay-server/thirdparty/aclib/accore.c b/veejay-current/veejay-core/thirdparty/aclib/accore.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/accore.c rename to veejay-current/veejay-core/thirdparty/aclib/accore.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/average.c b/veejay-current/veejay-core/thirdparty/aclib/average.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/average.c rename to veejay-current/veejay-core/thirdparty/aclib/average.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_internal.h b/veejay-current/veejay-core/thirdparty/aclib/img_internal.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_internal.h rename to veejay-current/veejay-core/thirdparty/aclib/img_internal.h diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_rgb_packed.c b/veejay-current/veejay-core/thirdparty/aclib/img_rgb_packed.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_rgb_packed.c rename to veejay-current/veejay-core/thirdparty/aclib/img_rgb_packed.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_x86_common.h b/veejay-current/veejay-core/thirdparty/aclib/img_x86_common.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_x86_common.h rename to veejay-current/veejay-core/thirdparty/aclib/img_x86_common.h diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_yuv_mixed.c b/veejay-current/veejay-core/thirdparty/aclib/img_yuv_mixed.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_yuv_mixed.c rename to veejay-current/veejay-core/thirdparty/aclib/img_yuv_mixed.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_yuv_packed.c b/veejay-current/veejay-core/thirdparty/aclib/img_yuv_packed.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_yuv_packed.c rename to veejay-current/veejay-core/thirdparty/aclib/img_yuv_packed.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_yuv_planar.c b/veejay-current/veejay-core/thirdparty/aclib/img_yuv_planar.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_yuv_planar.c rename to veejay-current/veejay-core/thirdparty/aclib/img_yuv_planar.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/img_yuv_rgb.c b/veejay-current/veejay-core/thirdparty/aclib/img_yuv_rgb.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/img_yuv_rgb.c rename to veejay-current/veejay-core/thirdparty/aclib/img_yuv_rgb.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/imgconvert.c b/veejay-current/veejay-core/thirdparty/aclib/imgconvert.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/imgconvert.c rename to veejay-current/veejay-core/thirdparty/aclib/imgconvert.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/imgconvert.h b/veejay-current/veejay-core/thirdparty/aclib/imgconvert.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/imgconvert.h rename to veejay-current/veejay-core/thirdparty/aclib/imgconvert.h diff --git a/veejay-current/veejay-server/thirdparty/aclib/memcpy.c b/veejay-current/veejay-core/thirdparty/aclib/memcpy.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/memcpy.c rename to veejay-current/veejay-core/thirdparty/aclib/memcpy.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/rescale.c b/veejay-current/veejay-core/thirdparty/aclib/rescale.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/rescale.c rename to veejay-current/veejay-core/thirdparty/aclib/rescale.c diff --git a/veejay-current/veejay-server/thirdparty/aclib/rgb-yuv-conv.pl b/veejay-current/veejay-core/thirdparty/aclib/rgb-yuv-conv.pl similarity index 100% rename from veejay-current/veejay-server/thirdparty/aclib/rgb-yuv-conv.pl rename to veejay-current/veejay-core/thirdparty/aclib/rgb-yuv-conv.pl diff --git a/veejay-current/veejay-server/thirdparty/fastarm/Makefile.am b/veejay-current/veejay-core/thirdparty/fastarm/Makefile.am similarity index 100% rename from veejay-current/veejay-server/thirdparty/fastarm/Makefile.am rename to veejay-current/veejay-core/thirdparty/fastarm/Makefile.am diff --git a/veejay-current/veejay-server/thirdparty/fastarm/README b/veejay-current/veejay-core/thirdparty/fastarm/README similarity index 100% rename from veejay-current/veejay-server/thirdparty/fastarm/README rename to veejay-current/veejay-core/thirdparty/fastarm/README diff --git a/veejay-current/veejay-server/thirdparty/fastarm/new_arm.S b/veejay-current/veejay-core/thirdparty/fastarm/new_arm.S similarity index 100% rename from veejay-current/veejay-server/thirdparty/fastarm/new_arm.S rename to veejay-current/veejay-core/thirdparty/fastarm/new_arm.S diff --git a/veejay-current/veejay-server/thirdparty/fastarm/new_arm.h b/veejay-current/veejay-core/thirdparty/fastarm/new_arm.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/fastarm/new_arm.h rename to veejay-current/veejay-core/thirdparty/fastarm/new_arm.h diff --git a/veejay-current/veejay-server/thirdparty/libhash/Makefile.am b/veejay-current/veejay-core/thirdparty/libhash/Makefile.am similarity index 78% rename from veejay-current/veejay-server/thirdparty/libhash/Makefile.am rename to veejay-current/veejay-core/thirdparty/libhash/Makefile.am index 36a7c1fd..7847c584 100644 --- a/veejay-current/veejay-server/thirdparty/libhash/Makefile.am +++ b/veejay-current/veejay-core/thirdparty/libhash/Makefile.am @@ -5,5 +5,5 @@ AM_CFLAGS=$(OP_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) HASH_LIB_FILE = libhash.la noinst_LTLIBRARIES = $(HASH_LIB_FILE) -libhash_la_SOURCES = hash.c - +libhash_la_SOURCES = hash.c +pkginclude_HEADERS = hash.h diff --git a/veejay-current/veejay-server/thirdparty/libhash/hash.c b/veejay-current/veejay-core/thirdparty/libhash/hash.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/libhash/hash.c rename to veejay-current/veejay-core/thirdparty/libhash/hash.c diff --git a/veejay-current/veejay-server/thirdparty/libhash/hash.h b/veejay-current/veejay-core/thirdparty/libhash/hash.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/libhash/hash.h rename to veejay-current/veejay-core/thirdparty/libhash/hash.h diff --git a/veejay-current/veejay-server/thirdparty/liblzo/Makefile.am b/veejay-current/veejay-core/thirdparty/liblzo/Makefile.am similarity index 88% rename from veejay-current/veejay-server/thirdparty/liblzo/Makefile.am rename to veejay-current/veejay-core/thirdparty/liblzo/Makefile.am index 5b8c054a..3212799c 100644 --- a/veejay-current/veejay-server/thirdparty/liblzo/Makefile.am +++ b/veejay-current/veejay-core/thirdparty/liblzo/Makefile.am @@ -10,4 +10,4 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ VJLZO_LIB_FILE = libvjlzo.la noinst_LTLIBRARIES = $(VJLZO_LIB_FILE) libvjlzo_la_SOURCES = minilzo.c lzo.c -EXTRA_DIST= lzoconf.h lzodefs.h lzo.h minilzo.h +pkginclude_HEADERS = lzo.h diff --git a/veejay-current/veejay-server/thirdparty/liblzo/lzo.c b/veejay-current/veejay-core/thirdparty/liblzo/lzo.c similarity index 99% rename from veejay-current/veejay-server/thirdparty/liblzo/lzo.c rename to veejay-current/veejay-core/thirdparty/liblzo/lzo.c index 23ac6066..e1ffa176 100644 --- a/veejay-current/veejay-server/thirdparty/liblzo/lzo.c +++ b/veejay-current/veejay-core/thirdparty/liblzo/lzo.c @@ -21,12 +21,13 @@ #include #include #include -#include +#include #include #include #include #include #include + typedef struct { lzo_byte *wrkmem; diff --git a/veejay-current/veejay-server/thirdparty/liblzo/lzo.h b/veejay-current/veejay-core/thirdparty/liblzo/lzo.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/liblzo/lzo.h rename to veejay-current/veejay-core/thirdparty/liblzo/lzo.h diff --git a/veejay-current/veejay-server/thirdparty/liblzo/lzoconf.h b/veejay-current/veejay-core/thirdparty/liblzo/lzoconf.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/liblzo/lzoconf.h rename to veejay-current/veejay-core/thirdparty/liblzo/lzoconf.h diff --git a/veejay-current/veejay-server/thirdparty/liblzo/lzodefs.h b/veejay-current/veejay-core/thirdparty/liblzo/lzodefs.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/liblzo/lzodefs.h rename to veejay-current/veejay-core/thirdparty/liblzo/lzodefs.h diff --git a/veejay-current/veejay-server/thirdparty/liblzo/minilzo.c b/veejay-current/veejay-core/thirdparty/liblzo/minilzo.c similarity index 100% rename from veejay-current/veejay-server/thirdparty/liblzo/minilzo.c rename to veejay-current/veejay-core/thirdparty/liblzo/minilzo.c diff --git a/veejay-current/veejay-server/thirdparty/liblzo/minilzo.h b/veejay-current/veejay-core/thirdparty/liblzo/minilzo.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/liblzo/minilzo.h rename to veejay-current/veejay-core/thirdparty/liblzo/minilzo.h diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/Makefile.am b/veejay-current/veejay-core/thirdparty/mjpegtools/Makefile.am similarity index 80% rename from veejay-current/veejay-server/thirdparty/mjpegtools/Makefile.am rename to veejay-current/veejay-core/thirdparty/mjpegtools/Makefile.am index d29e026e..5902d34a 100644 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/Makefile.am +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/Makefile.am @@ -11,4 +11,5 @@ AM_CPPFLAGS += $(PTHREAD_CFLAGS) MJPEGUTILS_LIB_FILE = libmjpegutils.la noinst_LTLIBRARIES = $(MJPEGUTILS_LIB_FILE) DISTCLEANFILES = -libmjpegutils_la_SOURCES = mjpeg_logging.c mpegconsts.c mpegtimecode.c yuv4mpeg.c yuv4mpeg_ratio.c +libmjpegutils_la_SOURCES = mjpeg_logging.c mpegconsts.c mpegtimecode.c yuv4mpeg.c yuv4mpeg_ratio.c +pkginclude_HEADERS = yuv4mpeg.h mpegconsts.h mpegtimecode.h mjpeg_types.h mjpeg_logging.h diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/fastintfns.h b/veejay-current/veejay-core/thirdparty/mjpegtools/fastintfns.h similarity index 100% rename from veejay-current/veejay-server/thirdparty/mjpegtools/fastintfns.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/fastintfns.h diff --git a/veejay-current/veejay-client/src/format_codes.h b/veejay-current/veejay-core/thirdparty/mjpegtools/format_codes.h similarity index 100% rename from veejay-current/veejay-client/src/format_codes.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/format_codes.h diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.c b/veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.c similarity index 99% rename from veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.c rename to veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.c index 3d43fd8d..57191442 100644 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.c +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.c @@ -28,7 +28,7 @@ #include #include #include - +#include "mjpeg_types.h" #include "mjpeg_logging.h" #ifdef HAVE___PROGNAME diff --git a/veejay-current/veejay-client/src/mjpeg_logging.h b/veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.h similarity index 98% rename from veejay-current/veejay-client/src/mjpeg_logging.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.h index 9918af48..1d514e6a 100644 --- a/veejay-current/veejay-client/src/mjpeg_logging.h +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_logging.h @@ -21,8 +21,6 @@ #ifndef __MJPEG_LOGGING_H__ #define __MJPEG_LOGGING_H__ -#include - /* to avoid changing all the places log_level_t is used */ typedef int log_level_t; diff --git a/veejay-current/veejay-client/src/mjpeg_types.h b/veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_types.h similarity index 100% rename from veejay-current/veejay-client/src/mjpeg_types.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/mjpeg_types.h diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.c b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.c similarity index 99% rename from veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.c rename to veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.c index 4d80af28..846b80d7 100644 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.c +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.c @@ -22,8 +22,11 @@ */ #include -#include "mpegconsts.h" + +#include "mjpeg_types.h" +#include "mjpeg_logging.h" #include "yuv4mpeg.h" +#include "mpegconsts.h" #include "yuv4mpeg_intern.h" #include "format_codes.h" diff --git a/veejay-current/veejay-client/src/mpegconsts.h b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.h similarity index 99% rename from veejay-current/veejay-client/src/mpegconsts.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.h index 3e9543d1..adc51eb9 100644 --- a/veejay-current/veejay-client/src/mpegconsts.h +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegconsts.h @@ -23,8 +23,6 @@ #ifndef __MPEGCONSTS_H__ #define __MPEGCONSTS_H__ -#include - typedef unsigned int mpeg_framerate_code_t; typedef unsigned int mpeg_aspect_code_t; @@ -75,6 +73,7 @@ mpeg_framerate_code( y4m_ratio_t framerate ); y4m_ratio_t mpeg_conform_framerate( double fps ); + /* * Convert MPEG aspect ratio code to corresponding aspect ratio * diff --git a/veejay-current/veejay-client/src/mpegtimecode.c b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegtimecode.c similarity index 100% rename from veejay-current/veejay-client/src/mpegtimecode.c rename to veejay-current/veejay-core/thirdparty/mjpegtools/mpegtimecode.c diff --git a/veejay-current/veejay-client/src/mpegtimecode.h b/veejay-current/veejay-core/thirdparty/mjpegtools/mpegtimecode.h similarity index 100% rename from veejay-current/veejay-client/src/mpegtimecode.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/mpegtimecode.h diff --git a/veejay-current/veejay-client/src/videodev_mjpeg.h b/veejay-current/veejay-core/thirdparty/mjpegtools/videodev_mjpeg.h similarity index 100% rename from veejay-current/veejay-client/src/videodev_mjpeg.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/videodev_mjpeg.h diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.c b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.c similarity index 99% rename from veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.c rename to veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.c index 90e6e64d..82c9426f 100644 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.c +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.c @@ -27,7 +27,10 @@ #include #include #define INTERNAL_Y4M_LIBCODE_STUFF_QPX +#include "mjpeg_types.h" +#include "mjpeg_logging.h" #include "yuv4mpeg.h" +#include "mpegconsts.h" #include "yuv4mpeg_intern.h" #include #include diff --git a/veejay-current/veejay-client/src/yuv4mpeg.h b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.h similarity index 99% rename from veejay-current/veejay-client/src/yuv4mpeg.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.h index 79a41f64..791e23b2 100644 --- a/veejay-current/veejay-client/src/yuv4mpeg.h +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg.h @@ -26,11 +26,10 @@ #define __YUV4MPEG_H__ #include -#include +#include #ifndef _WIN32 #include #endif -#include /************************************************************************ diff --git a/veejay-current/veejay-client/src/yuv4mpeg_intern.h b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg_intern.h similarity index 100% rename from veejay-current/veejay-client/src/yuv4mpeg_intern.h rename to veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg_intern.h diff --git a/veejay-current/veejay-client/src/yuv4mpeg_ratio.c b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg_ratio.c similarity index 98% rename from veejay-current/veejay-client/src/yuv4mpeg_ratio.c rename to veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg_ratio.c index 7b50578c..87a07214 100644 --- a/veejay-current/veejay-client/src/yuv4mpeg_ratio.c +++ b/veejay-current/veejay-core/thirdparty/mjpegtools/yuv4mpeg_ratio.c @@ -21,8 +21,9 @@ */ #include - #include +#include "mjpeg_types.h" +#include "mjpeg_logging.h" #include "yuv4mpeg.h" #include "yuv4mpeg_intern.h" diff --git a/veejay-current/veejay-core/veejay.arch b/veejay-current/veejay-core/veejay.arch new file mode 100644 index 00000000..3f3f5a0d --- /dev/null +++ b/veejay-current/veejay-core/veejay.arch @@ -0,0 +1 @@ +-march=btver1 diff --git a/veejay-current/veejay-core/veejaycore.pc.in b/veejay-current/veejay-core/veejaycore.pc.in new file mode 100644 index 00000000..078d9054 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: veejaycore +Description: visual instrument and realtime video sampler +Version: @VERSION@ +Libs: -L${libdir} -lveejaycore +Cflags: -I${includedir} diff --git a/veejay-current/veejay-core/veejaycore/Makefile.am b/veejay-current/veejay-core/veejaycore/Makefile.am new file mode 100644 index 00000000..781c8bb8 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/Makefile.am @@ -0,0 +1,54 @@ +# Makefile for veejay core + +AM_CFLAGS = $(OP_CFLAGS) +MAINTAINERCLEANFILES = Makefile.in +AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ + -DG_LOG_DOMAIN=\"veejaycore\" -DVEEJAYCORE_VERSION=\"$(VERSION)\" + +AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools + +AM_CPPFLAGS += -I /usr/X11R6/include \ + -I$(top_srcdir)/thirdparty \ + -I$(top_srcdir)/libvjmem \ + -I$(top_srcdir)/libvjlzo \ + -I$(top_srcdir)/libvjmsg \ + -I$(top_srcdir)/libvjnet \ + -I$(top_scrdir)/libyuv \ + -I$(top_srcdir)/libvevo \ + $(LIBAVFORMAT_CFLAGS) $(LIBAVCODEC_CFLAGS) $(LIBAVUTIL_CFLAGS) $(LIBSWSCALE_CFLAGS) $(GLIB_CFLAGS) \ + $(PTHREAD_CFLAGS) + +pkginclude_HEADERS = core.h vj-task.h defs.h avhelper.h avcommon.h vims.h + +VEEJAYCORE_LIB_FILE = libveejaycore.la + +lib_LTLIBRARIES = $(VEEJAYCORE_LIB_FILE) + +libveejaycore_la_SOURCES = core.c vj-task.c avhelper.c + +libveejaycore_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -release $(LT_RELEASE) -no-undefined -export-dynamic $(DEBUGLIBS) + + +libveejaycore_la_LIBADD = \ + $(top_builddir)/thirdparty/aclib/libac.la \ + $(top_builddir)/thirdparty/libhash/libhash.la \ + $(top_builddir)/thirdparty/liblzo/libvjlzo.la \ + $(top_builddir)/libvjmsg/libvjmsg.la \ + $(top_builddir)/libvjmem/libvjmem.la \ + $(top_builddir)/libvjnet/libvjnet.la \ + $(top_builddir)/libyuv/libyuv.la \ + $(top_builddir)/thirdparty/mjpegtools/libmjpegutils.la \ + $(top_builddir)/libvevo/libvevo.la + +if HAVE_ARM +libveejaycore_la_LIBADD+=$(top_builddir)/thirdparty/fastarm/libfastarm.la +endif + +libveejaycore_la_LIBADD += $(LIBAVFORMAT_LIBS) $(LIBAVCODEC_LIBS) $(LIBAVUTIL_LIBS) $(LIBSWSCALE_LIBS) + +libveejaycore_la_LDFLAGS += $(PTHREAD_LIBS) + $(GLIB_LIBS) \ + $(LIBM_LIBS) $(RT_LIBS) \ + -DDYNAMIC -O3 -Wall -rdynamic -Wl,-no-undefined + diff --git a/veejay-current/veejay-core/veejaycore/av.h b/veejay-current/veejay-core/veejaycore/av.h new file mode 100755 index 00000000..d25d89d3 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/av.h @@ -0,0 +1,116 @@ +/* veejay - Linux VeeJay + * (C) 2002-2015 Niels Elburg + * + * + * 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. + */ + +#ifndef AV_H +#define AV_H +#include + +#define FF_VJE_BACKPORT (LIBAVCODEC_VERSION_MAJOR >= 56 && LIBAVCODEC_VERSION_MINOR >= 1) + +//#define FF_NO_VIDEO_ENCODE (LIBAVCODEC_VERSION_MICRO <= 0 && LIBAVCODEC_VERSION_MAJOR >= 56) +extern int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,const AVFrame *pict) __attribute__((weak)); + +extern int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt,const AVFrame *frame, int *got_packet_ptr) __attribute__((weak)); + +extern void avcodec_free_context(AVCodecContext **avctx) __attribute__((weak)); + +extern void av_frame_unref(AVFrame *ptr) __attribute((weak)); + + +#if FF_VJE_BACKPORT + +#ifndef CODEC_ID_MJPEGB +#define CODEC_ID_MJPEGB AV_CODEC_ID_MJPEGB +#endif + +#ifndef CODEC_ID_MPEG4 +#define CODEC_ID_MPEG4 AV_CODEC_ID_MPEG4 +#endif + +#ifndef CODEC_ID_MSMPEG4V3 +#define CODEC_ID_MSMPEG4V3 AV_CODEC_ID_MSMPEG4V3 +#endif + +#ifndef CODEC_ID_DVVIDEO +#define CODEC_ID_DVVIDEO AV_CODEC_ID_DVVIDEO +#endif + +#ifndef CODEC_ID_LJPEG +#define CODEC_ID_LJPEG AV_CODEC_ID_LJPEG +#endif + +#ifndef CODEC_ID_SP5X +#define CODEC_ID_SP5X AV_CODEC_ID_SP5X +#endif + +#ifndef CODEC_ID_THEORA +#define CODEC_ID_THEORA AV_CODEC_ID_THEORA +#endif + +#ifndef CODEC_ID_H264 +#define CODEC_ID_H264 AV_CODEC_ID_H264 +#endif + +#ifndef CODEC_ID_MJPEG +#define CODEC_ID_MJPEG AV_CODEC_ID_MJPEG +#endif + +#ifndef CODEC_ID_PNG +#define CODEC_ID_PNG AV_CODEC_ID_PNG +#endif + +#ifndef CODEC_ID_MSMPEG4V2 +#define CODEC_ID_MSMPEG4V2 AV_CODEC_ID_MSMPEG4V2 +#endif + +#ifndef CODEC_ID_MSMPEG4V1 +#define CODEC_ID_MSMPEG4V1 AV_CODEC_ID_MSMPEG4V1 +#endif + +#ifndef CODEC_ID_HUFFYUV +#define CODEC_ID_HUFFYUV AV_CODEC_ID_HUFFYUV +#endif + +#ifndef CODEC_ID_CYUV +#define CODEC_ID_CYUV AV_CODEC_ID_CYUV +#endif + +#ifndef CODEC_ID_SVQ1 +#define CODEC_ID_SVQ1 AV_CODEC_ID_SVQ1 +#endif + +#ifndef CODEC_ID_SVQ3 +#define CODEC_ID_SVQ3 AV_CODEC_ID_SVQ3 +#endif + +#ifndef CODEC_ID_RPZA +#define CODEC_ID_RPZA AV_CODEC_ID_RPZA +#endif + +#ifndef CODEC_ID_FIRST_AUDIO +#define CODEC_ID_FIRST_AUDIO AV_CODEC_ID_FIRST_AUDIO +#endif + +#ifndef CODEC_ID_FIST_SUBTITLE +#define CODEC_ID_FIRST_SUBTITLE AV_CODEC_ID_FIRST_SUBTITLE +#endif + +#endif + +#endif diff --git a/veejay-current/veejay-core/veejaycore/avcommon.h b/veejay-current/veejay-core/veejaycore/avcommon.h new file mode 100644 index 00000000..7e6eb2c8 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/avcommon.h @@ -0,0 +1,87 @@ +#ifndef AVCOMMON_H +#define AVCOMMON_H +#include +#define LIBAVUTIL_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) + +#if LIBAVUTIL_VERSION_CHECK(51,45,0,74,100) +#ifndef PIX_FMT_YUVA422P +#define PIX_FMT_YUVA422P AV_PIX_FMT_YUVA422P +#endif +#ifndef PIX_FMT_YUVA444P +#define PIX_FMT_YUVA444P AV_PIX_FMT_YUVA444P +#endif +#ifndef PIX_FMT_YUVA420P +#define PIX_FMT_YUVA420P AV_PIX_FMT_YUVA420P +#endif +#ifndef PIX_FMT_YUV422P +#define PIX_FMT_YUV422P AV_PIX_FMT_YUV422P +#endif +#ifndef PIX_FMT_YUV420P +#define PIX_FMT_YUV420P AV_PIX_FMT_YUV420P +#endif +#ifndef PIX_FMT_YUVJ420P +#define PIX_FMT_YUVJ420P AV_PIX_FMT_YUVJ420P +#endif +#ifndef PIX_FMT_YUV444P +#define PIX_FMT_YUV444P AV_PIX_FMT_YUV444P +#endif +#ifndef PIX_FMT_RGB24 +#define PIX_FMT_RGB24 AV_PIX_FMT_RGB24 +#endif +#ifndef PIX_FMT_YUVJ444P +#define PIX_FMT_YUVJ444P AV_PIX_FMT_YUVJ444P +#endif +#ifndef PIX_FMT_YUVJ422P +#define PIX_FMT_YUVJ422P AV_PIX_FMT_YUVJ422P +#endif +#ifndef PIX_FMT_RGB32 +#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32 +#endif +#ifndef PIX_FMT_BGR32 +#define PIX_FMT_BGR32 AV_PIX_FMT_BGR32 +#endif +#ifndef PIX_FMT_RGBA +#define PIX_FMT_RGBA AV_PIX_FMT_RGBA +#endif +#ifndef PIX_FMT_BGRA +#define PIX_FMT_BGRA AV_PIX_FMT_BGRA +#endif +#ifndef PIX_FMT_BGR24 +#define PIX_FMT_BGR24 AV_PIX_FMT_BGR24 +#endif +#ifndef PIX_FMT_GRAY8 +#define PIX_FMT_GRAY8 AV_PIX_FMT_GRAY8 +#endif +#ifndef PIX_FMT_RB32_1 +#define PIX_FMT_RGB32_1 AV_PIX_FMT_RGB32_1 +#endif +#ifndef PIX_FMT_YUYV422 +#define PIX_FMT_YUYV422 AV_PIX_FMT_YUYV422 +#endif +#ifndef PIX_FMT_UYVY422 +#define PIX_FMT_UYVY422 AV_PIX_FMT_UYVY422 +#endif +#ifndef PIX_FMT_ARGB +#define PIX_FMT_ARGB AV_PIX_FMT_ARGB +#endif +#ifndef PIX_FMT_ABGR +#define PIX_FMT_ABGR AV_PIX_FMT_ABGR +#endif +#ifndef PIX_FMT_YUV411P +#define PIX_FMT_YUV411P AV_PIX_FMT_YUV411P +#endif + +#ifndef CODEC_FLAG_QSCALE +#define CODEC_FLAG_QSCALE AV_CODEC_FLAG_QSCALE +#endif +#ifndef CODEC_CAP_TRUNCATED +#define CODEC_CAP_TRUNCATED AV_CODEC_CAP_TRUNCATED +#endif +#ifndef CODEC_FLAG_TRUNCATED +#define CODEC_FLAG_TRUNCATED AV_CODEC_FLAG_TRUNCATED +#endif + +#endif +#endif diff --git a/veejay-current/veejay-core/veejaycore/avhelper.c b/veejay-current/veejay-core/veejaycore/avhelper.c new file mode 100644 index 00000000..5ac48451 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/avhelper.c @@ -0,0 +1,688 @@ +/* veejay - Linux VeeJay + * (C) 2002-2015 Niels Elburg + * + * + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static struct +{ + const char *name; + int id; +} _supported_codecs[] = +{ + { "vj20", CODEC_ID_YUV420F }, + { "vj22", CODEC_ID_YUV422F }, + { "mjpg" ,CODEC_ID_MJPEG }, + { "mjpb", CODEC_ID_MJPEGB }, + { "i420", CODEC_ID_YUV420 }, + { "i422", CODEC_ID_YUV422 }, + { "dmb1", CODEC_ID_MJPEG }, + { "jpeg", CODEC_ID_MJPEG }, + { "mjpa", CODEC_ID_MJPEG }, + { "mjpb", CODEC_ID_MJPEG }, + { "jfif", CODEC_ID_MJPEG }, + { "jfif", CODEC_ID_MJPEG }, + { "png", CODEC_ID_PNG }, + { "mpng", CODEC_ID_PNG }, +#if LIBAVCODEC_BUILD > 4680 + { "sp5x", CODEC_ID_SP5X }, +#endif + { "jpgl", CODEC_ID_MJPEG }, + { "jpgl", CODEC_ID_MJPEG }, + { "ljpg", CODEC_ID_LJPEG }, + { "dvsd", CODEC_ID_DVVIDEO }, + { "dvcp", CODEC_ID_DVVIDEO }, + { "dv", CODEC_ID_DVVIDEO }, + { "dvhd", CODEC_ID_DVVIDEO }, + { "dvp", CODEC_ID_DVVIDEO }, + { "yuv", CODEC_ID_YUV420 }, + { "iyuv", CODEC_ID_YUV420 }, + { "i420", CODEC_ID_YUV420 }, + { "yv16", CODEC_ID_YUV422 }, + { "yv12", CODEC_ID_YUV420 }, + { "mlzo", CODEC_ID_YUVLZO }, + { "hfyu", CODEC_ID_HUFFYUV }, + { "cyuv", CODEC_ID_CYUV }, + { "svq1", CODEC_ID_SVQ1 }, + { "svq3", CODEC_ID_SVQ3 }, + { "rpza", CODEC_ID_RPZA }, + { "y42b", CODEC_ID_YUV422F }, + { "pict", 0xffff }, + + { NULL , 0, }, +}; + + +#define MAX_PACKETS 5 + +typedef struct +{ + AVPacket packets[MAX_PACKETS]; + AVFrame *frames[2]; + int frameinfo[2]; + AVCodec *codec; + AVCodecContext *codec_ctx; + AVFormatContext *avformat_ctx; + int frame_index; + int pixfmt; + int codec_id; + VJFrame *output; + VJFrame *input; + void *scaler; + int video_stream_id; + uint32_t write_index; + uint32_t read_index; + double spvf; +} el_decoder_t; + + +//instead of iterating _supported_codecs and using a strncasecmp on every entry to find the codec_id, use a hash table that returns the codec identifier on hashed fourcc key +//this collection is never freed and initialized on first access +static hash_t *fourccTable = NULL; + +static inline void *avhelper_get_decoder_intra( const char *filename, int dst_pixfmt, int dst_width, int dst_height, int force_intra_frame_only ); + +typedef struct { + int codec_id; +} fourcc_node; + +//from libvevo/vevo.c +static inline int hash_key_code( const char *str ) +{ + int hash = 5381; + int c; + while( (c = (int) *str++) != 0) + hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ + + return hash; +} +static hash_val_t key_hash(const void *key) +{ + return (hash_val_t) key; +} +static int key_compare(const void *key1, const void *key2) +{ + return ((const int) key1 == (const int) key2 ? 0 : 1); +} + +int avhelper_get_codec_by_id(int id) +{ + int i; + for( i = 0; _supported_codecs[i].name != NULL ; i ++ ) + { + if( _supported_codecs[i].id == id) + { + return i; + } + } + return -1; +} + +static int avhelper_build_table() +{ + fourccTable = hash_create( 100, key_compare, key_hash ); + if(!fourccTable) { + return -1; + } + + int i; + for( i = 0; _supported_codecs[i].name != NULL; i ++ ) { + fourcc_node *node = (fourcc_node*) vj_malloc(sizeof(fourcc_node)); + node->codec_id = _supported_codecs[i].id; + hnode_t *hnode = hnode_create(node); + hash_insert( fourccTable, hnode, (const void*) hash_key_code(_supported_codecs[i].name ) ); + } + + return 0; +} + +int avhelper_get_codec_by_key( int key ) +{ +#ifdef ARCH_X86_64 + int64_t k = (int64_t) key; +#else + int k = key; +#endif + if( fourccTable == NULL ) { + /* lets initialize the hash of fourcc/codec_id pairs now */ + if(avhelper_build_table() != 0) + return -1; + } + + hnode_t *node = hash_lookup( fourccTable,(const void*) k); + fourcc_node *fourcc = hnode_get(node); + if(fourcc) { + return fourcc->codec_id; + } + + return -1; +} + +void *avhelper_get_codec_ctx( void *ptr ) +{ + el_decoder_t *e = (el_decoder_t*) ptr; + return e->codec_ctx; +} + + +void *avhelper_get_codec( void *ptr ) +{ + el_decoder_t *e = (el_decoder_t*) ptr; + return e->codec; +} + +#if LIBAVCODEC_BUILD > 5400 +static int avcodec_decode_video( AVCodecContext *avctx, AVFrame *picture, int *got_picture, uint8_t *data, int pktsize ) { + AVPacket pkt; + veejay_memset( &pkt, 0, sizeof(AVPacket)); + pkt.data = data; + pkt.size = pktsize; + return avcodec_decode_video2( avctx, picture, got_picture, &pkt ); +} +#endif + +void avhelper_frame_unref(AVFrame *ptr) +{ +#if (LIBAVCODEC_VERSION_MAJOR > 55 && LIBAVCODEC_VERSION_MINOR > 40) || (LIBAVCODEC_VERSION_MAJOR == 56 && LIBAVCODEC_VERSION_MINOR > 0) + av_frame_unref( ptr ); +#endif +} + +void avhelper_free_context(AVCodecContext **avctx) +{ +#if (LIBAVCODEC_VERSION_MAJOR > 55 && LIBAVCODEC_VERSION_MINOR > 40) || (LIBAVCODEC_VERSION_MAJOR == 56 && LIBAVCODEC_VERSION_MINOR > 0) + avcodec_free_context( avctx ); +#else +// if( avctx ) +// free(avctx); + avctx = NULL; +#endif +} + +static void avhelper_close_input_file( AVFormatContext *s ) { +#if LIBAVCODEC_BUILD > 5400 + avformat_close_input(&s); +#else + av_close_input_file(s); +#endif +} + +void *avhelper_get_mjpeg_decoder(VJFrame *output) { + el_decoder_t *x = (el_decoder_t*) vj_calloc( sizeof( el_decoder_t )); + if(!x) { + return NULL; + } + + x->codec = avcodec_find_decoder( CODEC_ID_MJPEG ); + if(x->codec == NULL) { + veejay_msg(0,"Unable to find MJPEG decoder"); + return NULL; + } + +#if LIBAVCODEC_BUILD > 5400 + x->codec_ctx = avcodec_alloc_context3(x->codec); + if ( avcodec_open2( x->codec_ctx, x->codec, NULL ) < 0 ) +#else + x->codec_ctx = avcodec_alloc_context(); + if ( avcodec_open( x->codec_ctx, x->codec ) < 0 ) +#endif + { + free(x); + return NULL; + } + + x->frames[0] = avhelper_alloc_frame(); + x->frames[1] = avhelper_alloc_frame(); + + x->output = yuv_yuv_template( NULL,NULL,NULL, output->width, output->height, alpha_fmt_to_yuv(output->format) ); + + return (void*) x; +} + +void *avhelper_get_decoder( const char *filename, int dst_pixfmt, int dst_width, int dst_height ) { + return avhelper_get_decoder_intra(filename, dst_pixfmt,dst_width,dst_height,1); +} + +void *avhelper_get_stream_decoder( const char *filename, int dst_pixfmt, int dst_width, int dst_height ) { + + el_decoder_t *x = (el_decoder_t*) avhelper_get_decoder_intra(filename, dst_pixfmt,dst_width,dst_height,0); + if( x == NULL ) { + return NULL; + } + + x->read_index = 0; + x->write_index = 0; + + return (void*) x; +} + + +#define OK 0 + +double avhelper_get_spvf( void *decoder ) { + el_decoder_t *x = (el_decoder_t*) decoder; + return x->spvf; +} + +int avhelper_recv_frame_packet( void *decoder ) +{ + el_decoder_t *x = (el_decoder_t*) decoder; + + veejay_memset( &(x->packets[x->write_index]), 0 , sizeof(AVPacket)); + + int ret = av_read_frame(x->avformat_ctx, &(x->packets[x->write_index]) ); + + if( ret == OK ) { + if( x->packets[ x->write_index ].stream_index != x->video_stream_id ) { + av_free_packet( &(x->packets[x->write_index]) ); + return 2; // discarded + } + + x->write_index = (x->write_index + 1) % MAX_PACKETS; + return 1; // accepted + } + + return -1; // error +} + +int avhelper_decode_video_buffer( void *ptr, uint8_t *data, int len ) +{ + int got_picture = 0; + el_decoder_t * e = (el_decoder_t*) ptr; + + avcodec_decode_video( e->codec_ctx, e->frames[e->frame_index], &got_picture, data, len ); + + //avhelper_frame_unref(e->frames[e->frame_index]); + + if(got_picture) { + e->frameinfo[e->frame_index] = 1; /* we have a full picture at this index */ + e->frame_index = (e->frame_index + 1) % 2; /* use next available buffer */ + return 1; + } + + return 0; +} + + +int avhelper_recv_decode( void *decoder, int *got_picture ) +{ + el_decoder_t *x = (el_decoder_t*) decoder; + int result = 0; + int gp = 0; + + while(1) { + + // only decode video + if( x->packets[ x->read_index ].stream_index != x->video_stream_id ) + break; + + // poor man 'double buffering'; when the decode is successful, decode next frame into its own buffer and increment frame_index. + // this function, is the only function, that may manipulate frame_index, as it is used together with avhelper_get_decoded_video + // other functions in this source file, assume an index of 0 + result = avcodec_decode_video( x->codec_ctx, x->frames[x->frame_index], &gp, x->packets[ x->read_index ].data, x->packets[ x->read_index ].size ); + //avhelper_frame_unref(x->frames[x->frame_index]); + + av_free_packet( &(x->packets[x->write_index]) ); + + x->read_index = (x->read_index + 1) % MAX_PACKETS; + + if( gp ) + break; + } + *got_picture = gp; + + if(gp) { + x->frameinfo[x->frame_index] = 1; /* we have a full picture at this index */ + x->frame_index = (x->frame_index + 1) % 2; /* use next available buffer */ + x->frameinfo[x->frame_index] = 0; + } + + return result; +} + + +int avhelper_get_frame( void *decoder, int *got_picture ) +{ + el_decoder_t *x = (el_decoder_t*) decoder; + + veejay_memset( &(x->packets[0]), 0, sizeof(AVPacket)); + + int gp = 0; + int result = 0; + while(1) { + int ret = av_read_frame(x->avformat_ctx, &(x->packets[0])); + if( ret < 0 ) + break; + + if ( x->packets[0].stream_index == x->video_stream_id ) { + result = avcodec_decode_video( x->codec_ctx,x->frames[x->frame_index],&gp, x->packets[0].data, x->packets[0].size ); + avhelper_frame_unref(x->frames[x->frame_index]); + } + + av_free_packet( &(x->packets[0]) ); + + if( gp ) + break; + } + + *got_picture = gp; + + return result; +} + +static inline void *avhelper_get_decoder_intra( const char *filename, int dst_pixfmt, int dst_width, int dst_height, int force_intra_frame_only ) { + char errbuf[512]; + el_decoder_t *x = (el_decoder_t*) vj_calloc( sizeof( el_decoder_t )); + if(!x) { + return NULL; + } + +#if LIBAVCODEC_BUILD > 5400 + int err = avformat_open_input( &(x->avformat_ctx), filename, NULL, NULL ); +#else + int err = av_open_input_file( &(x->avformat_ctx),filename,NULL,0,NULL ); +#endif + + if(err < 0 ) { + av_strerror( err, errbuf, sizeof(errbuf)); + veejay_msg(VEEJAY_MSG_DEBUG, "Error opening %s: %s", filename,errbuf ); + free(x); + return NULL; + } + +#if LIBAVCODEC_BUILD > 5400 + /* avformat_find_stream_info leaks memory */ + err = avformat_find_stream_info( x->avformat_ctx, NULL ); +#else + err = av_find_stream_info( x->avformat_ctx ); +#endif + if( err < 0 ) { + av_strerror( err, errbuf, sizeof(errbuf)); + veejay_msg(VEEJAY_MSG_DEBUG, "%s: %s" ,filename,errbuf ); + } + + if(err < 0 ) { + avhelper_close_input_file( x->avformat_ctx ); + free(x); + return NULL; + } + + unsigned int i,j; + unsigned int n = x->avformat_ctx->nb_streams; + + x->video_stream_id = -1; + + for( i = 0; i < n; i ++ ) + { + if( !x->avformat_ctx->streams[i]->codec ) + continue; + + if( x->avformat_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO ) + continue; + + if( x->avformat_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO ) + { + int sup_codec = !force_intra_frame_only; + if( force_intra_frame_only ) { + for( j = 0; _supported_codecs[j].name != NULL; j ++ ) { + if( x->avformat_ctx->streams[i]->codec->codec_id == _supported_codecs[j].id ) { + sup_codec = 1; + goto further; + } + } + } +further: + if( !sup_codec ) { + avhelper_close_input_file( x->avformat_ctx ); + free(x); + return NULL; + } + + x->codec = avcodec_find_decoder( x->avformat_ctx->streams[i]->codec->codec_id ); + if(x->codec == NULL ) + { + avhelper_close_input_file( x->avformat_ctx ); + free(x); + return NULL; + } + x->video_stream_id = i; + + veejay_msg(VEEJAY_MSG_DEBUG, "FFmpeg: video stream %d, codec_id %d", x->video_stream_id, x->avformat_ctx->streams[i]->codec->codec_id); + + break; + } + } + + if( x->video_stream_id == -1 ) { + veejay_msg(VEEJAY_MSG_DEBUG, "FFmpeg: No video streams found"); + avhelper_close_input_file( x->avformat_ctx ); + free(x); + return NULL; + } + + x->codec_ctx = x->avformat_ctx->streams[x->video_stream_id]->codec; + + int wid = dst_width; + int hei = dst_height; + + if( wid == -1 && hei == -1 ) { + wid = x->codec_ctx->width; + hei = x->codec_ctx->height; + } + +#if LIBAVCODEC_BUILD > 5400 + if ( avcodec_open2( x->codec_ctx, x->codec, NULL ) < 0 ) +#else + if ( avcodec_open( x->codec_ctx, x->codec ) < 0 ) +#endif + { + avhelper_close_input_file( x->avformat_ctx ); + free(x); + return NULL; + } + + veejay_memset( &(x->packets[0]), 0, sizeof(AVPacket)); + AVFrame *f = avhelper_alloc_frame(); + x->output = yuv_yuv_template( NULL,NULL,NULL, wid, hei, dst_pixfmt ); + x->spvf = ( (double) x->codec_ctx->framerate.den ) / ( (double) x->codec_ctx->framerate.num); + + int got_picture = 0; + while(1) { + int ret = av_read_frame(x->avformat_ctx, &(x->packets[0])); + if( ret < 0 ) + break; + + if ( x->packets[0].stream_index == x->video_stream_id ) { + avcodec_decode_video( x->codec_ctx,f,&got_picture, x->packets[0].data, x->packets[0].size ); + avhelper_frame_unref( f ); + } + + av_free_packet( &(x->packets[0]) ); + + if( got_picture ) + break; + } + av_free(f); + + if(!got_picture) { + veejay_msg(VEEJAY_MSG_ERROR, "FFmpeg: Unable to get whole picture from %s", filename ); + avcodec_close( x->codec_ctx ); + avhelper_close_input_file( x->avformat_ctx ); + free(x->output); + free(x); + return NULL; + } + + x->pixfmt = x->codec_ctx->pix_fmt; + x->codec_id = x->codec_ctx->codec_id; + x->frames[0] = avhelper_alloc_frame(); + x->frames[1] = avhelper_alloc_frame(); + x->input = yuv_yuv_template( NULL,NULL,NULL, x->codec_ctx->width,x->codec_ctx->height, x->pixfmt ); + + return (void*) x; +} + +#define LIBAVUTIL_VERSION_CHECK( a, b, c, d, e ) \ + ( (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \ + (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) ) + +void *avhelper_alloc_frame() +{ +#if LIBAVUTIL_VERSION_CHECK(55,20,0,13,100) + return av_frame_alloc(); +#else + return avcodec_alloc_frame(); +#endif +} + +void avhelper_close_decoder( void *ptr ) +{ + el_decoder_t *e = (el_decoder_t*) ptr; + avcodec_close( e->codec_ctx ); + + for( int i = 0; i < MAX_PACKETS ; i ++ ) { + av_free_packet( &(e->packets[i]) ); + } + + if(e->avformat_ctx) { + avhelper_close_input_file( e->avformat_ctx ); + } + if(e->scaler) { + yuv_free_swscaler( e->scaler ); + } + + if(e->frames[0]->data[0]) + avhelper_frame_unref(e->frames[0]); + if(e->frames[1]->data[0]) + avhelper_frame_unref(e->frames[1]); + + if(e->input) + free(e->input); + if(e->output) + free(e->output); + if(e->frames[0]) + av_free(e->frames[0]); + if(e->frames[1]) + av_free(e->frames[1]); + free(e); +} + +VJFrame *avhelper_get_input_frame( void *ptr ) +{ + el_decoder_t *e = (el_decoder_t*) ptr; + return e->input; +} + +VJFrame *avhelper_get_output_frame( void *ptr) +{ + el_decoder_t *e = (el_decoder_t*) ptr; + return e->output; +} + +int avhelper_decode_video( void *ptr, uint8_t *data, int len ) +{ + int got_picture = 0; + el_decoder_t * e = (el_decoder_t*) ptr; + + int result = avcodec_decode_video( e->codec_ctx, e->frames[e->frame_index], &got_picture, data, len ); + + if(!got_picture || result <= 0) { + e->frameinfo[e->frame_index] = 1; + e->frame_index = (e->frame_index +1) %2; + e->frameinfo[e->frame_index] = 0; + return 0; + } + return 1; +} + +VJFrame *avhelper_get_decoded_video(void *ptr) { + el_decoder_t * e = (el_decoder_t*) ptr; + + if(e->input == NULL) { + e->input = yuv_yuv_template( NULL,NULL,NULL, e->codec_ctx->width,e->codec_ctx->height, e->codec_ctx->pix_fmt ); + } + + int idx = 0; + if( e->frameinfo[1] == 1 ) // find best frame + idx = 1; + + e->input->data[0] = e->frames[idx]->data[0]; + e->input->data[1] = e->frames[idx]->data[1]; + e->input->data[2] = e->frames[idx]->data[2]; + e->input->data[3] = e->frames[idx]->data[3]; + + e->input->stride[0] = e->frames[idx]->linesize[0]; + e->input->stride[1] = e->frames[idx]->linesize[1]; + e->input->stride[2] = e->frames[idx]->linesize[2]; + e->input->stride[3] = e->frames[idx]->linesize[3]; + + return e->input; +} + +void avhelper_rescale_video(void *ptr, uint8_t *dst[3]) +{ + el_decoder_t * e = (el_decoder_t*) ptr; + + if(e->input == NULL) { + e->input = yuv_yuv_template( NULL,NULL,NULL, e->codec_ctx->width,e->codec_ctx->height, e->codec_ctx->pix_fmt ); + } + + if(e->scaler == NULL ) { + sws_template sws_tem; + veejay_memset(&sws_tem, 0,sizeof(sws_template)); + sws_tem.flags = yuv_which_scaler(); + e->scaler = yuv_init_swscaler( e->input,e->output, &sws_tem, yuv_sws_get_cpu_flags()); + if(e->scaler == NULL) { + free(e->input); + veejay_msg(VEEJAY_MSG_DEBUG, "Unable to initialize scaler context for [%d,%d, @%d %p,%p,%p ] -> [%d,%d, @%d, %p,%p,%p ]", + e->input->width,e->input->height,e->input->format,e->input->data[0],e->input->data[1],e->input->data[2], + e->output->width,e->output->height,e->output->format,e->output->data[0],e->output->data[1],e->output->data[2]); + + return; + } + } + + e->input->data[0] = e->frames[e->frame_index]->data[0]; + e->input->data[1] = e->frames[e->frame_index]->data[1]; + e->input->data[2] = e->frames[e->frame_index]->data[2]; + e->input->data[3] = e->frames[e->frame_index]->data[3]; + + e->output->data[0] = dst[0]; + e->output->data[1] = dst[1]; + e->output->data[2] = dst[2]; + + yuv_convert_any3( e->scaler, e->input, e->frames[e->frame_index]->linesize, e->output, e->input->format, e->pixfmt ); +} diff --git a/veejay-current/veejay-core/veejaycore/avhelper.h b/veejay-current/veejay-core/veejaycore/avhelper.h new file mode 100644 index 00000000..fdf739e4 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/avhelper.h @@ -0,0 +1,73 @@ +/* veejay - Linux VeeJay + * (C) 2002-2015 Niels Elburg + * + * + * 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. + */ + +#ifndef AVHELPER_H +#define AVHELPER_H + +#define CODEC_ID_YUV420 999 +#define CODEC_ID_YUV422 998 +#define CODEC_ID_YUV422F 997 +#define CODEC_ID_YUV420F 996 +#define CODEC_ID_YUVLZO 900 + +// This is not a library, it is a collection of helper functions for various purposes + +void *avhelper_alloc_frame(); + +int avhelper_get_codec_by_id(int id); + +int avhelper_get_codec_by_key( int key ); + +void *avhelper_get_codec_ctx( void *ptr ); + +void *avhelper_get_codec( void *ptr ); + +void avhelper_close_decoder( void *ptr ); + +int avhelper_decode_video( void *ptr, uint8_t *data, int len); + +void avhelper_rescale_video(void *ptr, uint8_t *dst[4]); + +void *avhelper_get_decoder( const char *filename, int dst_pixfmt, int dst_width, int dst_height ); + +void *avhelper_get_stream_decoder( const char *filename, int dst_pixfmt, int dst_width, int dst_height ); + +VJFrame *avhelper_get_decoded_video(void *ptr); + +void avhelper_free_context(AVCodecContext **avctx); + +void avhelper_frame_unref(AVFrame *ptr); + +void *avhelper_get_mjpeg_decoder(VJFrame *output_info); + +int avhelper_get_frame( void *decoder, int *got_picture ); + +VJFrame *avhelper_get_input_frame( void *ptr ); + +VJFrame *avhelper_get_output_frame( void *ptr); + +int avhelper_recv_decode( void *decoder, int *got_picture ); + +int avhelper_recv_frame_packet( void *decoder ); + +int avhelper_decode_video_buffer( void *ptr, uint8_t *data, int len ); + +double avhelper_get_spvf( void *decoder ); + +#endif diff --git a/veejay-current/veejay-core/veejaycore/core.c b/veejay-current/veejay-core/veejaycore/core.c new file mode 100644 index 00000000..927549f2 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/core.c @@ -0,0 +1,4 @@ +#include "core.h" +int veejay_core_version() { + return 1; +} diff --git a/veejay-current/veejay-core/veejaycore/core.h b/veejay-current/veejay-core/veejaycore/core.h new file mode 100644 index 00000000..99d4405d --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/core.h @@ -0,0 +1,4 @@ +#ifndef VJCORE_H +#define VJCORE_H +int veejay_core_version(); +#endif diff --git a/veejay-current/veejay-core/veejaycore/defs.h b/veejay-current/veejay-core/veejaycore/defs.h new file mode 100644 index 00000000..0764794d --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/defs.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2002-2015 Niels Elburg + * + * 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. + * + */ + +#ifndef VJEDEF_H +#define VJEDEF_H + +#define V_STATUS 1 +#define V_CMD 0 + +#define FMT_420 0 +#define FMT_420F 2 +#define FMT_422 1 +#define FMT_422F 3 +#define FMT_444 4 + +#define FMT_RGB24 2 +#define FMT_RGB32 1 + +enum +{ + VJ_CMD_PORT=0, + VJ_STA_PORT=1, + VJ_CMD_MCAST=3, + VJ_CMD_MCAST_IN=4, + VJ_MSG_PORT=5, + VJ_CMD_OSC=2, +}; + +typedef struct VJFrame_t +{ + int stride[4]; + uint8_t *data[4]; + int uv_len; + int len; + int uv_width; + int uv_height; + int shift_v; + int shift_h; + int format; + int width; + int height; + int ssm; + int stand; //ccir/jpeg + float fps; + double timecode; +} VJFrame __attribute__((aligned(16))); + +typedef struct VJFrameInfo_t +{ + int width; + int height; + float fps; + int64_t timecode; + uint8_t inverse; +} VJFrameInfo __attribute__((aligned(16))); + +typedef struct VJRectangle_t +{ + int top; + int bottom; + int left; + int right; +} VJRectangle; +#endif diff --git a/veejay-current/veejay-core/veejaycore/veejaycore.h b/veejay-current/veejay-core/veejaycore/veejaycore.h new file mode 100644 index 00000000..34a7e0e4 --- /dev/null +++ b/veejay-current/veejay-core/veejaycore/veejaycore.h @@ -0,0 +1,5 @@ +#ifndef VEEJAYCORE_H +#define VEEJAYCORE_H +#include +#include +#endif diff --git a/veejay-current/veejay-server/veejay/vims.h b/veejay-current/veejay-core/veejaycore/vims.h similarity index 97% rename from veejay-current/veejay-server/veejay/vims.h rename to veejay-current/veejay-core/veejaycore/vims.h index e67d90ca..7bbc4dc7 100644 --- a/veejay-current/veejay-server/veejay/vims.h +++ b/veejay-current/veejay-core/veejaycore/vims.h @@ -331,34 +331,12 @@ enum { #define XMLTAG_BUNDLE_FILE "ACTIONFILE" #define XMLTAG_EVENT_AS_KEY "BUNDLE" #define SOCKETFRAMELEN (1024*4096) -#define FMT_420 0 -#define FMT_420F 2 -#define FMT_422 1 -#define FMT_422F 3 -#define FMT_444 4 #define VEEJAY_PORT_CMD 0 #define VEEJAY_PORT_STA 1 #define VEEJAY_PORT_DAT 3 #define VEEJAY_PORT_MAT 2 #define VEEJAY_PORT_OSC 6 -#define FMT_RGB24 2 -#define FMT_RGB32 1 - #define MAX_EDIT_LIST_FILES 4096 -#define V_STATUS 1 -#define V_CMD 0 - -enum -{ - VJ_CMD_PORT=0, - VJ_STA_PORT=1, - VJ_CMD_MCAST=3, - VJ_CMD_MCAST_IN=4, - VJ_MSG_PORT=5, - VJ_CMD_OSC=2, -}; - - #endif diff --git a/veejay-current/veejay-server/veejay/vj-task.c b/veejay-current/veejay-core/veejaycore/vj-task.c similarity index 98% rename from veejay-current/veejay-server/veejay/vj-task.c rename to veejay-current/veejay-core/veejaycore/vj-task.c index 0713fd86..d7a2b8c7 100644 --- a/veejay-current/veejay-server/veejay/vj-task.c +++ b/veejay-current/veejay-core/veejaycore/vj-task.c @@ -42,17 +42,16 @@ #include #include #include -#include -#include -#include -#include +#include +//#include +//#include +//#include #include #include -#include +//#include #include -#include -#include -#include +#include +#include //@ job description static vj_task_arg_t *vj_task_args[MAX_WORKERS]; diff --git a/veejay-current/veejay-server/veejay/vj-task.h b/veejay-current/veejay-core/veejaycore/vj-task.h similarity index 100% rename from veejay-current/veejay-server/veejay/vj-task.h rename to veejay-current/veejay-core/veejaycore/vj-task.h diff --git a/veejay-current/veejay-server/AUTHORS b/veejay-current/veejay-server/AUTHORS index 19fe4174..baf639e3 100644 --- a/veejay-current/veejay-server/AUTHORS +++ b/veejay-current/veejay-server/AUTHORS @@ -19,7 +19,7 @@ veejay contributors: Toni (from Germany) Thomas Reinhold Maciek Szczesniak - + Jerome Blanchi authors: ====================== diff --git a/veejay-current/veejay-server/Makefile.am b/veejay-current/veejay-server/Makefile.am index 9364b9fa..3d99bdf5 100644 --- a/veejay-current/veejay-server/Makefile.am +++ b/veejay-current/veejay-server/Makefile.am @@ -1,8 +1,8 @@ # Process with automake to produce Makefile.in SUBDIRS = thirdparty -SUBDIRS += libvjmsg libvjmem libvjxml libqrwrap -SUBDIRS += libvevo libvje libplugger libsample libvjnet libsubsample libyuv libel libstream libsamplerec +SUBDIRS += libvjxml libqrwrap +SUBDIRS += libvje libplugger libsample libsubsample libel libstream libsamplerec SUBDIRS += veejay SUBDIRS += livido-plugins SUBDIRS += man diff --git a/veejay-current/veejay-server/README b/veejay-current/veejay-server/README index bdcdba66..4a7417bf 100644 --- a/veejay-current/veejay-server/README +++ b/veejay-current/veejay-server/README @@ -33,7 +33,7 @@ While playing, you can record the resulting video directly to disk (video sampli ====== quick install: order of packages: - veejay-server, veejay-client, veejay-utils, plugin-packs + veejay-core, veejay-server, veejay-client, veejay-utils, plugin-packs for each package: ./autogen.sh diff --git a/veejay-current/veejay-server/configure.ac b/veejay-current/veejay-server/configure.ac index 13e2b53e..daed4460 100644 --- a/veejay-current/veejay-server/configure.ac +++ b/veejay-current/veejay-server/configure.ac @@ -49,10 +49,6 @@ AC_ARG_ENABLE([sanitizer], AC_HELP_STRING([--enable-sanitizer], [Enable AddressSanitizer])) -AC_ARG_ENABLE([portleak], - AC_HELP_STRING([--enable-portleak], - [Compile in vevo port validation (requires --enable-strict)])) - AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug], [Compile in debugging information])) @@ -244,13 +240,6 @@ if test "x$enable_sanitizer" = "xyes" ; then else AC_MSG_RESULT([no]) fi -AC_MSG_CHECKING(whether to compile in vevo port tracking) -if test "x$enable_portleak" = "xyes"; then - debugCFLAGS="$debugCFLAGS -DVEVO_TRACKPORTS" - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi dnl ******************************************************************** dnl Test for MMX support if an IA32 platform. If on a PPC then look for @@ -548,16 +537,6 @@ then have_asm_avx=true fi -dnl ac_cv_flag_avx=yes -dnl AC_MSG_CHECKING([for AVX assembler]) -dnl AC_COMPILE_IFELSE( -dnl [AC_LANG_PROGRAM([[]], -dnl [[asm("vmovaps %ymm1,%ymm0");]])], -dnl [AC_DEFINE(HAVE_ASM_AVX,1,[define if compiler supports avx inline assembler]) -dnl AC_MSG_RESULT(yes) -dnl ac_cv_flag_avx=no -dnl ],[AC_MSG_RESULT(no)]) - fi if test x$have_ppccpu = xtrue @@ -607,11 +586,6 @@ EOF fi fi -have_mjpegtools=false -AC_SUBST(MJPEGTOOLS_CFLAGS) -AC_SUBST(MJPGETOOLS_LIBS) - -PKG_CHECK_MODULES(LIBPNG, [libpng], have_libpng=true,have_libpng=false) PKG_CHECK_MODULES(LIBQRENCODE,[libqrencode >= 3.4.2], have_qrencode=true,have_qrencode=false) if test x$have_qrencode = xfalse; then @@ -631,8 +605,6 @@ AC_SUBST(GLIB_LIBS) AC_SUBST(LIBQRENCODE_LIBS) AC_SUBST(LIBQRENCODE_CFLAGS) -AC_SUBST(LIBPNG_LIBS) -AC_SUBST(LIBPNG_CFLAGS) AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED,, [Defined if building against uninstalled FFmpeg source]) @@ -952,14 +924,6 @@ if test x$with_xml2 != xno; then AC_DEFINE(HAVE_XML2,1,[with XML]) ], [ have_xml2=false ]) - -dnl AM_PATH_XML2(2.5.4, [ -dnl have_xml2=true -dnl AC_DEFINE(HAVE_XML2,,[Compiling with XML2])],,) -dnl -dnl if test x$have_xml2 = xfalse ; then -dnl AC_MSG_WARN([cannot find The XML C library for gnome]) -dnl fi fi if test x$have_xml2 != xtrue ; then @@ -1030,6 +994,19 @@ if test x$have_unwind = xtrue ; then AC_DEFINE(HAVE_LIBUNWIND,1,[Define if you have libunwind installed]) fi +have_veejaycore=false +PKG_CHECK_MODULES( VEEJAYCORE, [veejaycore >= 1.5.63 ], + [ AC_SUBST(VEEJAYCORE_CFLAGS) + AC_SUBST(VEEJAYCORE_LIBS) + have_veejaycore=true + AC_DEFINE(HAVE_VEEJAYCORE,1,[Veejay 1.5.x installed]) + ], + [have_veejaycore=false]) + +if test x$have_veejaycore != xtrue ; then + AC_MSG_ERROR([Cannot find libveejaycore 1.5.63 or later]) +fi + dnl ********************************************************************** dnl All the conditional stuff for the Makefiles AM_CONDITIONAL(HAVE_ASM_MMX, test x$have_asm_mmx = xtrue) @@ -1057,8 +1034,6 @@ AM_CONDITIONAL(HAVE_DL_DLOPEN, test x$have_dl_dlopen = xtrue) AM_CONDITIONAL(HAVE_JPEG,test x$have_jpeg = xtrue) AM_CONDITIONAL(HAVE_LIBLO,test x$have_liblo = xtrue) AM_CONDITIONAL(HAVE_FREETYPE2, test x$have_freetype2 = xtrue) -AM_CONDITIONAL(HAVE_MJPEGTOOLS, test x$have_mjpegtools = xtrue ) -AM_CONDITIONAL(HAVE_ARM, test x$have_arm = xtrue ) dnl ********************************************************************* dnl Check for what warnings we want gcc to use and adjust the CFLAGS dnl as needed. This only works for GCC. @@ -1147,30 +1122,17 @@ dnl AC_CONFIG_FILES([Makefile]) -if test "$have_mjpegtools" = "false" ; then - AC_CONFIG_FILES([thirdparty/mjpegtools/Makefile]) -fi - AC_CONFIG_FILES([ thirdparty/Makefile -thirdparty/fastarm/Makefile -thirdparty/aclib/Makefile thirdparty/bio2jack/Makefile -thirdparty/libhash/Makefile -thirdparty/liblzo/Makefile thirdparty/libOSC/Makefile thirdparty/libresample/Makefile libvjxml/Makefile -libvjmsg/Makefile -libvevo/Makefile -libvjmem/Makefile libvje/Makefile libplugger/Makefile libsample/Makefile -libvjnet/Makefile libqrwrap/Makefile libsubsample/Makefile -libyuv/Makefile libel/Makefile libstream/Makefile libsamplerec/Makefile @@ -1229,6 +1191,7 @@ AC_MSG_NOTICE([ Good luck! You can be the first! ]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Required dependencies:]) +AC_MSG_NOTICE([ - Veejay Core : ${have_veejaycore}]) AC_MSG_NOTICE([ - POSIX Threads (pthread) : ${have_pthread}]) AC_MSG_NOTICE([ - FFmpeg/AV AVFormat : ${have_avformat} ]) AC_MSG_NOTICE([ - FFmpeg/AV AVCodec : ${have_avcodec} ]) @@ -1249,10 +1212,6 @@ AC_MSG_NOTICE([ - XML c library for Gnome : ${have_xml2}]) AC_MSG_NOTICE([ - JPEG support : ${have_jpeg} ]) AC_MSG_NOTICE([ - GDK Pixbuf support : ${have_pixbuf}]) -if test "$have_mjpegtools" = "true"; then - AC_MSG_NOTICE([ - Mjpegtools support : ${have_mjpegtools}]) -fi - AC_MSG_NOTICE([ Optional dependencies]) AC_MSG_NOTICE([ - DirectFB support : ${have_directfb}]) AC_MSG_NOTICE([ - libDV (digital video) support : ${have_libdv} ]) diff --git a/veejay-current/veejay-server/libel/Makefile.am b/veejay-current/veejay-server/libel/Makefile.am index 0fb26eca..b9d42192 100644 --- a/veejay-current/veejay-server/libel/Makefile.am +++ b/veejay-current/veejay-server/libel/Makefile.am @@ -5,21 +5,11 @@ AM_CFLAGS = $(OP_CFLAGS) MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ - -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/vjmem \ - -I$(top_srcdir)/vjmsg + -I$(top_srcdir)/thirdparty - -if HAVE_MJPEGTOOLS -AM_CPPFLAGS += -else -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif - -AM_CPPFLAGS += $(FFMPEG_CFLAGS) $(PIXBUF_CFLAGS) $(LIBQUICKTIME_CFLAGS) $(MJPEGTOOLS_CFLAGS) +AM_CPPFLAGS += $(FFMPEG_CFLAGS) $(PIXBUF_CFLAGS) $(LIBQUICKTIME_CFLAGS) VJEL_LIB_FILE = libel.la noinst_LTLIBRARIES = $(VJEL_LIB_FILE) -libel_la_SOURCES = vj-mmap.c elcache.c avilib.c lav_io.c vj-dv.c rawdv.c pixbuf.c vj-avcodec.c avhelper.c vj-el.c +libel_la_SOURCES = vj-mmap.c elcache.c avilib.c lav_io.c vj-dv.c rawdv.c pixbuf.c vj-avcodec.c vj-el.c -pkginclude_HEADERS=avcommon.h diff --git a/veejay-current/veejay-server/libel/avhelper.c b/veejay-current/veejay-server/libel/avhelper.c index 4562d58c..38d52892 100644 --- a/veejay-current/veejay-server/libel/avhelper.c +++ b/veejay-current/veejay-server/libel/avhelper.c @@ -24,10 +24,10 @@ #include #include #include -#include -#include +#include +#include #include -#include +#include #include #include #include @@ -35,7 +35,7 @@ #include #include #include -#include +#include static struct { @@ -119,7 +119,7 @@ typedef struct { int codec_id; } fourcc_node; -//from libvevo/vevo.c +//from veejaycore/vevo.c static inline int hash_key_code( const char *str ) { int hash = 5381; diff --git a/veejay-current/veejay-server/libel/avilib.c b/veejay-current/veejay-server/libel/avilib.c index 8c586b1b..20b5938a 100644 --- a/veejay-current/veejay-server/libel/avilib.c +++ b/veejay-current/veejay-server/libel/avilib.c @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include "avilib.h" #define RUP8(num)(((num)+8)&~8) diff --git a/veejay-current/veejay-server/libel/elcache.c b/veejay-current/veejay-server/libel/elcache.c index f6185c38..5bfe66e5 100644 --- a/veejay-current/veejay-server/libel/elcache.c +++ b/veejay-current/veejay-server/libel/elcache.c @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include #include typedef struct diff --git a/veejay-current/veejay-server/libel/lav_io.c b/veejay-current/veejay-server/libel/lav_io.c index 096912c5..78650f93 100644 --- a/veejay-current/veejay-server/libel/lav_io.c +++ b/veejay-current/veejay-server/libel/lav_io.c @@ -30,9 +30,11 @@ #include #include #include +#include +#include #include //#include -#include +#include #ifdef USE_GDK_PIXBUF #include #include @@ -44,9 +46,9 @@ #include #include #endif -#include -#include -#include +#include +#include +#include #include #include diff --git a/veejay-current/veejay-server/libel/lav_io.h b/veejay-current/veejay-server/libel/lav_io.h index efc2de37..3881969f 100644 --- a/veejay-current/veejay-server/libel/lav_io.h +++ b/veejay-current/veejay-server/libel/lav_io.h @@ -25,11 +25,9 @@ #endif // play with mlt here, avformat producer/several consumers (we can write to) // for normalized output (720x576/480) , dv1394 capture and playback -#ifdef HAVE_MJPEGTOOLS -#include -#else -#include -#endif +#include +#include +#include #define LAV_INTER_UNKNOWN Y4M_UNKNOWN #define LAV_NOT_INTERLACED Y4M_ILACE_NONE diff --git a/veejay-current/veejay-server/libel/pixbuf.c b/veejay-current/veejay-server/libel/pixbuf.c index f50bab64..5d77013a 100644 --- a/veejay-current/veejay-server/libel/pixbuf.c +++ b/veejay-current/veejay-server/libel/pixbuf.c @@ -21,19 +21,20 @@ #include #include #include -#include -#include +#include +#include +#include #ifdef USE_GDK_PIXBUF #include #endif #include #include #include -#include +#include #include #include #include -#include +#include #include #define RUP8(num)(((num)+8)&~8) diff --git a/veejay-current/veejay-server/libel/pixbuf.h b/veejay-current/veejay-server/libel/pixbuf.h index 493b8be5..1f0e4f2e 100644 --- a/veejay-current/veejay-server/libel/pixbuf.h +++ b/veejay-current/veejay-server/libel/pixbuf.h @@ -19,7 +19,6 @@ #ifndef VJ_PIXBUF_H #define VJ_PIXBUF_H #include -#include typedef struct { int w; diff --git a/veejay-current/veejay-server/libel/rawdv.c b/veejay-current/veejay-server/libel/rawdv.c index 2003ab01..c72012fa 100644 --- a/veejay-current/veejay-server/libel/rawdv.c +++ b/veejay-current/veejay-server/libel/rawdv.c @@ -24,8 +24,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libel/vj-avcodec.c b/veejay-current/veejay-server/libel/vj-avcodec.c index d5ba3ba7..8f49713b 100644 --- a/veejay-current/veejay-server/libel/vj-avcodec.c +++ b/veejay-current/veejay-server/libel/vj-avcodec.c @@ -18,14 +18,16 @@ */ #include #include +#include +#include #include #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #ifdef SUPPORT_READ_DV2 #define __FALLBACK_LIBDV diff --git a/veejay-current/veejay-server/libel/vj-dv.c b/veejay-current/veejay-server/libel/vj-dv.c index d468ba25..960a38ed 100644 --- a/veejay-current/veejay-server/libel/vj-dv.c +++ b/veejay-current/veejay-server/libel/vj-dv.c @@ -19,8 +19,9 @@ #include #include #include -#include -#include +#include +#include +#include #ifdef SUPPORT_READ_DV2 #include #include @@ -28,7 +29,7 @@ #include #include #include -#include +#include #include #define NTSC_W 720 diff --git a/veejay-current/veejay-server/libel/vj-el.c b/veejay-current/veejay-server/libel/vj-el.c index 70d331b1..7603699f 100644 --- a/veejay-current/veejay-server/libel/vj-el.c +++ b/veejay-current/veejay-server/libel/vj-el.c @@ -28,8 +28,10 @@ #include #include #include -#include -#include +#include +#include +#include +#include #include #include #include @@ -38,17 +40,17 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libel/vj-el.h b/veejay-current/veejay-server/libel/vj-el.h index be4d4a7b..24ef9112 100644 --- a/veejay-current/veejay-server/libel/vj-el.h +++ b/veejay-current/veejay-server/libel/vj-el.h @@ -21,7 +21,7 @@ #include #include #include -#include +#include #define N_EL_FRAME(x) ( (x)&0xfffffffffffffLLU ) #define N_EL_FILE(x) (uint32_t) ( ((x)>>52)&0xfffU ) /* ((file)&0xfff<<52) */ diff --git a/veejay-current/veejay-server/libel/vj-mmap.c b/veejay-current/veejay-server/libel/vj-mmap.c index 6ddffe93..1f7d595a 100644 --- a/veejay-current/veejay-server/libel/vj-mmap.c +++ b/veejay-current/veejay-server/libel/vj-mmap.c @@ -25,8 +25,8 @@ #include #include #include -#include -#include +#include +#include #define PADDED(a,m) ( a > 0 ? (a / m->page_size) * m->page_size : 0) diff --git a/veejay-current/veejay-server/libplugger/Makefile.am b/veejay-current/veejay-server/libplugger/Makefile.am index 5917c2fb..f99fe5c5 100644 --- a/veejay-current/veejay-server/libplugger/Makefile.am +++ b/veejay-current/veejay-server/libplugger/Makefile.am @@ -1,7 +1,6 @@ MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir)/libplugger -I$(includedir) \ - -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/libvevo + -I$(top_srcdir)/thirdparty AM_CPPFLAGS += ${FFMPEG_CFLAGS} diff --git a/veejay-current/veejay-server/libplugger/defaults.c b/veejay-current/veejay-server/libplugger/defaults.c index ed48c93f..2fb4a170 100644 --- a/veejay-current/veejay-server/libplugger/defaults.c +++ b/veejay-current/veejay-server/libplugger/defaults.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "defaults.h" #ifndef PATH_MAX diff --git a/veejay-current/veejay-server/libplugger/freeframe-loader.c b/veejay-current/veejay-server/libplugger/freeframe-loader.c index 12b4ea6c..9f191930 100644 --- a/veejay-current/veejay-server/libplugger/freeframe-loader.c +++ b/veejay-current/veejay-server/libplugger/freeframe-loader.c @@ -24,14 +24,15 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include -#include +#include #include #include #define LINUX 1 diff --git a/veejay-current/veejay-server/libplugger/frei0r-loader.c b/veejay-current/veejay-server/libplugger/frei0r-loader.c index 1c248a33..2e711113 100644 --- a/veejay-current/veejay-server/libplugger/frei0r-loader.c +++ b/veejay-current/veejay-server/libplugger/frei0r-loader.c @@ -26,13 +26,14 @@ #include #include #include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libplugger/livido-loader.c b/veejay-current/veejay-server/libplugger/livido-loader.c index afa50e20..e746c7fb 100644 --- a/veejay-current/veejay-server/libplugger/livido-loader.c +++ b/veejay-current/veejay-server/libplugger/livido-loader.c @@ -30,24 +30,25 @@ #include #include #include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include #include #include #include -#include +#include #include #include #include #include #include #include -#include +#include #define LIVIDO_COPY 1 #define IS_RGB_PALETTE( p ) ( p < 512 ? 1 : 0 ) diff --git a/veejay-current/veejay-server/libplugger/oscsend.c b/veejay-current/veejay-server/libplugger/oscsend.c index b4420544..6621f6ec 100644 --- a/veejay-current/veejay-server/libplugger/oscsend.c +++ b/veejay-current/veejay-server/libplugger/oscsend.c @@ -22,9 +22,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include //@ client side implementation diff --git a/veejay-current/veejay-server/libplugger/plugload.c b/veejay-current/veejay-server/libplugger/plugload.c index 1c1a762b..f31bd496 100644 --- a/veejay-current/veejay-server/libplugger/plugload.c +++ b/veejay-current/veejay-server/libplugger/plugload.c @@ -36,18 +36,19 @@ #include #include #include -#include +#include +#include #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include #include #include #include -#include +#include #include #ifndef SAMPLE_MAX_PARAMETERS #define SAMPLE_MAX_PARAMETERS 32 //sampleadm.h diff --git a/veejay-current/veejay-server/libplugger/utility.c b/veejay-current/veejay-server/libplugger/utility.c index b1cc4de6..3af303f6 100644 --- a/veejay-current/veejay-server/libplugger/utility.c +++ b/veejay-current/veejay-server/libplugger/utility.c @@ -23,15 +23,16 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libqrwrap/qrwrap.c b/veejay-current/veejay-server/libqrwrap/qrwrap.c index 8dab2a7d..7ed29e8f 100644 --- a/veejay-current/veejay-server/libqrwrap/qrwrap.c +++ b/veejay-current/veejay-server/libqrwrap/qrwrap.c @@ -45,8 +45,9 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libsample/Makefile.am b/veejay-current/veejay-server/libsample/Makefile.am index 87f4fa53..e5160949 100644 --- a/veejay-current/veejay-server/libsample/Makefile.am +++ b/veejay-current/veejay-server/libsample/Makefile.am @@ -2,16 +2,9 @@ AM_CFLAGS = $(OP_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ - -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/vjmem \ - -I$(top_srcdir)/vjmsg -if HAVE_MJPEGTOOLS -AM_CPPFLAGS += -else -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif + -I$(top_srcdir)/thirdparty -AM_CPPFLAGS += $(FFMPEG_CFLAGS) $(XML2_CFLAGS) $(MJPEGTOOLS_CFLAGS) +AM_CPPFLAGS += $(FFMPEG_CFLAGS) $(XML2_CFLAGS) SAMPLE_LIB_FILE = libsample.la noinst_LTLIBRARIES = $(SAMPLE_LIB_FILE) diff --git a/veejay-current/veejay-server/libsample/sampleadm.c b/veejay-current/veejay-server/libsample/sampleadm.c index d5a2fc63..1bf5b7e2 100644 --- a/veejay-current/veejay-server/libsample/sampleadm.c +++ b/veejay-current/veejay-server/libsample/sampleadm.c @@ -36,14 +36,15 @@ #include #include #include -#include +#include +#include #include -#include +#include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libsample/sampleadm.h b/veejay-current/veejay-server/libsample/sampleadm.h index 2af209d7..23bb71f4 100644 --- a/veejay-current/veejay-server/libsample/sampleadm.h +++ b/veejay-current/veejay-server/libsample/sampleadm.h @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #ifdef HAVE_XML2 #include diff --git a/veejay-current/veejay-server/libsamplerec/Makefile.am b/veejay-current/veejay-server/libsamplerec/Makefile.am index 7e732ba2..0be6464c 100644 --- a/veejay-current/veejay-server/libsamplerec/Makefile.am +++ b/veejay-current/veejay-server/libsamplerec/Makefile.am @@ -3,16 +3,9 @@ AM_CFLAGS = $(OP_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/vjmem \ - -I$(top_srcdir)/vjmsg \ -I$(top_srcdir)/libel -if HAVE_MJPEGTOOLS -AM_CPPFLAGS += -else -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif -AM_CPPFLAGS += $(XML2_CFLAGS) $(FFMPEG_CFLAGS) $(MJPEGTOOLS_CFLAGS) +AM_CPPFLAGS += $(XML2_CFLAGS) $(FFMPEG_CFLAGS) SAMPLEREC_LIB_FILE = libsamplerec.la noinst_LTLIBRARIES = $(SAMPLEREC_LIB_FILE) diff --git a/veejay-current/veejay-server/libsamplerec/samplerecord.c b/veejay-current/veejay-server/libsamplerec/samplerecord.c index a5ab0292..524dd3c9 100644 --- a/veejay-current/veejay-server/libsamplerec/samplerecord.c +++ b/veejay-current/veejay-server/libsamplerec/samplerecord.c @@ -18,15 +18,17 @@ */ #include #include +#include +#include #include -#include +#include #include #include #include #include #include #include -#include +#include void sample_reset_encoder(int sample_id); int sample_record_init(int len) diff --git a/veejay-current/veejay-server/libstream/Makefile.am b/veejay-current/veejay-server/libstream/Makefile.am index 507fe58f..10277ec3 100644 --- a/veejay-current/veejay-server/libstream/Makefile.am +++ b/veejay-current/veejay-server/libstream/Makefile.am @@ -2,22 +2,11 @@ AM_CFLAGS=$(OP_CFLAGS) MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ - -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/vjmem \ - -I$(top_srcdir)/vjmsg \ - -I$(top_srcdir)/libvjnet + -I$(top_srcdir)/thirdparty - -if HAVE_MJPEGTOOLS -AM_CPPFLAGS += -else -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif - -AM_CPPFLAGS += $(XML2_CFLAGS) $(FFMPEG_CFLAGS) $(PTHREAD_CFLAGS) $(MJPEGTOOLS_CFLAGS) +AM_CPPFLAGS += $(XML2_CFLAGS) $(FFMPEG_CFLAGS) $(PTHREAD_CFLAGS) STREAM_LIB_FILE = libstream.la noinst_LTLIBRARIES = $(STREAM_LIB_FILE) libstream_la_SOURCES = vj-yuv4mpeg.c vj-net.c vj-avformat.c vj-dv1394.c vj-vloopback.c vj-tag.c v4l2utils.c -pkginclude_HEADERS = vj-net.h EXTRA_DIST = dv1394.h v4lutils.h v4l2utils.h vj-dv1394.h vj-tag.h vj-vloopback.h v4lvideo.h vj-net.h vj-yuv4mpeg.h diff --git a/veejay-current/veejay-server/libstream/v4l2utils.c b/veejay-current/veejay-server/libstream/v4l2utils.c index 486da7d8..4f5d0f6f 100644 --- a/veejay-current/veejay-server/libstream/v4l2utils.c +++ b/veejay-current/veejay-server/libstream/v4l2utils.c @@ -65,14 +65,15 @@ #include #include #include +#include #include #include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libstream/vj-avformat.c b/veejay-current/veejay-server/libstream/vj-avformat.c index 44fb62dd..f91f538f 100644 --- a/veejay-current/veejay-server/libstream/vj-avformat.c +++ b/veejay-current/veejay-server/libstream/vj-avformat.c @@ -22,16 +22,17 @@ #include #include #include +#include #include #include #include -#include -#include +#include +#include #include -#include +#include #include #include -#include +#include #include #include diff --git a/veejay-current/veejay-server/libstream/vj-dv1394.c b/veejay-current/veejay-server/libstream/vj-dv1394.c index 018f5986..50a35612 100644 --- a/veejay-current/veejay-server/libstream/vj-dv1394.c +++ b/veejay-current/veejay-server/libstream/vj-dv1394.c @@ -23,7 +23,8 @@ #include #include #include -#include +#include +#include #ifdef SUPPORT_READ_DV2 #include #include @@ -31,7 +32,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libstream/vj-net.c b/veejay-current/veejay-server/libstream/vj-net.c index 79c6f716..feb77bd0 100644 --- a/veejay-current/veejay-server/libstream/vj-net.c +++ b/veejay-current/veejay-server/libstream/vj-net.c @@ -21,17 +21,17 @@ #include #include #include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include #include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libstream/vj-tag.c b/veejay-current/veejay-server/libstream/vj-tag.c index 2155ce25..265e7959 100644 --- a/veejay-current/veejay-server/libstream/vj-tag.c +++ b/veejay-current/veejay-server/libstream/vj-tag.c @@ -18,8 +18,10 @@ */ #include #include +#include +#include #include -#include +#include #include #include #include @@ -34,13 +36,13 @@ #include #endif #include -#include +#include #include -#include -#include +#include +#include #include #include -#include +#include #include #include #include @@ -49,7 +51,7 @@ #ifdef HAVE_V4L2 #include #endif -#include +#include #include #ifdef HAVE_FREETYPE #include diff --git a/veejay-current/veejay-server/libstream/vj-tag.h b/veejay-current/veejay-server/libstream/vj-tag.h index 4681ed22..f7418c07 100644 --- a/veejay-current/veejay-server/libstream/vj-tag.h +++ b/veejay-current/veejay-server/libstream/vj-tag.h @@ -40,7 +40,7 @@ #include #include #include -#include +#include #include #ifdef USE_GDK_PIXBUF typedef struct diff --git a/veejay-current/veejay-server/libstream/vj-vloopback.c b/veejay-current/veejay-server/libstream/vj-vloopback.c index e6fa9439..3aa3b508 100644 --- a/veejay-current/veejay-server/libstream/vj-vloopback.c +++ b/veejay-current/veejay-server/libstream/vj-vloopback.c @@ -29,15 +29,16 @@ #include #include #include +#include #include -#include +#include #ifdef HAVE_V4L2 #include #include #endif -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/libstream/vj-yuv4mpeg.c b/veejay-current/veejay-server/libstream/vj-yuv4mpeg.c index 1e6abe6c..d186b7b4 100644 --- a/veejay-current/veejay-server/libstream/vj-yuv4mpeg.c +++ b/veejay-current/veejay-server/libstream/vj-yuv4mpeg.c @@ -21,17 +21,21 @@ #include #include #include +#include #include #include #include -#include +#include +#include #include +#include +#include #include #include -#include +#include #include #include -#include +#include static int lock(vj_yuv *t) { diff --git a/veejay-current/veejay-server/libstream/vj-yuv4mpeg.h b/veejay-current/veejay-server/libstream/vj-yuv4mpeg.h index 70b87924..eb653c5e 100644 --- a/veejay-current/veejay-server/libstream/vj-yuv4mpeg.h +++ b/veejay-current/veejay-server/libstream/vj-yuv4mpeg.h @@ -18,7 +18,7 @@ */ #ifndef VJ_YUV4MPEG_H #define VJ_YUV4MPEG_H -#include +#include typedef struct { pthread_mutex_t mutex; diff --git a/veejay-current/veejay-server/libsubsample/Makefile.am b/veejay-current/veejay-server/libsubsample/Makefile.am index 0d1d6ec1..1818be68 100644 --- a/veejay-current/veejay-server/libsubsample/Makefile.am +++ b/veejay-current/veejay-server/libsubsample/Makefile.am @@ -3,13 +3,8 @@ AM_CFLAGS=$(SUBSAMPLE_CFLAGS) MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ - -I$(top_srcdir)/thirdparty \ - -I$(top_srcdir)/vjmem \ - -I$(top_srcdir)/vjmsg \ - -I$(top_srcdir)/libyuv + -I$(top_srcdir)/thirdparty SUBSAMPLE_LIB_FILE = libsubsample.la -pkginclude_HEADERS=subsample.h -EXTRA_DIST = subsample.h noinst_LTLIBRARIES = $(SUBSAMPLE_LIB_FILE) libsubsample_la_SOURCES = subsample.c diff --git a/veejay-current/veejay-server/libsubsample/subsample.c b/veejay-current/veejay-server/libsubsample/subsample.c index 6f6224f5..49a31310 100644 --- a/veejay-current/veejay-server/libsubsample/subsample.c +++ b/veejay-current/veejay-server/libsubsample/subsample.c @@ -23,9 +23,10 @@ */ #include #include +#include #ifdef HAVE_ASM_MMX -#include -#include +#include +#include #include "subsample-mmx.h" #endif @@ -35,11 +36,11 @@ #include #include #include -#include -#include +#include +#include #include -#include -#include +#include +#include const char *ssm_id[SSM_COUNT] = { "unknown", diff --git a/veejay-current/veejay-server/libvje/Makefile.am b/veejay-current/veejay-server/libvje/Makefile.am index 37d81bc4..7bbc9a2f 100644 --- a/veejay-current/veejay-server/libvje/Makefile.am +++ b/veejay-current/veejay-server/libvje/Makefile.am @@ -10,11 +10,6 @@ AM_CPPFLAGS += $(FFMPEG_CFLAGS) $(GLIB_CFLAGS) AM_CFLAGS = $(VJE_CFLAGS) -pkginclude_HEADERS=vje.h - -EXTRA_DIST = vje.h -EXTRA_DIST += specs/FreeFrame.h specs/frei0r.h - VJE_LIB_FILE = libvje.la noinst_LTLIBRARIES = $(VJE_LIB_FILE) diff --git a/veejay-current/veejay-server/libvje/effects/alpha2img.c b/veejay-current/veejay-server/libvje/effects/alpha2img.c index 1dfb5c9a..38868ec8 100644 --- a/veejay-current/veejay-server/libvje/effects/alpha2img.c +++ b/veejay-current/veejay-server/libvje/effects/alpha2img.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alpha2img.h" vj_effect *alpha2img_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphablend.c b/veejay-current/veejay-server/libvje/effects/alphablend.c index cf843009..39a25f07 100644 --- a/veejay-current/veejay-server/libvje/effects/alphablend.c +++ b/veejay-current/veejay-server/libvje/effects/alphablend.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alphablend.h" vj_effect *alphablend_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphadampen.c b/veejay-current/veejay-server/libvje/effects/alphadampen.c index fca8ed7b..1c6070be 100644 --- a/veejay-current/veejay-server/libvje/effects/alphadampen.c +++ b/veejay-current/veejay-server/libvje/effects/alphadampen.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alphadampen.h" vj_effect *alphadampen_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphafill.c b/veejay-current/veejay-server/libvje/effects/alphafill.c index e9cb7b5c..ee677574 100644 --- a/veejay-current/veejay-server/libvje/effects/alphafill.c +++ b/veejay-current/veejay-server/libvje/effects/alphafill.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alphafill.h" vj_effect *alphafill_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphaflatten.c b/veejay-current/veejay-server/libvje/effects/alphaflatten.c index 9c235ea0..81caca0f 100644 --- a/veejay-current/veejay-server/libvje/effects/alphaflatten.c +++ b/veejay-current/veejay-server/libvje/effects/alphaflatten.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alphaflatten.h" vj_effect *alphaflatten_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphanegate.c b/veejay-current/veejay-server/libvje/effects/alphanegate.c index 2e68b564..9b8fee9a 100644 --- a/veejay-current/veejay-server/libvje/effects/alphanegate.c +++ b/veejay-current/veejay-server/libvje/effects/alphanegate.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "alphanegate.h" vj_effect *alphanegate_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphaselect.c b/veejay-current/veejay-server/libvje/effects/alphaselect.c index 462fd078..79a712ab 100644 --- a/veejay-current/veejay-server/libvje/effects/alphaselect.c +++ b/veejay-current/veejay-server/libvje/effects/alphaselect.c @@ -23,7 +23,7 @@ */ #include "common.h" -#include +#include #include "alphaselect.h" vj_effect *alphaselect_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphaselect2.c b/veejay-current/veejay-server/libvje/effects/alphaselect2.c index 19c79bda..96dbda0c 100644 --- a/veejay-current/veejay-server/libvje/effects/alphaselect2.c +++ b/veejay-current/veejay-server/libvje/effects/alphaselect2.c @@ -23,7 +23,7 @@ */ #include "common.h" -#include +#include #include "alphaselect2.h" vj_effect *alphaselect2_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/alphatransition.c b/veejay-current/veejay-server/libvje/effects/alphatransition.c index 4f022cb8..7f053511 100644 --- a/veejay-current/veejay-server/libvje/effects/alphatransition.c +++ b/veejay-current/veejay-server/libvje/effects/alphatransition.c @@ -19,8 +19,7 @@ */ #include "common.h" -#include -#include +#include #include "alphatransition.h" /* almost the same as masktransition.c, but adding threshold and direction parameters */ diff --git a/veejay-current/veejay-server/libvje/effects/autoeq.c b/veejay-current/veejay-server/libvje/effects/autoeq.c index 8877abe2..ff4830df 100644 --- a/veejay-current/veejay-server/libvje/effects/autoeq.c +++ b/veejay-current/veejay-server/libvje/effects/autoeq.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "autoeq.h" vj_effect *autoeq_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/average-blend.c b/veejay-current/veejay-server/libvje/effects/average-blend.c index 1c3a6a2e..e1d87a6f 100644 --- a/veejay-current/veejay-server/libvje/effects/average-blend.c +++ b/veejay-current/veejay-server/libvje/effects/average-blend.c @@ -19,8 +19,7 @@ */ #include "common.h" -#include -#include +#include #include "average-blend.h" extern void ac_average(const uint8_t *src1, const uint8_t *src2, uint8_t *dest, int bytes); diff --git a/veejay-current/veejay-server/libvje/effects/average.c b/veejay-current/veejay-server/libvje/effects/average.c index eb52f839..3664e973 100644 --- a/veejay-current/veejay-server/libvje/effects/average.c +++ b/veejay-current/veejay-server/libvje/effects/average.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "average.h" static double *running_sum[4] = { NULL, NULL, NULL, NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/balls.c b/veejay-current/veejay-server/libvje/effects/balls.c index e4dc81a1..b0c0fecd 100644 --- a/veejay-current/veejay-server/libvje/effects/balls.c +++ b/veejay-current/veejay-server/libvje/effects/balls.c @@ -59,7 +59,7 @@ #include #include #include -#include +#include #include "common.h" #include "blob.h" diff --git a/veejay-current/veejay-server/libvje/effects/baltantv.c b/veejay-current/veejay-server/libvje/effects/baltantv.c index e1a58193..c7472e06 100644 --- a/veejay-current/veejay-server/libvje/effects/baltantv.c +++ b/veejay-current/veejay-server/libvje/effects/baltantv.c @@ -24,7 +24,7 @@ */ #include "common.h" -#include +#include #include "baltantv.h" #define PLANES 32 diff --git a/veejay-current/veejay-server/libvje/effects/bathroom.c b/veejay-current/veejay-server/libvje/effects/bathroom.c index 3f850b47..c8caf9f8 100644 --- a/veejay-current/veejay-server/libvje/effects/bathroom.c +++ b/veejay-current/veejay-server/libvje/effects/bathroom.c @@ -25,7 +25,7 @@ */ #include "common.h" -#include +#include #include "bathroom.h" static uint8_t *bathroom_frame[4] = { NULL,NULL,NULL,NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/bgpush.c b/veejay-current/veejay-server/libvje/effects/bgpush.c index 0773c9bd..51ddbb78 100644 --- a/veejay-current/veejay-server/libvje/effects/bgpush.c +++ b/veejay-current/veejay-server/libvje/effects/bgpush.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "bgpush.h" diff --git a/veejay-current/veejay-server/libvje/effects/bgsubtract.c b/veejay-current/veejay-server/libvje/effects/bgsubtract.c index 7a25ff70..35bc2073 100644 --- a/veejay-current/veejay-server/libvje/effects/bgsubtract.c +++ b/veejay-current/veejay-server/libvje/effects/bgsubtract.c @@ -19,8 +19,8 @@ */ #include "common.h" -#include -#include +#include +#include #include #include "softblur.h" #include "bgsubtract.h" diff --git a/veejay-current/veejay-server/libvje/effects/bgsubtractgauss.c b/veejay-current/veejay-server/libvje/effects/bgsubtractgauss.c index 7b2b5886..95feb2f0 100644 --- a/veejay-current/veejay-server/libvje/effects/bgsubtractgauss.c +++ b/veejay-current/veejay-server/libvje/effects/bgsubtractgauss.c @@ -20,11 +20,12 @@ #include #include #include -#include +#include #include +#include #include -#include -#include +#include +#include #include #include "bgsubtractgauss.h" #include "common.h" diff --git a/veejay-current/veejay-server/libvje/effects/binaryoverlays.c b/veejay-current/veejay-server/libvje/effects/binaryoverlays.c index d48d51eb..9e280e47 100644 --- a/veejay-current/veejay-server/libvje/effects/binaryoverlays.c +++ b/veejay-current/veejay-server/libvje/effects/binaryoverlays.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "binaryoverlays.h" vj_effect *binaryoverlay_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/blob.c b/veejay-current/veejay-server/libvje/effects/blob.c index 8da5aad4..a53dbf67 100644 --- a/veejay-current/veejay-server/libvje/effects/blob.c +++ b/veejay-current/veejay-server/libvje/effects/blob.c @@ -49,7 +49,7 @@ */ #include "common.h" -#include +#include #include "blob.h" typedef struct diff --git a/veejay-current/veejay-server/libvje/effects/boids.c b/veejay-current/veejay-server/libvje/effects/boids.c index 4a741315..84bbc147 100644 --- a/veejay-current/veejay-server/libvje/effects/boids.c +++ b/veejay-current/veejay-server/libvje/effects/boids.c @@ -57,7 +57,7 @@ */ #include "common.h" -#include +#include #include "boids.h" typedef struct diff --git a/veejay-current/veejay-server/libvje/effects/borders.c b/veejay-current/veejay-server/libvje/effects/borders.c index 32b637f4..dd1f23fc 100644 --- a/veejay-current/veejay-server/libvje/effects/borders.c +++ b/veejay-current/veejay-server/libvje/effects/borders.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "borders.h" vj_effect *borders_init(int width,int height) diff --git a/veejay-current/veejay-server/libvje/effects/bwotsu.c b/veejay-current/veejay-server/libvje/effects/bwotsu.c index b03acb24..1e7d98f7 100644 --- a/veejay-current/veejay-server/libvje/effects/bwotsu.c +++ b/veejay-current/veejay-server/libvje/effects/bwotsu.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "bwotsu.h" vj_effect *bwotsu_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/bwselect.c b/veejay-current/veejay-server/libvje/effects/bwselect.c index 4ddc972d..0f20c219 100644 --- a/veejay-current/veejay-server/libvje/effects/bwselect.c +++ b/veejay-current/veejay-server/libvje/effects/bwselect.c @@ -20,7 +20,7 @@ */ #include "common.h" -#include +#include #include "bwselect.h" vj_effect *bwselect_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/cali.c b/veejay-current/veejay-server/libvje/effects/cali.c index 72361796..8337619a 100644 --- a/veejay-current/veejay-server/libvje/effects/cali.c +++ b/veejay-current/veejay-server/libvje/effects/cali.c @@ -18,9 +18,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include -#include -#include +#include +#include +#include #include "softblur.h" #include "cali.h" diff --git a/veejay-current/veejay-server/libvje/effects/cartonize.c b/veejay-current/veejay-server/libvje/effects/cartonize.c index ca36347c..be2cb523 100644 --- a/veejay-current/veejay-server/libvje/effects/cartonize.c +++ b/veejay-current/veejay-server/libvje/effects/cartonize.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "cartonize.h" vj_effect *cartonize_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/chameleon.c b/veejay-current/veejay-server/libvje/effects/chameleon.c index 0db0f4fa..9c1a37ef 100644 --- a/veejay-current/veejay-server/libvje/effects/chameleon.c +++ b/veejay-current/veejay-server/libvje/effects/chameleon.c @@ -24,8 +24,8 @@ */ #include "common.h" -#include -#include +#include +#include #include "softblur.h" #include "chameleon.h" diff --git a/veejay-current/veejay-server/libvje/effects/chameleonblend.c b/veejay-current/veejay-server/libvje/effects/chameleonblend.c index 89c73868..5e7ac333 100644 --- a/veejay-current/veejay-server/libvje/effects/chameleonblend.c +++ b/veejay-current/veejay-server/libvje/effects/chameleonblend.c @@ -24,7 +24,7 @@ */ #include "common.h" -#include +#include #include "softblur.h" #include "chameleonblend.h" diff --git a/veejay-current/veejay-server/libvje/effects/chromamagick.c b/veejay-current/veejay-server/libvje/effects/chromamagick.c index 03d930e1..1ceb6da1 100644 --- a/veejay-current/veejay-server/libvje/effects/chromamagick.c +++ b/veejay-current/veejay-server/libvje/effects/chromamagick.c @@ -24,7 +24,7 @@ of this effect */ #include "common.h" -#include +#include #include "chromamagick.h" vj_effect *chromamagick_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/chromamagickalpha.c b/veejay-current/veejay-server/libvje/effects/chromamagickalpha.c index 520f1e6e..bacab8f4 100644 --- a/veejay-current/veejay-server/libvje/effects/chromamagickalpha.c +++ b/veejay-current/veejay-server/libvje/effects/chromamagickalpha.c @@ -24,7 +24,7 @@ of this effect */ #include "common.h" -#include +#include #include "chromamagickalpha.h" // FIXME: mode 8 and 9 corrupt (green/purple cbcr) diff --git a/veejay-current/veejay-server/libvje/effects/chromapalette.c b/veejay-current/veejay-server/libvje/effects/chromapalette.c index 5134a36d..c47b1ca5 100644 --- a/veejay-current/veejay-server/libvje/effects/chromapalette.c +++ b/veejay-current/veejay-server/libvje/effects/chromapalette.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "chromapalette.h" vj_effect *chromapalette_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/chromascratcher.c b/veejay-current/veejay-server/libvje/effects/chromascratcher.c index 46745599..a3bfc4f2 100644 --- a/veejay-current/veejay-server/libvje/effects/chromascratcher.c +++ b/veejay-current/veejay-server/libvje/effects/chromascratcher.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "chromascratcher.h" #include "chromamagick.h" diff --git a/veejay-current/veejay-server/libvje/effects/chromium.c b/veejay-current/veejay-server/libvje/effects/chromium.c index 1b166b3b..0a0759eb 100644 --- a/veejay-current/veejay-server/libvje/effects/chromium.c +++ b/veejay-current/veejay-server/libvje/effects/chromium.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "chromium.h" vj_effect *chromium_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/colflash.c b/veejay-current/veejay-server/libvje/effects/colflash.c index cc72016a..9634245d 100644 --- a/veejay-current/veejay-server/libvje/effects/colflash.c +++ b/veejay-current/veejay-server/libvje/effects/colflash.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "colflash.h" // very simple color flashing fx diff --git a/veejay-current/veejay-server/libvje/effects/colmorphology.c b/veejay-current/veejay-server/libvje/effects/colmorphology.c index 3789ea11..a8d99513 100644 --- a/veejay-current/veejay-server/libvje/effects/colmorphology.c +++ b/veejay-current/veejay-server/libvje/effects/colmorphology.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "colmorphology.h" typedef uint8_t (*morph_func)(uint8_t *kernel, uint8_t mt[9] ); diff --git a/veejay-current/veejay-server/libvje/effects/color.c b/veejay-current/veejay-server/libvje/effects/color.c index 603ccc7a..1191a8cf 100644 --- a/veejay-current/veejay-server/libvje/effects/color.c +++ b/veejay-current/veejay-server/libvje/effects/color.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "color.h" vj_effect *color_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/coloradjust.c b/veejay-current/veejay-server/libvje/effects/coloradjust.c index a994887f..719d582f 100644 --- a/veejay-current/veejay-server/libvje/effects/coloradjust.c +++ b/veejay-current/veejay-server/libvje/effects/coloradjust.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "coloradjust.h" vj_effect *coloradjust_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/colorhis.c b/veejay-current/veejay-server/libvje/effects/colorhis.c index 7358ff57..02c1d6c1 100644 --- a/veejay-current/veejay-server/libvje/effects/colorhis.c +++ b/veejay-current/veejay-server/libvje/effects/colorhis.c @@ -19,10 +19,9 @@ */ #include "common.h" -#include +#include #include -#include -#include +#include #include "colorhis.h" vj_effect *colorhis_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/colormap.c b/veejay-current/veejay-server/libvje/effects/colormap.c index fdca2d4f..391bf833 100644 --- a/veejay-current/veejay-server/libvje/effects/colormap.c +++ b/veejay-current/veejay-server/libvje/effects/colormap.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "colormap.h" vj_effect *colormap_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/colorshift.c b/veejay-current/veejay-server/libvje/effects/colorshift.c index bb59886f..952e47d7 100644 --- a/veejay-current/veejay-server/libvje/effects/colorshift.c +++ b/veejay-current/veejay-server/libvje/effects/colorshift.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "colorshift.h" vj_effect *colorshift_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/common.c b/veejay-current/veejay-server/libvje/effects/common.c index b92b2644..ea6dfa5e 100644 --- a/veejay-current/veejay-server/libvje/effects/common.c +++ b/veejay-current/veejay-server/libvje/effects/common.c @@ -22,8 +22,10 @@ #include #include #include +#include +#include #include -#include +#include #include "common.h" char **vje_build_param_list( int num, ... ) diff --git a/veejay-current/veejay-server/libvje/effects/common.h b/veejay-current/veejay-server/libvje/effects/common.h index df83c9ca..0a030f7e 100644 --- a/veejay-current/veejay-server/libvje/effects/common.h +++ b/veejay-current/veejay-server/libvje/effects/common.h @@ -26,7 +26,9 @@ #include #include #include +#include #include +#include #define MAX_SCRATCH_FRAMES 50 #define GREY_LEVELS 256 diff --git a/veejay-current/veejay-server/libvje/effects/complexinvert.c b/veejay-current/veejay-server/libvje/effects/complexinvert.c index 378d341f..517ef231 100644 --- a/veejay-current/veejay-server/libvje/effects/complexinvert.c +++ b/veejay-current/veejay-server/libvje/effects/complexinvert.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "complexinvert.h" vj_effect *complexinvert_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/complexsaturate.c b/veejay-current/veejay-server/libvje/effects/complexsaturate.c index 8d523995..cc0bec53 100644 --- a/veejay-current/veejay-server/libvje/effects/complexsaturate.c +++ b/veejay-current/veejay-server/libvje/effects/complexsaturate.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "complexsaturate.h" vj_effect *complexsaturation_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/complexsync.c b/veejay-current/veejay-server/libvje/effects/complexsync.c index c8b9866e..88236f06 100644 --- a/veejay-current/veejay-server/libvje/effects/complexsync.c +++ b/veejay-current/veejay-server/libvje/effects/complexsync.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "complexsync.h" static uint8_t *c_outofsync_buffer[4] = { NULL,NULL,NULL, NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/complexthreshold.c b/veejay-current/veejay-server/libvje/effects/complexthreshold.c index a21325c1..e0184c69 100644 --- a/veejay-current/veejay-server/libvje/effects/complexthreshold.c +++ b/veejay-current/veejay-server/libvje/effects/complexthreshold.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "complexthreshold.h" //FIXME: rewrite this FX diff --git a/veejay-current/veejay-server/libvje/effects/constantblend.c b/veejay-current/veejay-server/libvje/effects/constantblend.c index 817366bb..19c5a1be 100644 --- a/veejay-current/veejay-server/libvje/effects/constantblend.c +++ b/veejay-current/veejay-server/libvje/effects/constantblend.c @@ -26,7 +26,7 @@ */ #include "common.h" -#include +#include #include "constantblend.h" #include diff --git a/veejay-current/veejay-server/libvje/effects/contourextract.c b/veejay-current/veejay-server/libvje/effects/contourextract.c index d992bfca..d10f75cb 100644 --- a/veejay-current/veejay-server/libvje/effects/contourextract.c +++ b/veejay-current/veejay-server/libvje/effects/contourextract.c @@ -20,10 +20,10 @@ */ #include "common.h" -#include +#include #include -#include -#include +#include +#include #include "softblur.h" #include "diff.h" #include "contourextract.h" diff --git a/veejay-current/veejay-server/libvje/effects/contrast.c b/veejay-current/veejay-server/libvje/effects/contrast.c index a96bb61c..ad765902 100644 --- a/veejay-current/veejay-server/libvje/effects/contrast.c +++ b/veejay-current/veejay-server/libvje/effects/contrast.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "contrast.h" vj_effect *contrast_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/crosspixel.c b/veejay-current/veejay-server/libvje/effects/crosspixel.c index eb42a636..5ed4df04 100644 --- a/veejay-current/veejay-server/libvje/effects/crosspixel.c +++ b/veejay-current/veejay-server/libvje/effects/crosspixel.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "crosspixel.h" static uint8_t *cross_pixels[4] = { NULL,NULL,NULL, NULL}; diff --git a/veejay-current/veejay-server/libvje/effects/cutstop.c b/veejay-current/veejay-server/libvje/effects/cutstop.c index bc5fa377..7615959f 100644 --- a/veejay-current/veejay-server/libvje/effects/cutstop.c +++ b/veejay-current/veejay-server/libvje/effects/cutstop.c @@ -22,7 +22,7 @@ */ #include "common.h" -#include +#include #include "cutstop.h" static uint8_t *vvcutstop_buffer[4] = { NULL,NULL,NULL,NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/deinterlace.c b/veejay-current/veejay-server/libvje/effects/deinterlace.c index 59f20e90..4366f79f 100644 --- a/veejay-current/veejay-server/libvje/effects/deinterlace.c +++ b/veejay-current/veejay-server/libvje/effects/deinterlace.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "deinterlace.h" vj_effect *deinterlace_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/dices.c b/veejay-current/veejay-server/libvje/effects/dices.c index 0d894a6d..74bf995f 100644 --- a/veejay-current/veejay-server/libvje/effects/dices.c +++ b/veejay-current/veejay-server/libvje/effects/dices.c @@ -28,7 +28,7 @@ */ #include "common.h" -#include +#include #include "dices.h" static int g_map_width = 0; diff --git a/veejay-current/veejay-server/libvje/effects/diff.c b/veejay-current/veejay-server/libvje/effects/diff.c index 99a452e3..c0c9abdd 100644 --- a/veejay-current/veejay-server/libvje/effects/diff.c +++ b/veejay-current/veejay-server/libvje/effects/diff.c @@ -19,9 +19,9 @@ */ #include "common.h" -#include #include -#include +#include +#include #include "softblur.h" #include "diff.h" diff --git a/veejay-current/veejay-server/libvje/effects/diffimg.c b/veejay-current/veejay-server/libvje/effects/diffimg.c index 658ad103..daf31343 100644 --- a/veejay-current/veejay-server/libvje/effects/diffimg.c +++ b/veejay-current/veejay-server/libvje/effects/diffimg.c @@ -19,8 +19,9 @@ */ #include #include +#include #include -#include +#include #include "diffimg.h" #include "common.h" diff --git a/veejay-current/veejay-server/libvje/effects/diffmap.c b/veejay-current/veejay-server/libvje/effects/diffmap.c index 4d333111..9e31fa14 100644 --- a/veejay-current/veejay-server/libvje/effects/diffmap.c +++ b/veejay-current/veejay-server/libvje/effects/diffmap.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "softblur.h" #include "diffmap.h" diff --git a/veejay-current/veejay-server/libvje/effects/dissolve.c b/veejay-current/veejay-server/libvje/effects/dissolve.c index 1cb2b78d..d1d4e568 100644 --- a/veejay-current/veejay-server/libvje/effects/dissolve.c +++ b/veejay-current/veejay-server/libvje/effects/dissolve.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "dissolve.h" vj_effect *dissolve_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/distort.c b/veejay-current/veejay-server/libvje/effects/distort.c index 3b2f5a0f..10f9eadd 100644 --- a/veejay-current/veejay-server/libvje/effects/distort.c +++ b/veejay-current/veejay-server/libvje/effects/distort.c @@ -44,7 +44,7 @@ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "common.h" -#include +#include #include "widthmirror.h" #include "distort.h" diff --git a/veejay-current/veejay-server/libvje/effects/dither.c b/veejay-current/veejay-server/libvje/effects/dither.c index 50260eaa..e184ccb2 100644 --- a/veejay-current/veejay-server/libvje/effects/dither.c +++ b/veejay-current/veejay-server/libvje/effects/dither.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "dither.h" vj_effect *dither_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/dummy.c b/veejay-current/veejay-server/libvje/effects/dummy.c index 1c05e4d4..3797e1e5 100644 --- a/veejay-current/veejay-server/libvje/effects/dummy.c +++ b/veejay-current/veejay-server/libvje/effects/dummy.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "dummy.h" vj_effect *dummy_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/dupmagic.c b/veejay-current/veejay-server/libvje/effects/dupmagic.c index 3de1ec6f..623d9893 100644 --- a/veejay-current/veejay-server/libvje/effects/dupmagic.c +++ b/veejay-current/veejay-server/libvje/effects/dupmagic.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "magicoverlays.h" #include "dupmagic.h" diff --git a/veejay-current/veejay-server/libvje/effects/emboss.c b/veejay-current/veejay-server/libvje/effects/emboss.c index 7670e5a9..673f334f 100644 --- a/veejay-current/veejay-server/libvje/effects/emboss.c +++ b/veejay-current/veejay-server/libvje/effects/emboss.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "emboss.h" vj_effect *emboss_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/enhancemask.c b/veejay-current/veejay-server/libvje/effects/enhancemask.c index 21b57a66..ea393207 100644 --- a/veejay-current/veejay-server/libvje/effects/enhancemask.c +++ b/veejay-current/veejay-server/libvje/effects/enhancemask.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "enhancemask.h" vj_effect *enhancemask_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/feathermask.c b/veejay-current/veejay-server/libvje/effects/feathermask.c index 73343d29..5ccb120c 100644 --- a/veejay-current/veejay-server/libvje/effects/feathermask.c +++ b/veejay-current/veejay-server/libvje/effects/feathermask.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "feathermask.h" vj_effect *feathermask_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/fibdownscale.c b/veejay-current/veejay-server/libvje/effects/fibdownscale.c index 2e70b0a5..58f63451 100644 --- a/veejay-current/veejay-server/libvje/effects/fibdownscale.c +++ b/veejay-current/veejay-server/libvje/effects/fibdownscale.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "fibdownscale.h" vj_effect *fibdownscale_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/fisheye.c b/veejay-current/veejay-server/libvje/effects/fisheye.c index 91d374b8..29264af7 100644 --- a/veejay-current/veejay-server/libvje/effects/fisheye.c +++ b/veejay-current/veejay-server/libvje/effects/fisheye.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "fisheye.h" #define RUP8(num)(((num)+8)&~8) diff --git a/veejay-current/veejay-server/libvje/effects/flare.c b/veejay-current/veejay-server/libvje/effects/flare.c index 2d07b73f..3d68b988 100644 --- a/veejay-current/veejay-server/libvje/effects/flare.c +++ b/veejay-current/veejay-server/libvje/effects/flare.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "flare.h" /* blend by blurred mask. diff --git a/veejay-current/veejay-server/libvje/effects/flip.c b/veejay-current/veejay-server/libvje/effects/flip.c index c5a563d9..efacaf78 100644 --- a/veejay-current/veejay-server/libvje/effects/flip.c +++ b/veejay-current/veejay-server/libvje/effects/flip.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "flip.h" vj_effect *flip_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/frameborder.c b/veejay-current/veejay-server/libvje/effects/frameborder.c index 020ac002..75bf05a0 100644 --- a/veejay-current/veejay-server/libvje/effects/frameborder.c +++ b/veejay-current/veejay-server/libvje/effects/frameborder.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "frameborder.h" vj_effect *frameborder_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/gamma.c b/veejay-current/veejay-server/libvje/effects/gamma.c index 9d836873..1054654a 100644 --- a/veejay-current/veejay-server/libvje/effects/gamma.c +++ b/veejay-current/veejay-server/libvje/effects/gamma.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "gamma.h" static __thread int gamma_flag = 0; diff --git a/veejay-current/veejay-server/libvje/effects/gaussblur.c b/veejay-current/veejay-server/libvje/effects/gaussblur.c index e218a61b..bfc328df 100644 --- a/veejay-current/veejay-server/libvje/effects/gaussblur.c +++ b/veejay-current/veejay-server/libvje/effects/gaussblur.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include #include "gaussblur.h" diff --git a/veejay-current/veejay-server/libvje/effects/ghost.c b/veejay-current/veejay-server/libvje/effects/ghost.c index 074e65ca..88b27299 100644 --- a/veejay-current/veejay-server/libvje/effects/ghost.c +++ b/veejay-current/veejay-server/libvje/effects/ghost.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "ghost.h" static uint8_t *ghost_buf[4] = { NULL,NULL,NULL, NULL}; diff --git a/veejay-current/veejay-server/libvje/effects/greyselect.c b/veejay-current/veejay-server/libvje/effects/greyselect.c index 83fe42c8..fa280546 100644 --- a/veejay-current/veejay-server/libvje/effects/greyselect.c +++ b/veejay-current/veejay-server/libvje/effects/greyselect.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "greyselect.h" vj_effect *greyselect_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/iris.c b/veejay-current/veejay-server/libvje/effects/iris.c index e4d3e8a2..41b8d1b2 100644 --- a/veejay-current/veejay-server/libvje/effects/iris.c +++ b/veejay-current/veejay-server/libvje/effects/iris.c @@ -25,7 +25,7 @@ */ #include "common.h" -#include +#include #include "iris.h" vj_effect *iris_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/isolate.c b/veejay-current/veejay-server/libvje/effects/isolate.c index 94104c07..c2cfdc1f 100644 --- a/veejay-current/veejay-server/libvje/effects/isolate.c +++ b/veejay-current/veejay-server/libvje/effects/isolate.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "isolate.h" vj_effect *isolate_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/keyselect.c b/veejay-current/veejay-server/libvje/effects/keyselect.c index ab6ca868..13d18df0 100644 --- a/veejay-current/veejay-server/libvje/effects/keyselect.c +++ b/veejay-current/veejay-server/libvje/effects/keyselect.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "keyselect.h" vj_effect *keyselect_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/killchroma.c b/veejay-current/veejay-server/libvje/effects/killchroma.c index d90daa3d..2a9c33da 100644 --- a/veejay-current/veejay-server/libvje/effects/killchroma.c +++ b/veejay-current/veejay-server/libvje/effects/killchroma.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "killchroma.h" vj_effect *killchroma_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/levelcorrection.c b/veejay-current/veejay-server/libvje/effects/levelcorrection.c index 46e0cda5..68ce1797 100644 --- a/veejay-current/veejay-server/libvje/effects/levelcorrection.c +++ b/veejay-current/veejay-server/libvje/effects/levelcorrection.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "levelcorrection.h" vj_effect *levelcorrection_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/lumablend.c b/veejay-current/veejay-server/libvje/effects/lumablend.c index 350de770..e7578c11 100644 --- a/veejay-current/veejay-server/libvje/effects/lumablend.c +++ b/veejay-current/veejay-server/libvje/effects/lumablend.c @@ -19,8 +19,7 @@ */ #include "common.h" -#include -#include +#include #include "lumablend.h" vj_effect *lumablend_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/lumakey.c b/veejay-current/veejay-server/libvje/effects/lumakey.c index 960d052f..5abed781 100644 --- a/veejay-current/veejay-server/libvje/effects/lumakey.c +++ b/veejay-current/veejay-server/libvje/effects/lumakey.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "lumakey.h" vj_effect *lumakey_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/lumakeyalpha.c b/veejay-current/veejay-server/libvje/effects/lumakeyalpha.c index cf2ff35a..17101b69 100644 --- a/veejay-current/veejay-server/libvje/effects/lumakeyalpha.c +++ b/veejay-current/veejay-server/libvje/effects/lumakeyalpha.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "lumakeyalpha.h" vj_effect *lumakeyalpha_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/lumamagick.c b/veejay-current/veejay-server/libvje/effects/lumamagick.c index 2dfe84f9..d23351de 100644 --- a/veejay-current/veejay-server/libvje/effects/lumamagick.c +++ b/veejay-current/veejay-server/libvje/effects/lumamagick.c @@ -21,7 +21,7 @@ /* 7 ,14, 24, 25, 26 */ #include "common.h" #include -#include +#include #include "lumamagick.h" /* 04/01/03: added transparency parameters for frame a and frame b in each function */ diff --git a/veejay-current/veejay-server/libvje/effects/lumamask.c b/veejay-current/veejay-server/libvje/effects/lumamask.c index 22e05083..6fbe9891 100644 --- a/veejay-current/veejay-server/libvje/effects/lumamask.c +++ b/veejay-current/veejay-server/libvje/effects/lumamask.c @@ -30,7 +30,7 @@ */ #include "common.h" -#include +#include #include "lumamask.h" static uint8_t *buf[4] = { NULL,NULL,NULL,NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/magicalphaoverlays.c b/veejay-current/veejay-server/libvje/effects/magicalphaoverlays.c index fab2f9ef..d10a12b8 100644 --- a/veejay-current/veejay-server/libvje/effects/magicalphaoverlays.c +++ b/veejay-current/veejay-server/libvje/effects/magicalphaoverlays.c @@ -19,9 +19,8 @@ */ #include "common.h" -#include +#include #include -#include #include "magicalphaoverlays.h" vj_effect *overlayalphamagic_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/magicmirror.c b/veejay-current/veejay-server/libvje/effects/magicmirror.c index c063508c..926121d3 100644 --- a/veejay-current/veejay-server/libvje/effects/magicmirror.c +++ b/veejay-current/veejay-server/libvje/effects/magicmirror.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "motionmap.h" #include "magicmirror.h" diff --git a/veejay-current/veejay-server/libvje/effects/magicoverlays.c b/veejay-current/veejay-server/libvje/effects/magicoverlays.c index ae38d44b..c6db7abb 100644 --- a/veejay-current/veejay-server/libvje/effects/magicoverlays.c +++ b/veejay-current/veejay-server/libvje/effects/magicoverlays.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "magicoverlays.h" diff --git a/veejay-current/veejay-server/libvje/effects/magicoverlaysalpha.c b/veejay-current/veejay-server/libvje/effects/magicoverlaysalpha.c index ca69b8a2..b12be538 100644 --- a/veejay-current/veejay-server/libvje/effects/magicoverlaysalpha.c +++ b/veejay-current/veejay-server/libvje/effects/magicoverlaysalpha.c @@ -19,9 +19,8 @@ */ #include "common.h" -#include +#include #include -#include #include "magicoverlaysalpha.h" vj_effect *overlaymagicalpha_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/magicscratcher.c b/veejay-current/veejay-server/libvje/effects/magicscratcher.c index 3d807880..7f9f8925 100644 --- a/veejay-current/veejay-server/libvje/effects/magicscratcher.c +++ b/veejay-current/veejay-server/libvje/effects/magicscratcher.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "magicscratcher.h" diff --git a/veejay-current/veejay-server/libvje/effects/mask.c b/veejay-current/veejay-server/libvje/effects/mask.c index 752f514a..c24afabe 100644 --- a/veejay-current/veejay-server/libvje/effects/mask.c +++ b/veejay-current/veejay-server/libvje/effects/mask.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "mask.h" vj_effect *simplemask_init(int w, int h ) diff --git a/veejay-current/veejay-server/libvje/effects/maskstop.c b/veejay-current/veejay-server/libvje/effects/maskstop.c index c35d29f0..12b90a07 100644 --- a/veejay-current/veejay-server/libvje/effects/maskstop.c +++ b/veejay-current/veejay-server/libvje/effects/maskstop.c @@ -22,7 +22,7 @@ */ #include "common.h" -#include +#include #include "maskstop.h" static uint8_t *vvmaskstop_buffer[6]; diff --git a/veejay-current/veejay-server/libvje/effects/masktransition.c b/veejay-current/veejay-server/libvje/effects/masktransition.c index fe38cac9..58418066 100644 --- a/veejay-current/veejay-server/libvje/effects/masktransition.c +++ b/veejay-current/veejay-server/libvje/effects/masktransition.c @@ -19,8 +19,7 @@ */ #include "common.h" -#include -#include +#include #include "masktransition.h" vj_effect *masktransition_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/meanfilter.c b/veejay-current/veejay-server/libvje/effects/meanfilter.c index 4fdf4311..e8042dd8 100644 --- a/veejay-current/veejay-server/libvje/effects/meanfilter.c +++ b/veejay-current/veejay-server/libvje/effects/meanfilter.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "meanfilter.h" static uint8_t *mean = NULL; diff --git a/veejay-current/veejay-server/libvje/effects/median.c b/veejay-current/veejay-server/libvje/effects/median.c index 211ba516..3c6ff87b 100644 --- a/veejay-current/veejay-server/libvje/effects/median.c +++ b/veejay-current/veejay-server/libvje/effects/median.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "median.h" diff --git a/veejay-current/veejay-server/libvje/effects/mirrors.c b/veejay-current/veejay-server/libvje/effects/mirrors.c index d4df20ee..3718ce5d 100644 --- a/veejay-current/veejay-server/libvje/effects/mirrors.c +++ b/veejay-current/veejay-server/libvje/effects/mirrors.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "mirrors.h" vj_effect *mirrors_init(int width,int height) diff --git a/veejay-current/veejay-server/libvje/effects/mirrors2.c b/veejay-current/veejay-server/libvje/effects/mirrors2.c index 8f489dd3..e3e63904 100644 --- a/veejay-current/veejay-server/libvje/effects/mirrors2.c +++ b/veejay-current/veejay-server/libvje/effects/mirrors2.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "mirrors2.h" vj_effect *mirrors2_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/mixtoalpha.c b/veejay-current/veejay-server/libvje/effects/mixtoalpha.c index 04ef256f..e0f61939 100644 --- a/veejay-current/veejay-server/libvje/effects/mixtoalpha.c +++ b/veejay-current/veejay-server/libvje/effects/mixtoalpha.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "mixtoalpha.h" vj_effect *mixtoalpha_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/morphology.c b/veejay-current/veejay-server/libvje/effects/morphology.c index 27e1d7fb..5fd94c07 100644 --- a/veejay-current/veejay-server/libvje/effects/morphology.c +++ b/veejay-current/veejay-server/libvje/effects/morphology.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "morphology.h" typedef uint8_t (*morph_func)(uint8_t *kernel, uint8_t *mt ); diff --git a/veejay-current/veejay-server/libvje/effects/motionblur.c b/veejay-current/veejay-server/libvje/effects/motionblur.c index 3ba9ccdc..7f16064d 100644 --- a/veejay-current/veejay-server/libvje/effects/motionblur.c +++ b/veejay-current/veejay-server/libvje/effects/motionblur.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "motionblur.h" static uint8_t *previous_frame[3] = { NULL,NULL,NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/motionmap.c b/veejay-current/veejay-server/libvje/effects/motionmap.c index 12251169..28a6fd09 100644 --- a/veejay-current/veejay-server/libvje/effects/motionmap.c +++ b/veejay-current/veejay-server/libvje/effects/motionmap.c @@ -20,9 +20,8 @@ #include "common.h" #include -#include -#include -#include +#include +#include #include "softblur.h" #include "opacity.h" #include "motionmap.h" diff --git a/veejay-current/veejay-server/libvje/effects/mtracer.c b/veejay-current/veejay-server/libvje/effects/mtracer.c index 5e9a4f64..952497c8 100644 --- a/veejay-current/veejay-server/libvje/effects/mtracer.c +++ b/veejay-current/veejay-server/libvje/effects/mtracer.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "mtracer.h" #include "magicoverlays.h" diff --git a/veejay-current/veejay-server/libvje/effects/negatechannel.c b/veejay-current/veejay-server/libvje/effects/negatechannel.c index 8652e362..27671f7b 100644 --- a/veejay-current/veejay-server/libvje/effects/negatechannel.c +++ b/veejay-current/veejay-server/libvje/effects/negatechannel.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "negatechannel.h" vj_effect *negatechannel_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/negation.c b/veejay-current/veejay-server/libvje/effects/negation.c index b949aad9..54b9982d 100644 --- a/veejay-current/veejay-server/libvje/effects/negation.c +++ b/veejay-current/veejay-server/libvje/effects/negation.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "negation.h" vj_effect *negation_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/neighbours.c b/veejay-current/veejay-server/libvje/effects/neighbours.c index 7236b0a9..864cb329 100644 --- a/veejay-current/veejay-server/libvje/effects/neighbours.c +++ b/veejay-current/veejay-server/libvje/effects/neighbours.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "neighbours.h" vj_effect *neighbours_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/neighbours2.c b/veejay-current/veejay-server/libvje/effects/neighbours2.c index 4d7e5cff..490e4e72 100644 --- a/veejay-current/veejay-server/libvje/effects/neighbours2.c +++ b/veejay-current/veejay-server/libvje/effects/neighbours2.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "neighbours2.h" vj_effect *neighbours2_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/neighbours3.c b/veejay-current/veejay-server/libvje/effects/neighbours3.c index 5ba48dd1..da7df644 100644 --- a/veejay-current/veejay-server/libvje/effects/neighbours3.c +++ b/veejay-current/veejay-server/libvje/effects/neighbours3.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "neighbours3.h" vj_effect *neighbours3_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/neighbours4.c b/veejay-current/veejay-server/libvje/effects/neighbours4.c index e475f449..7ada2b26 100644 --- a/veejay-current/veejay-server/libvje/effects/neighbours4.c +++ b/veejay-current/veejay-server/libvje/effects/neighbours4.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "neighbours4.h" vj_effect *neighbours4_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/neighbours5.c b/veejay-current/veejay-server/libvje/effects/neighbours5.c index 238eb3d7..c0427ebb 100644 --- a/veejay-current/veejay-server/libvje/effects/neighbours5.c +++ b/veejay-current/veejay-server/libvje/effects/neighbours5.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "neighbours5.h" vj_effect *neighbours5_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/nervous.c b/veejay-current/veejay-server/libvje/effects/nervous.c index b5a727a2..94026fea 100644 --- a/veejay-current/veejay-server/libvje/effects/nervous.c +++ b/veejay-current/veejay-server/libvje/effects/nervous.c @@ -26,7 +26,7 @@ */ #include "common.h" -#include +#include #include "nervous.h" #define N_MAX 100 diff --git a/veejay-current/veejay-server/libvje/effects/noiseadd.c b/veejay-current/veejay-server/libvje/effects/noiseadd.c index 2b52685c..6b40f23d 100644 --- a/veejay-current/veejay-server/libvje/effects/noiseadd.c +++ b/veejay-current/veejay-server/libvje/effects/noiseadd.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "noiseadd.h" static uint8_t *Yb_frame; diff --git a/veejay-current/veejay-server/libvje/effects/noisepencil.c b/veejay-current/veejay-server/libvje/effects/noisepencil.c index a0e8bcba..951a4aa1 100644 --- a/veejay-current/veejay-server/libvje/effects/noisepencil.c +++ b/veejay-current/veejay-server/libvje/effects/noisepencil.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "noisepencil.h" static uint8_t *Yb_frame = NULL; diff --git a/veejay-current/veejay-server/libvje/effects/opacity.c b/veejay-current/veejay-server/libvje/effects/opacity.c index 5da2678b..ff042df2 100644 --- a/veejay-current/veejay-server/libvje/effects/opacity.c +++ b/veejay-current/veejay-server/libvje/effects/opacity.c @@ -36,8 +36,7 @@ #include "common.h" -#include -#include +#include #include "opacity.h" vj_effect *opacity_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/opacityadv.c b/veejay-current/veejay-server/libvje/effects/opacityadv.c index 16b78400..e1d366bc 100644 --- a/veejay-current/veejay-server/libvje/effects/opacityadv.c +++ b/veejay-current/veejay-server/libvje/effects/opacityadv.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "opacityadv.h" vj_effect *opacityadv_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/opacitythreshold.c b/veejay-current/veejay-server/libvje/effects/opacitythreshold.c index d2cea6f9..b23960d1 100644 --- a/veejay-current/veejay-server/libvje/effects/opacitythreshold.c +++ b/veejay-current/veejay-server/libvje/effects/opacitythreshold.c @@ -19,8 +19,9 @@ */ #include #include +#include #include -#include +#include #include "opacitythreshold.h" vj_effect *opacitythreshold_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/overclock.c b/veejay-current/veejay-server/libvje/effects/overclock.c index 321d9041..e0d570d6 100644 --- a/veejay-current/veejay-server/libvje/effects/overclock.c +++ b/veejay-current/veejay-server/libvje/effects/overclock.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" - #include + #include #include "overclock.h" vj_effect *overclock_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/passthrough.c b/veejay-current/veejay-server/libvje/effects/passthrough.c index 7b28147b..ee31fc74 100644 --- a/veejay-current/veejay-server/libvje/effects/passthrough.c +++ b/veejay-current/veejay-server/libvje/effects/passthrough.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "passthrough.h" vj_effect *passthrough_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/effects/pencilsketch.c b/veejay-current/veejay-server/libvje/effects/pencilsketch.c index 37ca3069..28145549 100644 --- a/veejay-current/veejay-server/libvje/effects/pencilsketch.c +++ b/veejay-current/veejay-server/libvje/effects/pencilsketch.c @@ -19,11 +19,9 @@ */ #include "common.h" -#include +#include #include "pencilsketch.h" -extern int vj_task_available(); - vj_effect *pencilsketch_init(int w, int h) { vj_effect *ve = (vj_effect *) vj_calloc(sizeof(vj_effect)); diff --git a/veejay-current/veejay-server/libvje/effects/perspective.c b/veejay-current/veejay-server/libvje/effects/perspective.c index 6f4b92c6..5e29716e 100644 --- a/veejay-current/veejay-server/libvje/effects/perspective.c +++ b/veejay-current/veejay-server/libvje/effects/perspective.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "perspective.h" diff --git a/veejay-current/veejay-server/libvje/effects/photoplay.c b/veejay-current/veejay-server/libvje/effects/photoplay.c index 8a062c05..3dbc3d60 100644 --- a/veejay-current/veejay-server/libvje/effects/photoplay.c +++ b/veejay-current/veejay-server/libvje/effects/photoplay.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "photoplay.h" vj_effect *photoplay_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/picinpic.c b/veejay-current/veejay-server/libvje/effects/picinpic.c index dd05f265..caaf8637 100644 --- a/veejay-current/veejay-server/libvje/effects/picinpic.c +++ b/veejay-current/veejay-server/libvje/effects/picinpic.c @@ -23,8 +23,8 @@ (--with-swscaler) if you want to use this Effect. */ #include "common.h" -#include -#include +#include +#include #include #include "picinpic.h" diff --git a/veejay-current/veejay-server/libvje/effects/pixelate.c b/veejay-current/veejay-server/libvje/effects/pixelate.c index 441fa653..c657efcc 100644 --- a/veejay-current/veejay-server/libvje/effects/pixelate.c +++ b/veejay-current/veejay-server/libvje/effects/pixelate.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "pixelate.h" static uint8_t values[2048]; diff --git a/veejay-current/veejay-server/libvje/effects/pixelsort.c b/veejay-current/veejay-server/libvje/effects/pixelsort.c index 066f4dbc..5278035b 100644 --- a/veejay-current/veejay-server/libvje/effects/pixelsort.c +++ b/veejay-current/veejay-server/libvje/effects/pixelsort.c @@ -31,7 +31,7 @@ */ #include "common.h" -#include +#include #include "pixelsort.h" vj_effect *pixelsort_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/pixelsortalpha.c b/veejay-current/veejay-server/libvje/effects/pixelsortalpha.c index 34ebbbe6..ec5e2a4c 100644 --- a/veejay-current/veejay-server/libvje/effects/pixelsortalpha.c +++ b/veejay-current/veejay-server/libvje/effects/pixelsortalpha.c @@ -31,7 +31,7 @@ */ #include "common.h" -#include +#include #include "pixelsortalpha.h" vj_effect *pixelsortalpha_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/porterduff.c b/veejay-current/veejay-server/libvje/effects/porterduff.c index 7f3a3b42..a5ba9550 100644 --- a/veejay-current/veejay-server/libvje/effects/porterduff.c +++ b/veejay-current/veejay-server/libvje/effects/porterduff.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "porterduff.h" #ifndef MIN diff --git a/veejay-current/veejay-server/libvje/effects/posterize.c b/veejay-current/veejay-server/libvje/effects/posterize.c index d0191789..9cdf43df 100644 --- a/veejay-current/veejay-server/libvje/effects/posterize.c +++ b/veejay-current/veejay-server/libvje/effects/posterize.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "posterize.h" vj_effect *posterize_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/posterize2.c b/veejay-current/veejay-server/libvje/effects/posterize2.c index daed6287..a6eaf712 100644 --- a/veejay-current/veejay-server/libvje/effects/posterize2.c +++ b/veejay-current/veejay-server/libvje/effects/posterize2.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "posterize2.h" vj_effect *posterize2_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/radcor.c b/veejay-current/veejay-server/libvje/effects/radcor.c index c78deeb2..4fe07f62 100644 --- a/veejay-current/veejay-server/libvje/effects/radcor.c +++ b/veejay-current/veejay-server/libvje/effects/radcor.c @@ -24,7 +24,7 @@ */ #include "common.h" -#include +#include #include "radcor.h" vj_effect *radcor_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/radialblur.c b/veejay-current/veejay-server/libvje/effects/radialblur.c index 5806b6ca..fbc4f66d 100644 --- a/veejay-current/veejay-server/libvje/effects/radialblur.c +++ b/veejay-current/veejay-server/libvje/effects/radialblur.c @@ -43,7 +43,7 @@ */ #include "common.h" -#include +#include #include "radialblur.h" static uint8_t *radial_src[4] = { NULL,NULL,NULL,NULL}; diff --git a/veejay-current/veejay-server/libvje/effects/radioactive.c b/veejay-current/veejay-server/libvje/effects/radioactive.c index c1994686..48f35bc8 100644 --- a/veejay-current/veejay-server/libvje/effects/radioactive.c +++ b/veejay-current/veejay-server/libvje/effects/radioactive.c @@ -29,9 +29,9 @@ */ #include "common.h" -#include +#include //#include -#include +#include #include "softblur.h" #include "radioactive.h" diff --git a/veejay-current/veejay-server/libvje/effects/randnoise.c b/veejay-current/veejay-server/libvje/effects/randnoise.c index 0d064fa7..670e2a35 100644 --- a/veejay-current/veejay-server/libvje/effects/randnoise.c +++ b/veejay-current/veejay-server/libvje/effects/randnoise.c @@ -23,7 +23,7 @@ */ #include "common.h" -#include +#include #include "randnoise.h" vj_effect *randnoise_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/raster.c b/veejay-current/veejay-server/libvje/effects/raster.c index f1c2712c..98fc14ee 100644 --- a/veejay-current/veejay-server/libvje/effects/raster.c +++ b/veejay-current/veejay-server/libvje/effects/raster.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "raster.h" static int *xval; diff --git a/veejay-current/veejay-server/libvje/effects/rawman.c b/veejay-current/veejay-server/libvje/effects/rawman.c index adad501d..831ceac1 100644 --- a/veejay-current/veejay-server/libvje/effects/rawman.c +++ b/veejay-current/veejay-server/libvje/effects/rawman.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "rawman.h" vj_effect *rawman_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/rawval.c b/veejay-current/veejay-server/libvje/effects/rawval.c index 933e51e6..4492e676 100644 --- a/veejay-current/veejay-server/libvje/effects/rawval.c +++ b/veejay-current/veejay-server/libvje/effects/rawval.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "rawval.h" vj_effect *rawval_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/reflection.c b/veejay-current/veejay-server/libvje/effects/reflection.c index 5f7934b4..3e7211b7 100644 --- a/veejay-current/veejay-server/libvje/effects/reflection.c +++ b/veejay-current/veejay-server/libvje/effects/reflection.c @@ -42,7 +42,7 @@ this effect works in YCbCr space now. */ #include "common.h" -#include +#include #include "reflection.h" static short reflect_aSin[2048]; diff --git a/veejay-current/veejay-server/libvje/effects/revtv.c b/veejay-current/veejay-server/libvje/effects/revtv.c index 59fc9838..a911df3b 100644 --- a/veejay-current/veejay-server/libvje/effects/revtv.c +++ b/veejay-current/veejay-server/libvje/effects/revtv.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "revtv.h" vj_effect *revtv_init(int max_width, int max_height) diff --git a/veejay-current/veejay-server/libvje/effects/rgbchannel.c b/veejay-current/veejay-server/libvje/effects/rgbchannel.c index ed1ff39a..5e42d667 100644 --- a/veejay-current/veejay-server/libvje/effects/rgbchannel.c +++ b/veejay-current/veejay-server/libvje/effects/rgbchannel.c @@ -19,8 +19,8 @@ */ #include "common.h" -#include -#include +#include +#include #include #include "rgbchannel.h" diff --git a/veejay-current/veejay-server/libvje/effects/rgbkey.c b/veejay-current/veejay-server/libvje/effects/rgbkey.c index 4310a2f0..b11ba551 100644 --- a/veejay-current/veejay-server/libvje/effects/rgbkey.c +++ b/veejay-current/veejay-server/libvje/effects/rgbkey.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include #include "rgbkey.h" diff --git a/veejay-current/veejay-server/libvje/effects/rgbkeysmooth.c b/veejay-current/veejay-server/libvje/effects/rgbkeysmooth.c index 3ad04759..60c1b7a1 100644 --- a/veejay-current/veejay-server/libvje/effects/rgbkeysmooth.c +++ b/veejay-current/veejay-server/libvje/effects/rgbkeysmooth.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "rgbkeysmooth.h" vj_effect *rgbkeysmooth_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/ripple.c b/veejay-current/veejay-server/libvje/effects/ripple.c index ae15b9f7..7dd460f3 100644 --- a/veejay-current/veejay-server/libvje/effects/ripple.c +++ b/veejay-current/veejay-server/libvje/effects/ripple.c @@ -29,7 +29,7 @@ */ #include "common.h" -#include +#include #include "ripple.h" #define RIPPLE_DEGREES 360 diff --git a/veejay-current/veejay-server/libvje/effects/rotozoom.c b/veejay-current/veejay-server/libvje/effects/rotozoom.c index 0fe971ab..44b98286 100644 --- a/veejay-current/veejay-server/libvje/effects/rotozoom.c +++ b/veejay-current/veejay-server/libvje/effects/rotozoom.c @@ -20,7 +20,7 @@ /* distortion effects */ #include "common.h" -#include +#include #include "rotozoom.h" static int *test_roto[9]; diff --git a/veejay-current/veejay-server/libvje/effects/scratcher.c b/veejay-current/veejay-server/libvje/effects/scratcher.c index abc9b060..25dfb6aa 100644 --- a/veejay-current/veejay-server/libvje/effects/scratcher.c +++ b/veejay-current/veejay-server/libvje/effects/scratcher.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "opacity.h" #include "scratcher.h" diff --git a/veejay-current/veejay-server/libvje/effects/sinoids.c b/veejay-current/veejay-server/libvje/effects/sinoids.c index 5226b855..aaff5a8a 100644 --- a/veejay-current/veejay-server/libvje/effects/sinoids.c +++ b/veejay-current/veejay-server/libvje/effects/sinoids.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "sinoids.h" static int *sinoids_X = NULL; diff --git a/veejay-current/veejay-server/libvje/effects/slice.c b/veejay-current/veejay-server/libvje/effects/slice.c index 87ed67d3..cd313960 100644 --- a/veejay-current/veejay-server/libvje/effects/slice.c +++ b/veejay-current/veejay-server/libvje/effects/slice.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "slice.h" static uint8_t *slice_frame[4] = { NULL,NULL,NULL,NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/slicer.c b/veejay-current/veejay-server/libvje/effects/slicer.c index 12cf51bf..cb347260 100644 --- a/veejay-current/veejay-server/libvje/effects/slicer.c +++ b/veejay-current/veejay-server/libvje/effects/slicer.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "slicer.h" static int *slice_xshift = NULL; diff --git a/veejay-current/veejay-server/libvje/effects/smear.c b/veejay-current/veejay-server/libvje/effects/smear.c index 27c85bec..f9c2e180 100644 --- a/veejay-current/veejay-server/libvje/effects/smear.c +++ b/veejay-current/veejay-server/libvje/effects/smear.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "smear.h" vj_effect *smear_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/smuck.c b/veejay-current/veejay-server/libvje/effects/smuck.c index a8fa2368..629bd8f0 100644 --- a/veejay-current/veejay-server/libvje/effects/smuck.c +++ b/veejay-current/veejay-server/libvje/effects/smuck.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "smuck.h" static int smuck_rand_val; diff --git a/veejay-current/veejay-server/libvje/effects/softblur.c b/veejay-current/veejay-server/libvje/effects/softblur.c index 6c313f33..686ca7d0 100644 --- a/veejay-current/veejay-server/libvje/effects/softblur.c +++ b/veejay-current/veejay-server/libvje/effects/softblur.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "softblur.h" vj_effect *softblur_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/solarize.c b/veejay-current/veejay-server/libvje/effects/solarize.c index 740579ef..ae2e7881 100644 --- a/veejay-current/veejay-server/libvje/effects/solarize.c +++ b/veejay-current/veejay-server/libvje/effects/solarize.c @@ -20,7 +20,7 @@ */ #include "common.h" -#include +#include #include "solarize.h" vj_effect *solarize_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/split.c b/veejay-current/veejay-server/libvje/effects/split.c index 5d50f84e..f3b02f28 100644 --- a/veejay-current/veejay-server/libvje/effects/split.c +++ b/veejay-current/veejay-server/libvje/effects/split.c @@ -17,7 +17,7 @@ */ #include "common.h" -#include +#include #include "split.h" static uint8_t *split_buf[4] = { NULL,NULL,NULL, NULL }; diff --git a/veejay-current/veejay-server/libvje/effects/stretch.c b/veejay-current/veejay-server/libvje/effects/stretch.c index 41c773ff..6eaae7c4 100644 --- a/veejay-current/veejay-server/libvje/effects/stretch.c +++ b/veejay-current/veejay-server/libvje/effects/stretch.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "stretch.h" vj_effect *stretch_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/swirl.c b/veejay-current/veejay-server/libvje/effects/swirl.c index 188a5b6a..7fbd0274 100644 --- a/veejay-current/veejay-server/libvje/effects/swirl.c +++ b/veejay-current/veejay-server/libvje/effects/swirl.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "swirl.h" vj_effect *swirl_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/threshold.c b/veejay-current/veejay-server/libvje/effects/threshold.c index c2f09a4b..0d287bed 100644 --- a/veejay-current/veejay-server/libvje/effects/threshold.c +++ b/veejay-current/veejay-server/libvje/effects/threshold.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "softblur.h" #include "threshold.h" diff --git a/veejay-current/veejay-server/libvje/effects/timedistort.c b/veejay-current/veejay-server/libvje/effects/timedistort.c index ae21ac97..9c1d78b1 100644 --- a/veejay-current/veejay-server/libvje/effects/timedistort.c +++ b/veejay-current/veejay-server/libvje/effects/timedistort.c @@ -26,7 +26,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include "common.h" -#include +#include #include "softblur.h" #include "timedistort.h" diff --git a/veejay-current/veejay-server/libvje/effects/toalpha.c b/veejay-current/veejay-server/libvje/effects/toalpha.c index a16663a7..2a3a364f 100644 --- a/veejay-current/veejay-server/libvje/effects/toalpha.c +++ b/veejay-current/veejay-server/libvje/effects/toalpha.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "toalpha.h" static int __lookup_table[256]; diff --git a/veejay-current/veejay-server/libvje/effects/tracer.c b/veejay-current/veejay-server/libvje/effects/tracer.c index 3ebcf661..6bea81ce 100644 --- a/veejay-current/veejay-server/libvje/effects/tracer.c +++ b/veejay-current/veejay-server/libvje/effects/tracer.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "tracer.h" #define func_opacity(a,b,p,q) ( ((a * p) + (b * q)) >> 8 ) diff --git a/veejay-current/veejay-server/libvje/effects/transform.c b/veejay-current/veejay-server/libvje/effects/transform.c index 56330fbd..42f00a8d 100644 --- a/veejay-current/veejay-server/libvje/effects/transform.c +++ b/veejay-current/veejay-server/libvje/effects/transform.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "transform.h" vj_effect *transform_init(int width,int height) diff --git a/veejay-current/veejay-server/libvje/effects/travelmatte.c b/veejay-current/veejay-server/libvje/effects/travelmatte.c index eb33478d..1ab14779 100644 --- a/veejay-current/veejay-server/libvje/effects/travelmatte.c +++ b/veejay-current/veejay-server/libvje/effects/travelmatte.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "travelmatte.h" vj_effect *travelmatte_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/tripplicity.c b/veejay-current/veejay-server/libvje/effects/tripplicity.c index 25dabc99..0f6a2645 100644 --- a/veejay-current/veejay-server/libvje/effects/tripplicity.c +++ b/veejay-current/veejay-server/libvje/effects/tripplicity.c @@ -25,7 +25,7 @@ */ #include "common.h" -#include +#include #include "tripplicity.h" vj_effect *tripplicity_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/uvcorrect.c b/veejay-current/veejay-server/libvje/effects/uvcorrect.c index 209b7b42..a8707ff5 100644 --- a/veejay-current/veejay-server/libvje/effects/uvcorrect.c +++ b/veejay-current/veejay-server/libvje/effects/uvcorrect.c @@ -37,7 +37,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "common.h" -#include +#include #include "uvcorrect.h" static uint8_t *chrominance = NULL; diff --git a/veejay-current/veejay-server/libvje/effects/videoplay.c b/veejay-current/veejay-server/libvje/effects/videoplay.c index ac667591..cc357fb8 100644 --- a/veejay-current/veejay-server/libvje/effects/videoplay.c +++ b/veejay-current/veejay-server/libvje/effects/videoplay.c @@ -20,7 +20,7 @@ */ #include "common.h" -#include +#include #include "videoplay.h" vj_effect *videoplay_init(int w, int h) diff --git a/veejay-current/veejay-server/libvje/effects/videowall.c b/veejay-current/veejay-server/libvje/effects/videowall.c index fc8d41db..80bfa242 100644 --- a/veejay-current/veejay-server/libvje/effects/videowall.c +++ b/veejay-current/veejay-server/libvje/effects/videowall.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "videowall.h" static inline int gcd(int p, int q ) { if(q==0) return p; else return(gcd(q,p%q)); } diff --git a/veejay-current/veejay-server/libvje/effects/water.c b/veejay-current/veejay-server/libvje/effects/water.c index c1922f61..20a50968 100644 --- a/veejay-current/veejay-server/libvje/effects/water.c +++ b/veejay-current/veejay-server/libvje/effects/water.c @@ -23,7 +23,7 @@ */ #include "common.h" -#include +#include #include "softblur.h" #include "water.h" diff --git a/veejay-current/veejay-server/libvje/effects/waterrippletv.c b/veejay-current/veejay-server/libvje/effects/waterrippletv.c index 9c54eead..d6d582f5 100644 --- a/veejay-current/veejay-server/libvje/effects/waterrippletv.c +++ b/veejay-current/veejay-server/libvje/effects/waterrippletv.c @@ -23,7 +23,7 @@ */ #include "common.h" -#include +#include #include "waterrippletv.h" static uint8_t *ripple_data[3]; diff --git a/veejay-current/veejay-server/libvje/effects/whiteframe.c b/veejay-current/veejay-server/libvje/effects/whiteframe.c index 9196eb55..2436735a 100644 --- a/veejay-current/veejay-server/libvje/effects/whiteframe.c +++ b/veejay-current/veejay-server/libvje/effects/whiteframe.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "whiteframe.h" vj_effect *whiteframe_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/effects/widthmirror.c b/veejay-current/veejay-server/libvje/effects/widthmirror.c index 5b0f186a..a27da3b0 100644 --- a/veejay-current/veejay-server/libvje/effects/widthmirror.c +++ b/veejay-current/veejay-server/libvje/effects/widthmirror.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include "widthmirror.h" vj_effect *widthmirror_init(int max_width,int h) diff --git a/veejay-current/veejay-server/libvje/effects/zoom.c b/veejay-current/veejay-server/libvje/effects/zoom.c index 084d3c00..bd3c05bd 100644 --- a/veejay-current/veejay-server/libvje/effects/zoom.c +++ b/veejay-current/veejay-server/libvje/effects/zoom.c @@ -19,7 +19,7 @@ */ #include "common.h" -#include +#include #include #include "zoom.h" diff --git a/veejay-current/veejay-server/libvje/internal.h b/veejay-current/veejay-server/libvje/internal.h index 953180ae..31a13761 100644 --- a/veejay-current/veejay-server/libvje/internal.h +++ b/veejay-current/veejay-server/libvje/internal.h @@ -24,7 +24,6 @@ #define VJE_NEED_INIT -2 #define VJE_NO_FRAMES -3 #define VJE_SUCCESS 0 -#include #include "./effects/alpha2img.h" #include "./effects/alphablend.h" diff --git a/veejay-current/veejay-server/libvje/transitions/3bar.c b/veejay-current/veejay-server/libvje/transitions/3bar.c index f2361008..161ef68c 100644 --- a/veejay-current/veejay-server/libvje/transitions/3bar.c +++ b/veejay-current/veejay-server/libvje/transitions/3bar.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "3bar.h" vj_effect *bar_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/fadecolor.c b/veejay-current/veejay-server/libvje/transitions/fadecolor.c index 11fb6e63..cd9351ad 100644 --- a/veejay-current/veejay-server/libvje/transitions/fadecolor.c +++ b/veejay-current/veejay-server/libvje/transitions/fadecolor.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include #include "fadecolor.h" diff --git a/veejay-current/veejay-server/libvje/transitions/fadecolorrgb.c b/veejay-current/veejay-server/libvje/transitions/fadecolorrgb.c index 231bf33e..54b0348b 100644 --- a/veejay-current/veejay-server/libvje/transitions/fadecolorrgb.c +++ b/veejay-current/veejay-server/libvje/transitions/fadecolorrgb.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "fadecolorrgb.h" vj_effect *fadecolorrgb_init(int w,int h) diff --git a/veejay-current/veejay-server/libvje/transitions/slidingdoor.c b/veejay-current/veejay-server/libvje/transitions/slidingdoor.c index 48c7b329..4fc30dfb 100644 --- a/veejay-current/veejay-server/libvje/transitions/slidingdoor.c +++ b/veejay-current/veejay-server/libvje/transitions/slidingdoor.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "slidingdoor.h" vj_effect *slidingdoor_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/transblend.c b/veejay-current/veejay-server/libvje/transitions/transblend.c index d127f01d..dd5a316c 100644 --- a/veejay-current/veejay-server/libvje/transitions/transblend.c +++ b/veejay-current/veejay-server/libvje/transitions/transblend.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "transblend.h" #include diff --git a/veejay-current/veejay-server/libvje/transitions/transcarot.c b/veejay-current/veejay-server/libvje/transitions/transcarot.c index 337fdcbe..a84514f8 100644 --- a/veejay-current/veejay-server/libvje/transitions/transcarot.c +++ b/veejay-current/veejay-server/libvje/transitions/transcarot.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "transcarot.h" vj_effect *transcarot_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/transline.c b/veejay-current/veejay-server/libvje/transitions/transline.c index 025f85d3..5287d569 100644 --- a/veejay-current/veejay-server/libvje/transitions/transline.c +++ b/veejay-current/veejay-server/libvje/transitions/transline.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "transline.h" vj_effect *transline_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/transop.c b/veejay-current/veejay-server/libvje/transitions/transop.c index c93dc78e..b9f03026 100644 --- a/veejay-current/veejay-server/libvje/transitions/transop.c +++ b/veejay-current/veejay-server/libvje/transitions/transop.c @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 , USA. */ #include -#include +#include #include "transop.h" vj_effect *transop_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/vbar.c b/veejay-current/veejay-server/libvje/transitions/vbar.c index 7f0166ff..0dc6b60d 100644 --- a/veejay-current/veejay-server/libvje/transitions/vbar.c +++ b/veejay-current/veejay-server/libvje/transitions/vbar.c @@ -19,7 +19,7 @@ */ #include -#include +#include #include "vbar.h" vj_effect *vbar_init(int width, int height) diff --git a/veejay-current/veejay-server/libvje/transitions/wipe.c b/veejay-current/veejay-server/libvje/transitions/wipe.c index 45528249..2e2e7c02 100644 --- a/veejay-current/veejay-server/libvje/transitions/wipe.c +++ b/veejay-current/veejay-server/libvje/transitions/wipe.c @@ -18,7 +18,7 @@ */ #include -#include +#include #include "transop.h" #include "wipe.h" diff --git a/veejay-current/veejay-server/libvje/vj-effect.c b/veejay-current/veejay-server/libvje/vj-effect.c index 85b07825..20f0f7d1 100644 --- a/veejay-current/veejay-server/libvje/vj-effect.c +++ b/veejay-current/veejay-server/libvje/vj-effect.c @@ -21,15 +21,16 @@ #include #include #include -#include +#include +#include #include #include #include -#include -#include +#include +#include #include "effects/common.h" #include -#include +#include uint8_t pixel_Y_hi_ = 235; uint8_t pixel_U_hi_ = 240; diff --git a/veejay-current/veejay-server/libvje/vj-effman.c b/veejay-current/veejay-server/libvje/vj-effman.c index 76d490e9..9c03c3ab 100644 --- a/veejay-current/veejay-server/libvje/vj-effman.c +++ b/veejay-current/veejay-server/libvje/vj-effman.c @@ -21,12 +21,13 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include -#include +#include extern vj_effect *vj_effects[]; #define VEVO_PLUG_LIVIDO 0xffaa diff --git a/veejay-current/veejay-server/libvje/vje.h b/veejay-current/veejay-server/libvje/vje.h index a355841c..7677955b 100644 --- a/veejay-current/veejay-server/libvje/vje.h +++ b/veejay-current/veejay-server/libvje/vje.h @@ -37,42 +37,6 @@ typedef struct int ref; } vjp_kf; -typedef struct VJFrame_t -{ - int stride[4]; - uint8_t *data[4]; - int uv_len; - int len; - int uv_width; - int uv_height; - int shift_v; - int shift_h; - int format; - int width; - int height; - int ssm; - int stand; //ccir/jpeg - float fps; - double timecode; -} VJFrame __attribute__((aligned(16))); - -typedef struct VJRectangle_t -{ - int top; - int bottom; - int left; - int right; -} VJRectangle; - -typedef struct VJFrameInfo_t -{ - int width; - int height; - float fps; - int64_t timecode; - uint8_t inverse; -} VJFrameInfo __attribute__((aligned(16))); - typedef struct { char **description; int limit; diff --git a/veejay-current/veejay-server/libvjmsg/Makefile.am b/veejay-current/veejay-server/libvjmsg/Makefile.am deleted file mode 100644 index 7017f393..00000000 --- a/veejay-current/veejay-server/libvjmsg/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -# Makefile for logging/messages - -AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) -if !HAVE_MJPEGTOOLS -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif -AM_CPPFLAGS += $(MJPEGTOOLS_CFLAGS) -AM_CPPFLAGS += $(LIBUNWIND_CFLAGS) - -VJMSG_LIB_FILE = libvjmsg.la -noinst_LTLIBRARIES = $(VJMSG_LIB_FILE) - -pkginclude_HEADERS= vj-msg.h -libvjmsg_la_SOURCES = vj-common.c - diff --git a/veejay-current/veejay-server/libvjxml/vj-xml.c b/veejay-current/veejay-server/libvjxml/vj-xml.c index a9ed67d5..a09afc27 100644 --- a/veejay-current/veejay-server/libvjxml/vj-xml.c +++ b/veejay-current/veejay-server/libvjxml/vj-xml.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include static char *UTF8toLAT1(unsigned char *in) { if (in == NULL) diff --git a/veejay-current/veejay-server/thirdparty/Makefile.am b/veejay-current/veejay-server/thirdparty/Makefile.am index 1f9653dc..b7fb8f7a 100644 --- a/veejay-current/veejay-server/thirdparty/Makefile.am +++ b/veejay-current/veejay-server/thirdparty/Makefile.am @@ -1,12 +1,4 @@ MAINTAINERCLEANFILES=Makefile.in -SUBDIRS = aclib bio2jack libhash liblzo libOSC libresample - -if !HAVE_MJPEGTOOLS -SUBDIRS += mjpegtools -endif - -if HAVE_ARM -SUBDIRS += fastarm -endif +SUBDIRS = bio2jack libOSC libresample diff --git a/veejay-current/veejay-server/thirdparty/bio2jack/Makefile.am b/veejay-current/veejay-server/thirdparty/bio2jack/Makefile.am index a71d04ef..e675c7ea 100644 --- a/veejay-current/veejay-server/thirdparty/bio2jack/Makefile.am +++ b/veejay-current/veejay-server/thirdparty/bio2jack/Makefile.am @@ -1,5 +1,4 @@ AM_CFLAGS=$(OP_CFLAGS) noinst_LTLIBRARIES = libbio2jack4vj.la -AM_CPPFLAGS=-I$(top_srcdir)/libvjmem LIBS = @LIBS@ @PTHREAD_LIBS@ @JACK_LIBS@ libbio2jack4vj_la_SOURCES = bio2jack.c bio2jack.h diff --git a/veejay-current/veejay-server/thirdparty/bio2jack/bio2jack.c b/veejay-current/veejay-server/thirdparty/bio2jack/bio2jack.c index 596d70e3..31ff8bd7 100644 --- a/veejay-current/veejay-server/thirdparty/bio2jack/bio2jack.c +++ b/veejay-current/veejay-server/thirdparty/bio2jack/bio2jack.c @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include "bio2jack.h" /* set to 1 to enable debug messages */ diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/format_codes.h b/veejay-current/veejay-server/thirdparty/mjpegtools/format_codes.h deleted file mode 100644 index 2c958f04..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/format_codes.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - $Id: format_codes.h,v 1.10 2005/12/09 23:07:56 wackston2 Exp $ - - Copyright (C) 2001 Andrew Stevens - - 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 -*/ - -#ifndef __FORMAT_CODES_H__ -#define __FORMAT_CODES_H__ - -#define MPEG_FORMAT_MPEG1 0 -#define MPEG_FORMAT_VCD 1 -#define MPEG_FORMAT_VCD_NSR 2 -#define MPEG_FORMAT_MPEG2 3 -#define MPEG_FORMAT_SVCD 4 -#define MPEG_FORMAT_SVCD_NSR 5 -#define MPEG_FORMAT_VCD_STILL 6 -#define MPEG_FORMAT_SVCD_STILL 7 -#define MPEG_FORMAT_DVD_NAV 8 -#define MPEG_FORMAT_DVD 9 -#define MPEG_FORMAT_ATSC480i 10 -#define MPEG_FORMAT_ATSC480p 11 -#define MPEG_FORMAT_ATSC720p 12 -#define MPEG_FORMAT_ATSC1080i 13 - -#define MPEG_FORMAT_FIRST 0 -#define MPEG_FORMAT_LAST MPEG_FORMAT_ATSC1080i - -#define MPEG_STILLS_FORMAT(x) ((x)==MPEG_FORMAT_VCD_STILL||(x)==MPEG_FORMAT_SVCD_STILL) -#define MPEG_ATSC_FORMAT(x) ((x)>=MPEG_FORMAT_ATSC480i && (x)<=MPEG_FORMAT_ATSC1080i) -#define MPEG_HDTV_FORMAT(x) MPEG_ATSC_FORMAT(x) -#define MPEG_SDTV_FORMAT(x) (!MPEG_HDTV_FORMAT(x)) -#endif /* __FORMAT_CODES_H__ */ diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.h b/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.h deleted file mode 100644 index 9918af48..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - $Id: mjpeg_logging.h,v 1.11 2007/04/01 18:06:06 sms00 Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel - - 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 -*/ - -#ifndef __MJPEG_LOGGING_H__ -#define __MJPEG_LOGGING_H__ - -#include - -/* to avoid changing all the places log_level_t is used */ -typedef int log_level_t; - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) -#define GNUC_PRINTF( format_idx, arg_idx ) \ - __attribute__((format (printf, format_idx, arg_idx))) -#else /* !__GNUC__ */ -#define GNUC_PRINTF( format_idx, arg_idx ) -#endif /* !__GNUC__ */ - -#ifdef __cplusplus -extern "C" { -#endif -void -mjpeg_log(log_level_t level, const char format[], ...) GNUC_PRINTF(2, 3); - -typedef int(*mjpeg_log_filter_t)(log_level_t level); - -typedef void(*mjpeg_log_handler_t)(log_level_t level, const char message[]); - -mjpeg_log_handler_t -mjpeg_log_set_handler(mjpeg_log_handler_t new_handler); - -int -mjpeg_default_handler_identifier(const char *new_id); - -int -mjpeg_default_handler_verbosity(int verbosity); - -void -mjpeg_debug(const char format[], ...) GNUC_PRINTF(1,2); - -void -mjpeg_info(const char format[], ...) GNUC_PRINTF(1,2); - -void -mjpeg_warn(const char format[], ...) GNUC_PRINTF(1,2); - -void -mjpeg_error(const char format[], ...) GNUC_PRINTF(1,2); - -void -mjpeg_error_exit1(const char format[], ...) GNUC_PRINTF(1,2); - -log_level_t -mjpeg_loglev_t(const char *str); - -#ifdef __cplusplus -} -#endif - -#endif /* __MJPEG_LOGGING_H__ */ diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_types.h b/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_types.h deleted file mode 100644 index 88b461c1..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_types.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - $Id: mjpeg_types.h,v 1.16 2006/05/18 18:19:05 sms00 Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel - - 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 -*/ - -#ifndef __MJPEG_TYPES_H__ -#define __MJPEG_TYPES_H__ - -#include /* FreeBSD, others - ssize_t */ -#include -#include - -#endif /* __MJPEG_TYPES_H__ */ diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.h b/veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.h deleted file mode 100644 index 9ea32895..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.h +++ /dev/null @@ -1,171 +0,0 @@ - -/* - * mpegconsts.c: Video format constants for MPEG and utilities for display - * and conversion to format used for yuv4mpeg - * - * Copyright (C) 2001 Andrew Stevens - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * 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. - */ - -#ifndef __MPEGCONSTS_H__ -#define __MPEGCONSTS_H__ - -#include - -typedef unsigned int mpeg_framerate_code_t; -typedef unsigned int mpeg_aspect_code_t; - -#ifdef __cplusplus -#define START_CPP_WRAP extern "C" { -#define END_CPP_WRAP }; -#else -#define START_CPP_WRAP -#define END_CPP_WRAP -#endif - -START_CPP_WRAP - - -/* - * Convert MPEG frame-rate code to corresponding frame-rate - * y4m_fps_UNKNOWN = { 0, 0 } = Undefined/resrerved code. - */ - -y4m_ratio_t -mpeg_framerate( mpeg_framerate_code_t code ); - - -/* - * Is code a valid MPEG frame-rate code? - * Return 1 if true; 0 otherwise. - */ - -int -mpeg_valid_framerate_code( mpeg_framerate_code_t code ); - - -/* - * Look-up MPEG frame rate code for a (exact) frame rate. - * 0 = No MPEG code defined for frame-rate - */ - -mpeg_framerate_code_t -mpeg_framerate_code( y4m_ratio_t framerate ); - - -/* - * Convert floating-point framerate to an exact ratio. - * Uses a standard MPEG rate, if it finds one within MPEG_FPS_TOLERANCE - * (see mpegconsts.c), otherwise uses "fps:1000000" as the ratio. - */ - -y4m_ratio_t -mpeg_conform_framerate( double fps ); - - -/* - * Convert MPEG aspect ratio code to corresponding aspect ratio - * - * WARNING: The semantics of aspect ratio coding *changed* between - * MPEG1 and MPEG2. In MPEG1 it is the *pixel* aspect ratio. In - * MPEG2 it is the (far more sensible) aspect ratio of the eventual - * display. - * - */ - -y4m_ratio_t -mpeg_aspect_ratio( int mpeg_version, mpeg_aspect_code_t code ); - - -/* - * Is code a valid MPEG(1,2) aspect-ratio code? - * Return 1 if true; 0 otherwise. - */ - -int -mpeg_valid_aspect_code( int mpeg_version, mpeg_aspect_code_t code ); - - -/* - * Look-up MPEG aspect ratio code for an aspect ratio - tolerance - * is Y4M_ASPECT_MULT used by YUV4MPEG (see yuv4mpeg_intern.h) - * - * WARNING: The semantics of aspect ratio coding *changed* between - * MPEG1 and MPEG2. In MPEG1 it is the *pixel* aspect ratio. In - * MPEG2 it is the (far more sensible) aspect ratio of the eventual - * display. - * - */ - -mpeg_aspect_code_t -mpeg_frame_aspect_code( int mpeg_version, y4m_ratio_t aspect_ratio ); - -/* - * Look-up MPEG explanatory definition string aspect ratio code for an - * aspect ratio code - * - */ - -const char * -mpeg_aspect_code_definition( int mpeg_version, mpeg_aspect_code_t code ); - -/* - * Look-up MPEG explanatory definition string aspect ratio code for an - * frame rate code - * - */ - -const char * -mpeg_framerate_code_definition( mpeg_framerate_code_t code ); - -const char * -mpeg_interlace_code_definition( int yuv4m_interlace_code ); - - -/* - * Guess the correct MPEG aspect ratio code, - * given the true sample aspect ratio and frame size of a video stream - * (and the MPEG version, 1 or 2). - * - * Returns 0 if it has no good answer. - * - */ -mpeg_aspect_code_t -mpeg_guess_mpeg_aspect_code(int mpeg_version, y4m_ratio_t sampleaspect, - int frame_width, int frame_height); - -/* - * Guess the true sample aspect ratio of a video stream, - * given the MPEG aspect ratio code and the actual frame size - * (and the MPEG version, 1 or 2). - * - * Returns y4m_sar_UNKNOWN if it has no good answer. - * - */ -y4m_ratio_t -mpeg_guess_sample_aspect_ratio(int mpeg_version, - mpeg_aspect_code_t code, - int frame_width, int frame_height); - -/* - * Look-up MJPEGTOOLS MPEG preset format code explanatory definition string a - * - */ -const char *mpeg_format_code_defintion( int format_code ); - -END_CPP_WRAP - -#endif /* __MPEGCONSTS_H__ */ diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.c b/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.c deleted file mode 100644 index 09986739..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2001 Kawamata/Hitoshi - * - * 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. - */ - -#include -#include -#include "mpegtimecode.h" - -/************************************************************** - * // NTSC DROP FRAME TIMECODE / 29.97fps (SMTPE) - * // hh:mm:ss:ff - * // hh: 0.. - * // mm: 0..59 - * // ss: 0..59 - * // ff: 0..29 # ss != 0 || mm % 10 == 0 - * // 2..29 # ss == 0 && mm % 10 != 0 - * // - * // 00:00:00:00 00:00:00:01 00:00:00:02 ... 00:00:00:29 - * // 00:00:01:00 00:00:01:01 00:00:01:02 ... 00:00:01:29 - * // : - * // 00:00:59:00 00:00:59:01 00:00:59:02 ... 00:00:59:29 - * // 00:01:00:02 ... 00:01:00:29 - * // 00:01:01:00 00:01:01:01 00:01:01:02 ... 00:01:00:29 - * // : - * // 00:01:59:00 00:01:59:01 00:01:59:02 ... 00:01:59:29 - * // 00:02:00:02 ... 00:02:00:29 - * // 00:02:01:00 00:02:01:01 00:02:01:02 ... 00:02:00:29 - * // : - * // : - * // 00:09:59:00 00:09:59:01 00:09:59:02 ... 00:09:59:29 - * // 00:10:00:00 00:10:00:01 00:10:00:02 ... 00:10:00:29 - * // 00:10:01:00 00:10:01:01 00:10:01:02 ... 00:10:01:29 - * // : - * // 00:10:59:00 00:10:59:01 00:10:59:02 ... 00:10:59:29 - * // 00:11:00:02 ... 00:11:00:29 - * // 00:11:01:00 00:11:01:01 00:11:01:02 ... 00:11:00:29 - * // : - * // : - * // DROP FRAME / 59.94fps (no any standard) - * // DROP FRAME / 23.976fps (no any standard) - ***************************************************************/ - -int dropframetimecode = -1; - -/* mpeg_timecode() return -tc->f on first frame in the minute, tc->f on other. */ -int -mpeg_timecode(MPEG_timecode_t *tc, int f, int fpscode, double fps) -{ - static const int ifpss[] = { 0, 24, 24, 25, 30, 30, 50, 60, 60, }; - int h, m, s; - - if (dropframetimecode < 0) { - char *env = getenv("MJPEG_DROP_FRAME_TIME_CODE"); - dropframetimecode = (env && *env != '0' && *env != 'n' && *env != 'N'); - } - if (dropframetimecode && - 0 < fpscode && fpscode + 1 < sizeof ifpss / sizeof ifpss[0] && - ifpss[fpscode] == ifpss[fpscode + 1]) { - int topinmin = 0, k = (30*4) / ifpss[fpscode]; - f *= k; /* frame# when 119.88fps */ - h = (f / ((10*60*30-18)*4)); /* # of 10min. */ - f %= ((10*60*30-18)*4); /* frame# in 10min. */ - f -= (2*4); /* frame# in 10min. - (2*4) */ - m = (f / ((60*30-2)*4)); /* min. in 10min. */ - topinmin = ((f - k) / ((60*30-2)*4) < m); - m += (h % 6 * 10); /* min. */ - h /= 6; /* hour */ - f %= ((60*30-2)*4); /* frame# in min. - (2*4)*/ - f += (2*4); /* frame# in min. */ - s = f / (30*4); /* sec. */ - f %= (30*4); /* frame# in sec. */ - f /= k; /* frame# in sec. on original fps */ - tc->f = f; - if (topinmin) - f = -f; - } else { - int ifps = ((0 < fpscode && fpscode < sizeof ifpss / sizeof ifpss[0])? - ifpss[fpscode]: (int)(fps + .5)); - s = f / ifps; - f %= ifps; - m = s / 60; - s %= 60; - h = m / 60; - m %= 60; - tc->f = f; - } - tc->s = s; - tc->m = m; - tc->h = h; - return f; -} diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.h b/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.h deleted file mode 100644 index e702a9b7..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- mode:C -*- */ -/* - * Copyright (C) 2001 Kawamata/Hitoshi - * - * 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. - */ - -#ifndef __MPEGTIMECODE_H__ -#define __MPEGTIMECODE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - char h, m, s, f; -} MPEG_timecode_t; - -extern int dropframetimecode; -extern int mpeg_timecode(MPEG_timecode_t *tc, int f, int fpscode, double fps); -/* mpeg_timecode() return -tc->f on first frame in the minute, tc->f on other. */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/videodev_mjpeg.h b/veejay-current/veejay-server/thirdparty/mjpegtools/videodev_mjpeg.h deleted file mode 100644 index 68fd79c5..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/videodev_mjpeg.h +++ /dev/null @@ -1,118 +0,0 @@ -/* These are the MJPEG API extensions for the Video4Linux API, - first introduced by the Iomega Buz driver by Rainer Johanni - -*/ - -/* This is identical with the mgavideo internal params struct, - please tell me if you change this struct here ! top-field-first */ - - int APPn; /* Number of APP segment to be written, must be 0..15 */ - int APP_len; /* Length of data in JPEG APPn segment */ - char APP_data[60]; /* Data in the JPEG APPn segment. */ - - int COM_len; /* Length of data in JPEG COM segment */ - char COM_data[60]; /* Data in JPEG COM segment */ - - unsigned long jpeg_markers; /* Which markers should go into the JPEG output. - Unless you exactly know what you do, leave them untouched. - Inluding less markers will make the resulting code - smaller, but there will be fewer aplications - which can read it. - The presence of the APP and COM marker is - influenced by APP0_len and COM_len ONLY! */ -#define JPEG_MARKER_DHT (1<<3) /* Define Huffman Tables */ -#define JPEG_MARKER_DQT (1<<4) /* Define Quantization Tables */ -#define JPEG_MARKER_DRI (1<<5) /* Define Restart Interval */ -#define JPEG_MARKER_COM (1<<6) /* Comment segment */ -#define JPEG_MARKER_APP (1<<7) /* App segment, driver will allways use APP0 */ - - int VFIFO_FB; /* Flag for enabling Video Fifo Feedback. - If this flag is turned on and JPEG decompressing - is going to the screen, the decompress process - is stopped every time the Video Fifo is full. - This enables a smooth decompress to the screen - but the video output signal will get scrambled */ - - /* Misc */ - - char reserved[312]; /* Makes 512 bytes for this structure */ -}; - -struct mjpeg_requestbuffers -{ - unsigned long count; /* Number of buffers for MJPEG grabbing */ - unsigned long size; /* Size PER BUFFER in bytes */ -}; - -struct mjpeg_sync -{ - unsigned long frame; /* Frame (0 - n) for double buffer */ - unsigned long length; /* number of code bytes in buffer (capture only) */ - unsigned long seq; /* frame sequence number */ - struct timeval timestamp; /* timestamp */ -}; - -struct mjpeg_status -{ - int input; /* Input channel, has to be set prior to BUZIOC_G_STATUS */ - int signal; /* Returned: 1 if valid video signal detected */ - int norm; /* Returned: VIDEO_MODE_PAL or VIDEO_MODE_NTSC */ - int color; /* Returned: 1 if color signal detected */ -}; - -/* -Private IOCTL to set up for displaying MJPEG -*/ -#define MJPIOC_G_PARAMS _IOR ('v', BASE_VIDIOCPRIVATE+0, struct mjpeg_params) -#define MJPIOC_S_PARAMS _IOWR('v', BASE_VIDIOCPRIVATE+1, struct mjpeg_params) -#define MJPIOC_REQBUFS _IOWR('v', BASE_VIDIOCPRIVATE+2, struct mjpeg_requestbuffers) -#define MJPIOC_QBUF_CAPT _IOW ('v', BASE_VIDIOCPRIVATE+3, int) -#define MJPIOC_QBUF_PLAY _IOW ('v', BASE_VIDIOCPRIVATE+4, int) -#define MJPIOC_SYNC _IOR ('v', BASE_VIDIOCPRIVATE+5, struct mjpeg_sync) -#define MJPIOC_G_STATUS _IOWR('v', BASE_VIDIOCPRIVATE+6, struct mjpeg_status) diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.h b/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.h deleted file mode 100644 index 79a41f64..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.h +++ /dev/null @@ -1,757 +0,0 @@ -/* - * yuv4mpeg.h: Functions for reading and writing "new" YUV4MPEG2 streams. - * - * Stream format is described at the end of this file. - * - * - * Copyright (C) 2004 Matthew J. Marjanovic - * - * - * 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. - */ - -#ifndef __YUV4MPEG_H__ -#define __YUV4MPEG_H__ - -#include -#include -#ifndef _WIN32 -#include -#endif -#include - - -/************************************************************************ - * error codes returned by y4m_* functions - ************************************************************************/ -#define Y4M_OK 0 -#define Y4M_ERR_RANGE 1 /* argument or tag value out of range */ -#define Y4M_ERR_SYSTEM 2 /* failed system call, check errno */ -#define Y4M_ERR_HEADER 3 /* illegal/malformed header */ -#define Y4M_ERR_BADTAG 4 /* illegal tag character */ -#define Y4M_ERR_MAGIC 5 /* bad header magic */ -#define Y4M_ERR_EOF 6 /* end-of-file (clean) */ -#define Y4M_ERR_XXTAGS 7 /* too many xtags */ -#define Y4M_ERR_BADEOF 8 /* unexpected end-of-file */ -#define Y4M_ERR_FEATURE 9 /* stream requires features beyond allowed level */ - - -/* generic 'unknown' value for integer parameters (e.g. interlace, height) */ -#define Y4M_UNKNOWN -1 - -/************************************************************************ - * values for the "interlace" parameter [y4m_*_interlace()] - ************************************************************************/ -#define Y4M_ILACE_NONE 0 /* non-interlaced, progressive frame */ -#define Y4M_ILACE_TOP_FIRST 1 /* interlaced, top-field first */ -#define Y4M_ILACE_BOTTOM_FIRST 2 /* interlaced, bottom-field first */ -#define Y4M_ILACE_MIXED 3 /* mixed, "refer to frame header" */ - -/************************************************************************ - * values for the "chroma" parameter [y4m_*_chroma()] - ************************************************************************/ -#define Y4M_CHROMA_420JPEG 0 /* 4:2:0, H/V centered, for JPEG/MPEG-1 */ -#define Y4M_CHROMA_420MPEG2 1 /* 4:2:0, H cosited, for MPEG-2 */ -#define Y4M_CHROMA_420PALDV 2 /* 4:2:0, alternating Cb/Cr, for PAL-DV */ -#define Y4M_CHROMA_444 3 /* 4:4:4, no subsampling, phew. */ -#define Y4M_CHROMA_422 4 /* 4:2:2, H cosited */ -#define Y4M_CHROMA_411 5 /* 4:1:1, H cosited */ -#define Y4M_CHROMA_MONO 6 /* luma plane only */ -#define Y4M_CHROMA_444ALPHA 7 /* 4:4:4 with an alpha channel */ - -/************************************************************************ - * values for sampling parameters [y4m_*_spatial(), y4m_*_temporal()] - ************************************************************************/ -#define Y4M_SAMPLING_PROGRESSIVE 0 -#define Y4M_SAMPLING_INTERLACED 1 - -/************************************************************************ - * values for "presentation" parameter [y4m_*_presentation()] - ************************************************************************/ -#define Y4M_PRESENT_TOP_FIRST 0 /* top-field-first */ -#define Y4M_PRESENT_TOP_FIRST_RPT 1 /* top-first, repeat top */ -#define Y4M_PRESENT_BOTTOM_FIRST 2 /* bottom-field-first */ -#define Y4M_PRESENT_BOTTOM_FIRST_RPT 3 /* bottom-first, repeat bottom */ -#define Y4M_PRESENT_PROG_SINGLE 4 /* single progressive frame */ -#define Y4M_PRESENT_PROG_DOUBLE 5 /* progressive frame, repeat once */ -#define Y4M_PRESENT_PROG_TRIPLE 6 /* progressive frame, repeat twice */ - -#define Y4M_MAX_NUM_PLANES 4 - -/************************************************************************ - * 'ratio' datatype, for rational numbers - * (see 'ratio' functions down below) - ************************************************************************/ -typedef struct _y4m_ratio { - int n; /* numerator */ - int d; /* denominator */ -} y4m_ratio_t; - - -/************************************************************************ - * useful standard framerates (as ratios) - ************************************************************************/ -extern const y4m_ratio_t y4m_fps_UNKNOWN; -extern const y4m_ratio_t y4m_fps_NTSC_FILM; /* 24000/1001 film (in NTSC) */ -extern const y4m_ratio_t y4m_fps_FILM; /* 24fps film */ -extern const y4m_ratio_t y4m_fps_PAL; /* 25fps PAL */ -extern const y4m_ratio_t y4m_fps_NTSC; /* 30000/1001 NTSC */ -extern const y4m_ratio_t y4m_fps_30; /* 30fps */ -extern const y4m_ratio_t y4m_fps_PAL_FIELD; /* 50fps PAL field rate */ -extern const y4m_ratio_t y4m_fps_NTSC_FIELD; /* 60000/1001 NTSC field rate */ -extern const y4m_ratio_t y4m_fps_60; /* 60fps */ - -/************************************************************************ - * useful standard sample (pixel) aspect ratios (W:H) - ************************************************************************/ -extern const y4m_ratio_t y4m_sar_UNKNOWN; -extern const y4m_ratio_t y4m_sar_SQUARE; /* square pixels */ -extern const y4m_ratio_t y4m_sar_NTSC_CCIR601; /* 525-line (NTSC) Rec.601 */ -extern const y4m_ratio_t y4m_sar_NTSC_16_9; /* 16:9 NTSC/Rec.601 */ -extern const y4m_ratio_t y4m_sar_NTSC_SVCD_4_3; /* NTSC SVCD 4:3 */ -extern const y4m_ratio_t y4m_sar_NTSC_SVCD_16_9;/* NTSC SVCD 16:9 */ -extern const y4m_ratio_t y4m_sar_PAL_CCIR601; /* 625-line (PAL) Rec.601 */ -extern const y4m_ratio_t y4m_sar_PAL_16_9; /* 16:9 PAL/Rec.601 */ -extern const y4m_ratio_t y4m_sar_PAL_SVCD_4_3; /* PAL SVCD 4:3 */ -extern const y4m_ratio_t y4m_sar_PAL_SVCD_16_9; /* PAL SVCD 16:9 */ -extern const y4m_ratio_t y4m_sar_SQR_ANA16_9; /* anamorphic 16:9 sampled */ - /* from 4:3 with square pixels */ - -/************************************************************************ - * useful standard display aspect ratios (W:H) - ************************************************************************/ -extern const y4m_ratio_t y4m_dar_UNKNOWN; -extern const y4m_ratio_t y4m_dar_4_3; /* standard TV */ -extern const y4m_ratio_t y4m_dar_16_9; /* widescreen TV */ -extern const y4m_ratio_t y4m_dar_221_100; /* word-to-your-mother TV */ - - -#define Y4M_MAX_XTAGS 32 /* maximum number of xtags in list */ -#define Y4M_MAX_XTAG_SIZE 32 /* max length of an xtag (including 'X') */ - -typedef struct _y4m_xtag_list y4m_xtag_list_t; -typedef struct _y4m_stream_info y4m_stream_info_t; -typedef struct _y4m_frame_info y4m_frame_info_t; - - -#ifdef __cplusplus -#define BEGIN_CDECLS extern "C" { -#define END_CDECLS } -#else -#define BEGIN_CDECLS -#define END_CDECLS -#endif - -BEGIN_CDECLS - -/************************************************************************ - * 'ratio' functions - ************************************************************************/ - -/* 'normalize' a ratio (remove common factors) */ -void y4m_ratio_reduce(y4m_ratio_t *r); - -/* parse "nnn:ddd" into a ratio (returns Y4M_OK or Y4M_ERR_RANGE) */ -int y4m_parse_ratio(y4m_ratio_t *r, const char *s); - -/* quick test of two ratios for equality (i.e. identical components) */ -#define Y4M_RATIO_EQL(a,b) ( ((a).n == (b).n) && ((a).d == (b).d) ) - -/* quick conversion of a ratio to a double (no divide-by-zero check!) */ -#define Y4M_RATIO_DBL(r) ((double)(r).n / (double)(r).d) - -/************************************************************************* - * - * Guess the true SAR (sample aspect ratio) from a list of commonly - * encountered values, given the "suggested" display aspect ratio (DAR), - * and the true frame width and height. - * - * Returns y4m_sar_UNKNOWN if no match is found. - * - *************************************************************************/ -y4m_ratio_t y4m_guess_sar(int width, int height, y4m_ratio_t dar); - - -/************************************************************************* - * - * Chroma Subsampling Mode information - * - * x_ratio, y_ratio - subsampling of chroma planes - * x_offset, y_offset - offset of chroma sample grid, - * relative to luma (0,0) sample - * - *************************************************************************/ - -y4m_ratio_t y4m_chroma_ss_x_ratio(int chroma_mode); -y4m_ratio_t y4m_chroma_ss_y_ratio(int chroma_mode); -#if 0 -y4m_ratio_t y4m_chroma_ss_x_offset(int chroma_mode, int field, int plane); -y4m_ratio_t y4m_chroma_ss_y_offset(int chroma_mode, int field, int plane); -#endif - -/* Given a string containing a (case-insensitive) chroma-tag keyword, - return appropriate chroma mode (or Y4M_UNKNOWN) */ -int y4m_chroma_parse_keyword(const char *s); - -/* Given a Y4M_CHROMA_* mode, return appropriate chroma-tag keyword, - or NULL if there is none. */ -const char *y4m_chroma_keyword(int chroma_mode); - -/* Given a Y4M_CHROMA_* mode, return appropriate chroma mode description, - or NULL if there is none. */ -const char *y4m_chroma_description(int chroma_mode); - - - -/************************************************************************ - * 'xtag' functions - * - * o Before using an xtag_list (but after the structure/memory has been - * allocated), you must initialize it via y4m_init_xtag_list(). - * o After using an xtag_list (but before the structure is released), - * call y4m_fini_xtag_list() to free internal memory. - * - ************************************************************************/ - -/* initialize an xtag_list structure */ -void y4m_init_xtag_list(y4m_xtag_list_t *xtags); - -/* finalize an xtag_list structure */ -void y4m_fini_xtag_list(y4m_xtag_list_t *xtags); - -/* make one xtag_list into a copy of another */ -void y4m_copy_xtag_list(y4m_xtag_list_t *dest, const y4m_xtag_list_t *src); - -/* return number of tags in an xtag_list */ -int y4m_xtag_count(const y4m_xtag_list_t *xtags); - -/* access n'th tag in an xtag_list */ -const char *y4m_xtag_get(const y4m_xtag_list_t *xtags, int n); - -/* append a new tag to an xtag_list - returns: Y4M_OK - success - Y4M_ERR_XXTAGS - list is already full */ -int y4m_xtag_add(y4m_xtag_list_t *xtags, const char *tag); - -/* remove a tag from an xtag_list - returns: Y4M_OK - success - Y4M_ERR_RANGE - n is out of range */ -int y4m_xtag_remove(y4m_xtag_list_t *xtags, int n); - -/* remove all tags from an xtag_list - returns: Y4M_OK - success */ -int y4m_xtag_clearlist(y4m_xtag_list_t *xtags); - -/* append copies of tags from src list to dest list - returns: Y4M_OK - success - Y4M_ERR_XXTAGS - operation would overfill dest list */ -int y4m_xtag_addlist(y4m_xtag_list_t *dest, const y4m_xtag_list_t *src); - - - -/************************************************************************ - * '*_info' functions - * - * o Before using a *_info structure (but after the structure/memory has - * been allocated), you must initialize it via y4m_init_*_info(). - * o After using a *_info structure (but before the structure is released), - * call y4m_fini_*_info() to free internal memory. - * o Use the 'set' and 'get' accessors to modify or access the fields in - * the structures; don't touch the structure directly. (Ok, so there - * is no really convenient C syntax to prevent you from doing this, - * but we are all responsible programmers here, so just don't do it!) - * - ************************************************************************/ - -/* initialize a stream_info structure */ -void y4m_init_stream_info(y4m_stream_info_t *i); - -/* finalize a stream_info structure */ -void y4m_fini_stream_info(y4m_stream_info_t *i); - -/* reset stream_info back to default/unknown values */ -void y4m_clear_stream_info(y4m_stream_info_t *info); - -/* make one stream_info into a copy of another */ -void y4m_copy_stream_info(y4m_stream_info_t *dest, - const y4m_stream_info_t *src); - -/* access or set stream_info fields */ -/* level 0 */ -int y4m_si_get_width(const y4m_stream_info_t *si); -int y4m_si_get_height(const y4m_stream_info_t *si); -int y4m_si_get_interlace(const y4m_stream_info_t *si); -y4m_ratio_t y4m_si_get_framerate(const y4m_stream_info_t *si); -y4m_ratio_t y4m_si_get_sampleaspect(const y4m_stream_info_t *si); -void y4m_si_set_width(y4m_stream_info_t *si, int width); -void y4m_si_set_height(y4m_stream_info_t *si, int height); -void y4m_si_set_interlace(y4m_stream_info_t *si, int interlace); -void y4m_si_set_framerate(y4m_stream_info_t *si, y4m_ratio_t framerate); -void y4m_si_set_sampleaspect(y4m_stream_info_t *si, y4m_ratio_t sar); -/* level 1 */ -void y4m_si_set_chroma(y4m_stream_info_t *si, int chroma_mode); -int y4m_si_get_chroma(const y4m_stream_info_t *si); - -/* derived quantities (no setter) */ -/* level 0 */ -int y4m_si_get_framelength(const y4m_stream_info_t *si); -/* level 1 */ -int y4m_si_get_plane_count(const y4m_stream_info_t *si); -int y4m_si_get_plane_width(const y4m_stream_info_t *si, int plane); -int y4m_si_get_plane_height(const y4m_stream_info_t *si, int plane); -int y4m_si_get_plane_length(const y4m_stream_info_t *si, int plane); - - -/* access stream_info xtag_list */ -y4m_xtag_list_t *y4m_si_xtags(y4m_stream_info_t *si); - - -/* initialize a frame_info structure */ -void y4m_init_frame_info(y4m_frame_info_t *i); - -/* finalize a frame_info structure */ -void y4m_fini_frame_info(y4m_frame_info_t *i); - -/* reset frame_info back to default/unknown values */ -void y4m_clear_frame_info(y4m_frame_info_t *info); - -/* make one frame_info into a copy of another */ -void y4m_copy_frame_info(y4m_frame_info_t *dest, - const y4m_frame_info_t *src); - - -/* access or set frame_info fields (level 1) */ -int y4m_fi_get_presentation(const y4m_frame_info_t *fi); -int y4m_fi_get_temporal(const y4m_frame_info_t *fi); -int y4m_fi_get_spatial(const y4m_frame_info_t *fi); - -void y4m_fi_set_presentation(y4m_frame_info_t *fi, int pres); -void y4m_fi_set_temporal(y4m_frame_info_t *fi, int sampling); -void y4m_fi_set_spatial(y4m_frame_info_t *fi, int sampling); - - -/* access frame_info xtag_list */ -y4m_xtag_list_t *y4m_fi_xtags(y4m_frame_info_t *fi); - - -/************************************************************************ - * blocking read and write functions - * - * o guaranteed to transfer entire payload (or fail) - * o return values: - * 0 (zero) complete success - * -(# of remaining bytes) error (and errno left set) - * +(# of remaining bytes) EOF (for y4m_read only) - * - ************************************************************************/ - -/* read len bytes from fd into buf */ -ssize_t y4m_read(int fd, void *buf, size_t len); - -/* write len bytes from fd into buf */ -ssize_t y4m_write(int fd, const void *buf, size_t len); - -/************************************************************************ - * callback based read and write - * - * The structures y4m_cb_reader_t and y4m_cb_writer_t must be - * set up by the caller before and of the *_read_*_cb() or - * *_write_*_cb() functions are called. Te return values of - * the read() and write() members have the same meaning as for - * y4m_read() and y4m_write() - * - ************************************************************************/ - -typedef struct y4m_cb_reader_s - { - void * data; - ssize_t (*read)(void * data, void *buf, size_t len); - } y4m_cb_reader_t; - -typedef struct y4m_cb_writer_s - { - void * data; - ssize_t (*write)(void * data, const void *buf, size_t len); - } y4m_cb_writer_t; - -/* read len bytes from fd into buf */ -ssize_t y4m_read_cb(y4m_cb_reader_t * fd, void *buf, size_t len); - -/* write len bytes from fd into buf */ -ssize_t y4m_write_cb(y4m_cb_writer_t * fd, const void *buf, size_t len); - - -/************************************************************************ - * stream header processing functions - * - * o return values: - * Y4M_OK - success - * Y4M_ERR_* - error (see y4m_strerr() for descriptions) - * - ************************************************************************/ - -/* parse a string of stream header tags */ -int y4m_parse_stream_tags(char *s, y4m_stream_info_t *i); - -/* read a stream header from file descriptor fd - (the current contents of stream_info are erased first) */ -int y4m_read_stream_header(int fd, y4m_stream_info_t *i); - -/* read a stream header with a callback reader - (the current contents of stream_info are erased first) */ -int y4m_read_stream_header_cb(y4m_cb_reader_t * fd, y4m_stream_info_t *i); - -/* write a stream header to file descriptor fd */ -int y4m_write_stream_header(int fd, const y4m_stream_info_t *i); - -/* write a stream header with a callback writer */ -int y4m_write_stream_header_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *i); - - -/************************************************************************ - * frame processing functions - * - * o return values: - * Y4M_OK - success - * Y4M_ERR_* - error (see y4m_strerr() for descriptions) - * - ************************************************************************/ - -/* write a frame header to file descriptor fd */ -int y4m_write_frame_header(int fd, - const y4m_stream_info_t *si, - const y4m_frame_info_t *fi); - -/* write a frame header with a callback writer fd */ -int y4m_write_frame_header_cb(y4m_cb_writer_t * fd, - const y4m_stream_info_t *si, - const y4m_frame_info_t *fi); - -/* write a complete frame (header + data) to file descriptor fd - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_write_frame(int fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, uint8_t * const *planes); - -/* write a complete frame (header + data) with a callback writer fd - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_write_frame_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, uint8_t * const *planes); - -/* write a complete frame (header + data), to file descriptor fd - but interleave fields from two separate buffers - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_write_fields(int fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/* write a complete frame (header + data), with a callback writer fd - but interleave fields from two separate buffers - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_write_fields_cb(y4m_cb_writer_t * fd, const y4m_stream_info_t *si, - const y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/* read a frame header from file descriptor fd - (the current contents of frame_info are erased first) */ -int y4m_read_frame_header(int fd, - const y4m_stream_info_t *si, - y4m_frame_info_t *fi); - -/* read a frame header with callback reader fd - (the current contents of frame_info are erased first) */ -int y4m_read_frame_header_cb(y4m_cb_reader_t * fd, - const y4m_stream_info_t *si, - y4m_frame_info_t *fi); - -/* read frame data from file descriptor fd - [to be called after y4m_read_frame_header()] - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_read_frame_data(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *planes); - -/* read frame data with callback reader fd - [to be called after y4m_read_frame_header_cb()] - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_read_frame_data_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *planes); - -/* read frame data from file descriptor fd, - but de-interleave fields into two separate buffers - [to be called after y4m_read_frame_header()] - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_read_fields_data(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/* read frame data with callback reader fd, - but de-interleave fields into two separate buffers - [to be called after y4m_read_frame_header_cb()] - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_read_fields_data_cb(y4m_cb_reader_t * fd, - const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/* read a complete frame (header + data) from file descriptor fd, - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_read_frame(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *planes); - -/* read a complete frame (header + data) from callback reader fd, - o planes[] points to 1-4 buffers, one each for image plane */ -int y4m_read_frame_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, uint8_t * const *planes); - -/* read a complete frame (header + data) from file descriptor fd, - but de-interleave fields into two separate buffers - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_read_fields(int fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/* read a complete frame (header + data) from callback_reader fd, - but de-interleave fields into two separate buffers - o upper_field[] same as planes[] above, but for upper field only - o lower_field[] same as planes[] above, but for lower field only -*/ -int y4m_read_fields_cb(y4m_cb_reader_t * fd, const y4m_stream_info_t *si, - y4m_frame_info_t *fi, - uint8_t * const *upper_field, - uint8_t * const *lower_field); - -/************************************************************************ - * miscellaneous functions - ************************************************************************/ - -/* convenient dump of stream header info via mjpeg_log facility - * - each logged/printed line is prefixed by 'prefix' - */ -void y4m_log_stream_info(log_level_t level, const char *prefix, - const y4m_stream_info_t *i); - -/* convert a Y4M_ERR_* error code into mildly explanatory string */ -const char *y4m_strerr(int err); - -/* set 'allow_unknown_tag' flag for library... - o yn = 0 : unknown header tags will produce a parsing error - o yn = 1 : unknown header tags/values will produce a warning, but - are otherwise passed along via the xtags list - o yn = -1: don't change, just return current setting - - return value: previous setting of flag -*/ -int y4m_allow_unknown_tags(int yn); - - -/* set level of "accepted extensions" for the library... - o level = 0: default - conform to original YUV4MPEG2 spec; yield errors - when reading or writing a stream which exceeds it. - o level = 1: allow reading/writing streams which contain non-420jpeg - chroma and/or mixed-mode interlacing - o level = -1: don't change, just return current setting - - return value: previous setting of level - */ -int y4m_accept_extensions(int level); - - -END_CDECLS - - -/************************************************************************ - ************************************************************************ - - Description of the (new!, forever?) YUV4MPEG2 stream format: - - STREAM consists of - o one '\n' terminated STREAM-HEADER - o unlimited number of FRAMEs - - FRAME consists of - o one '\n' terminated FRAME-HEADER - o "length" octets of planar YCrCb 4:2:0 image data - (if frame is interlaced, then the two fields are interleaved) - - - STREAM-HEADER consists of - o string "YUV4MPEG2" - o unlimited number TAGGED-FIELDs, each preceded by ' ' separator - o '\n' line terminator - - FRAME-HEADER consists of - o string "FRAME" - o unlimited number of TAGGED-FIELDs, each preceded by ' ' separator - o '\n' line terminator - - - TAGGED-FIELD consists of - o single ascii character tag - o VALUE (which does not contain whitespace) - - VALUE consists of - o integer (base 10 ascii representation) - or o RATIO - or o single ascii character - or o non-whitespace ascii string - - RATIO consists of - o numerator (integer) - o ':' (a colon) - o denominator (integer) - - - The currently supported tags for the STREAM-HEADER: - W - [integer] frame width, pixels, should be > 0 - H - [integer] frame height, pixels, should be > 0 - C - [string] chroma-subsampling/data format - 420jpeg (default) - 420mpeg2 - 420paldv - 411 - 422 - 444 - non-subsampled Y'CbCr - 444alpha - Y'CbCr with alpha channel (with Y' black/white point) - mono - Y' plane only - I - [char] interlacing: p - progressive (none) - t - top-field-first - b - bottom-field-first - m - mixed -- see 'I' tag in frame header - ? - unknown - F - [ratio] frame-rate, 0:0 == unknown - A - [ratio] sample (pixel) aspect ratio, 0:0 == unknown - X - [character string] 'metadata' (unparsed, but passed around) - - The currently supported tags for the FRAME-HEADER: - Ixyz - framing/sampling (required if-and-only-if stream is "Im") - x: t - top-field-first - T - top-field-first and repeat - b - bottom-field-first - B - bottom-field-first and repeat - 1 - single progressive frame - 2 - double progressive frame (repeat) - 3 - triple progressive frame (repeat twice) - - y: p - progressive: fields sampled at same time - i - interlaced: fields sampled at different times - - z: p - progressive: subsampling over whole frame - i - interlaced: each field subsampled independently - ? - unknown (allowed only for non-4:2:0 subsampling) - - X - character string 'metadata' (unparsed, but passed around) - - ************************************************************************ - ************************************************************************/ - - -/* - - THAT'S ALL FOLKS! - - Thank you for reading the source code. We hope you have thoroughly - enjoyed the experience. - -*/ - - - - - -#ifdef INTERNAL_Y4M_LIBCODE_STUFF_QPX -#define Y4MPRIVATIZE(identifier) identifier -#else -#define Y4MPRIVATIZE(identifier) PRIVATE##identifier -#endif - -/* - * Actual structure definitions of structures which you shouldn't touch. - * - */ - -/************************************************************************ - * 'xtag_list' --- list of unparsed and/or meta/X header tags - * - * Do not touch this structure directly! - * - * Use the y4m_xtag_*() functions (see below). - * You must initialize/finalize this structure before/after use. - ************************************************************************/ -struct _y4m_xtag_list { - int Y4MPRIVATIZE(count); - char *Y4MPRIVATIZE(tags)[Y4M_MAX_XTAGS]; -}; - - -/************************************************************************ - * 'stream_info' --- stream header information - * - * Do not touch this structure directly! - * - * Use the y4m_si_*() functions (see below). - * You must initialize/finalize this structure before/after use. - ************************************************************************/ -struct _y4m_stream_info { - /* values from header/setters */ - int Y4MPRIVATIZE(width); - int Y4MPRIVATIZE(height); - int Y4MPRIVATIZE(interlace); /* see Y4M_ILACE_* definitions */ - y4m_ratio_t Y4MPRIVATIZE(framerate); /* see Y4M_FPS_* definitions */ - y4m_ratio_t Y4MPRIVATIZE(sampleaspect); /* see Y4M_SAR_* definitions */ - int Y4MPRIVATIZE(chroma); /* see Y4M_CHROMA_* definitions */ - - /* mystical X tags */ - y4m_xtag_list_t Y4MPRIVATIZE(x_tags); -}; - - -/************************************************************************ - * 'frame_info' --- frame header information - * - * Do not touch this structure directly! - * - * Use the y4m_fi_*() functions (see below). - * You must initialize/finalize this structure before/after use. - ************************************************************************/ - -struct _y4m_frame_info { - int Y4MPRIVATIZE(spatial); /* see Y4M_SAMPLING_* definitions */ - int Y4MPRIVATIZE(temporal); /* see Y4M_SAMPLING_* definitions */ - int Y4MPRIVATIZE(presentation); /* see Y4M_PRESENT_* definitions */ - /* mystical X tags */ - y4m_xtag_list_t Y4MPRIVATIZE(x_tags); -}; - - -#undef Y4MPRIVATIZE - - -#endif /* __YUV4MPEG_H__ */ - - diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_intern.h b/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_intern.h deleted file mode 100644 index 3ada1cba..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_intern.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * yuv4mpeg_intern.h: Internal constants for "new" YUV4MPEG streams - * - * Copyright (C) 2001 Andrew Stevens - * Copyright (C) 2001 Matthew J. Marjanovic - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * 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. - */ - -#ifndef __YUV4MPEG_INTERN_H__ -#define __YUV4MPEG_INTERN_H__ - - -#define Y4M_MAGIC "YUV4MPEG2" -#define Y4M_FRAME_MAGIC "FRAME" - -#define Y4M_DELIM " " /* single-character(space) separating tagged fields */ - -#define Y4M_LINE_MAX 256 /* max number of characters in a header line - (including the '\n', but not the '\0') */ - - -/* standard framerate ratios */ -#define Y4M_FPS_UNKNOWN { 0, 0 } -#define Y4M_FPS_NTSC_FILM { 24000, 1001 } -#define Y4M_FPS_FILM { 24, 1 } -#define Y4M_FPS_PAL { 25, 1 } -#define Y4M_FPS_NTSC { 30000, 1001 } -#define Y4M_FPS_30 { 30, 1 } -#define Y4M_FPS_PAL_FIELD { 50, 1 } -#define Y4M_FPS_NTSC_FIELD { 60000, 1001 } -#define Y4M_FPS_60 { 60, 1 } - -/* standard sample/pixel aspect ratios */ -#define Y4M_SAR_UNKNOWN { 0, 0 } -#define Y4M_SAR_SQUARE { 1, 1 } -#define Y4M_SAR_SQR_ANA_16_9 { 4, 3 } -#define Y4M_SAR_NTSC_CCIR601 { 10, 11 } -#define Y4M_SAR_NTSC_16_9 { 40, 33 } -#define Y4M_SAR_NTSC_SVCD_4_3 { 15, 11 } -#define Y4M_SAR_NTSC_SVCD_16_9 { 20, 11 } -#define Y4M_SAR_PAL_CCIR601 { 59, 54 } -#define Y4M_SAR_PAL_16_9 { 118, 81 } -#define Y4M_SAR_PAL_SVCD_4_3 { 59, 36 } -#define Y4M_SAR_PAL_SVCD_16_9 { 59, 27 } - -#define Y4M_SAR_MPEG1_1 Y4M_SAR_SQUARE -#define Y4M_SAR_MPEG1_2 { 10000, 6735 } -#define Y4M_SAR_MPEG1_3 { 10000, 7031 } /* Anamorphic 16:9 PAL */ -#define Y4M_SAR_MPEG1_4 { 10000, 7615 } -#define Y4M_SAR_MPEG1_5 { 10000, 8055 } -#define Y4M_SAR_MPEG1_6 { 10000, 8437 } /* Anamorphic 16:9 NTSC */ -#define Y4M_SAR_MPEG1_7 { 10000, 8935 } -#define Y4M_SAR_MPEG1_8 { 10000, 9375 } /* PAL/SECAM 4:3 */ -#define Y4M_SAR_MPEG1_9 { 10000, 9815 } -#define Y4M_SAR_MPEG1_10 { 10000, 10255 } -#define Y4M_SAR_MPEG1_11 { 10000, 10695 } -#define Y4M_SAR_MPEG1_12 { 10000, 11250 } /* NTSC 4:3 */ -#define Y4M_SAR_MPEG1_13 { 10000, 11575 } -#define Y4M_SAR_MPEG1_14 { 10000, 12015 } - -#define Y4M_DAR_UNKNOWN { 0, 0 } -#define Y4M_DAR_4_3 { 4, 3 } -#define Y4M_DAR_16_9 { 16, 9 } -#define Y4M_DAR_221_100 { 221, 100 } - -#define Y4M_DAR_MPEG2_1 { 1, 1 } -#define Y4M_DAR_MPEG2_2 { 4, 3 } -#define Y4M_DAR_MPEG2_3 { 16, 9 } -#define Y4M_DAR_MPEG2_4 { 221, 100 } - -#endif /* __YUV4MPEG_INTERN_H__ */ - diff --git a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_ratio.c b/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_ratio.c deleted file mode 100644 index 7b50578c..00000000 --- a/veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_ratio.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * yuv4mpeg_ratio.c: Functions for dealing with y4m_ratio_t datatype. - * - * Copyright (C) 2001 Matthew J. Marjanovic - * - * - * 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. - * - */ - -#include - -#include -#include "yuv4mpeg.h" -#include "yuv4mpeg_intern.h" - - -/* useful list of standard framerates */ -const y4m_ratio_t y4m_fps_UNKNOWN = Y4M_FPS_UNKNOWN; -const y4m_ratio_t y4m_fps_NTSC_FILM = Y4M_FPS_NTSC_FILM; -const y4m_ratio_t y4m_fps_FILM = Y4M_FPS_FILM; -const y4m_ratio_t y4m_fps_PAL = Y4M_FPS_PAL; -const y4m_ratio_t y4m_fps_NTSC = Y4M_FPS_NTSC; -const y4m_ratio_t y4m_fps_30 = Y4M_FPS_30; -const y4m_ratio_t y4m_fps_PAL_FIELD = Y4M_FPS_PAL_FIELD; -const y4m_ratio_t y4m_fps_NTSC_FIELD = Y4M_FPS_NTSC_FIELD; -const y4m_ratio_t y4m_fps_60 = Y4M_FPS_60; - -/* useful list of standard sample aspect ratios */ -const y4m_ratio_t y4m_sar_UNKNOWN = Y4M_SAR_UNKNOWN; -const y4m_ratio_t y4m_sar_SQUARE = Y4M_SAR_SQUARE; -const y4m_ratio_t y4m_sar_SQR_ANA_16_9 = Y4M_SAR_SQR_ANA_16_9; -const y4m_ratio_t y4m_sar_NTSC_CCIR601 = Y4M_SAR_NTSC_CCIR601; -const y4m_ratio_t y4m_sar_NTSC_16_9 = Y4M_SAR_NTSC_16_9; -const y4m_ratio_t y4m_sar_NTSC_SVCD_4_3 = Y4M_SAR_NTSC_SVCD_4_3; -const y4m_ratio_t y4m_sar_NTSC_SVCD_16_9 = Y4M_SAR_NTSC_SVCD_16_9; -const y4m_ratio_t y4m_sar_PAL_CCIR601 = Y4M_SAR_PAL_CCIR601; -const y4m_ratio_t y4m_sar_PAL_16_9 = Y4M_SAR_PAL_16_9; -const y4m_ratio_t y4m_sar_PAL_SVCD_4_3 = Y4M_SAR_PAL_SVCD_4_3; -const y4m_ratio_t y4m_sar_PAL_SVCD_16_9 = Y4M_SAR_PAL_SVCD_16_9; - -/* useful list of standard display aspect ratios */ -const y4m_ratio_t y4m_dar_UNKNOWN = Y4M_DAR_UNKNOWN; -const y4m_ratio_t y4m_dar_4_3 = Y4M_DAR_4_3; -const y4m_ratio_t y4m_dar_16_9 = Y4M_DAR_16_9; -const y4m_ratio_t y4m_dar_221_100 = Y4M_DAR_221_100; - -/* - * Euler's algorithm for greatest common divisor - */ - -static int gcd(int a, int b) -{ - a = (a >= 0) ? a : -a; - b = (b >= 0) ? b : -b; - - while (b > 0) { - int x = b; - b = a % b; - a = x; - } - return a; -} - - -/************************************************************************* - * - * Remove common factors from a ratio - * - *************************************************************************/ - - -void y4m_ratio_reduce(y4m_ratio_t *r) -{ - int d; - if ((r->n == 0) && (r->d == 0)) return; /* "unknown" */ - d = gcd(r->n, r->d); - r->n /= d; - r->d /= d; -} - - - -/************************************************************************* - * - * Parse "nnn:ddd" into a ratio - * - * returns: Y4M_OK - success - * Y4M_ERR_RANGE - range error - * - *************************************************************************/ - -int y4m_parse_ratio(y4m_ratio_t *r, const char *s) -{ - char *t = strchr(s, ':'); - if (t == NULL) return Y4M_ERR_RANGE; - r->n = atoi(s); - r->d = atoi(t+1); - if (r->d < 0) return Y4M_ERR_RANGE; - /* 0:0 == unknown, so that is ok, otherwise zero denominator is bad */ - if ((r->d == 0) && (r->n != 0)) return Y4M_ERR_RANGE; - y4m_ratio_reduce(r); - return Y4M_OK; -} - - - -/************************************************************************* - * - * Guess the true SAR (sample aspect ratio) from a list of commonly - * encountered values, given the "suggested" display aspect ratio, and - * the true frame width and height. - * - * Returns y4m_sar_UNKNOWN if no match is found. - * - *************************************************************************/ - -/* this is big enough to accommodate the difference between 720 and 704 */ -#define GUESS_ASPECT_TOLERANCE 0.03 - -y4m_ratio_t y4m_guess_sar(int width, int height, y4m_ratio_t dar) -{ - int i; - double implicit_sar = (double)(dar.n * height) / (double)(dar.d * width); - const y4m_ratio_t *sarray[] = - { - &y4m_sar_SQUARE, - &y4m_sar_NTSC_CCIR601, - &y4m_sar_NTSC_16_9, - &y4m_sar_NTSC_SVCD_4_3, - &y4m_sar_NTSC_SVCD_16_9, - &y4m_sar_PAL_CCIR601, - &y4m_sar_PAL_16_9, - &y4m_sar_PAL_SVCD_4_3, - &y4m_sar_PAL_SVCD_16_9, - &y4m_sar_UNKNOWN - }; - for (i = 0; !(Y4M_RATIO_EQL(*(sarray[i]),y4m_sar_UNKNOWN)); i++) { - double ratio = implicit_sar / Y4M_RATIO_DBL(*(sarray[i])); - if ( (ratio > (1.0 - GUESS_ASPECT_TOLERANCE)) && - (ratio < (1.0 + GUESS_ASPECT_TOLERANCE)) ) - return *(sarray[i]); - } - return y4m_sar_UNKNOWN; -} diff --git a/veejay-current/veejay-server/veejay/Makefile.am b/veejay-current/veejay-server/veejay/Makefile.am index fea78e1e..102a1630 100644 --- a/veejay-current/veejay-server/veejay/Makefile.am +++ b/veejay-current/veejay-server/veejay/Makefile.am @@ -1,63 +1,30 @@ # Makefile for veejay -SUBDIRS = \ - ../thirdparty/aclib \ - ../thirdparty/bio2jack \ - ../thirdparty/libhash \ - ../thirdparty/liblzo \ - ../thirdparty/libOSC \ - ../thirdparty/libresample \ - ../libvjmsg \ - ../libvjmem \ - ../libvjxml \ - ../libqrwrap \ - ../libvevo \ - ../libvje \ - ../libplugger \ - ../libsample \ - ../libvjnet \ - ../libsubsample \ - ../libyuv \ - ../libel \ - ../libstream \ - ../libsamplerec \ - . - AM_CFLAGS = $(OP_CFLAGS) MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \ -DG_LOG_DOMAIN=\"veejay\" -DVEEJAY_VERSION=\"$(VERSION)\" -if !HAVE_MJPEGTOOLS -AM_CPPFLAGS += -I$(top_srcdir)/thirdparty/mjpegtools -endif - AM_CPPFLAGS += -I /usr/X11R6/include \ -I$(top_srcdir)/thirdparty \ -I$(top_srcdir)/libvje \ -I$(top_srcdir)/libplugger \ - -I$(top_srcdir)/libvjmem \ - -I$(top_srcdir)/libvjmsg \ - -I$(top_srcdir)/libvjnet \ -I$(top_srcdir)/libel \ -I$(top_srcdir)/libstream \ -I$(top_srcdir)/libsubsample \ - -I$(top_scrdir)/libyuv \ -I$(top_srcdir)/libsamplerec \ - -I$(top_srcdir)/libvevo \ -I$(top_srcdir)/libqrwrap \ -I$(top_srcdir)/libvjxml \ - $(FFMPEG_CFLAGS) $(LIBQUICKTIME_CFLAGS) $(FT_CFLAGS) $(MJPEGTOOLS_CFLAGS) $(GLIB_CFLAGS) \ + $(FFMPEG_CFLAGS) $(LIBQUICKTIME_CFLAGS) $(FT_CFLAGS) $(GLIB_CFLAGS) \ $(AVIPLAY_CFLAGS) $(XML2_CFLAGS) $(DV_FLAGS) $(X_CFLAGS) $(LIBLO_CFLAGS) \ - $(DIRECTFB_CFLAGS) $(SDL_CFLAGS) $(SDL_TTF_CFLAGS) $(JPEG_CFLAGS) $(JACK_CFLAGS) $(LIBUNWIND_CFLAGS) $(PTHREAD_CFLAGS) $(LIBQRENCODE_CFLAGS) - -pkginclude_HEADERS = vims.h + $(DIRECTFB_CFLAGS) $(SDL_CFLAGS) $(SDL_TTF_CFLAGS) $(JPEG_CFLAGS) $(JACK_CFLAGS) \ + $(LIBUNWIND_CFLAGS) $(PTHREAD_CFLAGS) $(LIBQRENCODE_CFLAGS) $(VEEJAYCORE_CFLAGS) VEEJAY_LIB_FILE = libveejay.la lib_LTLIBRARIES = $(VEEJAY_LIB_FILE) -libveejay_la_SOURCES = jpegutils.c vj-misc.c vj-task.c \ +libveejay_la_SOURCES = jpegutils.c vj-misc.c \ vj-osc.c vjkf.c vj-macro.c vj-event.c vj-eventman.c vj-perform.c \ x11misc.c vj-shm.c vj-sdl.c vj-sdl-font.c vj-dfb.c vj-viewport.c vj-composite.c \ vj-font.c vj-pjack.c vj-share.c vj-split.c liblavplayvj.c @@ -67,59 +34,38 @@ libveejay_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ libveejay_la_LIBADD = \ - $(top_builddir)/thirdparty/aclib/libac.la \ $(top_builddir)/thirdparty/bio2jack/libbio2jack4vj.la \ - $(top_builddir)/thirdparty/libhash/libhash.la \ - $(top_builddir)/thirdparty/liblzo/libvjlzo.la \ $(top_builddir)/thirdparty/libOSC/libOSC.la \ $(top_builddir)/thirdparty/libresample/libresample.la \ - $(top_builddir)/libvjmsg/libvjmsg.la \ - $(top_builddir)/libvjmem/libvjmem.la \ $(top_builddir)/libvje/libvje.la \ $(top_builddir)/libplugger/libvjplug.la \ $(top_builddir)/libsample/libsample.la \ - $(top_builddir)/libvjnet/libvjnet.la \ $(top_builddir)/libel/libel.la \ $(top_builddir)/libstream/libstream.la \ $(top_builddir)/libsubsample/libsubsample.la \ - $(top_builddir)/libyuv/libyuv.la \ $(top_builddir)/libsamplerec/libsamplerec.la \ $(top_builddir)/libqrwrap/libqrwrap.la \ - $(top_builddir)/libvjxml/libvjxml.la \ - $(top_builddir)/libvevo/libvevo.la - -if !HAVE_MJPEGTOOLS -libveejay_la_LIBADD+=$(top_builddir)/thirdparty/mjpegtools/libmjpegutils.la -endif - -if HAVE_ARM -libveejay_la_LIBADD+=$(top_builddir)/thirdparty/fastarm/libfastarm.la -endif + $(top_builddir)/libvjxml/libvjxml.la libveejay_la_LDFLAGS += $(SDL_LIBS) $(SDL_TTF_LIBS) $(DIRECTFB_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(FT_LDFLAGS) $(FT_LIBS) \ $(XML2_LIBS) $(JPEG_LIBS) $(LIBLO_LIBS) $(LIBUNWIND_LIBS) $(GLIB_LIBS) \ - $(FFMPEG_LIBS) $(XINERAMA_LIBS) $(MJPEGTOOLS_LIBS) $(LIBPNG_LIBS) \ + $(FFMPEG_LIBS) $(XINERAMA_LIBS) $(LIBPNG_LIBS) \ $(LIBDV_LIBS) $(LIBM_LIBS) $(PIXBUF_LIBS) $(JACK_LIBS) $(LIBQUICKTIME_LIBS) $(RT_LIBS) $(LIBQRENCODE_LIBS) \ + $(VEEJAYCORE_LIBS) \ -DDYNAMIC -O3 -Wall -rdynamic -Wl,-no-undefined # ********************************************************************* # The tools themselves VEEJAY_BIN = veejay -#VEVOTEST = vevotest - -#bin_PROGRAMS = $(VEEJAY_BIN) $(VEVOTEST) bin_PROGRAMS = $(VEEJAY_BIN) veejay_headers = vims.h jpegutils.h vevo.h vj-composite.h vj-jack.h \ vj-OSC.h vj-viewport.h lav_common.h vims.h vj-dfb.h \ vjkf.h vj-perform.h vj-viewport-xml.h libveejay.h \ vj-audio.h vj-event.h vj-lib.h vj-plug.h x11misc.h \ - veejay.h vj-bjack.h vj-font.h vj-misc.h vj-sdl.h vj-task.h vj-split.h + veejay.h vj-bjack.h vj-font.h vj-misc.h vj-sdl.h vj-split.h veejay_SOURCES = veejay.c ${veejay_headers} veejay_LDADD = libveejay.la @LIBGETOPT_LIB@ - -#vevotest_SOURCES = vevotest.c ${veejay_headres} -#vevotest_LDADD = libveejay.la @LIBGETOPT_LIB@ - +veejay_LDFLAGS = $(VEEJAYCORE_LIBS) diff --git a/veejay-current/veejay-server/veejay/jpegutils.c b/veejay-current/veejay-server/veejay/jpegutils.c index 6bf842ca..d33772a7 100644 --- a/veejay-current/veejay-server/veejay/jpegutils.c +++ b/veejay-current/veejay-server/veejay/jpegutils.c @@ -31,9 +31,12 @@ #include #include +#ifdef STRICT_CHECKING #include - -#include +#endif +#include +#include +#include #include "jpegutils.h" #include @@ -696,7 +699,9 @@ int decode_jpeg_raw(unsigned char *jpeg_data, int len, y += 2, yc += numfields) { xd = yc * width / 2; for (x = 0; x < width / 2; x++, xd++) { - assert(xd < (width * height / 4)); +#ifdef STRICT_CHECKING + assert(xd < (width * height / 4)); +#endif raw1[xd] = (chr1[y][x] + chr1[y + 1][x]) >> 1; raw2[xd] = (chr2[y][x] + chr2[y + 1][x]) >> 1; } diff --git a/veejay-current/veejay-server/veejay/liblavplayvj.c b/veejay-current/veejay-server/veejay/liblavplayvj.c index 31d4dc3d..7b2732b8 100644 --- a/veejay-current/veejay-server/veejay/liblavplayvj.c +++ b/veejay-current/veejay-server/veejay/liblavplayvj.c @@ -72,9 +72,9 @@ #ifdef HAVE_SYS_SOUNDCARD_H #include #endif - -#include -#include +#include +#include +#include #include #include #include @@ -84,15 +84,15 @@ #include #include #include -#include +#include #ifdef HAVE_JACK #include #endif -#include +#include #include #include #include -#include +#include #include #include #include @@ -101,7 +101,7 @@ #include #endif #define QUEUE_LEN 1 -#include +#include #include #include #include @@ -111,14 +111,13 @@ #include #define MAX_SDL_OUT 2 #endif -#include -#include +#include +#include #include #include "libveejay.h" -#include +#include #include "vj-perform.h" -#include -#include "mjpeg_types.h" +#include #ifdef HAVE_DIRECTFB #include #endif @@ -218,8 +217,6 @@ void veejay_change_state_save(veejay_t * info, int new_state) veejay_msg(VEEJAY_MSG_WARNING, "Saved Editlist to %s", recover_edl ); } - report_bug(); - veejay_change_state( info, new_state ); } diff --git a/veejay-current/veejay-server/veejay/veejay.c b/veejay-current/veejay-server/veejay/veejay.c index 313fe10f..df4bbec7 100644 --- a/veejay-current/veejay-server/veejay/veejay.c +++ b/veejay-current/veejay-server/veejay/veejay.c @@ -22,7 +22,9 @@ #include #include #include -#include +#include +#include +#include #include #include #include @@ -36,10 +38,9 @@ #include #include #include -#include +#include #include -#include -#include +#include #ifndef X_DISPLAY_MISSING #include #endif @@ -51,7 +52,6 @@ #include #include -extern void veejay_init_msg_ring(); extern void vj_libav_ffmpeg_version(); static veejay_t *info = NULL; static float override_fps = 0.0; @@ -70,6 +70,34 @@ static int max_mem_ = 0; static int live =0; static int ta = 0; +static void report_bug(void) +{ + veejay_msg(VEEJAY_MSG_WARNING, "Please report this error to http://groups.google.com/group/veejay-discussion?hl=en"); + veejay_msg(VEEJAY_MSG_WARNING, "Send at least veejay's output and include the command(s) you have used to start it"); + veejay_msg(VEEJAY_MSG_WARNING, "Also, please consider sending in the recovery files if any have been created"); + veejay_msg(VEEJAY_MSG_WARNING, "If you compiled it yourself, please include information about your system"); +/* + veejay_msg(VEEJAY_MSG_WARNING, "Dumping core file to: core.%d",getpid() ); + + char cmd[128]; + memset(cmd,0,sizeof(cmd)); + sprintf(cmd, "generate-core-file"); + int fd = open( "veejay.cmd", O_RDWR|O_CREAT ); + if(!fd) { + veejay_msg(VEEJAY_MSG_ERROR,"Unable to write gdb batch commands, no core dump written. "); + } else { + int res = write( fd , cmd, strlen(cmd)); + close(fd); + sprintf(cmd, "gdb -p %d -batch -x veejay.cmd", getpid()); + veejay_msg(VEEJAY_MSG_WARNING,"Please wait! Running command '%s'", cmd); + system(cmd); + veejay_msg(VEEJAY_MSG_WARNING, "Done!"); + veejay_msg(VEEJAY_MSG_INFO, "Please bzip2 and upload the coredump somewhere and tell us where to find it!"); + } + */ + +} + static void CompiledWith() { fprintf(stdout,"This is Veejay %s\n\n", VERSION); @@ -174,9 +202,6 @@ static void CompiledWith() #ifdef HAVE_LIBLO fprintf(stdout,"\tSupport for liblo\n"); #endif -#ifdef HAVE_MJPEGTOOLS - fprintf(stdout,"\tSupport for the Mjpegtools\n"); -#endif #ifdef HAVE_QRCODE fprintf(stdout,"\tSupport for QR code\n"); #endif diff --git a/veejay-current/veejay-server/veejay/vevo.h b/veejay-current/veejay-server/veejay/vevo.h index 268e7065..b4734f03 100644 --- a/veejay-current/veejay-server/veejay/vevo.h +++ b/veejay-current/veejay-server/veejay/vevo.h @@ -24,7 +24,7 @@ typedef struct livido_port_t void #endif -#include +#include // rename functions /* diff --git a/veejay-current/veejay-server/veejay/vj-composite.c b/veejay-current/veejay-server/veejay/vj-composite.c index cd1c6aca..0f429627 100644 --- a/veejay-current/veejay-server/veejay/vj-composite.c +++ b/veejay-current/veejay-server/veejay/vj-composite.c @@ -26,8 +26,9 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include @@ -36,8 +37,8 @@ #include #include #include -#include -#include +#include +#include #ifdef HAVE_GL #include #endif diff --git a/veejay-current/veejay-server/veejay/vj-dfb.c b/veejay-current/veejay-server/veejay/vj-dfb.c index afaa051d..eb834858 100644 --- a/veejay-current/veejay-server/veejay/vj-dfb.c +++ b/veejay-current/veejay-server/veejay/vj-dfb.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include #ifdef HAVE_DIRECTFB diff --git a/veejay-current/veejay-server/veejay/vj-event.c b/veejay-current/veejay-server/veejay/vj-event.c index fb27e455..b64f2b82 100644 --- a/veejay-current/veejay-server/veejay/vj-event.c +++ b/veejay-current/veejay-server/veejay/vj-event.c @@ -28,10 +28,11 @@ #include #endif #include -#include +#include +#include #include -#include -#include +#include +#include #include #include #include @@ -42,16 +43,16 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #ifdef HAVE_JACK #include #endif #include #include -#include +#include #include #ifdef HAVE_GL #include @@ -59,10 +60,10 @@ #ifdef USE_GDK_PIXBUF #include #endif -#include -#include +#include +#include #include -#include +#include #include #include #include @@ -4188,7 +4189,7 @@ void vj_event_sample_rec_start( void *ptr, const char format[], va_list ap) return; } - //FIXME refactor in libvevosample + //FIXME refactor in veejaycoresample if( sample_init_encoder( v->uc->sample_id, tmp, format_, v->effect_frame1, v->current_edit_list, args[0]) == 1) { video_playback_setup *s = v->settings; diff --git a/veejay-current/veejay-server/veejay/vj-eventman.c b/veejay-current/veejay-server/veejay/vj-eventman.c index c785c6f8..5387d260 100644 --- a/veejay-current/veejay-server/veejay/vj-eventman.c +++ b/veejay-current/veejay-server/veejay/vj-eventman.c @@ -17,13 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include -#include +#include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #define MAX_INDEX 1024 diff --git a/veejay-current/veejay-server/veejay/vj-font.c b/veejay-current/veejay-server/veejay/vj-font.c index d5e15991..62858a8a 100644 --- a/veejay-current/veejay-server/veejay/vj-font.c +++ b/veejay-current/veejay-server/veejay/vj-font.c @@ -30,15 +30,18 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #ifdef HAVE_XML2 diff --git a/veejay-current/veejay-server/veejay/vj-lib.h b/veejay-current/veejay-server/veejay/vj-lib.h index c9017f34..34c61070 100644 --- a/veejay-current/veejay-server/veejay/vj-lib.h +++ b/veejay-current/veejay-server/veejay/vj-lib.h @@ -22,9 +22,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/veejay-current/veejay-server/veejay/vj-macro.c b/veejay-current/veejay-server/veejay/vj-macro.c index 6e3eb9cf..353c8545 100644 --- a/veejay-current/veejay-server/veejay/vj-macro.c +++ b/veejay-current/veejay-server/veejay/vj-macro.c @@ -24,10 +24,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #ifdef HAVE_XML2 #include #include diff --git a/veejay-current/veejay-server/veejay/vj-misc.c b/veejay-current/veejay-server/veejay/vj-misc.c index a4030b71..74d3793e 100644 --- a/veejay-current/veejay-server/veejay/vj-misc.c +++ b/veejay-current/veejay-server/veejay/vj-misc.c @@ -28,20 +28,21 @@ #include #include #include +#include #include #include #include #include #include #include -#include +#include #include #ifdef HAVE_JPEG #include #endif -#include +#include #include -#include +#include #include #include #include @@ -226,7 +227,7 @@ filelist_t *find_media_files( veejay_t *info ) return fl; } -/* TODO: libvevosample +/* TODO: veejaycoresample * fx state is currently global, damage control is to check fx chain of current playing sample * for FX that needs a background frame. * before: apply on all FX diff --git a/veejay-current/veejay-server/veejay/vj-osc.c b/veejay-current/veejay-server/veejay/vj-osc.c index 8d0c48ec..ebd5fefa 100644 --- a/veejay-current/veejay-server/veejay/vj-osc.c +++ b/veejay-current/veejay-server/veejay/vj-osc.c @@ -26,28 +26,29 @@ */ #include -#include +#include #include #include #include +#include #include +#include #include #include #include -#include -#include +#include +#include #include #include #include #include #include #include -#include #include #include #include -#include -#include +#include +#include static veejay_t *osc_info; #ifdef HAVE_LIBLO @@ -59,8 +60,7 @@ static vevo_port_t **osc_clients = NULL; #include #include #include -#include -#include +#include #define NUM_RECEIVE_BUFFERS 100 diff --git a/veejay-current/veejay-server/veejay/vj-perform.c b/veejay-current/veejay-server/veejay/vj-perform.c index cc32b2f8..c1ac62a8 100644 --- a/veejay-current/veejay-server/veejay/vj-perform.c +++ b/veejay-current/veejay-server/veejay/vj-perform.c @@ -23,9 +23,10 @@ #include #include #include +#include #include #include -#include +#include #include #include #include @@ -33,18 +34,18 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include #include #include #include -#include -#include +#include +#include #include #include #ifdef HAVE_FREETYPE @@ -55,7 +56,7 @@ #include #endif #include -#include +#include #include #include #include @@ -2794,7 +2795,6 @@ void vj_perform_record_offline_tag_frame(veejay_t *info) df, frames_left)==-1) { veejay_msg(VEEJAY_MSG_WARNING,"Error while auto splitting"); - report_bug(); } } else @@ -2851,7 +2851,6 @@ void vj_perform_record_tag_frame(veejay_t *info) { { veejay_msg(VEEJAY_MSG_WARNING, "Error while auto splitting"); - report_bug(); } } else diff --git a/veejay-current/veejay-server/veejay/vj-pjack.c b/veejay-current/veejay-server/veejay/vj-pjack.c index 6e7121a7..b4ff94f1 100644 --- a/veejay-current/veejay-server/veejay/vj-pjack.c +++ b/veejay-current/veejay-server/veejay/vj-pjack.c @@ -19,6 +19,8 @@ #include #ifdef HAVE_JACK +#include +#include #include #include static int driver = 0; diff --git a/veejay-current/veejay-server/veejay/vj-sdl-font.c b/veejay-current/veejay-server/veejay/vj-sdl-font.c index 8b519b6a..47e68965 100644 --- a/veejay-current/veejay-server/veejay/vj-sdl-font.c +++ b/veejay-current/veejay-server/veejay/vj-sdl-font.c @@ -20,10 +20,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #define DEFAULT_FONT ".veejay/default.ttf" #define MAX_LINES 10 diff --git a/veejay-current/veejay-server/veejay/vj-sdl.c b/veejay-current/veejay-server/veejay/vj-sdl.c index da3ac784..fdb337af 100644 --- a/veejay-current/veejay-server/veejay/vj-sdl.c +++ b/veejay-current/veejay-server/veejay/vj-sdl.c @@ -22,6 +22,8 @@ * Seems that YUV 4:2:0 (YV12) overlays have problems with multiple SDL video window */ #include +#include +#include #ifdef HAVE_SDL #include #ifdef HAVE_SDL_TTF @@ -31,11 +33,11 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/veejay/vj-share.c b/veejay-current/veejay-server/veejay/vj-share.c index 18fb3c9b..931ca23b 100644 --- a/veejay-current/veejay-server/veejay/vj-share.c +++ b/veejay-current/veejay-server/veejay/vj-share.c @@ -24,11 +24,12 @@ #include #include #include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include static vj_client *vj_share_connect(char *hostname, int port) diff --git a/veejay-current/veejay-server/veejay/vj-shm.c b/veejay-current/veejay-server/veejay/vj-shm.c index c0f040b3..e8eefc1f 100644 --- a/veejay-current/veejay-server/veejay/vj-shm.c +++ b/veejay-current/veejay-server/veejay/vj-shm.c @@ -32,10 +32,11 @@ #include #include #include -#include -#include +#include +#include +#include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/veejay/vj-split.c b/veejay-current/veejay-server/veejay/vj-split.c index 5ad68ce0..9ad5f15c 100644 --- a/veejay-current/veejay-server/veejay/vj-split.c +++ b/veejay-current/veejay-server/veejay/vj-split.c @@ -23,14 +23,15 @@ #include #include #include +#include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/veejay/vj-viewport.c b/veejay-current/veejay-server/veejay/vj-viewport.c index bbbb58ba..14e947ca 100644 --- a/veejay-current/veejay-server/veejay/vj-viewport.c +++ b/veejay-current/veejay-server/veejay/vj-viewport.c @@ -31,14 +31,15 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -2178,7 +2179,7 @@ void viewport_projection_inc( void *data, int incr, int screen_width, int screen #define ANIMAX #ifdef ANIMAX -#include +#include #define GROUP "227.0.0.17" #define PORT_NUM 1234 #endif diff --git a/veejay-current/veejay-server/veejay/vjkf.c b/veejay-current/veejay-server/veejay/vjkf.c index 66928430..9f8015f1 100644 --- a/veejay-current/veejay-server/veejay/vjkf.c +++ b/veejay-current/veejay-server/veejay/vjkf.c @@ -24,12 +24,13 @@ #include #include #include -#include +#include +#include #include -#include -#include +#include +#include #include -#include +#include #include #include #include diff --git a/veejay-current/veejay-server/veejay/x11misc.c b/veejay-current/veejay-server/veejay/x11misc.c index 042e14e2..8a99009a 100644 --- a/veejay-current/veejay-server/veejay/x11misc.c +++ b/veejay-current/veejay-server/veejay/x11misc.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #ifdef HAVE_XINERAMA #include diff --git a/veejay-current/veejay-themes/AUTHORS b/veejay-current/veejay-themes/AUTHORS deleted file mode 100644 index b1f05671..00000000 --- a/veejay-current/veejay-themes/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Matthijs v. Henten matthijs.vanhenten@gmail.com -Niels Elburg diff --git a/veejay-current/veejay-themes/COPYING b/veejay-current/veejay-themes/COPYING deleted file mode 100644 index d60c31a9..00000000 --- a/veejay-current/veejay-themes/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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. diff --git a/veejay-current/veejay-themes/ChangeLog b/veejay-current/veejay-themes/ChangeLog deleted file mode 100644 index e69de29b..00000000 diff --git a/veejay-current/veejay-themes/GrayHeart.rc b/veejay-current/veejay-themes/GrayHeart.rc deleted file mode 100644 index 90a0e742..00000000 --- a/veejay-current/veejay-themes/GrayHeart.rc +++ /dev/null @@ -1,1587 +0,0 @@ -# "BlueHeart" theme for GTK+ 2.x by Jean-Paul Bizet (jp-bizet@bigfoot.com). -# Most graphics are from Claudiu Christian Fofiu, the author of the original BlueHeart theme for GTK 1.x, E, XMMS ... -# Part of this file comes from the GlossyP theme and from other themes. - - -style "default" -{ - GtkWidget::interior_focus = 1 - GtkWidget::focus_padding = 1 - GtkButton::default_border = { 0, 0, 0, 0 } - GtkButton::default_outside_border = { 0, 0, 0, 0 } - GtkRange::trough_border = 0 - GtkRange::slider_width = 16 - GtkRange::slider-length = 12 - GtkRange::stepper_size = 8 - GtkPaned::handle_size = 4 - GtkScrollbar::min_slider_length = 16 - GtkCheckButton::indicator_size = 8 - GtkCheckButton::indicator_spacing = 1 - GtkMenuBar::internal_padding = 2 - GtkOptionMenu::indicator_size = { 12, 6 } - GtkOptionMenu::indicator_spacing = { 8, 2, 0, 0 } - GtkStatusbar::shadow_type = GTK_SHADOW_ETCHED_OUT - - xthickness = 2 - ythickness = 2 - - fg[NORMAL] = "#1c1c1c" - fg[PRELIGHT] = "#cacaca" - fg[ACTIVE] = "#e5e5e5" - fg[SELECTED] = "#e5e5e5" - fg[INSENSITIVE] = "#3f3f3f" - - bg[NORMAL] = "#4b4b4b" - bg[PRELIGHT] = "#4b4b4b" - bg[ACTIVE] = "#4b4b4b" - bg[SELECTED] = "#b9b9b9" - - bg[INSENSITIVE] = "#4b4b4b" - - base[NORMAL] = "#444444" - base[PRELIGHT] = "#aeafb0" - base[ACTIVE] = "#aeafb0" - base[SELECTED] = "#aeafb0" - base[INSENSITIVE] = "#4b4b4b" - - text[NORMAL] = "#e5e5e5" - text[PRELIGHT] = "#383838" - text[ACTIVE] = "#000000" - text[SELECTED] = "#7a7d80" - text[INSENSITIVE] = "#3f3f3f" - - engine "pixmap" - { - - # Flat by default - -# image -# { -# function = BOX -# } - - # handle - - image - { - function = HANDLE - recolorable = TRUE - overlay_file = "handle-h.png" - overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = HANDLE - recolorable = TRUE - overlay_file = "handle-v.png" - overlay_stretch = FALSE - orientation = VERTICAL - } - - # shadow - - image - { - function = SHADOW - shadow = IN - recolorable = FALSE - file = "shadow-in.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = SHADOW - shadow = OUT - recolorable = TRUE - file = "toolbar.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = SHADOW - shadow = ETCHED_IN - recolorable = TRUE - file = "frame2.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - } - image - { - function = SHADOW - shadow = ETCHED_OUT - recolorable = TRUE - file = "frame1.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - } - image - { - function = SHADOW_GAP - recolorable = TRUE - file = "frame1.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_start_file = "frame-gap-start.png" - gap_start_border = { 2, 0, 2, 0 } - gap_end_file = "frame-gap-end.png" - gap_end_border = { 0, 2, 2, 0 } - gap_side = TOP - } - image - { - function = VLINE - recolorable = TRUE - file = "line-v.png" - border = { 1, 1, 0, 0 } - stretch = TRUE - } - image - { - function = HLINE - recolorable = TRUE - file = "line-h.png" - border = { 0, 0, 1, 1 } - stretch = TRUE - } - - # focus - - image - { - function = FOCUS - recolorable = TRUE - file = "focus.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - - # arrows - - image - { - function = ARROW - recolorable = TRUE - overlay_file = "arrow-up.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - arrow_direction = UP - } - image - { - function = ARROW - recolorable = TRUE - overlay_file = "arrow-down.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - arrow_direction = DOWN - } - image - { - function = ARROW - recolorable = TRUE - overlay_file = "arrow-left.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - arrow_direction = LEFT - } - image - { - function = ARROW - recolorable = TRUE - overlay_file = "arrow-right.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - arrow_direction = RIGHT - } - image - { - function = BOX - recolorable = TRUE - file = "toolbar.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - -class "GtkWidget" style "default" - - - -style "button" = "default" -{ - - engine "pixmap" - { - image - { - function = BOX - detail = "buttondefault" - recolorable = TRUE - file = "button-default.png" - border = { 9, 9, 9, 9 } - stretch = TRUE - } - image - { - function = BOX - state = PRELIGHT - recolorable = TRUE - file = "button-prelight.png" - border = { 3, 3, 3, 3} - stretch = TRUE - } - image - { - function = BOX - state = ACTIVE - file = "button-pressed.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - state = INSENSITIVE - file = "button-insensitive.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - file = "button-normal.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "togglebutton" -{ - engine "pixmap" { - - image - { - function = BOX - recolorable = TRUE - shadow = IN - file = "button-toggle.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - shadow = OUT - file = "button-normal.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "checkradiobutton" { - engine "pixmap" { - image - { - function = FLAT_BOX - recolorable = TRUE - file = "highlight.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - -class "GtkRadioButton" style "checkradiobutton" -class "GtkCheckButton" style "checkradiobutton" - - -style "optionmenu" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - recolorable = TRUE - state = NORMAL - file = "button-normal.png" - border = { 4, 4, 4, 4} - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - state = PRELIGHT - file = "button-prelight.png" - border = { 4, 4, 4, 4} - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - state = ACTIVE - file = "button-normal.png" - border = { 4, 4, 4, 4} - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - state = INSENSITIVE - file = "button-insensitive.png" - border = { 4, 4, 4, 4} - stretch = TRUE - } - image - { - function = TAB - recolorable = TRUE - overlay_file = "option-menu.png" - overlay_stretch = FALSE - } - } -} - - -style "combobox" = "default" -{ -engine "pixmap" { - image - { - function = BOX - recolorable = TRUE - state = NORMAL - file = "button-normal.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } -image - { - function = BOX - recolorable = TRUE - state = PRELIGHT - file = "button-prelight.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } -image - { - function = BOX - recolorable = TRUE - state = ACTIVE - file = "button-normal.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } -image - { - function = BOX - recolorable = TRUE - state = SELECTED - file = "button-normal.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } -image - { - function = BOX - recolorable = TRUE - state = INSENSITIVE - file = "button-insensitive.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } -image - { - function = VLINE - recolorable = TRUE - file = "null.png" - stretch = TRUE - } - } -} - - - -style "radiobutton" = "default" -{ - engine "pixmap" - { - image - { - function = OPTION - shadow = OUT - recolorable = TRUE - overlay_file = "option1.png" - #overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - image - { - function = OPTION - shadow = IN - recolorable = TRUE - overlay_file = "option2.png" - #overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - image - { - function = OPTION - shadow = ETCHED_IN - recolorable = TRUE - overlay_file = "option3.png" - #overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - } -} - - -style "checkbutton" = "default" -{ - engine "pixmap" - { - image - { - function = CHECK - shadow = OUT - recolorable = TRUE - overlay_file = "check1.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - image - { - function = CHECK - shadow = IN - recolorable = TRUE - overlay_file = "check2.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - image - { - function = CHECK - shadow = ETCHED_IN - recolorable = TRUE - overlay_file = "check3.png" - overlay_border = { 0, 0, 0, 0 } - overlay_stretch = FALSE - } - } -} - - -style "entry" = "default" -{ - GtkWidget::interior_focus = 1 - - engine "pixmap" - { - image - { - function = FOCUS - recolorable = TRUE - file = "shadow-in.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "spinbutton" = "entry" -{ - engine "pixmap" - { - image - { - function = ARROW - } - image - { - function = BOX - detail = "spinbutton_up" - recolorable = TRUE - file = "spin.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - overlay_file = "arrow-up.png" - overlay_border = { 10, 0, 7, 0 } - overlay_stretch = FALSE - } - image - { - function = BOX - detail = "spinbutton_down" - recolorable = TRUE - file = "spin.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - overlay_file = "arrow-down.png" - overlay_border = { 10, 0, 7, 0 } - overlay_stretch = FALSE - } - } -} - - -style "scrollbar" -{ - engine "pixmap" - { - - image - { - function = BOX - recolorable = TRUE - detail = "trough" - file = "trough.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - } - image - { - function = BOX - recolorable = TRUE - detail = "trough" - file = "trough.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "slider-h.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - overlay_file = "thumb-grip.png" - overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "slider-h.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - overlay_file = "thumb-grip-prelight.png" - overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "slider-h-insensitive.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - overlay_file = "thumb-grip.png" - overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "slider-v.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - overlay_file = "thumb-grip.png" - overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "slider-v.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - overlay_file = "thumb-grip-prelight.png" - overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "slider-v-insensitive.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - overlay_file = "thumb-grip.png" - overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "stepper-up.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "stepper-up-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "stepper-up-prelight.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "stepper-up-pressed.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = UP - } - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "stepper-down.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "stepper-down-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "stepper-down-prelight.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "stepper-down-pressed.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = DOWN - } - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "stepper-right.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "stepper-right-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "stepper-right-prelight.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "stepper-right-pressed.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = RIGHT - } - image - { - function = STEPPER - recolorable = TRUE - state = NORMAL - file = "stepper-left.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = INSENSITIVE - file = "stepper-left-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = PRELIGHT - file = "stepper-left-prelight.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = LEFT - } - image - { - function = STEPPER - recolorable = TRUE - state = ACTIVE - file = "stepper-left-pressed.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - arrow_direction = LEFT - } - } -} - - -style "progressbar" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - detail = "trough" - recolorable = TRUE - file = "trough-progressbar.png" - border = { 5, 5, 5, 5 } - stretch = TRUE - } - image - { - function = BOX - detail = "bar" - recolorable = TRUE - file = "menubar.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - } - } -} - - -style "range" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - recolorable = TRUE - state = ACTIVE - detail = "trough" - file = "trough.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - } - image - { - function = BOX - recolorable = TRUE - state = INSENSITIVE - detail = "trough" - file = "trough-insensitive.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = HORIZONTAL - } - image - { - function = BOX - recolorable = TRUE - state = ACTIVE - detail = "trough" - file = "trough.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - } - image - { - function = BOX - recolorable = TRUE - detail = "trough" - file = "trough-insensitive.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "slider-range-h.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-h.png" - #overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "slider-range-prelight-h.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-h.png" - #overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "slider-range-h-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-h.png" - #overlay_stretch = FALSE - orientation = HORIZONTAL - } - image - { - function = SLIDER - recolorable = TRUE - state = NORMAL - file = "slider-range-v.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-v.png" - #overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = PRELIGHT - file = "slider-range-prelight-v.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-v.png" - #overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = SLIDER - recolorable = TRUE - state = INSENSITIVE - file = "slider-range-v-insensitive.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - #overlay_file = "thumb-grip-v.png" - #overlay_stretch = FALSE - orientation = VERTICAL - } - } -} - - -style "menu" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - recolorable = TRUE - detail = "menu" - file = "menu.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "menubar" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - file = "menubar.png" - border = { 3, 2, 2, 1 } - stretch = TRUE - } - } -} - - -style "menuitem" = "default" -{ - xthickness = 4 - engine "pixmap" - { - image - { - function = BOX - recolorable = TRUE - file = "menuitem.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = ARROW - recolorable = TRUE - overlay_file = "arrow-right.png" - overlay_stretch = FALSE - arrow_direction = RIGHT - } - } -} - - -style "tearoffmenuitem" = "menuitem" -{ - engine "pixmap" - { - image - { - function = ARROW - file = "arrow-left.png" - stretch = TRUE - arrow_direction = LEFT - } -# image -# { -# function = HLINE -# file = "cuthere.png" -# border = { 0, 0, 0, 0 } -# stretch = TRUE -# } - } -} - - -style "notebook" = "default" -{ - - engine "pixmap" - { - image - { - function = EXTENSION - recolorable = TRUE - state = ACTIVE - file = "ext-top.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = BOTTOM - } - image - { - function = EXTENSION - recolorable = TRUE - state = ACTIVE - file = "ext-bottom.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = TOP - } - image - { - function = EXTENSION - recolorable = TRUE - state = ACTIVE - file = "ext-right.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = LEFT - } - image - { - function = EXTENSION - recolorable = TRUE - state = ACTIVE - file = "ext-left.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = RIGHT - } - image - { - function = EXTENSION - recolorable = TRUE - file = "extension-top.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = BOTTOM - } - image - { - function = EXTENSION - recolorable = TRUE - file = "extension-bottom.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = TOP - } - image - { - function = EXTENSION - recolorable = TRUE - file = "extension-left.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = RIGHT - } - image - { - function = EXTENSION - recolorable = TRUE - file = "extension-right.png" - border = { 4, 4, 4, 4 } - stretch = TRUE - gap_side = LEFT - } -# -# How to draw boxes with a gap on one side (ie the page of a notebook) -# - image - { - function = BOX_GAP - recolorable = TRUE - file = "notebook.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_file = "gap_top.png" - gap_border = { 3, 2, 1, 1 } - gap_start_file = "null.png" - gap_end_file = "null.png" - gap_side = TOP - } - image - { - function = BOX_GAP - recolorable = TRUE - file = "notebook.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_file = "gap_bottom.png" - gap_border = { 2, 1, 1, 1 } - gap_start_file = "null.png" - gap_end_file = "null.png" - gap_side = BOTTOM - } - image - { - function = BOX_GAP - recolorable = TRUE - file = "notebook.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_file = "gap_left.png" - gap_border = { 1, 1, 2, 1 } - gap_start_file = "null.png" - gap_end_file = "null.png" - gap_side = LEFT - } - image - { - function = BOX_GAP - recolorable = TRUE - file = "notebook.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_file = "gap_right.png" - gap_border = { 1, 1, 2, 1 } - gap_start_file = "null.png" - gap_end_file = "null.png" - gap_side = RIGHT - } -# -# How to draw the box of a notebook when it isnt attached to a tab -# - image - { - function = BOX - recolorable = TRUE - file = "notebook.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - gap_side = TOP - } - } -} - - -style "treeview" = "default" -{ - engine "pixmap" - { - # don't draw the focus around listitems - image - { - function = FOCUS - } - } -} - - -style "textview" = "default" -{ - bg[NORMAL] = "#000000" - - engine "pixmap" - { - # don't draw focus around textview - image - { - function = FOCUS - } - } -} - - -style "tooltips" = "default" -{ - bg[NORMAL] = "#888888" -} - - -style "ruler" = "default" -{ - engine "pixmap" { - image - { - function = BOX - recolorable = TRUE - detail = "vruler" - file = "ruler-v.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - detail = "hruler" - file = "ruler-h.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "handlebox" = "default" -{ - engine "pixmap" - { - image - { - #function = SHADOW - } - - image - { - function = HANDLE - recolorable = TRUE - overlay_file = "handle-v.png" - overlay_stretch = FALSE - orientation = VERTICAL - } - image - { - function = HANDLE - overlay_file = "handle-h.png" - overlay_stretch = FALSE - orientation = HORIZONTAL - } - } -} - - -style "flat" = "default" -{ - engine "pixmap" - { - image - { - function = SHADOW - } - } -} - - -style "list-header" -{ - #Comment out the ythickness setting below for thicker column headers. - #ythickness = 0 - GtkTreeView::odd_row_color = "#2c2c2c" - GtkTreeView::even_row_color = "#555555" - - engine "pixmap" - { - - #This image is used to draw the headers of columns in list views when they are - #not selected. - image - { - function = BOX - recolorable = TRUE - shadow = OUT - file = "list_header.png" - border = { 2, 2, 2, 1 } - stretch = TRUE - } - - #This image is used to draw the column headers in list views when they are - #clicked. - image - { - function = BOX - recolorable = TRUE - shadow = IN - file = "list_header-pressed.png" - border = { 2, 2, 2, 1 } - stretch = TRUE - } - - #Does this do anything? - image - { - function = BOX - recolorable = TRUE - shadow = OUT - state = PRELIGHT - file = "list_header-pressed.png" - border = { 2, 2, 2, 1 } - stretch = TRUE - } - } - -} - -widget_class "*List" style "list-header" -widget_class "*Tree*" style "list-header" -widget_class "GtkCList" style "list-header" - - -# This prevents Sodipodi from crashing while opening the -# Object-Style dialog. - - -style "unstyle" -{ - engine "" - { - } -} - -# recognizable pressed toggle buttons -# SPIcons seem to erase the background first. That's why I can't use -# the button style. - - -style "SPbutton" -{ - engine "pixmap" - { - image - { - function = BOX - shadow = IN - recolorable = TRUE - file = "shadow-out.png" - border = { 2, 2, 2, 2 } - stretch = TRUE - } - image - { - function = BOX - } - } -} - - -style "panelbg" -{ - xthickness = 1 - ythickness = 1 - #bg_pixmap[NORMAL] = "panel_bg.png" -} - -class "*Panel*" style "panelbg" - - -style "panelbuttons" = "default" -{ - engine "pixmap" - { - image - { - function = BOX - detail = "buttondefault" - recolorable = TRUE - file = "button-default.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - state = PRELIGHT - recolorable = TRUE - file = "button-normal-panel.png" - border = { 3, 3, 3, 3} - stretch = TRUE - } - image - { - function = BOX - state = ACTIVE - file = "button-pressed-panel.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - state = INSENSITIVE - file = "button-insensitive.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - file = "button-normal-panel.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - - -style "paneltogglebutton" -{ - engine "pixmap" { - - image - { - function = BOX - recolorable = TRUE - shadow = IN - file = "button-pressed-panel.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - image - { - function = BOX - recolorable = TRUE - shadow = OUT - file = "button-normal-panel.png" - border = { 3, 3, 3, 3 } - stretch = TRUE - } - } -} - -widget_class "*Panel*GtkToggleButton" style "paneltogglebutton" -widget_class "*Panel*GtkButton" style "panelbuttons" - - -class "GtkButton" style "button" -class "GtkRadioButton" style "radiobutton" -class "GtkToggleButton" style "togglebutton" -class "GtkRadioMenuItem" style "radiobutton" -class "GtkCheckButton" style "checkbutton" -class "GtkCheckMenuItem" style "checkbutton" -class "GtkOptionMenu" style "optionmenu" -widget_class "*Combo*" style "combobox" -class "GtkEntry" style "entry" -class "GtkOldEditable" style "entry" -class "GtkSpinButton" style "spinbutton" -class "GtkRuler" style "ruler" -class "GtkScrollbar" style "scrollbar" -class "GtkProgressBar" style "progressbar" -class "GtkRange" style "range" -class "GtkMenu" style "menu" -class "GtkMenuBar" style "menubar" -class "GtkItem" style "menuitem" -class "GtkTearoffMenuItem" style "tearoffmenuitem" -class "GtkNotebook" style "notebook" -class "GtkTextView" style "textview" -class "GtkTreeView" style "treeview" -class "GtkToolbar" style "flat" -class "GtkHandleBox" style "handlebox" -class "GtkEventBox" style "flat" -class "GtkPaned" style "handlebox" -class "SPButton" style "SPbutton" -widget "gtk-tooltips" style "tooltips" -# prevent Sodipodi from crashing -class "SPColorSlider" style "unstyle" - - -#style "metacity" { -# bg[NORMAL] = "#4b4b4b" # normal base color -# bg[INSENSITIVE] = "#4b4b4b" # unfocused titlebar background color -# bg[SELECTED] = "#4b6983" # focused titlebar background color -# fg[INSENSITIVE] = "#7bacb6" # unfocused text color -# fg[SELECTED] = "#e5e5e5" # focused text color -# fg[NORMAL] = "#e5e5e5" # focused icon color -#} - -#class "MetaFrames" style "metacity" - - -# icons from "Industrial" theme - -style "icon-style" -{ - -stock["gtk-goto-bottom"] = - { - { "stock_bottom.png", *, *, *} - } - - stock["gtk-goto-first"] = - { - { "stock_first.png", *, *, *} - } - - stock["gtk-goto-last"] = - { - { "stock_last.png", *, *, *} - } - - stock["gtk-goto-top"] = - { - { "stock_top.png", *, *, *} - } - - stock["gtk-go-back"] = - { - { "stock_left.png", *, *, *} - } - - stock["gtk-go-down"] = - { - { "stock_down.png", *, *, *} - } - - stock["gtk-go-forward"] = - { - { "stock_right.png", *, *, *} - } - - stock["gtk-go-up"] = - { - { "stock_up.png", *, *, *} - } - - stock["gtk-no"] = - { - { "stock_cancel.png", *, *, *} - } - - stock["gtk-apply"] = - { - { "stock_apply.png", *, *, *} - } - - stock["gtk-cancel"] = - { - { "stock_cancel.png", *, *, *} - } - - stock["gtk-ok"] = - { - { "stock_ok.png", *, *, *} - } - - stock["gtk-yes"] = - { - { "stock_apply.png", *, *, *} - } - - stock["gtk-refresh"] = - { - { "stock_refresh.png", *, *, *} - } -} - -class "GtkWidget" style "icon-style" diff --git a/veejay-current/veejay-themes/GrayHeart.tar.bz2 b/veejay-current/veejay-themes/GrayHeart.tar.bz2 deleted file mode 100644 index 462d3b6f..00000000 Binary files a/veejay-current/veejay-themes/GrayHeart.tar.bz2 and /dev/null differ diff --git a/veejay-current/veejay-themes/INSTALL.sh b/veejay-current/veejay-themes/INSTALL.sh deleted file mode 100755 index f39230d2..00000000 --- a/veejay-current/veejay-themes/INSTALL.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - - -# install scripts in gveejay directory, symlink to user's dir - -reloaded=`which reloaded` -srcdir=`pwd` -dstdir="" -home=$1 - -if [ -z $reloaded ]; then - echo "Cannot find reloaded in PATH" - exit 1 -fi - -echo "Using srcdir $srcdir" - -if [ -z $home ]; then - echo "Using $HOME for current reloaded user, use $0 /path/to/home to specify another" - home=$HOME -fi - -lndir=`echo $home/.veejay/theme` - -if test -x $reloaded; then - dstdir=`$reloaded -V|grep ^data\ directory|cut -d ":" -f2` - if [ -z $dstdir ]; then - echo "Wrong version of reloaded" - exit - fi -else - echo "reloaded not executable" - exit 1 -fi - -themedir=$dstdir/theme - -# make sure dir exists -mkdir -p $lndir 2>/dev/null -if [ ! -d $lndir ]; then - echo "Cannot create $lndir, abort" - exit 1 -fi - -# find all rc files in current dir -for rcfile in $srcdir/*.rc; do - tmp=`basename $rcfile` - themename=`echo $tmp|cut -d '.' -f1` - extra=$themename.tar.bz2 - mkdir -p $themedir/$themename 2>/dev/null - if [ ! -d $themedir/$themename ]; then - echo "Cannot create $themedir/$themename, abort" - exit 1 - fi - if test -f $extra ; then - cd $themedir/$themename/ - if tar -jxvf $srcdir/$extra >/dev/null ; then - echo " Extracted $extra in `pwd`" - fi - echo "$themedir/$themename" - if cp $rcfile $themedir/$themename/; then - ln -s $themedir/$themename $lndir/$themename 2>/dev/null - ln -s $lndir/$themename/$tmp $themedir/$themename/gveejay.rc 2>/dev/null - fi - cd $srcdir - else - mkdir $lndir/$themename 2>/dev/null - if cp $rcfile $themedir/$themename/; then - ln -s $themedir/$themename/$tmp $lndir/$themename/gveejay.rc 2>/dev/null - echo "Installed $themename to $themedir" - fi - - fi -done - -if test -f $lndir/theme.config ; then - content=`cat $lndir/theme.config` - echo "Current theme is $content" -else - echo "Default" > $lndir/theme.config - echo "Using default theme" -fi -echo "You can now (re)start reloaded" diff --git a/veejay-current/veejay-themes/NEWS b/veejay-current/veejay-themes/NEWS deleted file mode 100644 index 670cb836..00000000 --- a/veejay-current/veejay-themes/NEWS +++ /dev/null @@ -1,2 +0,0 @@ - -GveejayReloaded is themeable diff --git a/veejay-current/veejay-themes/README b/veejay-current/veejay-themes/README deleted file mode 100644 index 263c2572..00000000 --- a/veejay-current/veejay-themes/README +++ /dev/null @@ -1,10 +0,0 @@ - -These are flat themes for reloaded. - -To install them, run INSTALL.sh as root (sudo) -to remove them, run UNINSTALL.sh - - -$ sudo sh INSTALL.sh -# sh INSTALL.sh - diff --git a/veejay-current/veejay-themes/UNINSTALL.sh b/veejay-current/veejay-themes/UNINSTALL.sh deleted file mode 100644 index ccbb3b4b..00000000 --- a/veejay-current/veejay-themes/UNINSTALL.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - - -# install scripts in gveejay directory, symlink to user's dir - -reloaded=`which gveejayreloaded` -srcdir=`pwd` -dstdir="" -lndir=`echo $HOME/.veejay/theme` - -if test -x $reloaded; then - dstdir=`$reloaded -q` -else - echo "gveejayreloaded not found" - exit 1 -fi - -themedir=$dstdir/theme - -for rcfile in $srcdir/*.rc; do - tmp=`basename $rcfile` - themename=`echo $tmp|cut -d '.' -f1` - - if test -d $themedir/$themename ; then - if rm -rf $themedir/$themename; then - echo "Uninstalled $theme from $themedir" - else - echo "Unable to remove $themedir/$themename" - fi - fi - if test -f $lndir/$themename ; then - if rm -rf $lndir/$themename; then - echo "Removed $lndir/$themename" - else - echo "Unable to remove $lndir/$themename" - fi - fi -done diff --git a/veejay-current/veejay-themes/blackvelvet.rc b/veejay-current/veejay-themes/blackvelvet.rc deleted file mode 100644 index abd60836..00000000 --- a/veejay-current/veejay-themes/blackvelvet.rc +++ /dev/null @@ -1,165 +0,0 @@ -# Edit these colors and fonts however you like. -style "default" -{ -# engine "hcengine" {} - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_ETCHED_OUT - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - #GtkWidget::default_border = {0, 0, 0, 0} - #GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - GtkScale::stepper_size = 8 - GtkRange::through-width = 4 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 12 - - font_name = "Sans 8" - - fg[NORMAL] = "#333" # borders etc. - fg[PRELIGHT] = "#444" - fg[ACTIVE] = "#555" # ook borders, van sliders en notebook - fg[SELECTED] = "#666" - fg[INSENSITIVE] = "#777" - - bg[NORMAL] = "#000" # algemene achtergrond kleur - bg[PRELIGHT] = "#000" # achtergrond geselecteerd widget - bg[ACTIVE] = "#000" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#444" - bg[INSENSITIVE] = "#444" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#ccc" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#FF0000" - text[SELECTED] = "#FF0000" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#757f90" - base[SELECTED] = "#757ab3" - base[INSENSITIVE] = "#27282f" - -} - -style "scale"{ - GtkScale::stepper_size = 8 - GtkRange::through-width = 1 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 12 - - bg[ACTIVE] = "#333" # trough - bg[NORMAL] = "#444" # normal - bg[PRELIGHT] = "#7a7c7c" # mouseover - bg[INSENSITIVE] = "#222" # achtergrond kleur van niet actieve knopjes - - fg[NORMAL] = "#ccc" # values ( text) - fg[INSENSITIVE] = "#000" # shadow color insensitive - -} - -style "notebook"{ - bg[ACTIVE] = "#333" # niet actieve tabs, achtergrond sliders -} - -style "menubar"{ - bg_pixmap[NORMAL] = "gradient.png" - bg[NORMAL] = "#000000" -} - -style "frame"{ - bg[NORMAL] = "#333" # 4lgemene achtergrond kleur -} - - -style "button"{ - bg[NORMAL] = "#000" - -} - -style "text" -{ - font_name = "Sans 8" - - fg[NORMAL] = "#fff" # borders etc. - fg[PRELIGHT] = "#ccc" - fg[ACTIVE] = "#ffffff" # ook borders, van sliders en notebook - fg[SELECTED] = "#ffffff" - fg[INSENSITIVE] = "#ffffff" - - - bg[NORMAL] = "#27282F" # algemene achtergrond kleur - bg[PRELIGHT] = "#aaacc1" # achtergrond geselecteerd widget - bg[ACTIVE] = "#454f60" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#5058a0" - bg[INSENSITIVE] = "#27282f" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#d8d8d8" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#fff" - text[SELECTED] = "#fff" - text[INSENSITIVE] = "#404040" - -} - -style "tree"{ - - text[NORMAL] = "#ccc" - text[PRELIGHT] = "#fff" - text[ACTIVE] = "#ccc" # when clicked on parent - text[SELECTED] = "#fff" # selected text - text[INSENSITIVE] = "#333" - - base[NORMAL] = "#333" # default background - base[PRELIGHT] = "#444" # special click - base[ACTIVE] = "#555" # matches text - base[SELECTED] = "#444" # selected background - base[INSENSITIVE] = "#000" # disabled - -} - -style "spin"{ - -} - -style "buttons" -{ - - font_name = "Sans 8" - bg_pixmap[NORMAL] = "gradient.png" - bg[NORMAL] = "#333" # normal - bg[PRELIGHT] = "#7a7c7c" # mouseover - bg[ACTIVE] = "#0f0" # onmouseclick - bg[SELECTED] = "#00f" - bg[INSENSITIVE] = "#000" -} - -style "togglebutton" -{ - bg[PRELIGHT] = "#000" # mouseover - bg[INSENSITIVE] = "#000" - - fg[NORMAL] = "#333" # borders etc. - fg[PRELIGHT] = "#444" - fg[ACTIVE] = "#000" # border on click - fg[SELECTED] = "#000" # check on click - fg[INSENSITIVE] = "#000" # disabled -} - - - - -class "GtkButton" style "buttons" -class "GtkSpinButton" style "spin" -class "GtkToggleButton" style "togglebutton" -class "GtkCheckBox" style "togglebutton" -class "GtkLabel" style "text" -class "GtkWidget" style "default" -class "GtkScale" style "scale" -class "GtkMenuBar" style "menubar" -class "GtkFrame" style "frame" -class "GtkNotebook" style "notebook" -class "GtkTreeView" style "tree" diff --git a/veejay-current/veejay-themes/blackvelvet.tar.bz2 b/veejay-current/veejay-themes/blackvelvet.tar.bz2 deleted file mode 100644 index 8a321872..00000000 Binary files a/veejay-current/veejay-themes/blackvelvet.tar.bz2 and /dev/null differ diff --git a/veejay-current/veejay-themes/fruitsalade.rc b/veejay-current/veejay-themes/fruitsalade.rc deleted file mode 100644 index d5295db6..00000000 --- a/veejay-current/veejay-themes/fruitsalade.rc +++ /dev/null @@ -1,161 +0,0 @@ -# (C) Matthijs v. Henten, 2007 -# For license details, see COPYING. -# License: GNU GPL - -style "default" -{ - xthickness = 1 - ythickness = 1 - GtkWidget::shadow_type = GTK_SHADOW_NONE - #GtkWidget::interior_focus = 0 - #GtkWidget::focus_padding = 0 - GtkWidget::default_border = {0, 0, 0, 0} - GtkWidget::default_outside_border = {0, 0, 0, 0} - GtkWidget::default_spacing = 0 - - GtkScale::stepper_size = 8 - GtkRange::through-width = 1 - GtkRange::trough_border = 0 - GtkRange::slider-width = 16 - GtkScale::slider-length = 12 - - font_name = "Sans 10" - - fg[NORMAL] = "#333" # borders etc. - fg[PRELIGHT] = "#444" - fg[ACTIVE] = "#555" # ook borders, van sliders en notebook - fg[SELECTED] = "#666" - fg[INSENSITIVE] = "#777" - - bg[NORMAL] = "#86b3b2" # algemene achtergrond kleur - bg[PRELIGHT] = "#ad8282" # achtergrond geselecteerd widget - bg[ACTIVE] = "#8e8e6b" # niet actieve tabs, achtergrond sliders - bg[SELECTED] = "#444" - bg[INSENSITIVE] = "#8e8e6b" # achtergrond kleur van niet actieve knopjes - - text[NORMAL] = "#ccc" - text[PRELIGHT] = "#d8d8d8" - text[ACTIVE] = "#fff" - text[SELECTED] = "#fff" - text[INSENSITIVE] = "#404040" - - base[NORMAL] = "#37383f" - base[PRELIGHT] = "#aaacc1" - base[ACTIVE] = "#444" - base[SELECTED] = "#444" - base[INSENSITIVE] = "#27282f" - -} - - -style "container"{ - bg[NORMAL] = "#cccc9b" - bg[ACTIVE] = "#878765" # niet actieve tabs, achtergrond sliders -} - -style "menubar"{ - # bg_pixmap[NORMAL] = "gradient.png" - bg[NORMAL] = "#000000" -} - -style "frame"{ - bg[NORMAL] = "#333" # 4lgemene achtergrond kleur -} - - -style "spin"{ - font_name = "sans bold 10" - - GtkButton::default-border = {0, 0, 0, 0} - GtkButton::default-outside-border = {0, 0, 0, 0} - GtkButton::inner-border = {0, 0, 0, 0} - - - bg[NORMAL] = "#ad8282" # normal - bg[PRELIGHT] = "#7a7c7c" # mouseover - bg[ACTIVE] = "#0f0" # onmouseclick - bg[INSENSITIVE] = "#878765" - - base[NORMAL] = "#fff" # default background - base[SELECTED] = "#444" # selected background - - text[NORMAL] = "#000" - text[SELECTED] = "#fff" -} - -style "buttons" -{ - - # bg_pixmap[NORMAL] = "gradient.png" - bg[NORMAL] = "#ad8282" # normal - bg[PRELIGHT] = "#7a7c7c" # mouseover - bg[ACTIVE] = "#0f0" # onmouseclick - bg[INSENSITIVE] = "#878765" - - GtkButton::default-border = {0, 0, 0, 0} - GtkButton::default-outside-border = {0, 0, 0, 0} - GtkButton::inner-border = {0, 0, 0, 0} - - GtkButton::child-displacement-x = 0 - GtkButton::child-displacement-y = 0 - GtkButton::displace-focus = 0 - -} - - -style "combobox" -{ - GtkButton::default-border = {0, 0, 0, 0} - GtkButton::default-outside-border = {0, 0, 0, 0} - GtkButton::inner-border = {0, 0, 0, 0} - GtkWidget::focus-line-width = 0 - GtkWidget::focus-padding = 0 - GtkWidget::focus-line-pattern = "\0\0\0\0\0\0\0\0" - GtkComboBox::hildonlike = 0 - GtkComboBox::arrow-width = 20 - GtkComboBox::arrow-height = 10 - GtkComboBox::minimum-width = 50 - GtkComboBox::minimum-height = 15 - GtkComboBox::autodimmed_button = 0 - GtkComboBox::appears-as-list = 0 -} - -style "menubar"{ - font_name = "Sans Bold Italic 10" - bg[NORMAL] = "#009696" # normal - bg[PRELIGHT] = "#7a7c7c" # mouseover - bg[ACTIVE] = "#0f0" # onmouseclick - bg[INSENSITIVE] = "#ccc" -} - -style "white"{ - bg[NORMAL] = "#fff" # normal - bg[PRELIGHT] = "#fff" # mouseover - bg[ACTIVE] = "#fff" # onmouseclick - bg[INSENSITIVE] = "#fff" - -} - - - -class "GtkButton" style "buttons" -class "GtkSpinButton" style "spin" -class "GtkToggleButton" style "spin" -class "GtkCheckBox" style "spin" -class "GtkEntry" style "spin" - - -class "GtkWidget" style "default" -class "GtkComboBox" style "combobox" -class "GtkComboBoxEntry" style "combobox" -class "GtkNotebook" style "container" - - -# class "GtkTreeView" style "tree" -class "GtkMenuBar" style "menubar" -widget "*.GtkComboBox.*" style "combobox" -widget "menubar2" style "white" -widget "sample_bank_hbox" style "container" - - - diff --git a/veejay-current/veejay-utils/configure.ac b/veejay-current/veejay-utils/configure.ac index 53120903..9ad62428 100644 --- a/veejay-current/veejay-utils/configure.ac +++ b/veejay-current/veejay-utils/configure.ac @@ -90,9 +90,6 @@ AM_PROG_AS AC_CHECK_HEADERS([fenv.h stdint.h inttypes.h sys/types.h alloca.h]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_STDINT_H]) -dnl AX_PREFIXED_DEFINE([VEEJAY], [HAVE_INTTYPES_H]) - AC_CHECK_FUNCS([posix_memalign memalign fmax lround pow bzero gettimeofday memset mmap strndup strstr strncasecmp]) AC_CHECK_FUNCS([sched_get_priority_max]) AC_CHECK_FUNCS([select socket getpagesize memcpy]) @@ -182,16 +179,16 @@ if test "$ac_cv_lib_dl_dlopen" = "yes"; then have_dl_dlopen=true fi -PKG_CHECK_MODULES( VEEJAY, [veejay >= 1.5.50], +PKG_CHECK_MODULES( VEEJAYCORE, [veejaycore >= 1.5.65], [ - AC_SUBST(VEEJAY_CFLAGS) - AC_SUBST(VEEJAY_LIBS) - have_veejay=true - AC_DEFINE( HAVE_VEEJAY,1, [Veejay Installed])], - [have_veejay=false]) + AC_SUBST(VEEJAYCORE_CFLAGS) + AC_SUBST(VEEJAYCORE_LIBS) + have_veejaycore=true + AC_DEFINE( HAVE_VEEJAYCORE,1, [Veejay Core Installed])], + [have_veejaycore=false]) -if test x$have_veejay != xtrue; then - AC_MSG_ERROR( [Cannot find veejay]) +if test x$have_veejaycore != xtrue; then + AC_MSG_ERROR( [Cannot find Veejay Core >= 1.5.65]) fi dnl ********************************************************************* @@ -404,7 +401,7 @@ AC_MSG_NOTICE([ Architecture: ${host_cpu} ]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Required dependencies:]) -AC_MSG_NOTICE([ - Veejay : ${have_veejay}]) +AC_MSG_NOTICE([ - Veejay Core : ${have_veejaycore}]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Optional dependencies:]) AC_MSG_NOTICE([ - AVUtil : ${have_avutil}]) diff --git a/veejay-current/veejay-utils/src/Makefile.am b/veejay-current/veejay-utils/src/Makefile.am index 41d0b972..93ae3c4e 100644 --- a/veejay-current/veejay-utils/src/Makefile.am +++ b/veejay-current/veejay-utils/src/Makefile.am @@ -2,11 +2,11 @@ MAINTAINERCLEANFILES = Makefile.in AM_CPPFLAGS = -I$(top_srcdir) \ -I$(includedir) \ - $(VEEJAY_CFLAGS) $(GLIB_CFLAGS) $(LIBAVUTIL_CFLAGS) + $(VEEJAYCORE_CFLAGS) $(GLIB_CFLAGS) $(LIBAVUTIL_CFLAGS) sayVIMS_SOURCES = sayVIMS.c sayVIMS_LDFLAGS = $(LAV_ALL_LIB_OPTS) -sayVIMS_LDADD = $(VEEJAY_LIBS) $(LIBAVUTIL_LIBS) @LIBGETOPT_LIB@ +sayVIMS_LDADD = $(VEEJAYCORE_LIBS) $(LIBAVUTIL_LIBS) @LIBGETOPT_LIB@ YUV2RAWDV_BIN = sayVIMS diff --git a/veejay-current/veejay-utils/src/sayVIMS.c b/veejay-current/veejay-utils/src/sayVIMS.c index 6ea51767..6db4c988 100644 --- a/veejay-current/veejay-utils/src/sayVIMS.c +++ b/veejay-current/veejay-utils/src/sayVIMS.c @@ -29,11 +29,11 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #ifdef BASE64_AVUTIL #include #endif