From 36d0f6e55ab45fd58de06888e26408192a6ac034 Mon Sep 17 00:00:00 2001 From: c0ntrol Date: Sat, 15 Jun 2019 14:55:39 +0200 Subject: [PATCH] move shared libraries to veejay-core package --- .../plugin-packs/lvdcrop/configure.ac | 23 +- .../plugin-packs/lvdcrop/plugins/Makefile.am | 2 +- .../lvdcrop/plugins/lvd_cropscale.c | 2 +- .../plugin-packs/lvdgmic/configure.ac | 4 - .../lvdgmic/liblvdgmic/Makefile.am | 2 +- .../plugin-packs/lvdgmic/plugins/Makefile.am | 2 +- .../plugin-packs/lvdshared/configure.ac | 21 +- .../lvdshared/plugins/Makefile.am | 2 +- .../lvdshared/plugins/lvd_shmin.c | 2 +- veejay-current/sendVIMS/README | 3 +- veejay-current/veejay-client/.gitignore | 44 - veejay-current/veejay-client/AUTHORS | 29 - veejay-current/veejay-client/COPYING | 340 - veejay-current/veejay-client/Makefile.am | 181 - veejay-current/veejay-client/PKGBUILD | 31 - veejay-current/veejay-client/README | 113 - veejay-current/veejay-client/autogen.sh | 12 - veejay-current/veejay-client/debian/README | 117 - veejay-current/veejay-client/debian/changelog | 5 - veejay-current/veejay-client/debian/compat | 1 - veejay-current/veejay-client/debian/control | 21 - veejay-current/veejay-client/debian/copyright | 53 - veejay-current/veejay-client/debian/docs | 1 - veejay-current/veejay-client/debian/rules | 12 - .../veejay-client/debian/source/format | 1 - veejay-current/veejay-client/doc/FXAnim.txt | 29 - .../veejay-client/gveejay-paths.sh.in | 16 - veejay-current/veejay-client/gveejay.spec.in | 115 - .../menu/gveejayreloaded.desktop | 10 - .../veejay-client/menu/veejay1.desktop | 10 - .../veejay-client/menu/veejay2.desktop | 10 - .../veejay-client/menu/veejay3.desktop | 10 - .../veejay-client/menu/veejay4.desktop | 10 - .../veejay-client/menu/veejay5.desktop | 10 - .../reloaded-gtk3/.gitignore | 0 .../{ => veejay-client}/reloaded-gtk3/AUTHORS | 0 .../{ => veejay-client}/reloaded-gtk3/COPYING | 0 .../reloaded-gtk3/ChangeLog | 0 .../reloaded-gtk3/Makefile.am | 0 .../{ => veejay-client}/reloaded-gtk3/NEWS | 0 .../reloaded-gtk3/PKGBUILD | 0 .../{ => veejay-client}/reloaded-gtk3/README | 0 .../reloaded-gtk3/autogen.sh | 0 .../reloaded-gtk3/configure.ac | 24 +- .../reloaded-gtk3/cpuinfo.sh | 0 .../reloaded-gtk3/debian/README | 0 .../reloaded-gtk3/debian/changelog | 0 .../reloaded-gtk3/debian/compat | 0 .../reloaded-gtk3/debian/control | 0 .../reloaded-gtk3/debian/copyright | 0 .../reloaded-gtk3/debian/docs | 0 .../reloaded-gtk3/debian/rules | 0 .../reloaded-gtk3/debian/source/format | 0 .../reloaded-gtk3/doc/FXAnim.txt | 0 .../reloaded-gtk3/gveejay-paths.sh.in | 0 .../reloaded-gtk3/gveejay.spec.in | 0 .../menu/gveejayreloaded.desktop | 0 .../reloaded-gtk3/menu/veejay1.desktop | 0 .../reloaded-gtk3/menu/veejay2.desktop | 0 .../reloaded-gtk3/menu/veejay3.desktop | 0 .../reloaded-gtk3/menu/veejay4.desktop | 0 .../reloaded-gtk3/menu/veejay5.desktop | 0 .../reloaded-gtk3/share/bg.png | Bin .../reloaded-gtk3/share/bg_black.png | Bin .../reloaded-gtk3/share/bg_blue.png | Bin .../reloaded-gtk3/share/bg_green.png | Bin .../reloaded-gtk3/share/bg_grey.png | Bin .../reloaded-gtk3/share/bg_red.png | Bin .../reloaded-gtk3/share/bg_yellow.png | Bin .../reloaded-gtk3/share/blackwhite.rc | 0 .../reloaded-gtk3/share/button_back.png | Bin .../reloaded-gtk3/share/button_bounce.png | Bin .../reloaded-gtk3/share/button_dec.png | Bin .../reloaded-gtk3/share/button_down.png | Bin .../reloaded-gtk3/share/button_fbw.png | Bin .../reloaded-gtk3/share/button_ffw.png | Bin .../reloaded-gtk3/share/button_gotoend.png | Bin .../reloaded-gtk3/share/button_gotostart.png | Bin .../reloaded-gtk3/share/button_inc.png | Bin .../reloaded-gtk3/share/button_loop.png | Bin .../reloaded-gtk3/share/button_looponce.png | Bin .../share/button_mini_decrement.png | Bin .../share/button_mini_increment.png | Bin .../reloaded-gtk3/share/button_next.png | Bin .../reloaded-gtk3/share/button_pause.png | Bin .../reloaded-gtk3/share/button_play.png | Bin .../reloaded-gtk3/share/button_playmode.png | Bin .../reloaded-gtk3/share/button_prev.png | Bin .../reloaded-gtk3/share/button_rand.png | Bin .../reloaded-gtk3/share/button_reverse.png | Bin .../reloaded-gtk3/share/button_right.png | Bin .../reloaded-gtk3/share/button_skip.png | Bin .../reloaded-gtk3/share/button_skull.png | Bin .../reloaded-gtk3/share/button_text.png | Bin .../reloaded-gtk3/share/button_up.png | Bin .../reloaded-gtk3/share/fx_entry_off.png | Bin .../reloaded-gtk3/share/fx_entry_on.png | Bin .../reloaded-gtk3/share/gveejay-default.rc | 0 .../reloaded-gtk3/share/gveejay.glade | 0 .../reloaded-gtk3/share/gveejay.rc | 0 .../reloaded-gtk3/share/gveejay.reloaded.css | 0 .../share/gveejay.reloaded.djay.css | 0 .../share/gveejay.reloaded.glade | 0 .../share/gveejay.reloaded.gladep | 0 .../reloaded-gtk3/share/gveejay.reloaded.xml | 0 .../reloaded-gtk3/share/high_contrast.rc | 0 .../reloaded-gtk3/share/icon_255.png | Bin .../reloaded-gtk3/share/icon_alpha.png | Bin .../reloaded-gtk3/share/icon_apply.png | Bin .../reloaded-gtk3/share/icon_berserk.png | Bin .../reloaded-gtk3/share/icon_bezerk.png | Bin .../reloaded-gtk3/share/icon_bounce.png | Bin .../reloaded-gtk3/share/icon_bug.png | Bin .../reloaded-gtk3/share/icon_bundle.png | Bin .../reloaded-gtk3/share/icon_cache.png | Bin .../reloaded-gtk3/share/icon_clear.png | Bin .../reloaded-gtk3/share/icon_clearall.png | Bin .../reloaded-gtk3/share/icon_color.png | Bin .../reloaded-gtk3/share/icon_connect.png | Bin .../reloaded-gtk3/share/icon_copy.png | Bin .../reloaded-gtk3/share/icon_crop.png | Bin .../reloaded-gtk3/share/icon_cut.png | Bin .../reloaded-gtk3/share/icon_disconnect.png | Bin .../reloaded-gtk3/share/icon_fadein.png | Bin .../reloaded-gtk3/share/icon_fadeout.png | Bin .../reloaded-gtk3/share/icon_follow.png | Bin .../reloaded-gtk3/share/icon_fxm1.png | Bin .../reloaded-gtk3/share/icon_fxm2.png | Bin .../reloaded-gtk3/share/icon_fxm3.png | Bin .../reloaded-gtk3/share/icon_fxm4.png | Bin .../reloaded-gtk3/share/icon_fxmnone.png | Bin .../reloaded-gtk3/share/icon_generator.png | Bin .../reloaded-gtk3/share/icon_jack.png | Bin .../reloaded-gtk3/share/icon_keybind.png | Bin .../reloaded-gtk3/share/icon_keydetach.png | Bin .../reloaded-gtk3/share/icon_keyframe.png | Bin .../reloaded-gtk3/share/icon_launch.png | Bin .../reloaded-gtk3/share/icon_loop.png | Bin .../reloaded-gtk3/share/icon_looponce.png | Bin .../reloaded-gtk3/share/icon_looponcenop.png | Bin .../reloaded-gtk3/share/icon_macroclear.png | Bin .../reloaded-gtk3/share/icon_macropause.png | Bin .../reloaded-gtk3/share/icon_macroplay.png | Bin .../reloaded-gtk3/share/icon_macrorec.png | Bin .../reloaded-gtk3/share/icon_mask.png | Bin .../reloaded-gtk3/share/icon_minus.png | Bin .../reloaded-gtk3/share/icon_new.png | Bin .../reloaded-gtk3/share/icon_noloop.png | Bin .../reloaded-gtk3/share/icon_open.png | Bin .../reloaded-gtk3/share/icon_openlist.png | Bin .../reloaded-gtk3/share/icon_openstream.png | Bin .../reloaded-gtk3/share/icon_osd.png | Bin .../reloaded-gtk3/share/icon_paste.png | Bin .../reloaded-gtk3/share/icon_plarge.png | Bin .../reloaded-gtk3/share/icon_playmode.png | Bin .../reloaded-gtk3/share/icon_plus.png | Bin .../reloaded-gtk3/share/icon_psmall.png | Bin .../reloaded-gtk3/share/icon_question.png | Bin .../reloaded-gtk3/share/icon_record.png | Bin .../reloaded-gtk3/share/icon_recordstop.png | Bin .../reloaded-gtk3/share/icon_recstop.png | Bin .../reloaded-gtk3/share/icon_refresh.png | Bin .../reloaded-gtk3/share/icon_render.png | Bin .../reloaded-gtk3/share/icon_save.png | Bin .../reloaded-gtk3/share/icon_saveas.png | Bin .../reloaded-gtk3/share/icon_screenshot.png | Bin .../reloaded-gtk3/share/icon_send.png | Bin .../reloaded-gtk3/share/icon_skull.png | Bin .../reloaded-gtk3/share/icon_stream.png | Bin .../reloaded-gtk3/share/icon_trash.png | Bin .../reloaded-gtk3/share/icon_video.png | Bin .../reloaded-gtk3/share/knob.png | Bin .../reloaded-gtk3/share/multicast.ico | Bin .../share/reloaded_classic.glade | 0 .../reloaded-gtk3/share/smooth.rc | 0 .../reloaded-gtk3/share/sync.png | Bin .../reloaded-gtk3/share/veejay-icon.png | Bin .../reloaded-gtk3/share/veejay-logo-small.png | Bin .../reloaded-gtk3/share/veejay-logo.png | Bin .../reloaded-gtk3/src/Makefile.am | 7 +- .../reloaded-gtk3/src/callback.c | 6 +- .../reloaded-gtk3/src/callback.h | 0 .../reloaded-gtk3/src/cellrendererspin.c | 0 .../reloaded-gtk3/src/cellrendererspin.h | 0 .../reloaded-gtk3/src/common.h | 0 .../reloaded-gtk3/src/curve.c | 4 +- .../reloaded-gtk3/src/curve.h | 0 .../reloaded-gtk3/src/format_codes.h | 0 .../reloaded-gtk3/src/gtk3curve.c | 0 .../reloaded-gtk3/src/gtk3curve.h | 0 .../reloaded-gtk3/src/gtktimeselection.c | 0 .../reloaded-gtk3/src/gtktimeselection.h | 0 .../reloaded-gtk3/src/gveejay.c | 8 +- .../reloaded-gtk3/src/keyboard.c | 0 .../reloaded-gtk3/src/keyboard.h | 0 .../reloaded-gtk3/src/mjpeg_logging.c | 0 .../reloaded-gtk3/src/mjpeg_logging.h | 0 .../reloaded-gtk3/src/mjpeg_types.h | 0 .../reloaded-gtk3/src/mpegconsts.c | 0 .../reloaded-gtk3/src/mpegconsts.h | 0 .../reloaded-gtk3/src/mpegtimecode.c | 0 .../reloaded-gtk3/src/mpegtimecode.h | 0 .../reloaded-gtk3/src/multitrack.c | 12 +- .../reloaded-gtk3/src/multitrack.h | 0 .../reloaded-gtk3/src/sequence.c | 17 +- .../reloaded-gtk3/src/sequence.h | 0 .../reloaded-gtk3/src/tracksources.c | 2 +- .../reloaded-gtk3/src/tracksources.h | 0 .../reloaded-gtk3/src/utils.c | 2 +- .../reloaded-gtk3/src/utils.h | 0 .../reloaded-gtk3/src/videodev_mjpeg.h | 0 .../reloaded-gtk3/src/vj-api.c | 29 +- .../reloaded-gtk3/src/vj-api.h | 0 .../reloaded-gtk3/src/vj-midi.c | 11 +- .../reloaded-gtk3/src/vmidi.h | 28 +- .../reloaded-gtk3/src/yuv4mpeg.c | 0 .../reloaded-gtk3/src/yuv4mpeg.h | 0 .../reloaded-gtk3/src/yuv4mpeg_intern.h | 0 .../reloaded-gtk3/src/yuv4mpeg_ratio.c | 0 veejay-current/veejay-client/share/bg.png | Bin 181 -> 0 bytes .../veejay-client/share/bg_black.png | Bin 112 -> 0 bytes .../veejay-client/share/bg_blue.png | Bin 123 -> 0 bytes .../veejay-client/share/bg_green.png | Bin 121 -> 0 bytes .../veejay-client/share/bg_grey.png | Bin 123 -> 0 bytes veejay-current/veejay-client/share/bg_red.png | Bin 121 -> 0 bytes .../veejay-client/share/bg_yellow.png | Bin 121 -> 0 bytes .../veejay-client/share/blackwhite.rc | 118 - .../veejay-client/share/button_back.png | Bin 837 -> 0 bytes .../veejay-client/share/button_bounce.png | Bin 268 -> 0 bytes .../veejay-client/share/button_dec.png | Bin 218 -> 0 bytes .../veejay-client/share/button_down.png | Bin 232 -> 0 bytes .../veejay-client/share/button_fbw.png | Bin 213 -> 0 bytes .../veejay-client/share/button_ffw.png | Bin 227 -> 0 bytes .../veejay-client/share/button_gotoend.png | Bin 210 -> 0 bytes .../veejay-client/share/button_gotostart.png | Bin 224 -> 0 bytes .../veejay-client/share/button_inc.png | Bin 223 -> 0 bytes .../veejay-client/share/button_loop.png | Bin 284 -> 0 bytes .../veejay-client/share/button_looponce.png | Bin 189 -> 0 bytes .../share/button_mini_decrement.png | Bin 190 -> 0 bytes .../share/button_mini_increment.png | Bin 194 -> 0 bytes .../veejay-client/share/button_next.png | Bin 841 -> 0 bytes .../veejay-client/share/button_pause.png | Bin 140 -> 0 bytes .../veejay-client/share/button_play.png | Bin 209 -> 0 bytes .../veejay-client/share/button_playmode.png | Bin 577 -> 0 bytes .../veejay-client/share/button_prev.png | Bin 218 -> 0 bytes .../veejay-client/share/button_rand.png | Bin 928 -> 0 bytes .../veejay-client/share/button_reverse.png | Bin 213 -> 0 bytes .../veejay-client/share/button_right.png | Bin 220 -> 0 bytes .../veejay-client/share/button_skip.png | Bin 221 -> 0 bytes .../veejay-client/share/button_skull.png | Bin 645 -> 0 bytes .../veejay-client/share/button_text.png | Bin 846 -> 0 bytes .../veejay-client/share/button_up.png | Bin 223 -> 0 bytes .../veejay-client/share/fx_entry_off.png | Bin 461 -> 0 bytes .../veejay-client/share/fx_entry_on.png | Bin 528 -> 0 bytes .../veejay-client/share/gveejay-default.rc | 21 - .../veejay-client/share/gveejay.glade | 9693 ------ veejay-current/veejay-client/share/gveejay.rc | 137 - .../share/gveejay.reloaded.glade | 24911 ---------------- .../share/gveejay.reloaded.gladep | 8 - .../veejay-client/share/high_contrast.rc | 118 - .../veejay-client/share/icon_255.png | Bin 193 -> 0 bytes .../veejay-client/share/icon_alpha.png | Bin 600 -> 0 bytes .../veejay-client/share/icon_apply.png | Bin 709 -> 0 bytes .../veejay-client/share/icon_berserk.png | Bin 737 -> 0 bytes .../veejay-client/share/icon_bezerk.png | Bin 737 -> 0 bytes .../veejay-client/share/icon_bounce.png | Bin 268 -> 0 bytes .../veejay-client/share/icon_bug.png | Bin 581 -> 0 bytes .../veejay-client/share/icon_bundle.png | Bin 851 -> 0 bytes .../veejay-client/share/icon_cache.png | Bin 554 -> 0 bytes .../veejay-client/share/icon_clear.png | Bin 616 -> 0 bytes .../veejay-client/share/icon_clearall.png | Bin 757 -> 0 bytes .../veejay-client/share/icon_color.png | Bin 749 -> 0 bytes .../veejay-client/share/icon_connect.png | Bin 291 -> 0 bytes .../veejay-client/share/icon_copy.png | Bin 472 -> 0 bytes .../veejay-client/share/icon_crop.png | Bin 321 -> 0 bytes .../veejay-client/share/icon_cut.png | Bin 556 -> 0 bytes .../veejay-client/share/icon_disconnect.png | Bin 302 -> 0 bytes .../veejay-client/share/icon_fadein.png | Bin 473 -> 0 bytes .../veejay-client/share/icon_fadeout.png | Bin 498 -> 0 bytes .../veejay-client/share/icon_follow.png | Bin 853 -> 0 bytes .../veejay-client/share/icon_fxm1.png | Bin 653 -> 0 bytes .../veejay-client/share/icon_fxm2.png | Bin 671 -> 0 bytes .../veejay-client/share/icon_fxm3.png | Bin 700 -> 0 bytes .../veejay-client/share/icon_fxm4.png | Bin 715 -> 0 bytes .../veejay-client/share/icon_fxmnone.png | Bin 824 -> 0 bytes .../veejay-client/share/icon_generator.png | Bin 803 -> 0 bytes .../veejay-client/share/icon_jack.png | Bin 619 -> 0 bytes .../veejay-client/share/icon_keybind.png | Bin 928 -> 0 bytes .../veejay-client/share/icon_keydetach.png | Bin 1070 -> 0 bytes .../veejay-client/share/icon_keyframe.png | Bin 718 -> 0 bytes .../veejay-client/share/icon_launch.png | Bin 291 -> 0 bytes .../veejay-client/share/icon_loop.png | Bin 284 -> 0 bytes .../veejay-client/share/icon_looponce.png | Bin 188 -> 0 bytes .../veejay-client/share/icon_looponcenop.png | Bin 211 -> 0 bytes .../veejay-client/share/icon_macroclear.png | Bin 1557 -> 0 bytes .../veejay-client/share/icon_macropause.png | Bin 1330 -> 0 bytes .../veejay-client/share/icon_macroplay.png | Bin 1294 -> 0 bytes .../veejay-client/share/icon_macrorec.png | Bin 1370 -> 0 bytes .../veejay-client/share/icon_mask.png | Bin 628 -> 0 bytes .../veejay-client/share/icon_minus.png | Bin 227 -> 0 bytes .../veejay-client/share/icon_new.png | Bin 318 -> 0 bytes .../veejay-client/share/icon_noloop.png | Bin 189 -> 0 bytes .../veejay-client/share/icon_open.png | Bin 1036 -> 0 bytes .../veejay-client/share/icon_openlist.png | Bin 1130 -> 0 bytes .../veejay-client/share/icon_openstream.png | Bin 1178 -> 0 bytes .../veejay-client/share/icon_osd.png | Bin 1092 -> 0 bytes .../veejay-client/share/icon_paste.png | Bin 590 -> 0 bytes .../veejay-client/share/icon_plarge.png | Bin 254 -> 0 bytes .../veejay-client/share/icon_playmode.png | Bin 801 -> 0 bytes .../veejay-client/share/icon_plus.png | Bin 206 -> 0 bytes .../veejay-client/share/icon_psmall.png | Bin 255 -> 0 bytes .../veejay-client/share/icon_question.png | Bin 684 -> 0 bytes .../veejay-client/share/icon_record.png | Bin 273 -> 0 bytes .../veejay-client/share/icon_recordstop.png | Bin 287 -> 0 bytes .../veejay-client/share/icon_recstop.png | Bin 236 -> 0 bytes .../veejay-client/share/icon_refresh.png | Bin 730 -> 0 bytes .../veejay-client/share/icon_render.png | Bin 742 -> 0 bytes .../veejay-client/share/icon_save.png | Bin 995 -> 0 bytes .../veejay-client/share/icon_saveas.png | Bin 1153 -> 0 bytes .../veejay-client/share/icon_screenshot.png | Bin 542 -> 0 bytes .../veejay-client/share/icon_send.png | Bin 917 -> 0 bytes .../veejay-client/share/icon_skull.png | Bin 547 -> 0 bytes .../veejay-client/share/icon_stream.png | Bin 577 -> 0 bytes .../veejay-client/share/icon_trash.png | Bin 897 -> 0 bytes .../veejay-client/share/icon_video.png | Bin 577 -> 0 bytes veejay-current/veejay-client/share/knob.png | Bin 45659 -> 0 bytes .../veejay-client/share/multicast.ico | Bin 2462 -> 0 bytes .../share/reloaded_classic.glade | 16508 ---------- veejay-current/veejay-client/share/smooth.rc | 118 - veejay-current/veejay-client/share/sync.png | Bin 902 -> 0 bytes .../veejay-client/share/veejay-icon.png | Bin 2755 -> 0 bytes .../veejay-client/share/veejay-logo-small.png | Bin 11997 -> 0 bytes .../veejay-client/share/veejay-logo.png | Bin 29623 -> 0 bytes veejay-current/veejay-client/src/Makefile.am | 16 - veejay-current/veejay-client/src/callback.c | 4886 --- veejay-current/veejay-client/src/callback.h | 80 - .../veejay-client/src/cellrendererspin.c | 358 - .../veejay-client/src/cellrendererspin.h | 68 - veejay-current/veejay-client/src/common.h | 73 - veejay-current/veejay-client/src/curve.c | 96 - veejay-current/veejay-client/src/curve.h | 33 - .../veejay-client/src/gtktimeselection.c | 870 - .../veejay-client/src/gtktimeselection.h | 68 - veejay-current/veejay-client/src/gveejay.c | 312 - veejay-current/veejay-client/src/keyboard.c | 327 - veejay-current/veejay-client/src/keyboard.h | 41 - .../veejay-client/src/mjpeg_logging.c | 230 - veejay-current/veejay-client/src/mpegconsts.c | 512 - veejay-current/veejay-client/src/multitrack.c | 1118 - veejay-current/veejay-client/src/multitrack.h | 31 - veejay-current/veejay-client/src/sequence.c | 1085 - veejay-current/veejay-client/src/sequence.h | 64 - .../veejay-client/src/tracksources.c | 198 - .../veejay-client/src/tracksources.h | 28 - veejay-current/veejay-client/src/utils.c | 105 - veejay-current/veejay-client/src/utils.h | 31 - veejay-current/veejay-client/src/vj-api.c | 9406 ------ veejay-current/veejay-client/src/vj-api.h | 78 - veejay-current/veejay-client/src/vj-midi.c | 600 - veejay-current/veejay-client/src/vmidi.h | 42 - veejay-current/veejay-client/src/yuv4mpeg.c | 1414 - veejay-current/veejay-core/AUTHORS | 30 + veejay-current/veejay-core/COPYING | 674 + .../{veejay-client => veejay-core}/ChangeLog | 0 veejay-current/veejay-core/Makefile.am | 51 + .../{veejay-client => veejay-core}/NEWS | 0 veejay-current/veejay-core/README | 243 + veejay-current/veejay-core/autogen.sh | 26 + veejay-current/veejay-core/buildinfo.sh | 17 + .../configure.ac | 570 +- .../{veejay-client => veejay-core}/cpuinfo.sh | 0 .../libvevo/Makefile.am | 0 .../libvevo/libvevo.h | 0 .../libvevo/lowlevel.h | 0 .../libvevo/pool.c | 0 .../libvevo/pool.h | 0 .../libvevo/vevo.c | 0 .../libvevo/vevo.h | 0 .../libvjmem/Makefile.am | 0 .../libvjmem/memcpy.c | 3 +- .../libvjmem/vj-x86.c | 3 +- .../libvjmem/vjmem.h | 0 .../veejay-core/libvjmsg/Makefile.am | 11 + .../libvjmsg/vj-common.c | 28 - .../libvjmsg/vj-msg.h | 1 - .../libvjnet/Makefile.am | 2 +- .../libvjnet/bswap.h | 0 .../libvjnet/cmd.c | 0 .../libvjnet/cmd.h | 0 .../libvjnet/dummy.c | 0 .../libvjnet/mcastreceiver.c | 3 +- .../libvjnet/mcastreceiver.h | 0 .../libvjnet/mcastsender.c | 3 +- .../libvjnet/mcastsender.h | 0 .../libvjnet/packet.c | 0 .../libvjnet/packet.h | 0 .../libvjnet/vj-client.c | 7 +- .../libvjnet/vj-client.h | 0 .../libvjnet/vj-server.c | 4 +- .../libvjnet/vj-server.h | 0 .../libyuv/Makefile.am | 3 +- .../libyuv/mmx.h | 0 .../libyuv/mmx_macros.h | 0 .../libyuv/yuvconv.c | 7 +- .../libyuv/yuvconv.h | 0 .../veejay-core/thirdparty/Makefile.am | 10 + .../thirdparty/aclib/Makefile.am | 0 .../thirdparty/aclib/ac.h | 0 .../thirdparty/aclib/ac_internal.h | 0 .../thirdparty/aclib/accore.c | 0 .../thirdparty/aclib/average.c | 0 .../thirdparty/aclib/img_internal.h | 0 .../thirdparty/aclib/img_rgb_packed.c | 0 .../thirdparty/aclib/img_x86_common.h | 0 .../thirdparty/aclib/img_yuv_mixed.c | 0 .../thirdparty/aclib/img_yuv_packed.c | 0 .../thirdparty/aclib/img_yuv_planar.c | 0 .../thirdparty/aclib/img_yuv_rgb.c | 0 .../thirdparty/aclib/imgconvert.c | 0 .../thirdparty/aclib/imgconvert.h | 0 .../thirdparty/aclib/memcpy.c | 0 .../thirdparty/aclib/rescale.c | 0 .../thirdparty/aclib/rgb-yuv-conv.pl | 0 .../thirdparty/fastarm/Makefile.am | 0 .../thirdparty/fastarm/README | 0 .../thirdparty/fastarm/new_arm.S | 0 .../thirdparty/fastarm/new_arm.h | 0 .../thirdparty/libhash/Makefile.am | 4 +- .../thirdparty/libhash/hash.c | 0 .../thirdparty/libhash/hash.h | 0 .../thirdparty/liblzo/Makefile.am | 2 +- .../thirdparty/liblzo/lzo.c | 3 +- .../thirdparty/liblzo/lzo.h | 0 .../thirdparty/liblzo/lzoconf.h | 0 .../thirdparty/liblzo/lzodefs.h | 0 .../thirdparty/liblzo/minilzo.c | 0 .../thirdparty/liblzo/minilzo.h | 0 .../thirdparty/mjpegtools/Makefile.am | 3 +- .../thirdparty/mjpegtools/fastintfns.h | 0 .../thirdparty/mjpegtools}/format_codes.h | 0 .../thirdparty/mjpegtools/mjpeg_logging.c | 2 +- .../thirdparty/mjpegtools}/mjpeg_logging.h | 2 - .../thirdparty/mjpegtools}/mjpeg_types.h | 0 .../thirdparty/mjpegtools/mpegconsts.c | 5 +- .../thirdparty/mjpegtools}/mpegconsts.h | 3 +- .../thirdparty/mjpegtools}/mpegtimecode.c | 0 .../thirdparty/mjpegtools}/mpegtimecode.h | 0 .../thirdparty/mjpegtools}/videodev_mjpeg.h | 0 .../thirdparty/mjpegtools/yuv4mpeg.c | 3 + .../thirdparty/mjpegtools}/yuv4mpeg.h | 3 +- .../thirdparty/mjpegtools}/yuv4mpeg_intern.h | 0 .../thirdparty/mjpegtools}/yuv4mpeg_ratio.c | 3 +- veejay-current/veejay-core/veejay.arch | 1 + veejay-current/veejay-core/veejaycore.pc.in | 10 + .../veejay-core/veejaycore/Makefile.am | 54 + veejay-current/veejay-core/veejaycore/av.h | 116 + .../veejay-core/veejaycore/avcommon.h | 87 + .../veejay-core/veejaycore/avhelper.c | 688 + .../veejay-core/veejaycore/avhelper.h | 73 + veejay-current/veejay-core/veejaycore/core.c | 4 + veejay-current/veejay-core/veejaycore/core.h | 4 + veejay-current/veejay-core/veejaycore/defs.h | 80 + .../veejay-core/veejaycore/veejaycore.h | 5 + .../veejay => veejay-core/veejaycore}/vims.h | 22 - .../veejaycore}/vj-task.c | 15 +- .../veejaycore}/vj-task.h | 0 veejay-current/veejay-server/AUTHORS | 2 +- veejay-current/veejay-server/Makefile.am | 4 +- veejay-current/veejay-server/README | 2 +- veejay-current/veejay-server/configure.ac | 69 +- .../veejay-server/libel/Makefile.am | 16 +- veejay-current/veejay-server/libel/avhelper.c | 10 +- veejay-current/veejay-server/libel/avilib.c | 4 +- veejay-current/veejay-server/libel/elcache.c | 4 +- veejay-current/veejay-server/libel/lav_io.c | 10 +- veejay-current/veejay-server/libel/lav_io.h | 8 +- veejay-current/veejay-server/libel/pixbuf.c | 9 +- veejay-current/veejay-server/libel/pixbuf.h | 1 - veejay-current/veejay-server/libel/rawdv.c | 4 +- .../veejay-server/libel/vj-avcodec.c | 10 +- veejay-current/veejay-server/libel/vj-dv.c | 7 +- veejay-current/veejay-server/libel/vj-el.c | 18 +- veejay-current/veejay-server/libel/vj-el.h | 2 +- veejay-current/veejay-server/libel/vj-mmap.c | 4 +- .../veejay-server/libplugger/Makefile.am | 3 +- .../veejay-server/libplugger/defaults.c | 2 +- .../libplugger/freeframe-loader.c | 11 +- .../veejay-server/libplugger/frei0r-loader.c | 11 +- .../veejay-server/libplugger/livido-loader.c | 13 +- .../veejay-server/libplugger/oscsend.c | 6 +- .../veejay-server/libplugger/plugload.c | 13 +- .../veejay-server/libplugger/utility.c | 11 +- .../veejay-server/libqrwrap/qrwrap.c | 5 +- .../veejay-server/libsample/Makefile.am | 11 +- .../veejay-server/libsample/sampleadm.c | 11 +- .../veejay-server/libsample/sampleadm.h | 2 +- .../veejay-server/libsamplerec/Makefile.am | 9 +- .../veejay-server/libsamplerec/samplerecord.c | 6 +- .../veejay-server/libstream/Makefile.am | 15 +- .../veejay-server/libstream/v4l2utils.c | 9 +- .../veejay-server/libstream/vj-avformat.c | 9 +- .../veejay-server/libstream/vj-dv1394.c | 5 +- .../veejay-server/libstream/vj-net.c | 14 +- .../veejay-server/libstream/vj-tag.c | 14 +- .../veejay-server/libstream/vj-tag.h | 2 +- .../veejay-server/libstream/vj-vloopback.c | 9 +- .../veejay-server/libstream/vj-yuv4mpeg.c | 10 +- .../veejay-server/libstream/vj-yuv4mpeg.h | 2 +- .../veejay-server/libsubsample/Makefile.am | 7 +- .../veejay-server/libsubsample/subsample.c | 13 +- .../veejay-server/libvje/Makefile.am | 5 - .../veejay-server/libvje/effects/alpha2img.c | 2 +- .../veejay-server/libvje/effects/alphablend.c | 2 +- .../libvje/effects/alphadampen.c | 2 +- .../veejay-server/libvje/effects/alphafill.c | 2 +- .../libvje/effects/alphaflatten.c | 2 +- .../libvje/effects/alphanegate.c | 2 +- .../libvje/effects/alphaselect.c | 2 +- .../libvje/effects/alphaselect2.c | 2 +- .../libvje/effects/alphatransition.c | 3 +- .../veejay-server/libvje/effects/autoeq.c | 2 +- .../libvje/effects/average-blend.c | 3 +- .../veejay-server/libvje/effects/average.c | 2 +- .../veejay-server/libvje/effects/balls.c | 2 +- .../veejay-server/libvje/effects/baltantv.c | 2 +- .../veejay-server/libvje/effects/bathroom.c | 2 +- .../veejay-server/libvje/effects/bgpush.c | 2 +- .../veejay-server/libvje/effects/bgsubtract.c | 4 +- .../libvje/effects/bgsubtractgauss.c | 7 +- .../libvje/effects/binaryoverlays.c | 2 +- .../veejay-server/libvje/effects/blob.c | 2 +- .../veejay-server/libvje/effects/boids.c | 2 +- .../veejay-server/libvje/effects/borders.c | 2 +- .../veejay-server/libvje/effects/bwotsu.c | 2 +- .../veejay-server/libvje/effects/bwselect.c | 2 +- .../veejay-server/libvje/effects/cali.c | 6 +- .../veejay-server/libvje/effects/cartonize.c | 2 +- .../veejay-server/libvje/effects/chameleon.c | 4 +- .../libvje/effects/chameleonblend.c | 2 +- .../libvje/effects/chromamagick.c | 2 +- .../libvje/effects/chromamagickalpha.c | 2 +- .../libvje/effects/chromapalette.c | 2 +- .../libvje/effects/chromascratcher.c | 2 +- .../veejay-server/libvje/effects/chromium.c | 2 +- .../veejay-server/libvje/effects/colflash.c | 2 +- .../libvje/effects/colmorphology.c | 2 +- .../veejay-server/libvje/effects/color.c | 2 +- .../libvje/effects/coloradjust.c | 2 +- .../veejay-server/libvje/effects/colorhis.c | 5 +- .../veejay-server/libvje/effects/colormap.c | 2 +- .../veejay-server/libvje/effects/colorshift.c | 2 +- .../veejay-server/libvje/effects/common.c | 4 +- .../veejay-server/libvje/effects/common.h | 2 + .../libvje/effects/complexinvert.c | 2 +- .../libvje/effects/complexsaturate.c | 2 +- .../libvje/effects/complexsync.c | 2 +- .../libvje/effects/complexthreshold.c | 2 +- .../libvje/effects/constantblend.c | 2 +- .../libvje/effects/contourextract.c | 6 +- .../veejay-server/libvje/effects/contrast.c | 2 +- .../veejay-server/libvje/effects/crosspixel.c | 2 +- .../veejay-server/libvje/effects/cutstop.c | 2 +- .../libvje/effects/deinterlace.c | 2 +- .../veejay-server/libvje/effects/dices.c | 2 +- .../veejay-server/libvje/effects/diff.c | 4 +- .../veejay-server/libvje/effects/diffimg.c | 3 +- .../veejay-server/libvje/effects/diffmap.c | 2 +- .../veejay-server/libvje/effects/dissolve.c | 2 +- .../veejay-server/libvje/effects/distort.c | 2 +- .../veejay-server/libvje/effects/dither.c | 2 +- .../veejay-server/libvje/effects/dummy.c | 2 +- .../veejay-server/libvje/effects/dupmagic.c | 2 +- .../veejay-server/libvje/effects/emboss.c | 2 +- .../libvje/effects/enhancemask.c | 2 +- .../libvje/effects/feathermask.c | 2 +- .../libvje/effects/fibdownscale.c | 2 +- .../veejay-server/libvje/effects/fisheye.c | 2 +- .../veejay-server/libvje/effects/flare.c | 2 +- .../veejay-server/libvje/effects/flip.c | 2 +- .../libvje/effects/frameborder.c | 2 +- .../veejay-server/libvje/effects/gamma.c | 2 +- .../veejay-server/libvje/effects/gaussblur.c | 2 +- .../veejay-server/libvje/effects/ghost.c | 2 +- .../veejay-server/libvje/effects/greyselect.c | 2 +- .../veejay-server/libvje/effects/iris.c | 2 +- .../veejay-server/libvje/effects/isolate.c | 2 +- .../veejay-server/libvje/effects/keyselect.c | 2 +- .../veejay-server/libvje/effects/killchroma.c | 2 +- .../libvje/effects/levelcorrection.c | 2 +- .../veejay-server/libvje/effects/lumablend.c | 3 +- .../veejay-server/libvje/effects/lumakey.c | 2 +- .../libvje/effects/lumakeyalpha.c | 2 +- .../veejay-server/libvje/effects/lumamagick.c | 2 +- .../veejay-server/libvje/effects/lumamask.c | 2 +- .../libvje/effects/magicalphaoverlays.c | 3 +- .../libvje/effects/magicmirror.c | 2 +- .../libvje/effects/magicoverlays.c | 2 +- .../libvje/effects/magicoverlaysalpha.c | 3 +- .../libvje/effects/magicscratcher.c | 2 +- .../veejay-server/libvje/effects/mask.c | 2 +- .../veejay-server/libvje/effects/maskstop.c | 2 +- .../libvje/effects/masktransition.c | 3 +- .../veejay-server/libvje/effects/meanfilter.c | 2 +- .../veejay-server/libvje/effects/median.c | 2 +- .../veejay-server/libvje/effects/mirrors.c | 2 +- .../veejay-server/libvje/effects/mirrors2.c | 2 +- .../veejay-server/libvje/effects/mixtoalpha.c | 2 +- .../veejay-server/libvje/effects/morphology.c | 2 +- .../veejay-server/libvje/effects/motionblur.c | 2 +- .../veejay-server/libvje/effects/motionmap.c | 5 +- .../veejay-server/libvje/effects/mtracer.c | 2 +- .../libvje/effects/negatechannel.c | 2 +- .../veejay-server/libvje/effects/negation.c | 2 +- .../veejay-server/libvje/effects/neighbours.c | 2 +- .../libvje/effects/neighbours2.c | 2 +- .../libvje/effects/neighbours3.c | 2 +- .../libvje/effects/neighbours4.c | 2 +- .../libvje/effects/neighbours5.c | 2 +- .../veejay-server/libvje/effects/nervous.c | 2 +- .../veejay-server/libvje/effects/noiseadd.c | 2 +- .../libvje/effects/noisepencil.c | 2 +- .../veejay-server/libvje/effects/opacity.c | 3 +- .../veejay-server/libvje/effects/opacityadv.c | 2 +- .../libvje/effects/opacitythreshold.c | 3 +- .../veejay-server/libvje/effects/overclock.c | 2 +- .../libvje/effects/passthrough.c | 2 +- .../libvje/effects/pencilsketch.c | 4 +- .../libvje/effects/perspective.c | 2 +- .../veejay-server/libvje/effects/photoplay.c | 2 +- .../veejay-server/libvje/effects/picinpic.c | 4 +- .../veejay-server/libvje/effects/pixelate.c | 2 +- .../veejay-server/libvje/effects/pixelsort.c | 2 +- .../libvje/effects/pixelsortalpha.c | 2 +- .../veejay-server/libvje/effects/porterduff.c | 2 +- .../veejay-server/libvje/effects/posterize.c | 2 +- .../veejay-server/libvje/effects/posterize2.c | 2 +- .../veejay-server/libvje/effects/radcor.c | 2 +- .../veejay-server/libvje/effects/radialblur.c | 2 +- .../libvje/effects/radioactive.c | 4 +- .../veejay-server/libvje/effects/randnoise.c | 2 +- .../veejay-server/libvje/effects/raster.c | 2 +- .../veejay-server/libvje/effects/rawman.c | 2 +- .../veejay-server/libvje/effects/rawval.c | 2 +- .../veejay-server/libvje/effects/reflection.c | 2 +- .../veejay-server/libvje/effects/revtv.c | 2 +- .../veejay-server/libvje/effects/rgbchannel.c | 4 +- .../veejay-server/libvje/effects/rgbkey.c | 2 +- .../libvje/effects/rgbkeysmooth.c | 2 +- .../veejay-server/libvje/effects/ripple.c | 2 +- .../veejay-server/libvje/effects/rotozoom.c | 2 +- .../veejay-server/libvje/effects/scratcher.c | 2 +- .../veejay-server/libvje/effects/sinoids.c | 2 +- .../veejay-server/libvje/effects/slice.c | 2 +- .../veejay-server/libvje/effects/slicer.c | 2 +- .../veejay-server/libvje/effects/smear.c | 2 +- .../veejay-server/libvje/effects/smuck.c | 2 +- .../veejay-server/libvje/effects/softblur.c | 2 +- .../veejay-server/libvje/effects/solarize.c | 2 +- .../veejay-server/libvje/effects/split.c | 2 +- .../veejay-server/libvje/effects/stretch.c | 2 +- .../veejay-server/libvje/effects/swirl.c | 2 +- .../veejay-server/libvje/effects/threshold.c | 2 +- .../libvje/effects/timedistort.c | 2 +- .../veejay-server/libvje/effects/toalpha.c | 2 +- .../veejay-server/libvje/effects/tracer.c | 2 +- .../veejay-server/libvje/effects/transform.c | 2 +- .../libvje/effects/travelmatte.c | 2 +- .../libvje/effects/tripplicity.c | 2 +- .../veejay-server/libvje/effects/uvcorrect.c | 2 +- .../veejay-server/libvje/effects/videoplay.c | 2 +- .../veejay-server/libvje/effects/videowall.c | 2 +- .../veejay-server/libvje/effects/water.c | 2 +- .../libvje/effects/waterrippletv.c | 2 +- .../veejay-server/libvje/effects/whiteframe.c | 2 +- .../libvje/effects/widthmirror.c | 2 +- .../veejay-server/libvje/effects/zoom.c | 2 +- .../veejay-server/libvje/internal.h | 1 - .../veejay-server/libvje/transitions/3bar.c | 2 +- .../libvje/transitions/fadecolor.c | 2 +- .../libvje/transitions/fadecolorrgb.c | 2 +- .../libvje/transitions/slidingdoor.c | 2 +- .../libvje/transitions/transblend.c | 2 +- .../libvje/transitions/transcarot.c | 2 +- .../libvje/transitions/transline.c | 2 +- .../libvje/transitions/transop.c | 2 +- .../veejay-server/libvje/transitions/vbar.c | 2 +- .../veejay-server/libvje/transitions/wipe.c | 2 +- .../veejay-server/libvje/vj-effect.c | 9 +- .../veejay-server/libvje/vj-effman.c | 7 +- veejay-current/veejay-server/libvje/vje.h | 36 - .../veejay-server/libvjmsg/Makefile.am | 15 - .../veejay-server/libvjxml/vj-xml.c | 2 +- .../veejay-server/thirdparty/Makefile.am | 10 +- .../thirdparty/bio2jack/Makefile.am | 1 - .../thirdparty/bio2jack/bio2jack.c | 2 +- .../thirdparty/mjpegtools/format_codes.h | 46 - .../thirdparty/mjpegtools/mjpeg_logging.h | 77 - .../thirdparty/mjpegtools/mjpeg_types.h | 28 - .../thirdparty/mjpegtools/mpegconsts.h | 171 - .../thirdparty/mjpegtools/mpegtimecode.c | 105 - .../thirdparty/mjpegtools/mpegtimecode.h | 39 - .../thirdparty/mjpegtools/videodev_mjpeg.h | 118 - .../thirdparty/mjpegtools/yuv4mpeg.h | 757 - .../thirdparty/mjpegtools/yuv4mpeg_intern.h | 85 - .../thirdparty/mjpegtools/yuv4mpeg_ratio.c | 157 - .../veejay-server/veejay/Makefile.am | 72 +- .../veejay-server/veejay/jpegutils.c | 11 +- .../veejay-server/veejay/liblavplayvj.c | 25 +- veejay-current/veejay-server/veejay/veejay.c | 41 +- veejay-current/veejay-server/veejay/vevo.h | 2 +- .../veejay-server/veejay/vj-composite.c | 9 +- veejay-current/veejay-server/veejay/vj-dfb.c | 2 +- .../veejay-server/veejay/vj-event.c | 23 +- .../veejay-server/veejay/vj-eventman.c | 10 +- veejay-current/veejay-server/veejay/vj-font.c | 15 +- veejay-current/veejay-server/veejay/vj-lib.h | 6 +- .../veejay-server/veejay/vj-macro.c | 8 +- veejay-current/veejay-server/veejay/vj-misc.c | 9 +- veejay-current/veejay-server/veejay/vj-osc.c | 16 +- .../veejay-server/veejay/vj-perform.c | 19 +- .../veejay-server/veejay/vj-pjack.c | 2 + .../veejay-server/veejay/vj-sdl-font.c | 8 +- veejay-current/veejay-server/veejay/vj-sdl.c | 10 +- .../veejay-server/veejay/vj-share.c | 9 +- veejay-current/veejay-server/veejay/vj-shm.c | 7 +- .../veejay-server/veejay/vj-split.c | 11 +- .../veejay-server/veejay/vj-viewport.c | 11 +- veejay-current/veejay-server/veejay/vjkf.c | 9 +- veejay-current/veejay-server/veejay/x11misc.c | 2 +- veejay-current/veejay-themes/AUTHORS | 2 - veejay-current/veejay-themes/COPYING | 340 - veejay-current/veejay-themes/ChangeLog | 0 veejay-current/veejay-themes/GrayHeart.rc | 1587 - .../veejay-themes/GrayHeart.tar.bz2 | Bin 76291 -> 0 bytes veejay-current/veejay-themes/INSTALL.sh | 83 - veejay-current/veejay-themes/NEWS | 2 - veejay-current/veejay-themes/README | 10 - veejay-current/veejay-themes/UNINSTALL.sh | 38 - veejay-current/veejay-themes/blackvelvet.rc | 165 - .../veejay-themes/blackvelvet.tar.bz2 | Bin 1696 -> 0 bytes veejay-current/veejay-themes/fruitsalade.rc | 161 - veejay-current/veejay-utils/configure.ac | 21 +- veejay-current/veejay-utils/src/Makefile.am | 4 +- veejay-current/veejay-utils/src/sayVIMS.c | 10 +- 744 files changed, 3202 insertions(+), 80114 deletions(-) delete mode 100644 veejay-current/veejay-client/.gitignore delete mode 100644 veejay-current/veejay-client/AUTHORS delete mode 100644 veejay-current/veejay-client/COPYING delete mode 100644 veejay-current/veejay-client/Makefile.am delete mode 100644 veejay-current/veejay-client/PKGBUILD delete mode 100644 veejay-current/veejay-client/README delete mode 100755 veejay-current/veejay-client/autogen.sh delete mode 100644 veejay-current/veejay-client/debian/README delete mode 100644 veejay-current/veejay-client/debian/changelog delete mode 100644 veejay-current/veejay-client/debian/compat delete mode 100644 veejay-current/veejay-client/debian/control delete mode 100644 veejay-current/veejay-client/debian/copyright delete mode 100644 veejay-current/veejay-client/debian/docs delete mode 100755 veejay-current/veejay-client/debian/rules delete mode 100644 veejay-current/veejay-client/debian/source/format delete mode 100644 veejay-current/veejay-client/doc/FXAnim.txt delete mode 100644 veejay-current/veejay-client/gveejay-paths.sh.in delete mode 100644 veejay-current/veejay-client/gveejay.spec.in delete mode 100644 veejay-current/veejay-client/menu/gveejayreloaded.desktop delete mode 100644 veejay-current/veejay-client/menu/veejay1.desktop delete mode 100644 veejay-current/veejay-client/menu/veejay2.desktop delete mode 100644 veejay-current/veejay-client/menu/veejay3.desktop delete mode 100644 veejay-current/veejay-client/menu/veejay4.desktop delete mode 100644 veejay-current/veejay-client/menu/veejay5.desktop rename veejay-current/{ => veejay-client}/reloaded-gtk3/.gitignore (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/AUTHORS (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/COPYING (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/ChangeLog (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/Makefile.am (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/NEWS (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/PKGBUILD (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/README (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/autogen.sh (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/configure.ac (97%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/cpuinfo.sh (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/README (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/changelog (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/compat (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/control (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/copyright (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/docs (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/rules (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/debian/source/format (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/doc/FXAnim.txt (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/gveejay-paths.sh.in (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/gveejay.spec.in (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/gveejayreloaded.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/veejay1.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/veejay2.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/veejay3.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/veejay4.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/menu/veejay5.desktop (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_black.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_blue.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_green.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_grey.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_red.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/bg_yellow.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/blackwhite.rc (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_back.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_bounce.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_dec.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_down.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_fbw.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_ffw.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_gotoend.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_gotostart.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_inc.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_loop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_looponce.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_mini_decrement.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_mini_increment.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_next.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_pause.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_play.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_playmode.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_prev.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_rand.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_reverse.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_right.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_skip.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_skull.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_text.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/button_up.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/fx_entry_off.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/fx_entry_on.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay-default.rc (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.glade (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.rc (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.reloaded.css (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.reloaded.djay.css (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.reloaded.glade (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.reloaded.gladep (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/gveejay.reloaded.xml (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/high_contrast.rc (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_255.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_alpha.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_apply.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_berserk.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_bezerk.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_bounce.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_bug.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_bundle.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_cache.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_clear.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_clearall.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_color.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_connect.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_copy.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_crop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_cut.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_disconnect.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fadein.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fadeout.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_follow.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fxm1.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fxm2.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fxm3.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fxm4.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_fxmnone.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_generator.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_jack.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_keybind.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_keydetach.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_keyframe.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_launch.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_loop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_looponce.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_looponcenop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_macroclear.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_macropause.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_macroplay.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_macrorec.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_mask.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_minus.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_new.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_noloop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_open.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_openlist.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_openstream.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_osd.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_paste.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_plarge.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_playmode.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_plus.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_psmall.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_question.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_record.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_recordstop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_recstop.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_refresh.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_render.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_save.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_saveas.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_screenshot.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_send.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_skull.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_stream.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_trash.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/icon_video.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/knob.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/multicast.ico (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/reloaded_classic.glade (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/smooth.rc (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/sync.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/veejay-icon.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/veejay-logo-small.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/share/veejay-logo.png (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/Makefile.am (86%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/callback.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/callback.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/cellrendererspin.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/cellrendererspin.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/common.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/curve.c (98%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/curve.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/format_codes.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/gtk3curve.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/gtk3curve.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/gtktimeselection.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/gtktimeselection.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/gveejay.c (98%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/keyboard.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/keyboard.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mjpeg_logging.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mjpeg_logging.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mjpeg_types.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mpegconsts.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mpegconsts.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mpegtimecode.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/mpegtimecode.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/multitrack.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/multitrack.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/sequence.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/sequence.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/tracksources.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/tracksources.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/utils.c (98%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/utils.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/videodev_mjpeg.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/vj-api.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/vj-api.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/vj-midi.c (99%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/vmidi.h (65%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/yuv4mpeg.c (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/yuv4mpeg.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/yuv4mpeg_intern.h (100%) rename veejay-current/{ => veejay-client}/reloaded-gtk3/src/yuv4mpeg_ratio.c (100%) delete mode 100644 veejay-current/veejay-client/share/bg.png delete mode 100644 veejay-current/veejay-client/share/bg_black.png delete mode 100644 veejay-current/veejay-client/share/bg_blue.png delete mode 100644 veejay-current/veejay-client/share/bg_green.png delete mode 100644 veejay-current/veejay-client/share/bg_grey.png delete mode 100644 veejay-current/veejay-client/share/bg_red.png delete mode 100644 veejay-current/veejay-client/share/bg_yellow.png delete mode 100644 veejay-current/veejay-client/share/blackwhite.rc delete mode 100644 veejay-current/veejay-client/share/button_back.png delete mode 100644 veejay-current/veejay-client/share/button_bounce.png delete mode 100644 veejay-current/veejay-client/share/button_dec.png delete mode 100644 veejay-current/veejay-client/share/button_down.png delete mode 100644 veejay-current/veejay-client/share/button_fbw.png delete mode 100644 veejay-current/veejay-client/share/button_ffw.png delete mode 100644 veejay-current/veejay-client/share/button_gotoend.png delete mode 100644 veejay-current/veejay-client/share/button_gotostart.png delete mode 100644 veejay-current/veejay-client/share/button_inc.png delete mode 100644 veejay-current/veejay-client/share/button_loop.png delete mode 100644 veejay-current/veejay-client/share/button_looponce.png delete mode 100644 veejay-current/veejay-client/share/button_mini_decrement.png delete mode 100644 veejay-current/veejay-client/share/button_mini_increment.png delete mode 100644 veejay-current/veejay-client/share/button_next.png delete mode 100644 veejay-current/veejay-client/share/button_pause.png delete mode 100644 veejay-current/veejay-client/share/button_play.png delete mode 100644 veejay-current/veejay-client/share/button_playmode.png delete mode 100644 veejay-current/veejay-client/share/button_prev.png delete mode 100644 veejay-current/veejay-client/share/button_rand.png delete mode 100644 veejay-current/veejay-client/share/button_reverse.png delete mode 100644 veejay-current/veejay-client/share/button_right.png delete mode 100644 veejay-current/veejay-client/share/button_skip.png delete mode 100644 veejay-current/veejay-client/share/button_skull.png delete mode 100644 veejay-current/veejay-client/share/button_text.png delete mode 100644 veejay-current/veejay-client/share/button_up.png delete mode 100644 veejay-current/veejay-client/share/fx_entry_off.png delete mode 100644 veejay-current/veejay-client/share/fx_entry_on.png delete mode 100644 veejay-current/veejay-client/share/gveejay-default.rc delete mode 100644 veejay-current/veejay-client/share/gveejay.glade delete mode 100644 veejay-current/veejay-client/share/gveejay.rc delete mode 100644 veejay-current/veejay-client/share/gveejay.reloaded.glade delete mode 100644 veejay-current/veejay-client/share/gveejay.reloaded.gladep delete mode 100644 veejay-current/veejay-client/share/high_contrast.rc delete mode 100644 veejay-current/veejay-client/share/icon_255.png delete mode 100644 veejay-current/veejay-client/share/icon_alpha.png delete mode 100644 veejay-current/veejay-client/share/icon_apply.png delete mode 100644 veejay-current/veejay-client/share/icon_berserk.png delete mode 100644 veejay-current/veejay-client/share/icon_bezerk.png delete mode 100644 veejay-current/veejay-client/share/icon_bounce.png delete mode 100644 veejay-current/veejay-client/share/icon_bug.png delete mode 100644 veejay-current/veejay-client/share/icon_bundle.png delete mode 100644 veejay-current/veejay-client/share/icon_cache.png delete mode 100644 veejay-current/veejay-client/share/icon_clear.png delete mode 100644 veejay-current/veejay-client/share/icon_clearall.png delete mode 100644 veejay-current/veejay-client/share/icon_color.png delete mode 100644 veejay-current/veejay-client/share/icon_connect.png delete mode 100644 veejay-current/veejay-client/share/icon_copy.png delete mode 100644 veejay-current/veejay-client/share/icon_crop.png delete mode 100644 veejay-current/veejay-client/share/icon_cut.png delete mode 100644 veejay-current/veejay-client/share/icon_disconnect.png delete mode 100644 veejay-current/veejay-client/share/icon_fadein.png delete mode 100644 veejay-current/veejay-client/share/icon_fadeout.png delete mode 100644 veejay-current/veejay-client/share/icon_follow.png delete mode 100644 veejay-current/veejay-client/share/icon_fxm1.png delete mode 100644 veejay-current/veejay-client/share/icon_fxm2.png delete mode 100644 veejay-current/veejay-client/share/icon_fxm3.png delete mode 100644 veejay-current/veejay-client/share/icon_fxm4.png delete mode 100644 veejay-current/veejay-client/share/icon_fxmnone.png delete mode 100644 veejay-current/veejay-client/share/icon_generator.png delete mode 100644 veejay-current/veejay-client/share/icon_jack.png delete mode 100644 veejay-current/veejay-client/share/icon_keybind.png delete mode 100644 veejay-current/veejay-client/share/icon_keydetach.png delete mode 100644 veejay-current/veejay-client/share/icon_keyframe.png delete mode 100644 veejay-current/veejay-client/share/icon_launch.png delete mode 100644 veejay-current/veejay-client/share/icon_loop.png delete mode 100644 veejay-current/veejay-client/share/icon_looponce.png delete mode 100644 veejay-current/veejay-client/share/icon_looponcenop.png delete mode 100644 veejay-current/veejay-client/share/icon_macroclear.png delete mode 100644 veejay-current/veejay-client/share/icon_macropause.png delete mode 100644 veejay-current/veejay-client/share/icon_macroplay.png delete mode 100644 veejay-current/veejay-client/share/icon_macrorec.png delete mode 100644 veejay-current/veejay-client/share/icon_mask.png delete mode 100644 veejay-current/veejay-client/share/icon_minus.png delete mode 100644 veejay-current/veejay-client/share/icon_new.png delete mode 100644 veejay-current/veejay-client/share/icon_noloop.png delete mode 100644 veejay-current/veejay-client/share/icon_open.png delete mode 100644 veejay-current/veejay-client/share/icon_openlist.png delete mode 100644 veejay-current/veejay-client/share/icon_openstream.png delete mode 100644 veejay-current/veejay-client/share/icon_osd.png delete mode 100644 veejay-current/veejay-client/share/icon_paste.png delete mode 100644 veejay-current/veejay-client/share/icon_plarge.png delete mode 100644 veejay-current/veejay-client/share/icon_playmode.png delete mode 100644 veejay-current/veejay-client/share/icon_plus.png delete mode 100644 veejay-current/veejay-client/share/icon_psmall.png delete mode 100644 veejay-current/veejay-client/share/icon_question.png delete mode 100644 veejay-current/veejay-client/share/icon_record.png delete mode 100644 veejay-current/veejay-client/share/icon_recordstop.png delete mode 100644 veejay-current/veejay-client/share/icon_recstop.png delete mode 100644 veejay-current/veejay-client/share/icon_refresh.png delete mode 100644 veejay-current/veejay-client/share/icon_render.png delete mode 100644 veejay-current/veejay-client/share/icon_save.png delete mode 100644 veejay-current/veejay-client/share/icon_saveas.png delete mode 100644 veejay-current/veejay-client/share/icon_screenshot.png delete mode 100644 veejay-current/veejay-client/share/icon_send.png delete mode 100644 veejay-current/veejay-client/share/icon_skull.png delete mode 100644 veejay-current/veejay-client/share/icon_stream.png delete mode 100644 veejay-current/veejay-client/share/icon_trash.png delete mode 100644 veejay-current/veejay-client/share/icon_video.png delete mode 100644 veejay-current/veejay-client/share/knob.png delete mode 100644 veejay-current/veejay-client/share/multicast.ico delete mode 100644 veejay-current/veejay-client/share/reloaded_classic.glade delete mode 100644 veejay-current/veejay-client/share/smooth.rc delete mode 100644 veejay-current/veejay-client/share/sync.png delete mode 100644 veejay-current/veejay-client/share/veejay-icon.png delete mode 100644 veejay-current/veejay-client/share/veejay-logo-small.png delete mode 100644 veejay-current/veejay-client/share/veejay-logo.png delete mode 100644 veejay-current/veejay-client/src/Makefile.am delete mode 100644 veejay-current/veejay-client/src/callback.c delete mode 100644 veejay-current/veejay-client/src/callback.h delete mode 100644 veejay-current/veejay-client/src/cellrendererspin.c delete mode 100644 veejay-current/veejay-client/src/cellrendererspin.h delete mode 100644 veejay-current/veejay-client/src/common.h delete mode 100644 veejay-current/veejay-client/src/curve.c delete mode 100644 veejay-current/veejay-client/src/curve.h delete mode 100644 veejay-current/veejay-client/src/gtktimeselection.c delete mode 100644 veejay-current/veejay-client/src/gtktimeselection.h delete mode 100644 veejay-current/veejay-client/src/gveejay.c delete mode 100644 veejay-current/veejay-client/src/keyboard.c delete mode 100644 veejay-current/veejay-client/src/keyboard.h delete mode 100644 veejay-current/veejay-client/src/mjpeg_logging.c delete mode 100644 veejay-current/veejay-client/src/mpegconsts.c delete mode 100644 veejay-current/veejay-client/src/multitrack.c delete mode 100644 veejay-current/veejay-client/src/multitrack.h delete mode 100644 veejay-current/veejay-client/src/sequence.c delete mode 100644 veejay-current/veejay-client/src/sequence.h delete mode 100644 veejay-current/veejay-client/src/tracksources.c delete mode 100644 veejay-current/veejay-client/src/tracksources.h delete mode 100644 veejay-current/veejay-client/src/utils.c delete mode 100644 veejay-current/veejay-client/src/utils.h delete mode 100644 veejay-current/veejay-client/src/vj-api.c delete mode 100644 veejay-current/veejay-client/src/vj-api.h delete mode 100644 veejay-current/veejay-client/src/vj-midi.c delete mode 100644 veejay-current/veejay-client/src/vmidi.h delete mode 100644 veejay-current/veejay-client/src/yuv4mpeg.c create mode 100644 veejay-current/veejay-core/AUTHORS create mode 100644 veejay-current/veejay-core/COPYING rename veejay-current/{veejay-client => veejay-core}/ChangeLog (100%) create mode 100644 veejay-current/veejay-core/Makefile.am rename veejay-current/{veejay-client => veejay-core}/NEWS (100%) create mode 100644 veejay-current/veejay-core/README create mode 100755 veejay-current/veejay-core/autogen.sh create mode 100755 veejay-current/veejay-core/buildinfo.sh rename veejay-current/{veejay-client => veejay-core}/configure.ac (62%) rename veejay-current/{veejay-client => veejay-core}/cpuinfo.sh (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/Makefile.am (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/libvevo.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/lowlevel.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/pool.c (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/pool.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/vevo.c (100%) rename veejay-current/{veejay-server => veejay-core}/libvevo/vevo.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjmem/Makefile.am (100%) rename veejay-current/{veejay-server => veejay-core}/libvjmem/memcpy.c (99%) rename veejay-current/{veejay-server => veejay-core}/libvjmem/vj-x86.c (99%) rename veejay-current/{veejay-server => veejay-core}/libvjmem/vjmem.h (100%) create mode 100644 veejay-current/veejay-core/libvjmsg/Makefile.am rename veejay-current/{veejay-server => veejay-core}/libvjmsg/vj-common.c (87%) rename veejay-current/{veejay-server => veejay-core}/libvjmsg/vj-msg.h (98%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/Makefile.am (92%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/bswap.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/cmd.c (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/cmd.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/dummy.c (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/mcastreceiver.c (99%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/mcastreceiver.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/mcastsender.c (99%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/mcastsender.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/packet.c (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/packet.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/vj-client.c (98%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/vj-client.h (100%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/vj-server.c (99%) rename veejay-current/{veejay-server => veejay-core}/libvjnet/vj-server.h (100%) rename veejay-current/{veejay-server => veejay-core}/libyuv/Makefile.am (85%) rename veejay-current/{veejay-server => veejay-core}/libyuv/mmx.h (100%) rename veejay-current/{veejay-server => veejay-core}/libyuv/mmx_macros.h (100%) rename veejay-current/{veejay-server => veejay-core}/libyuv/yuvconv.c (99%) rename veejay-current/{veejay-server => veejay-core}/libyuv/yuvconv.h (100%) create mode 100644 veejay-current/veejay-core/thirdparty/Makefile.am rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/Makefile.am (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/ac.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/ac_internal.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/accore.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/average.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_internal.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_rgb_packed.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_x86_common.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_yuv_mixed.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_yuv_packed.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_yuv_planar.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/img_yuv_rgb.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/imgconvert.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/imgconvert.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/memcpy.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/rescale.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/aclib/rgb-yuv-conv.pl (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/fastarm/Makefile.am (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/fastarm/README (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/fastarm/new_arm.S (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/fastarm/new_arm.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/libhash/Makefile.am (78%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/libhash/hash.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/libhash/hash.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/Makefile.am (88%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/lzo.c (99%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/lzo.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/lzoconf.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/lzodefs.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/minilzo.c (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/liblzo/minilzo.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/mjpegtools/Makefile.am (80%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/mjpegtools/fastintfns.h (100%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/format_codes.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/mjpegtools/mjpeg_logging.c (99%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/mjpeg_logging.h (98%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/mjpeg_types.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/mjpegtools/mpegconsts.c (99%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/mpegconsts.h (99%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/mpegtimecode.c (100%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/mpegtimecode.h (100%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/videodev_mjpeg.h (100%) rename veejay-current/{veejay-server => veejay-core}/thirdparty/mjpegtools/yuv4mpeg.c (99%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/yuv4mpeg.h (99%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/yuv4mpeg_intern.h (100%) rename veejay-current/{veejay-client/src => veejay-core/thirdparty/mjpegtools}/yuv4mpeg_ratio.c (98%) create mode 100644 veejay-current/veejay-core/veejay.arch create mode 100644 veejay-current/veejay-core/veejaycore.pc.in create mode 100644 veejay-current/veejay-core/veejaycore/Makefile.am create mode 100755 veejay-current/veejay-core/veejaycore/av.h create mode 100644 veejay-current/veejay-core/veejaycore/avcommon.h create mode 100644 veejay-current/veejay-core/veejaycore/avhelper.c create mode 100644 veejay-current/veejay-core/veejaycore/avhelper.h create mode 100644 veejay-current/veejay-core/veejaycore/core.c create mode 100644 veejay-current/veejay-core/veejaycore/core.h create mode 100644 veejay-current/veejay-core/veejaycore/defs.h create mode 100644 veejay-current/veejay-core/veejaycore/veejaycore.h rename veejay-current/{veejay-server/veejay => veejay-core/veejaycore}/vims.h (97%) rename veejay-current/{veejay-server/veejay => veejay-core/veejaycore}/vj-task.c (98%) rename veejay-current/{veejay-server/veejay => veejay-core/veejaycore}/vj-task.h (100%) delete mode 100644 veejay-current/veejay-server/libvjmsg/Makefile.am delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/format_codes.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_logging.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/mjpeg_types.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/mpegconsts.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.c delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/mpegtimecode.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/videodev_mjpeg.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_intern.h delete mode 100644 veejay-current/veejay-server/thirdparty/mjpegtools/yuv4mpeg_ratio.c delete mode 100644 veejay-current/veejay-themes/AUTHORS delete mode 100644 veejay-current/veejay-themes/COPYING delete mode 100644 veejay-current/veejay-themes/ChangeLog delete mode 100644 veejay-current/veejay-themes/GrayHeart.rc delete mode 100644 veejay-current/veejay-themes/GrayHeart.tar.bz2 delete mode 100755 veejay-current/veejay-themes/INSTALL.sh delete mode 100644 veejay-current/veejay-themes/NEWS delete mode 100644 veejay-current/veejay-themes/README delete mode 100644 veejay-current/veejay-themes/UNINSTALL.sh delete mode 100644 veejay-current/veejay-themes/blackvelvet.rc delete mode 100644 veejay-current/veejay-themes/blackvelvet.tar.bz2 delete mode 100644 veejay-current/veejay-themes/fruitsalade.rc 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 92c332d4dc2792ac29d1337ac88a06037fe5ddfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfHAYD>W(IAS7iK^q*%H@?66gHf+|;}h2Ir#G#FEq$h4Rdj426)4R0VfW-+=ci zs(C<#+MX_sAs)xyo;74-FyLTNh?V^N=6;^)mu9AvuSb@OA7^1|bWjlBU|~8qjlbQM VVc+_OKcYZw44$rjF6*2UngFL=F$Dks 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 acc56362916232feba1716ffd41eddc52e3aee4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCc3vD$iVc2fpP!p8lYAN22WQ%mvv4F FO#tmB8sY!| 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 f1f1b98d17f327a4e1c8d524e991b207efce927d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCc_(?As7Gv 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 af8aa7218fb3aef383ffb8eb6d395f282508fe97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCcgTe~DWM4fJVzj5 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 20ba15d7bae8fd3055869bce579d35c74c04563f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCcF!$!}i1Ok5z8khDNf!ZiDePSh+`hCeloJ6cR9 Rr~_3oc)I$ztaD0e0svRYAL;-A 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 16e4811ce37236a5f1c2f4b74ceb4186a1cbf33d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCcy?@V0ysCcCp)8Dbwy{X^ada_ZWp&yz8t2 Ps$uYS^>bP0l+XkKAkrUr 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 c245dd3b08c8dc437e05c64f88788e2e53bdd59d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMG!2~4FolIf`Qk(@Ik;M!Q+(IDCcaB?Y)rheCUA3GOC-a?4kp$xyGv3) OH4L7velF{r5}E)pQy?$^ 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 c2295b5b3157e4972445b2ac4fdd048d94f87e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 zcmV-L1G@Z)P)^{p@nW)E?%7E*~w&{_kG@vc^CLESM*l$p;InBooh~_!{aXjOgOc0IVJY@ zzj5c<#@~gT&J1nlb{&W0D1)olp9XVn+g~DW&GBmkeg4zrd}0P&cb=WoENQMQ5{~xv zb;+Dcr|}O`@ABf!WH)n>`R-VI_(Dg!w7Fv-(i+6fr>`h7X4o2XqGeK}&2=+~4J8K{ zB{RL3J3=k3Ei}8MgE3%xKaat|et^SUD_qNBn4SH0;J2ngXZ%H+OJwRwPc#r}Y(Q>5 z56(+>yJ`V@noT(f(ArR~drTm9JNbZ8@~XEd=Jy8t*wxJA72r0N;Xu*i_5z*p?;No#ekw7LRAf@YQA*V4Cs2nUH|}=r$-+d`QrG}&t*-P0KdoaECK+E7OO7+0Gaor zV?~oC(&-hAfWa#tzI~4@p)u$|Q|LI(hP*I~)dF?rAU6E`K8N)Be5Bn+s0(@1LeS^N zN;=Ir1FvJsGO2`Yn?ZS{ryoyR7ViE2wXPQmdAKAB(_-KZ6k0xL2Nw^79A!}EbPSEf zDV3)hTf%;i&x`EZDl(~rPuz0>CU)z@9tdF<01p7)>c=PZrm``zliSdA?O@7+6$l9U z1Y`h`oj}>STM#_}JnM54-;M0j$X;$s5xkIa?iWtIWv;Mu*AqAj3V{4snEauxFWlvv zZHXWx0b0qc0BZev%QeN3oddA6?Ba&xZ%XOe#Z3SO049K94VVD9lP1%OD9a#6gqdhA zt7!JWS$_d2zbs9hkMzCV_|S*E^l&Yo9;Xs P00000NkvXXu0mjfb{}>a 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 82bbce6a7f7fdcb695bbda021e25d9904b6725ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngb!3HF=rCELgDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVm03`nQ{mEc=Om!eOivfb5RLP5FWGZD7K*fgJiqr} z>Vzqiu2ye~+#|6#&@*!C!((ZiC3EANPilE4e%Rfbmv?=0?fI9Mhb`4VB{fLCQk-A# z!IRZpXG2}Si$qd4d)TIztc7#LRynpAxq19ibNnCe_wv~Z*&Ky$^1JI@D~=>Oy0)7X z_BBNuTH9cA(2loo#}sd z$F8mpk&BKtz22pjjGRl>+PBzv> 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 996215236e4c2adde72c2950111a9457faea5bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^{6NgX!3HGNE-(EAq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfRc28p1}5iI{>(t3QcoAhkcwMV&lz$Z3J`F;D7=`X zvB9i~yFfF~fcpej&{4JCRwa(IJogJXd=@61`F^Om(R}($9?@+(6uW)go@tg%SbUVZ z*6H1fy#~(HHOxOAlrDbbengM2cIkma2OF3FlZBr1e{5=XnWp$|16d5l>NTH%6lZ}) zWHAE+w;%{J)~Ccz1PZd3c>21sUtwesHB;1hxau5GD9O{sF{EP7(hG)sE&(E~5A{R1 zl$17VZ@s5;hDoQPRWl<)#3*^*o*$Eg|EjC+oSvTbWrnisiVp`{M1Rjz|Gs%&EZ6mx zJ8!E>gi=mS{P#CVzopr E06GFj;Q#;t 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 50108d467442dd088a364765f1c2139e8ce2ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&H!3HG1G_PL;q}Y|16d5l>NTH%6lZ}) zWHAE+w;%{J)~Ccz1PZd3c>21sUtwesH5ETomNNw?RN(327*a83>G_SE%?Sby56?$< zbak*OMn^91Z?v=K{yh*L>Th zX8FmlyII8lBw2;)Q+(B)fcbnb3ddN}`}UU24m;i|X8P_#*$!4wt|j)nB;&6en62L= S_4p{zZU#?RKbLh*2~7aG?n=@C 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 d7d362f0d75cec4b11482b1790cfa3350e132bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CB!3HGHK9Tzfq}YwcQ^@Jzm? zKgTe~DWM4f?o`Gdj~xaUbizl-1XU_ zcp^Swf|F&DkB7-F&L*3QS?Yp(na&h+k;6Ta3zy=l+)wd!*UYnf_K=(aT+e6|v3 OF@vY8pUXO@geCwj3rtJ^ 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 862e48ee102d269c9e51b69f172a0a9977a81fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^{6NgX!3HGNE-(EAq*#ibJVQ8upoSx*1IQOFag8Vm z&QB{TPb^Ah2+mK*ECAvukHs$lB`ZB$9780g_MWlkIuszldO_HfqiI3!1E!cR=@Q0u z2fU=Exm^V=?UX&}Z+yAs$xLqXXNJXce}~SnQRmkHi{r`(+YUaGpY!lq z)6MKR*2YJdvZtM2aeG6bD`y(NgsRNrj`I$Gj>&1g*>F_*Ug)2gS?U&l85qtQ?3mvC Rz7gmM22WQ%mvv4FO#n~=QlkI> 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 aacf503f7f3c7c09e2e63105b8b2bb0ed846747c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngb!3HF=rCELgDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVm03`nU2Dz8_D?{em7Xq+AsXkGUfh_)#K_a|@V%dU zIeY9;_7|5+E-P)zzkKxQNvC$J%8YiW+o4_kiWWPqBe;t6GcAiI*+J!cXY41yD b`NI)ARncd`@kbAUj%M(5^>bP0l+XkK*S&3Z 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 3e2e20d94d82638bd4b37d5e4b037508a239522d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^5k978O6lM^IZOW1e=c-VcmY%9FNG%I>TS7W22 z$b2R-lRD;3u@)l(g9>8<0~G@UgEhyNH9T{4S;@aeLPBDbq=ZDAa5m#gg`Npbj`O?N f?llD(d|+T$J%ug)vrpe9pcM?Bu6{1-oD!M_E)I!3HFqj;YoHDYhhUcNd2LAh=-f^2tCE&H|6f zVj%4S#%?FG?SKqNPZ!4!j_aW(H*z)@h%j6fFW^voz$F%Wym!uFrKs0MPD!6x_r7~4 z6s99_;X>i#2Ep6uCLt*YTeOc!{#%@I{7)NuB{$Dro#6CCK*Iz}Tq8Nd`|>KbLh*2~7Z?*gYWt 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 f307df4c4bdb62df555a1e04b5c2685967820039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!3HFqj;YoHDYhhUcNd2LAh=-f^2tCE&H|6f zVj%4S#%?FG?SKqdPZ!4!j_a`}H*z)@h%j7aUm4?|vqnatwRy*+-7Gq5O3e>CZ275B zakfxKUeY?v-c2UMV)4NS-DARfFNDK%R_rK9cKXgF`i1+S^*ocQKm!F!Tq8Nd`|>KbLh*2~7ab)jQPy 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 d5902fb02e315cc0239b2e7fa20dc47eafe4cbc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmV-P1GfB$P)v;@+BQ> zlKPi&MFrAttvV_OY;5ZA2Lc!x>}%l#%mky8R~iB+rJ#&~F}TWUCD{Py6)||M&o2u6 zlimxHv0VX*rbAXVD2fJIQMdhVsTx#OgQDnA)T)Y`DopSg=`f)k)B zI?Ck=OzKi@9rJkwuqGgpNXs1KXA&pnY0T9D80MZn&}|bvJp3LGtKZXQMbn?B=3+Oj zReH zLm>_TJOT&8C^E?(Wy;vSiy&&f!-f zCe3eUmu_x+onEZ1v)Yr|_QT$R{g1{Rz9p;e3h!&1FD$)Ws#RFARc&>l*VY>zGI7k` zl4aB;bGJi2aQg!j6;todn9EZD000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Y To9;Xs00000NkvXXu0mjf@S1f) 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 50b227a86be4c742de717b0c30954495fd5aee66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CB!3HGHK9Tzfq}Y|16d5l>NTH%6lZ}) zWHAE+w*Uw;u2tS!3KV27@$_|Nzrx5O#-zm2vh5a7NYc~AF{ENna)JZv|Ai9b^BX%G fT?|$=N-!|&yUfD9ef9DfpdtoOS3j3^P6s 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 e63e771f84122927c1a69803b6b97af55a22896f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CB!3HGHK9Tzfq}Y|gW!U_%O?XxI14-? ziy0WWg+Q3`(%rg0Ktc8rPhVH|%RKzTGSb`UZ+Hh3it}`F45^sYdu}6VbApKLLw?;O zNbP0l+XkK*fB)Y 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 cdc841b005159ecc6cdf817ec5fa2721df3034be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1r;P)f03X_Vs^&;S4d+et)0R5*?8l(DPRP!z_0 zrb$VgkXtO+R}i$kPKEcxrGqY|WGYWVC`y(JPRiQ^M^SNia2Jb{VvC|KIynfs3H=K! z?NEx?6ebL5@2b^mwqCCzgdhk4Z8RF~`M%$akc}HCQc7(+9@A_#84L!rS}lSg5NnJUhN0H) z_i-Et&+}-v+i`|X0ikJ{pG&3E#agYV%;$4-U0*1Q@^+0`7>4nsTrOX*Z9BDGF0m{t z&Lrx7baqVB?3t$NWilCG2=M{P#@JIrh_Cs4er8$LPa(wnh*^1T+yG!So6Yut)4<&G zym10Eo=&IdR}7HEYz$cG3~(DzwlE>^=x+ip15bdvz-SA%1H1-q0DrteJRk(F0B3=# zz<1!<7W0(?;5qOTI0w91UBthNlhNb=Js=I}M+lfkUi(q~2KaG=zGJ~J1azRiSqF(j P00000NkvXXu0mjf{96FC 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 653c503f94f2ccf72ec2b296fe424a3300279602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&H!3HG1G_PL;q}Y|16d5l>NTH%6lZ}) zWHAE+w;%{J)~Ccz1PZd3c>21sUtwesW7p?)vQq*IrF*(KhE&X1dft%hkb^+$L;m1M z4MmQ7r*6gZKV!6Mu$<9q=DGQ(fYF;n|2}kS-uo|cYsZ7eop-!Fg@xz+c(7eF+_mth zJeT20jp%cmw5=XQ6delqzoU0`-*qFmJ0Fj2cNejI+!n4D#kh8w!EFh<+gE^AGI+ZB KxvXPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOY` z6aXMKF?k380013yMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HRA^-&M@dak?_?!z0008_ zNkl5-E2MAY>UY2ln9|JnXJ_c4uc&<>?;;004nBcXv0mZCjE5vy?KGBuS&uXnfypx4%(J zJ+&;W+G@3mLI|m~{!9q*oH3Rf3JVy9u9}#y6&ph+N6}So12?oipAnf-05`Exm<2{d3pJ}_4W0-Wm$<3BF^XYg?_*P z;JU8zJg+K*Fl)6M92^`Ja=F~sgTbIdf*`1u%jIwP_xC?%j0KmMmu|gYFJp}H#l=M= zgvd`OlTWqQ#C2Wh^?KO%{k)XYCG+$1UlohRF9{*|?(Xhm6h$BJ@9(AKI8-S`ecvx+ zG8toSZ7t!P10e)vW@fO~n$c7$WhF^caUAD~*1D**4yV&80ssjBv6M0c07z@CY}*Fg zwy|lN==k{f8AS+TjPWOPb8{KjbqU58FD@=B-}jTrWWop`bTXOXv$L~oCX>-uS64cn zP6K0Xh!H~X0f6o8?dfK-sR>=@3e3F`Lak!59M}1hrZ%)Mzx&cs!Pz^S`KR znr}Jhe;yqjJ*Sj{QVO4*o@&D|l#~*u)9Fk$o7F-HMJa_+sf4uFUL42o$l>8(d~$N~ z!T0?(LdYx>3OWo!Je^MQ!oq@*QX-`k3d0cf`+ewkyXx`r@%JDIUSJ^vG@H%0Qp%s= zIKJH3*$FMnQV1cnxw#o_Y-~tE2w;p+6h)Em`^Rw{|BNyIK(@BFP^nbX<#O3MKR^Gs z*XtD+WAjqV?Dh3^YBU<*hlhudbMAPa_iGeIKLWtJ;c%#kQVOcoDqdPz(n_fw=ll=H zasG~?XzY33fHC$D=lnMz#LFNEUX4bhk>`0D0N_7P3Z*gAH>KhL0000|16d5l>NTH%6lZ}) zWHAE+w;%{J)~Ccz1PZd3c>21sUtwesHCMke({2|~D9O{sF{ENn?|DPMrT_ugi_IZo z63!lX_^b^!Dty^wBesBh@ddWo{E8F(pQ&xH{+zZmdKI;Vst E0E(7Gng9R* 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 3ec7b43fce76ae14e0b525e715b5e76b68e08084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngb!3HF=rCELgDVAa<&kznEsNqQI0P+P(Tq8$udtD#}JK)b1xe5H3bN?Jmi0yvBILIl~dht<2S38 zt|M)q3mEkiPjc#*1ZoL6RoKj%>|_2vr)>I$b1wpNQkqtMINWf1|A!}X%PSQQ+cHeo z7Pij_e4Ki5-*x{OzLmRmrW$?hWvg6cQnkUh;6vzf-W^B8!)>lHDd&{xZF-q-_#4m# N44$rjF6*2UngHsMPsjiO 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 7d649bb5b13e65121712c6547e31b4db13143ce9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&H!3HG1G_PL;q}Y|16d5l>NTH%6lZ}) zWHAE+w;%{J)~Ccz1PZd3c>21sUtwesW9L}s(d`Ko%JOt^45^s2^t>V0AqRohhy4+e z8cL0KPTjgEbB6f|!^Z?opUEcDGg^;O-Pa=aJwz5art2Ax<*(+$f?teql z^Qg6uB;L(I>34S%KDy1*>{&~t6pefERV@5ResSaea^I7+nmMV_9VamhCo{x NJYD@<);T3K0RTIxOuYaA 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 bbed6da0fd18c813ce85a7968e69b0ea64dcce4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P)f03X_Vs^&;S4eA4x<(R5*=|l1)g|Q5400 zGynO}#(7t0AR|I3%8e8fMG^#k5JqiUxiE0k!dh5^_C?gTcJ4#mq=H!*w8)muMo5aN zHX<1+Or_&uC^Ki~Kc~$k(>PfN9=!MNxrck+d9Ve9?Gbi$E6(2<_X~@a_78pBk7eRb zW%Y=#?#H-mKuu-;S>Twk%fd4Ei9SDx=huU3pa7)W2@m9Pb8j$t*b3P7N|8Yze+uu> zc{~AC*Iq)3<9x6&AX3du67bvF+B7varNzZXjgF40v9VErVlgLhY9RJAi#sRmsIYwq zJ0a|bu)#d;LrZhBa=Dz!F+Dx4iHVo;eP1IZPXuUzxP%piT}0RsVV{KQJ#|VZld6W* z)m8bvuVS&NL?WRfYV*P_00aYMUjZ$^vls!EmXXdVCWusx`83|jEOl3ewFrxp zPZJfk>k@7`hzY_~1v&|9JArlJBX9^H^jjoAb{*<(g&=VkpE3M`M{uM56@89E^e|rC z18Rc1`Lg=1Oa~Ghavy~0^3PM zK~zY`?UhYvTvZgufA_xo<|7HTlcY&%3XuwFC>jNWD6R%{+ z|8vegAMig;fjUlj=f>5$rSjH0Ud^|zYZ`vgJZEi8$~9t)ej*}nWTi*LPo;Z*;C@!;X}dgn_tpHa1vXT>J{S{<7{2 z@J+c~mN<^ZS}WFC>C1J=rHlPC@#d@2Y&NCYY)TYGVy%@pjwOy`Nn&npPJmlL-^&Eo zW@l%mUa!mE-kww{6)BZUa_O~m^4{Ac^49AkQYw|CQmM%9?yh*AC%*4X7=}kA+uPd$ z+y^Frvre+B$HvC)OifK)7#bR4e}A81vB<*00y^HO`s69rT6T7JNT;*(_V!_nK`Dh& z3deEqeV_UHc~(|dzHRl0m;B_*gM)+b=JR>NFeIH$Gd?~}E|(+aYJ$*`&A4doFm(PE zy1TncrBXPKgVxWBv0AONw6p~99q<%rlIYBPhxv@6NP-}cMx!CV@5{l#!O^ML>kGCa}@+J_5u58Q{ao z$;sgt#;j6*i(qwim9@3CpMi%!1BefG`I(uSqwqU9TU%Sn%E=`sgaKGyUdHphj)!6E z?vFqf@RQ!FRx`X0^Z?FDOXw5`@C)#`m4BNgP_6l6+8ur;AZnGRJ!xgCf4DZ}KUwCuBI0IFKL7v#07*qoM6N<$g3;5F^#A|> 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 862e48ee102d269c9e51b69f172a0a9977a81fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^{6NgX!3HGNE-(EAq*#ibJVQ8upoSx*1IQOFag8Vm z&QB{TPb^Ah2+mK*ECAvukHs$lB`ZB$9780g_MWlkIuszldO_HfqiI3!1E!cR=@Q0u z2fU=Exm^V=?UX&}Z+yAs$xLqXXNJXce}~SnQRmkHi{r`(+YUaGpY!lq z)6MKR*2YJdvZtM2aeG6bD`y(NgsRNrj`I$Gj>&1g*>F_*Ug)2gS?U&l85qtQ?3mvC Rz7gmM22WQ%mvv4FO#n~=QlkI> 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 adb5cafb87c31b76b06ce75a860554bc79ee51f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)a!3>xr)1Umo#0a{5! zK~y-)rIS6b!Y~ZS|4E|?vBA(oFm&JoNF0ETd$ng_f}Mo}uvZL79Dp>jW520+RD~y` zXUU2Z`RC6V_=lJe@A{3cc?We}2UP_TA;yRh0@myGgn5PacDtc0OIT|mB8V}f?|bxp z5AQv^_tJLK6U+<|fvQe)kev3A8h}yFM1+(QQc4gJh{zOiK-u!{ML+v~64c zdaIhIK~+^*>$;xU+Ygbk-EL7;6&{ZV>bgeTwiCl22a!3=j}k?Ii#J0i8)i zK~y-)rIWvk6hRQif8EnFJMJC_H^D>(g4u{;dY5^dn42v406x#`QwY9+xd(=t7#Ijf z3oC3O%f0$p5PqO>B#gm}SO&zD!9 z_AqzB>HOnMCS^fB$GW^rU2VI%RsYOO#J?Om4_b#?$xDM|pazUn{g$WJY5O!|Zg1 zDGZs>Xsu9Mq14XrGm~N>#zc^aIHCX5BTfhsi7}C4BBh<*+NfE);H@7uj+zIDw;u6A zkU$7=AMC6ry8()Xy>2_}@lFsY2j`q#d^o4LY0mvQ+pT4LZTa!$>)}yt`vLJnW-^pg zq?8B}@J_IU!(Q8eZ`hM}&&V?U2OM?{bk?(e`~ATU8xwS0M^#mvot=$u(=>bW`p{J@ z77Knp?y0JZ&1OT>G%T0P<)( 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 d10a98992a1fd296af659891084bcdfbab4e6850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^5QL70(Y)*O%?_7YEDSN8kdGNMYlyOftL0t(4yhD4M&=jZ08=9K`s3=Gaisfi`2 zDGKG8B^e6tp1uJoda3L{aaB(j#}JFt$$$R;|6k80#iYh2)f~v}rYo^E;Yt&jAt%Pb XaAEWFU8GbZ8()Nlj2>E@cM*00F#7L_t(I%iYw^i;htg z2k;NCW-w!>F$;wf8>CRoq_7~#!hi5CtZZy7{0|ngvrtm($U>=6HVP{xzl!`wVN#?w zjo(JRkIi}NG~VaVyRq@Dr{~^t&pqFJzvrIAKgNQ>+CmIt3~S^69xpM2Z^?HMBQgGj z+4+b^(8di^J-!Q=Ob0w1q|dQ)o`YL~Gbz{`OyLr4;&a#^Vq4twYS=DgycB#1PNv|G z;-upk#Y!ASC)Q73e@OQQN6;z}OoU^FAK2c*XDLpF&s|)P@e6Dy1#jV4I{j23`3FO~ z3SIod*?1IxIoBA#?leE&K+we#yiG507FXi-jRdWDjx}x-UOCmD^^7>n=Wx!SlDxyb=K mbDCN!e6QhI)WmB44gLV=)p{5|WeZmT0000f03X_Vs^&;S4eUr9tkR5*?8lrc*qQ51#0 ziA%zSM9|o5MlvW1krW!z*x0NDtb_znLD<5^KVY$yU@^@irmz+i(kWO7+DZO_tQIOH zNCpCvLWm@BbS6yhRt5=S;`W~Q-FLoo;Jyc68Y0E#ECQr~i6I_Oz+a&KS-?mz7~Ji4 zyT5f^f18?`>MF|M93n!sT2-pmsu~Cc{7lrBW}IN<}`aN~I#HRO&@l z)q^2zNruDWw_2_CY4dm0YBdRm!*4+HqhX*Au#nAWJDR59I1a^Pk)53#ip3(1;{Z^v z*Ev2u#&ul)9v>gMyu3uyG_u)j2Uzd}Os3Q6h;7?sG8qbm0nkwhQa*&{QG6-Tb%v|0Nmf-qiGt6L;`?#JkHF_4A`Fwtm zg+E|?e4Iw3L8sFJ!1Fxn^*Uo?W4)PtKF`U?3FqhM{{?7SmgOuhE%EyL%Guc&02db* zJU>5^%jJ55TU%RfZ*Q})vC(U0S(XE|{D6zPuD3kTlfAt?357y3Jv}X|s>=TUzKDpF zN+kiL(P&7w+m)4-6^X~=Vw$Gty50g7{Qx7;X!O=F3{OPFwrwew%i_B3(05=Mh8K-S zZ-J4IhJ*fqACXApYHn_BVs&*jtn0d8AWYNb^z_uexw(02x7%5uJPZI30)CB-j{Xb= rgWvrCuIpOOX0rqo0mnDZmj>w{a;b9=b5aHX00000NkvXXu0mjfz9mCd 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 6270ece01e66c312812ddaf8c73d570a37407749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)f03X_Vs^&;S4edr3q=R5*>Dl|N_`VHn1L zcULaS<(kW%Mv4TdfSZU^owIc)?rsi(n~Nrsf9}v>}4;Ya}n-IfCP$*ViA3UEP;6>o9``4@u8T}2!@s!F@vMv^3EW@bpGQbC=4 zIDJjOdINy9wKbB-WIvrw_ZAlyd%?^~rINpI7Yc==Q96SL32y+p7sczP=vX+}!NSvfKuQ z>z*lK5I+A%QIy}nb>Pb|gJ-~F;HGWcS=+W{;3x3#oC@9#@cY0=pa{H%)30a)xZ#Pa zz&F4Kgb;$AogHRpXRUNPeYm{5+zpug@RF@?+)E$)jX{IYK#k+J|HS_ebzRpLySuw| zI-RXXqw#WkdpmfmvR=$Q(D0HwW8f24f%`z&dvf03X_Vs^&;S4edr3q=R5*>Dl|N_`VHn1L zcULaS<(kW%Mv4TdfSZU^owIc)?rsi(n~Nrsf9}v>}4;Ya}n-IfCP$*ViA3UEP;6>o9``4@u8T}2!@s!F@vMv^3EW@bpGQbC=4 zIDJjOdINy9wKbB-WIvrw_ZAlyd%?^~rINpI7Yc==Q96SL32y+p7sczP=vX+}!NSvfKuQ z>z*lK5I+A%QIy}nb>Pb|gJ-~F;HGWcS=+W{;3x3#oC@9#@cY0=pa{H%)30a)xZ#Pa zz&F4Kgb;$AogHRpXRUNPeYm{5+zpug@RF@?+)E$)jX{IYK#k+J|HS_ebzRpLySuw| zI-RXXqw#WkdpmfmvR=$Q(D0HwW8f24f%`z&dvFdgVm03`nQ{mEc=Om!eOivfb5RLP5FWGZD7K*fgJiqr} z>Vzqiu2ye~+#|6#&@*!C!((ZiC3EANPilE4e%Rfbmv?=0?fI9Mhb`4VB{fLCQk-A# z!IRZpXG2}Si$qd4d)TIztc7#LRynpAxq19ibNnCe_wv~Z*&Ky$^1JI@D~=>Oy0)7X z_BBNuTH9cA(2loo#f03X_Vs^&;S4d-$_J4R5*?8l0T?YVHn1L z=j(XnsCY{7;K72B;;unNLu5lB5(GC~8d}1J7Aa_L2?E<{$R!AA5Sqfah-gttL4un4 z3qf(D2+HpD#Pxd4+i)Gs^rGJNKJX6T`@H;~_k|C3wIyw*fCR7y*bDre@Qx~_9_}>Y z5paG=fD;OZo&sk81?*ck;3V*BBH%jk0}#V7-YKPCE2SKOq*|>8rfJ?;7Hn9S^*o(Uuh(id@qJ%JM7rIsIF92Ni^X9o zmFfdGfvclBH8d7gNlC#_aX za=BbT9*@5OB7hC7ZL{RIGNRGw1Iw~LDW!Z}*9VqmeF=xd*MQL2Tw)pcuKv+qywSgE TtzZ`d00000NkvXXu0mjfBU%Q> 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 ffd2d1787893fb5ba9baeb06a55b3246a8677de5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmV-Z1FZasP)f03X_Vs^&;S4e?MXyIR5*>*RliFdQ4s## zuKVk`o_FiP1%eRIi?L850S!u0oXSB!u+Yjv4lF|a1A^H2H&_On5Cp--!b1E3hn1&I ziW~{VEF=gf7P@D4Z_iuZHz`6yWIbb%A|FgM%*^+`na2$9zk@~iB+mI~MN#xH3`>l$ z$FA$%Nf^gNFk zW3;riM2e!E0pNF10N|^ts&=hbL%Cd5kB*K20G4HeF~&-z5;RQ{2L}hF>-r`D|E>h^ zJn!w+)|TJa))wyU>_Amj2q8d3C>D$8?d`o-TwL^SYfscK`h!QRs(zAXIWmTbAj`6- zR4PsN6x2i9FpM+00gmI4rfF9T$D)ed*rGe)HRt>rfG2lJitD<5<~R;rx7F2E8WS)k4gOw-I~vsrH2 zw%py_jcT5rGU-oGPhVs*84tjQBuUiN)b!^1qaziVrkU^S>*E_68|dupyxcRJo0||q z5CC*^bcEa6+m&1{*Jv1q#yOvMUH2sbakW<6dmx1P5QgDX-}e*O?m;XTi+y8^eGx*` dy$AmszW^#Wl<*u1V$T2o002ovPDHLkV1m>>lYRgI 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 e4d904924d892160b9bad1b4189337617027cc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)WFU8GbZ8({Xk{QrNlj4iWF>9@00ELoL_t(I%azmJPE$b?#qr;n zoloQM071a8 z*|XixMdoZbPb!)Cq~+gQ)bmPwcH)1v7b?~2?dJ7RiQ>w@_$CC_03IJhX}0o}spK`A z>XJ+pBuQAhOt!4oB$*&+7WrGrsn5>zHEifRcInJOX2+FRK6&Gtwz`4y^StJ}vC7Cq zGM0R?;Zj4XRJj&?HB-q=Rj>0c!HJo!x+d;*%+&;?!nI?!3KN-@dxd<0zPYhSQ%yrn zJ#7n9Gd;n;gJ^2UP$hepqOiX{)<)=*oebfg>aNiQv?& sEiD&L>`V4sIMP(t5gjNMnxaDR11|oqqQKiU(*OVf07*qoM6N<$f^Osa5&!@I 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 512b6623eb29ff0157595ef88de450aef23c43f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)f03X_Vs^&;S4e0!c(cR5*?8lrf9ia2Up) zBu%3!QtBYoQ(QzS)j=s(CvVaF1Wui#Lq}IXzzrf)gi^nPYljXe!jYcD| ztIHg~r-s9!ZdumTUaxm#S(f8C4#To60)YUt-EN7;<9W2%Y|iHM`M1Bz4_x5Sd7f{@ zVlh4*k3SIv0fu2$Mw=hPn&jc14%TWYXe!p6+xy_GB_4tyatKcDq+JO`}{cKU^#p zbUvTA{snN`0O4@hZZ?}YXI)SGW^Ofnm)r~P1^_uz}^LLd)IlIrdx?b0=lkawOT>fb=2#1n5Kz#yKM@B;7}Cx-Zafq0PBNS`;{Qa zai1B6x$^mZ+fXRvc)i{qe!u@C$8m1~yaK@O1N;P6!Qf03X_Vs^&;S4ek4Z#9R5*>bmETKKVHn3h z=giZ#(}k9?Xg07CLy}}7Ea^gTT-0rOQFJAA6=BegV0aM;k|B)PUl8Gc5K2e|f*J#l zCLDypIb%|$oP}G>#L7TAoj$*|w)Q!ZNc1a;;^y;tb7Ep5peRaDUtixR;6W__ zp)xQ$JbXh{)tTPjUH}}&K~>egR4VmzU|^upvaIannpM>&$hR>%blH_rxq6%$!4?Yy1uuwv*S9BFMe6+`g+^ zrc1#6(!2+_1K3A(P>TdW1@gdS;BIB{@>A9%P172H7r>cP=m~Hdcm@>9y)}2Ru&}_= z(vq*NI6w#(17el_ngOGuqerD50=Mf1f03X_Vs^&;S4ehebl}$*LQ51%s zJ2UDxj{*;a|jR;ynxJjZ-w#ju;7)-Pb!uD-jR3L#c7}g?iks%>O8B&6}XiEiZ;Vx(ZE&weURuNx;Aq-oBUn4?S0H>%UWzt}L{GbkDA_7OCoLX0iuo`KU z5AQM%DHiTBrF=K-h~LOlACQZIJV6=Pbc49oSW_pR@>9MHxQY=xqy}Llg!qh%sTBO& zBlxB;VI@gQNSkb`nP$0gJv|6sW&Aj1FayslcSo5#+}ssZ(57AaP_H!UEP;@kXcBO1Kfx2)bKsd}?ijhvIUV7+-Y}X67gC(K zfaiOGxzBXQAEdRUwt!l&u~0&Zcbissw7@7Vkz_HoG7Gfq?0Ir}R!^s(JC)Dh1n!1> zV4&yG9F~>e^LPLj$HCmTlXzZCh29Va?8FU%=`r3I-9-xu3vi!P@N{K}#T@{zO7M=}#nd=2Rd{ zaQ`0id07X%`w0Nz0nlg$-V2IFqjDT)SKv5~Vke>+9{vlTpGOrH2)KR_d?({|pm9)b zD5R;WDdlEza#F`?Lt0uwu^2LjiDKaZ%N3X5CoOtE-irFs~&Qnilvy9t#TyY2g zTeTW>HcfGfhw2yqo!{fjspaXwebwj1?90!5K6Wm@P=E2@JEz05v+JgwOK4dC;K1Cp mfFELkA7oPkPpD4U5Oeo&Ghd-MH?9=u5e83JKbLh*2~7aQ_;~*S 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 9d14bc7ef2de7f9a771343dc9375c19c74adee73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)f03X_Vs^&;S4da!Eu%R5*>*m7#9JP!xv0 zE+Y-7f`EeRpuu3OvAh6|1To9p+-#@kxPlbVYY@-`#R~ulVj%=5m||cC25Gn#s93T; zIimOUoUiHEr10OPNzUJr$>fJ>aJ5=}0p2aZv*g^Y)oL$|M&oL;-EQM~o_TAz3P2{4 z!EqdE@7_oO073}T=`@4EfKsW%WHKR zP19aa_sX0o0li+2LZQHLIHX)I6LMl4OX)-j$Y!&QMk9hCi0niOSS%J;mPHT*Kr|;x zK($&0px^HUXD5|P1zp$KZnwl@FKg3; O0000BXKN@tpSteY zympQ4PmBfo8HH=&#`bsTJGlhWO OWbkzLb6Mw<&;$S<`ge%{ 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 05fe1a0cc4684652316e69935c49ef754eb3f3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)f03X_Vs^&;S4d#z{m$R5*>bl)sA_K@`V7 zmrXYKBSvHpu`pSfLKESHQ|~y-G-)MGt~HR(I^|lLF6ksBeG1`h4m?g$otm^xN-v)Sl#<0_K_n7!<=+b!KiTj1Nu^ShN+l|l3WY)e(=>_2Vy=Q98SDaYq?7=3 zIvro4AO>FmrC2PI%jL-D^B9JK5Q1nlie*`h$KzWfza=UHd%(G(CUFP#S z$z+mrI_)a-Yw*mO&qt#XjYfl7twyz4rCzU-$z;$p&1Wch0=xjO`|c6&5x4?=1GcKF zcDvmU^$zxcQ{WHq4R{J1IK1z`gL1ii*ladQBog#`y&K}mWOD1a+kep!@Y&g)11G>S za0WaF_Jt5{z0x;L^AqsZi<4$kmTSBMF1!R@aBI_FTkDsA!6qv^tdSRf06&2bVZ?sg uQ~*QZaTo*lFYqRoY)aDtR$)x;6n_Cl&zi%*9A#<%0000!Ox_isne0p?|_)wW*_|6(csaZslDMuTOW z;4Z;w+jP%-=(}c@*mXXp_Mw&11H<%riM{V1d~9c#8?)Et-UGJ%I~&4Fnvd^4vd^(8 xTIWN{=?>?GZSgK2WsYoFXTm=7Nn6zohM5x$VqPm%odx=d!PC{xWt~$(698Ahe{TQ) 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 797fe2fe285d4fc1646c29554e89e155eeef2aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmV;~0Ve*5P)f03X_Vs^&;S4db4f%&R5*>zlg&y(K@@<$ znd@B5pGF<-QV=Z?T=)(?LAdKR+6EC(E?xU5En43PkkExl!gb|BNOUK2TZmGTd2cCn z;J^&b`M&u%1OF^e;}$qE*47-yc?rYN0)EsY83XQXtu>H|u_+Q!;8IGzUaxB*gqY1{ zark=$H6eswE|+zwRFad)1mFU={GsL+L&vo=2z|va#XTh#6>Hy5=^ZR^0zx}zZ z)r!$*#B@3(o6VBTZ=6b{UWE_{A&^q?am@Of zqlc98S}CmK-8MT P00000NkvXXu0mjf?P<*c 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 78f8946d586714f691f290d7e578088cdee73587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVf03X_Vs^&;S4dj7da6R5*>zlD(=LK^TS~ zXLr`9aaJv~5lk>4!P-Isn?eqjZfmY05YQ$e92+~m0DJG@T!Gh+3lK#R4=g+Qx9Dl2 z#E726tdJLmf%hApr}zf`qYIQsi$;-d zZria~>}V&U2>=?6hUoQrc03**0&hYW09310A*GDnL@*kSa2!W#t-k^fp$aCG3H5qi z&*$^+K@jxz{kdOslGSR3=XpdT5jL9*>2&%qn@*=Rn@#O`-Vywg-~ssfYvFkwT5HDR zG289-br1xv^7%Zo*^Ex7qkZ2$f&WYHE0xNw)oSgOQod=LU%~<(1f^1Gmq;XhAw=kK ofO}wfD>%Sg!!SPG3jSAl0;M~7VSiJDlK=n!07*qoM6N<$f^4MPiU0rr 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 59fb755a6f54bc20b1b171db42a8f69a5b1d4bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJx z6gV>+*w{k=000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}00088NklmHny;DXUDrU)BQ+h#p+}oJC-qL>7FziO;1;My{fM6exk?ze2(qVe@YU& zz_vH9MOB#{arN@$2oylrb*^LcCP}S&=S$lMwx^PU28@_EpA4|F@X>6N;QE4Ro4*bwG%^`4NCY#^8-Rb2mzo5ZU8rdJO4%? z=UkSf(VGXe*&EZzWISl;04XI>&Tmz9yA?Py-hvl{@v9K#Czo z#Ta>p0zgtB2%9A&AWDk1!>-OtBIitBh+*hb*dAv{*0)WItwu}oX21c_=l?|DCC3?o z9WVtxcv%QI#(2CaYTygtE8y+tO`v$5gXNqJG}djG(x1z^ew?~)Hh8DYnWk;;*b0!Qs$hxuKTS^>2`6nSmfE>-UHw};8)wD z0V2b_kZFOtz}=0eI0>Wic)e 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 401cb5e796f44c809e8bc5e73b88a1fb0f1f150f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)WFU8GbZ8()Nlj2>E@cM*00HqyL_t(Y$EB6OZqrZ{ z#((GD8yDM3NGnxzf&ozpn4qlP*t;-x;4OHAE{yCv0umcznSlj~p#vfk6ANh*C)i1S zPlq@qY8<;xu4Kvbx#v6I`OY89%fmw(hT+qo)p{TzhN`0~mwA4krs=m&r>Db3)7?%d zP}L_b=N?*Xw?sr%!zdz>gkkvI`8@Bmqv*}f_V$qxv6b;bMx#;h&t!58e7yl0i^!|V zbb7>e8mx-1su*JcdTExOI7Dm^1bf|fJGR!=2%z{p-?i38C1wZgiO4<>6j?4^5)o7t zK!DiIUImPyLbYpWKy>E3L=G^;GtaX0c<&3ix|)}>fLX8=RYL0_{_}56pagFdXHzG8 zNh91W)pOvUF~+YEUtOAIMs6Y7f_{227<7OGU<-H+JR2m*`*s{RRYRN=X{_O;_ZH{? zF^~fLqI!Rw5;)sxdEcatsCeHKA@c z0e;gFG8Hp@+bL+?`U@DY_@L@N7*p$beRp}esH)0*1A6aQ5}n^sRU9IdG|SHZ_WO^F zF}7-xDVWiC{3}=OmypYW->Uip2v*@N{0Dl#z};~!NruCB|Hk8wl?!~97T)`dEKPrw nSVtoAK~=xhEI2I)B*57f?;FmtuK87100000NkvXXu0mjfhoKjW 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 3d4a17bc9621ea3aed0115fc56594ac3e247da5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)WFU8GbZ8()Nlj2>E@cM*00IL^L_t(Y$Gug*k5WMp z{$_UB$At?V$_ar;v@vI+$r&398+%K8EB_8#HSupTmgW-w0UH~->rM#?fd_i;2keXm zJSFFQ&jS*t*-d8Wo1O2Qouz)SS8LSkPb=2m1;8jVRRt4`7t7_@*TG=4>FahnLG$S7 zS*==qz(iFgDg%P|K8%y(lV#@Hi!^-~#qo&(Wnmy9RGpg|V_pLIu;~k&yV+~EU-!G+ zQ)4YbwHOD$Gz@fz~?n{_W?Za93OiHo^KXJo;0GNc~4=*yZX_{UH&b_Y&!O1@) z$*8%QN70w7&NN9Tqw)C7Y(9U8Y{VDf5I{@s$Cpub_6y>n;TXTXsDl6i002ovPDHLk FV1kI=7QFxf 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 f7ba618def5e60a68e447f2c4a8c7cb1e2c1dc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)W?(VPyaS03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00JOML_t(Y$EB4&ZxcZf z#eXxqcJPImI3xn0C@CU{AQgYwboA6n6!0miXlW?v`3OjKl%WO$LP_C*U_=_4*s*<= zbCTPkuoFee`Hbx?Z)V@Td2eP<9&c{CN~N+2inzl1AaNWw{vI7Y1HN1Uoh^C) zbYp$}#bT`%3FHzm5lfOJY}f1GnyuC=kBBRm%Qxre=4PF9BLpx)mMuBwqMWc-)my8} z%ZqC(D^i5B-)vIf-CZ@atKI-aK($CU`e_0nmeZYCABq1z3XJePp9S=bT_RvP-wWj& zu$cD9WViZq>L}TBm|wK&0dPZA!vr+Ur@fvE*ci<1pxv$l4}lrrIdH$z?Y_HStI1h& zMRxQXFhIN$8C%1X5FAhiW`PvABd~IuWyjxlcEWC>;Y2l`gb0UeN;i&A0K6-eLKw$K zGg+9QZvmeMUEBp8MN!nY5MKY@+Y5jzvUV`AK}7I6*%sKKxB_nmvM)_Ci)zztK$v!g z6tii!VEoZPhv83u4i*Baj=Xr5dwH$R%tQwmA%vksPjk!+kH}Hl>(%$0&D*N#C|F4Y zjg#b8X4cFhmjQpwYzHV0!#Ve4H-NUk;(fQ<>AXEmk`HIphB_VyAsqD5^k+^q7LoU6 i_IbnuX9EIVp#Bf`nfYrGCI%1y0000&QD03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00J*bL_t(Y$E8(0PZUuU zJ?Gvx!_0m$phhYU0ZfdsPznI!Qs37XG8duG1 zLsgeZ#w>veW>Arz$;`|v7rbxOE0yQ-b8{O)YH59dtyXJiuiJeB;KP|cat>y;MDiJd zWg$rpr=TPX?{}L=M_(OCjpKMBtJkZlI${8Z;QbX&V290S1HdYP830cK+{yF&ZLL-lApsIB zYx}eb`l5)OmIM!bMF9IEpVT{@~G?pS5w;A>wqXXH^JDtzJ_xD#sL{TD1 z1Eh6){LP!~{{w1vbW#-E<90h9=LoweCxK*>57*a4RBx#2wUOr=0zwFf?RNXqo2{)@ xziU3rE?3g@v2$(-fUxX01|)>=BhT}fe*xt{-SBK#r!)Wn002ovPDHLkV1nT$DnbAN 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 61072643193e0c66ce3dcec11252f651cc859df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmV-81IPS{P)WFU8GbZ8()Nlj2>E@cM*00NvzL_t(Y$EB4|YZFlv z#eetBWG0$4F)dVUY@t{rZW>WS7KI8{T!|vM5mXdh_(@!-;P-InS_Hp<8$r70)~YQ{ z+q7yjle~9bG>I{pNeez0=Fgis@7#0FyCVzba;{h?tY&`s)`Y5bh_OSpV!y7 zhv&|pI~UHBN^6CDe%Xj*RRmO1aiS<{wxj61Z;YAm#PRD^yIoNbnLt29$Ogf_=Xpg+5Lk9gDTp4 zIf=E1P%0J+g?zr0z%R^XGNql}-NAxMHAGRw^GA<}qUe-o%(PKeQB|X=Smyw6&W#-a z)>>3mldMueKmd#}{fhrNRF%i~?=y4eOpl|8-z$&)hZETUvsi*e0|WbNjVicWuXAB; z4mXsIiJ?2;kfDrdTIecEOVp}WbR?K2t)Pin1UGbl6*%j8o=a11aekiLYio(zd{y<* zn5Q`qcREGj8V~|cfGc0We}B7BE{`!NOigk3)~!K~hH*er)aRlzq=TBAHeQu-9z~0RACgyf8RWuJL8>KW@_aK(@0?!R0Kt>v`w}(hytTc4~W{gZBao4fmqfe zaFJpVL=PeabCstYH#(W1zRi@VyBjKRI?de)8?D9jTG zsgXtjCrb&gvvUF5Tjq?B-|W%~*60EE7r}+pL5G08xj?f(Fk;8p7_41FEy%wP5)2pF z=uaH2tX$CO7BcU~Vyg1~?m!fPqt2USU~__gw3ScMr*xYP82W*wMN~ z0jDY|IIw>|0R6o^+`dy-wCD0=0G^h*gFO+@6VT|KybG#ICgnKJR>yIUt*lCFbaeg& zOirR$3;}JW1Q83SPA?ENMWgEK?7S*zyCk|gI|sIGip~?9KZhb=rh#y|Ug(H|?tAcy zpiDX~*L52`f$h5P-psmmzQ6w`d~6IQ5(qfF+;K5b2O0p?#^V|u9`2H~L6R*gA*pd_ zXlUQ++IVq%9Az@d7zY1l*j4)Bkp*fZyF*0&e~ZV3tvh0jhu+zy`8F h9+(9_d-MC>#SgPrbA979V;cYf002ovPDHLkV1g>2USt3O 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 cf2fe3fb6524bdffb01d873b583273dc849364ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)f03X_Vs^&;S4e1xZ9fR5*>TmA`8fVHn3h z7mL!|>#1;Z8G}BM1g1| z5|Pn-Fyp;GuojTbWu?^7*49?f^E|27>!OtM0QV0o=m58az%MDKK4mhQu1u*?sfea& z{{83x4+6n;UH`njz1?^^M_Xt`V^2O4s!d%gf8|{{H@? z9Gjb)QZAQecXzjI7)ArQ8U#A6M=L8U9oKawpU;bJ+ae<3IF78YuJ#PWs4;B1z`ALg z=DWqk#V_mY>)yB=xm-?)#iFEADaSC3*TDI($)BauX(^RT5{tzq$&ZhZ#Wc-RUDsa` zygAPr?CtG|h)AQ+5X-V8nM|HomgVTW{yYqDW}2m?C3bdps8*|QTCLXocDwyFjDf!o z+{44eUaeN^12mh>3&2O98U_xa`Q{3^>$~@s;mH+BzX0Vt2^?WHM8^OC002ovPDHLk FV1jlLBeVbj 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 fd7b09940252746cc6d8a2261a4e946594d0757e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 zcmV;R17G}!P)f03X_Vs^&;S4fI!Q!9R5*>blubw^M;M0R z?&_cFo>FJWpLj?gMG+l_3?e23f})TFVGt9>(;oVk1qEFQ24PMS#>=1=b?^}Jpcj82 z2q6pz9y|mVLJ$N^JVek;2#KSpGd*p6Im8{@wZ&bRJeNB3_q|W?RaFBwFvccK)BF>_ zm-ruus;cUbjg66ISsv&7djRh#it<%WP0if9hBMCjFRtsBiHMGlj;N=nr(_t$Ib+NN zAOSQyI$cqe=k@jV#X_M#w^>|Vq?wtSYsYae0X%)QfOGzPB9V}nmzNa8$jHdGX`1T* zLI8$r+x}4q@vEk3(*QmPARcmj$T>fB9H+RowRK03%jHPdb)PX-YG`OEj*gDX+1Xhd z7#Jv5RaKQ#RrQ4sF94(fd<4LJWkNTrsj6xUz}K$ps@ZI|Qs8+W!r?HI$s}4@THtve z0AOux4ejmi7#v@pv4)y}d?fXD58$=K#V0PVdahvaEjq z5CE#HtD{IHLW-i05JFB&Oi(_br{(2kVvNzo#ztj~OG`^6gdo>-NeJNq_$=rw7-OtB zKR-|B=jWB?d_GS@LqjBlkea5^;NYN4r_;2)zD}7;hN96ZX_`h;Q&S|Rq`tns5`b@m z1Tj@ruP-hx0&f!$Q6`h2>gsB#>pBS`sHv%mQmGUj9v)U|CMPFJ2=P;p;8`>p4Zf?l zNF)-}+}teh`@X%sO*aoz2LSbDI_JE*ySv*8GQSNS9UTC`0DSO@Kv9&Bgp;*B9S8J`~`s4hc=V2ZTq*{+S=mW+#Hq5<$DFk$H&y)-(S)+?FzuNTT^)u z6~I%=vi@)!r?|4RLQ=|#KuSs3Y?f@>E^*F(0Py~s2EUF0VAwRx)7IA3t5_^Xjg5`6 ztE=nEFpR$eeDT=e*Aa}dl&Y#805S~YI{;4}YWf#Gpaz_UE^AN#0000f03X_Vs^&;S4f$Vo&&R5*>blS@b|R~X0t zXU1e^;!F}{VmHY`MajZfE4XOU3kfBNh(TMiqPPfBX~1Wt2nF|cRkQE`LZe%u#o!}l zs0$%T!JyZLA@*KMRcs}`7)f--D2l%n6cl_5pap>VT*iky&%bs!9JiaBn{Nduib4$r!#&HgcO@kyx1*z@ znVFdx+TPx-OOkZQFwDIuiaP)%0el32do-bkE5|U*B!I7cJ|8nbKc6emG!0g(6+T!A( zuBvJcfLMNjzow?3P&`_C6E};rRIYK9k9q0O(BiMV{wf zE|=?XS zm3pCR+Q)%F;HBMe*QchYkV>T<$z!n?c6WCl%|9FtBY#|-ot-EwEW8BpbGGw*e${n- zR@e3YNF>q_2n0+Pi>08ht`6~d9IdUb@Or(ET6h(@FO`uaLkSy@SBSw=-gg(((` zeWGdFDubu_A(>28oS&b6J~A@$M_F0f-P+n3D5U^^L?VHWjSckn_M*ADS=-*;{^{oC z#;pr}*Cni7d-b o5<+wU)Mzw*2cYPQI%mH8Pf7#9+REhu6951J07*qoM6N<$g0~;)vH$=8 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 498668a0bec0adf706feddddbb3cf98352de2f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)f03X_Vs^&;S4eXh}ptR5*>blrd{sQ5462 zHwI?qLtK}a){nAi?#X$QB0kTDrLWD5NV#q9kWh2qeuxD*1?t+ZzrtuJUo|I_2#bN|10&pr3Rf0l28TmyIwJOz${-Z-1oI7xv(AZME9 z=e4!98Ko54+uOZnv-#F>oUar7pr>A}tgM_?t5wNnvnSbX_GEv5Uy{k>De&@Mjv^8e zk#!OI5R1irl*?tw<#O#(sdP{(l@3-{SG&8ryAq8?ckW{z5)oTOsX&{QNLbC={?P3lX7Ot&-2@xjLEFIu7_5 z@%a9^$gkG=5#l^*NZEkL^4zMfVDMHTnM?wplp>W% z;qzTjnL+NONdQJ55V%#odi}DoL}YluSMvM)Q(Vrf@c}b4GebbD)#Cj8e7Jacc!-ER z3~;jq^?DuGb(x)=#V`z9*X8W&>?UB^3*gm7w@Q>qB-q;8LTioI8h}tJG)x}kP6lW+ z8vdP~@n%`0(eQf#ydGK%*ci+GT1DXZgnJ&YKZj=gMOyXtc>n+a07*qoM6N<$f|@K# A8UO$Q 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 49cb22172af7b678a89ed86fa85f21e447afbbb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^5%N3X5CoOtE-irFs~&Qnilvy9t#TyY2g zTeTW>HcfGfhw2yqo!{fjspaXwebwj1?90!5K6Wm@P=E2@JEz05v+JgwOK4dC;K1Cp mfFELkA7oPkPpD4U5Oeo&Ghd-MH?9=u5e83JKbLh*2~7aQ_;~*S 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 aacf503f7f3c7c09e2e63105b8b2bb0ed846747c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngb!3HF=rCELgDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVm03`nU2Dz8_D?{em7Xq+AsXkGUfh_)#K_a|@V%dU zIeY9;_7|5+E-P)zzkKxQNvC$J%8YiW+o4_kiWWPqBe;t6GcAiI*+J!cXY41yD b`NI)ARncd`@kbAUj%M(5^>bP0l+XkK*S&3Z 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 08475a7d0946606bd9303397f46d1a45995a2697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngb!3HF=rCELgDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#2Dg9+3#agVl?0%Wji-xah{pNk zgayhE5)u*$8ZPnpe7VxY6fwbP%Ynsu(;6EeN-#4Y=1Xy0b>mMnkjEfbYGBE@>ZVNr a1A}}BYskf|oQ6Pi7(8A5T-G@yGywqa(KVO= 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 011a7042f68574e5e2c5ea94d3bddb711050820c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^5|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&aw9`+JXUsv`AtdauK5;JA5{RRppc)B=-Se#BykYFugTl0d+CuG|L z`L((U%eJ!eY}xj}eyeW8(E|q*y8IcHrS>lznLc$Nn z(+Z2K<}6|tv|cOBD}6Wk>4ei6S~qkgS(&*RO1#-GtYTPv8fX`Tr>mdKI;Vst0I`BV A!~g&Q 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 c1f6107989a64fe94f52c0a794e9be487fc4f8c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1557 zcmV+w2I~2VP)WFU8GbZ8({Xk{QrNlj4iWF>9@00ntTL_t(I%dM4LY+P3r zhQEEzK4)gm*mGjpNj%1O?D*1vBUdm`;{;4Y+;$L3`heOhMM$U>4>+6MW+mio>6gB_>c0^%!DQpA4wrwK>;wmwoC;VS|YP(VV znus1i4Lgb+egN_BNeqy3s6>HCZF zKl>YMt!o6Iyh-qmgxRx1>Y^Bl)37{;`gu6&-&9IbtyX>C_X8k!AYeB>ZVK&%0o|}0 z_U-*lwy9Cimv-ce;{M2aqq_wq`?(S}s0@ro<)-%r-9q-=h)gJ0qZdaFBD{fO?U*DKaCh6(v@$TNen@goq zPCA{w=llL`;N>6)K9B+YL7_Ta=+QJyQ$avJpJ#D#k!Uo^;^O@9QKXb4lS$Ur)=K$&e%^K6_aqSbFqtOEEe7JbjI$BB z?TiB+pb)?TG!~@BPa7hjsst;`YJaU+jEsy>tyb|okM8bnPMkPFJRWCmZZ7ILPQT}Q zVJX;}@5EfrWB#a9XxbO*A~=DDD3wrk7Buf?pyDy$DaQLgf#0x)>oYU#lu8T@4bjrl zLL!l%zrUY`h6eKayy)xei(b2S?J!_T07q9^vqtRX-o4(Fr(ZOivm1h6{T9CZG<@fq zgk6tF>Nd&tHYVR+V0CRxBoYaA=FAx(rM&-R0kABK-rimb#9i0jCjq3P>#k*5#V4Qe zV_$wkH1Cw*UJkzTb!ck?A)vE^kPw73s|X4xnj&&mXibm7-KCvAVjd!r`!{>w25qeelZV^32G{ zh@H>pKYsG$$%aHCVH~JdiAwoTUH&V%uFLxRIyY|I@Gf1tluxJAx2n}@S_hC)x=N|H zE0xOInM}r?oSZaQS63stuA8AyNQA>-VHgGg>2#WznHgGIS{NQ4768R!kz2QJsmqry zSI(Y2n@*)tW2I8*7ryVmsRMYPhwu9?a8D_9eS3TRUB_{lnwknbjuSRb)3hv0n5HR~ zmXV_KGFX0uslXJ^HpJ$qaN*9v!osVCLg8i4^JaYC zFYInr{@rjxrfJ$jh)>62u~YGQ{D@^)dvm#5os_cH*w~m`SXh|N<#MlRns(juyu9!G z{{M1K!&1sN%d(!eENj9vO)nG*EyrT9pBaYnkPyOpP_uspIzNp6>O84800000NkvXX Hu0mjfyF2n8 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 a06f6f7c964905aa19b68e6fe7c9dba51ec54f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1330 zcmV-21C=<03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@00fpvL_t(I%e7U{Ya2%t z{$}=j=ppiPo`f$F9@XKfpCLIRqop%BNmhDA@l%D1;t!>>>1$Kyzvd1Og$4 znkFHk2^d0B$Cua%mRqNmTU%yjS#f2{vb$PoXJ>k-WZFQ|G^HO5%*>m4-<$8vyaAqr zqA29A{g1n?UG8^F}-63B!QDuj5IwE_T9 zRaI6Lg$f~1tyVqH^Ed$hLINQKf2BxdS>>F+A$)xp1Omh~O)@kz zL`>5puInO~%b`-Kkg2IDl1indL?RK8Bq_46u#l)$t8JX~?*Q!5IsvQeChzR*Y`)pi z5i|^A&~Y3v#*ocsp=lc8@i-ER1j^+yc6WD?OeQfpI*MR02-~(vKA)$Zot@BiU89sn z0Vs_V90!mBpbQTWht8fo`_9(ZmU`#TohBg!y1TnUDHY{%nb@|C{r!EIriqb}5o~X7 z7VKmLeSCCfyv29WV2aZx^xLwu3Uj_+ZY=gLwkEW1_lPu-`|g5Fo;sAM0$IB z{kLx2>I0xR?s!um5I8+PKK{$X!h$DWf}1yQiW4VJh%;x-@LH`VIOl?MerR_bN8G)8 zm&anUUn!--v`!#vn)X&tPmgIB27TF^AcPz?O6g(00aaBIi^X6Vh9=8$FRgEqgb<;F zg9CMAV*`78d*Gb^>$)R^fNk5z<#NL3^HE8XqH^89DwWFI^z^h*DwTRBCMJRd0|QDt z9*5uW|67DFg6q22+SGb!uZGY)` z-VYK0Fvj3{o(tfa5aQwf{{Et6S-5}yzR$8OpQ@^=uIofqRkF6Wc1SQbHb(OKJZ5HQ z+zS^jY+t{AeZEjAd{wK}zTup&bIz;Ma~g8SSWO6#=bX>(?d_$r*{nP}JL|VBOVxE< zEfflvpPwhKt*vNlYZI3*U$!q^ytuNuy83OoTt3GboAW%c+^Ew3B(A2aszC@DY-wrv zI1-7xr|bHWVzC&IWw~aWW^r|Ob-q|EeoZNT$QUbmp69*J$K;b`IjZaWC%UfBsH(~| oP0O~lw0xl`N*5tSe^Ic100WFU8GbZ8({Xk{QrNlj4iWF>9@00eSLL_t(I%hgp&Yg<2^fCVZnptINhyV8SwaZGl~Sa&1^~Sm zLAR5m7@arTHFFnH>uNc*`)1Q2>^dl7tYjEQ^E?=|xKLEI@l=`*12A=@%y-7wy41i#aQEzWAg~MU;`~9d^t7x~|bn)UvN~hB-9*_4j z#-dN2Jc+kjt*}z+8vvWep2Z;o5kUw6DJ2q#1TI~=gbNogps%kFwOS3SR0=0go_8VzFq%VlmjZZ5oDg2!QC0;9~&2LI@fd7(g@Rk7HwF19$J<#l3s?z&S@MmBNb`FY1*_9= zBoYB*49}lGM<$b@`T2QFPfvr0bbo(8O-@dt)oQ_YT?`HmBAren8jWIcanV;O6y9-N z*V>JMGscYm{{H0U%a`|$kB?I*6oQlzLI@l@co1V_V>ou~7&bRIF*7rRR;xvcL;|r` z4C! zr>7~IOzJCFt`O(^wI2X%+eSPd=K!LP<3x;I0@E}{hK7bhfk43ctJdEwJ`uq%jMwK~ zNGWmn@L>c30h4q7w$XXSwAPVYttQvj*08m;1*OzKo;zA=)a!Muudi#%vJA%9A>MJg zjYcCgIXM}qR4PMf&z=n?lSy&p$PxH_zCS433y$O9<;$0N{P?kZ>(;GGE|*(qwOTpW zNs*(qe%fp{pB9Tn@BaP!a(#WhhcPBi)1=+b1%O;GhfF4e0|yS^%$YL;0JT~T3kwVS z_U+rvYuB#jvf1o+^?Lm?&+}#&0JyFT&+{Arue8<=tJUg!p-{ks2M?@5pl=6O+?gwtN}spe?Jt#5D@v&rdn1R+b=|hsx~Pio^jEAo4Ry@!1 z{>@^tIOm6K+y2P5?I|gxYntY&-|zoa2$3KndoQuS0eOAmeWs4|qyPW_07*qoM6N<$ Ef>kb9W&i*H 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 5e304b50efb7ac80ebd138782b56d14cd034ea6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmV-g1*Q6lP)WFU8GbZ8({Xk{QrNlj4iWF>9@00h2CL_t(I%dJ(-OI%kJ z|K0oU`{>j0IT>SSCUF$Zj0_q>m|`&&7mY1LN!*)FSKW4#KcK53p_>HEqND@@fsjRo z1QOg>LacEUNpNhFID#LHnT+Puac1&-&w1~jE~?gsN=WDr4&1}x+~2w9o)6$1sH(~i z>Y-4GS(YX6e~AA56d) z<2yw1jb%ltQn?7CuK{!b5CGNzJO*%`0WV`fplO;=Rh1JFJkJY)Admp$VFZGR#pm%l87V@ymasL zBFyu?1kirq^1T!`S2_P?l(EknO|zQn>T2uh>4_4N%;j=lEi5c-_`Y9K6lIZf{!B{w z9Kb4LY+Fi6f^&{M(UDG~6#s|tAUGq6#^Ui~=gyp=&xiDP49W2{!IbrR8a0Gk{DBETC7Ou0b)-7@h3Jm(zM#zrJMI*>}G zP^na~xw(mKHj9CQ0ffV0IF7@L#Uf88lQ2zF=bX0zP!$094%k^{%vs|6e3PnLx|Co5 zq+y_zNMO3N6LUml*J{jh98{}SL?RLN_xEFCV*~f@-NSC-GLZQ&>`@SInpbRK)g-EpC+GgQ=Rh2vz@tZxj6$JcXqu*(rpYu-V@pd*`vil7gREFAVsdh_e)a0rjk|a6&X!80 zv7McrpQV(`Qc6#GCx_Da{T(7IN-3wewzhIBD=T7pdb*)dC}^f>YNb*Mv$M0Txw#oF zEiH8O=1u3?wQCEDi;KThDwWH=@6QB5P}!ZT@7+?mrfC*q?9-;Erjb}IcGfh_qqc1~ z3L$nPk%+yxxHxOu_I1wrW8e47K@bEVv-u1mM4M@v7fsWg)HKc4b$z9&sp$t*Rl68t c=3&A91xG+ESbpMpL;wH)07*qoM6N<$g0b3p*#H0l 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 8b7fbec5027ef06cb5a6b980a98bc0db2a8be4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)f03X_Vs^&;S4e4oO5oR5*>Dl`)GNK^TUg z(~E0d79@~A5amR%O)A9=2wCH_on-;Ca4a4B#;sV1kHr9I? zSdq)+NT<`}a=DGQnS+mMJRY~4cNxeo1EFMd#+KjnHKY>5HOb)@E;5+c|t_X!f zq*5tDp%8G%86YPBASHk(c9_xm!PPDN3azrgc5G5ZFC zTc8HKWzoVXusAKMs$#R*NF)->W;2GvA%#MLWHL!O9HvsKNVQsRP9~Gpn{s54#0|Uy z-T+?Um#V5S+U@pnr_-TWEYfbb2?PSf<8eG54?dsob~GAAfNxeU+KS8Ndar5PxKt|1 zd_ETuk@N+4)QW6@G!04%DtoEH~)hYyDR-_8B?B% zY80Gm2zW64VB!RmZ~X^!OEySw?< zFfyLh?=XA-$Kn@&lHr~%jv*3Ld(Um;Y;X`^xu`DDvGHVQqw0_hpN0_yzopr09AHD!~g&Q 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 4df40ebcd32ef07155e83fb13ca141823dd3c523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036 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 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 e195c9ad27c28e4c6befb5434fa1be0726f49e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1092 zcmV-K1iSl*P)WFU8GbZ8({Xk{QrNlj4iWF>9@00XE=L_t(I%e9ryOL9*X z#-F*~Ynil&dn?I`f`p<_3#kW{pZ=!fgp7D15FAJ8HSDrghkMVm;3 z7UiM{6e|d&jFh};&vy~|ex>4lH=WfC=b8DOIcLs{AW8h9N%&=xKL_{s_t@Rt1xa{3 z9@Ny-6bXaDAdZiZVX;`y)6)Z|(+MF2wzszt4u>JjGHf;*+-^4-8XEpAB*|zrN|(z; zMNz0I3Y|_TqtPfo?ez4NHk*x-BvF=Ss;bIFB0-Y$csv9^Ap}cGO4!)g$iu_K!deLc z{C+=fZf>x&v;?2ehuhm*`2GIR0I<5c3RP9Hva*8Zd&l-`_7#4-O6rQNF#sv97L;S65g3&O9CukB*KC^H?lKhr_|O zwY85E1cO1;)zx8eaIg^3z`y`%Yin_SevW)T55q9f)YSA(MYY@Q7#|;puInHPDHIB! zzrP=5v$-HLo6T^$-3Wz35JEr*fn+lI&o^gaU;x+G*U0DdkRp)?T3TAZh+0}&5RFEm zC<^R$JA6JL!r?Ho+3a5d_4V~gCX>kJa*$qLUZ82(7m=!}czJn&EXx=j9mVG6CWeNF zFgG{%*VB}jm%}iOj}&FIStyF~MPxRc3(-zZO<`kW1Dd8`eSIBcV`IqWaz8hhEF+)K ze*i2N3)1QI7g0K$hQ(s}Xm?4%`1m+>c6Q+R`=RSPB9X|CfJ`O>MNuGxfTU>}?(Xis zh+?r=QR;*cu-omJoSZ~=cQ-CBE`9_g5(!u=7D$o=$>DI|{QUfjC>RWWdo_g+a5x-z zet!NDaCv!&s;Vl;vJ9!Ks|&iW7ZomOy{sc9NjRpr9M0yCKmKYb%3 zBdo5jrlKh9?Chkj>qT!70GdoD+U<6Fy%JQV!m^GC~MGKk0H002$XP*PG-$Z0B- zLNb{|Hk*ajYK5w*5JCU|9v>f(PNyM+fZ1$DMMXtXeZ+5nng0Pbf03X_Vs^&;S4d=t)FDR5*?0l)sDGa2UoP z&51UN7D5XyI&>1m%|F1Qf}%r4Cp#M2F7Aamh?s6p1woMh2M%tBbdf>^n@I~I;he6i zP(swkU-x!7kDlam+S;iPyi<5TpFF(q1^(we<$3-C$8q07q0l9Oz&YVBc%Hv1l}am3 z()bS_DV<2a+$YVGJY>-Cy4nap`4!C>&CBuPs;$ZEBsbUOXllIJYTE*Fc% zA)kndY}=-IJpL2F+x>#~0Z;`1IgF7=B%ZJ=>$v3i`(c{q7QmOs1dwGJM09T&jRw44 zFKpX(+))%|YntX2fX|N#4rALky4^0O(<$=#{5{F7d{?bje^{3F62Q&=+l3pnUaun@ z4x``iV>X+i*XzOK@nE@JBAd-_o6Y8hrfEp`Fz-HHi$-}&~?2D z;N3&_*vIt-$z&3dNCfS68w|ssTrOiWnV?uK0>IXld`yGEU;x7~AP53#wHjiv7*tg~ zhI<#+2BIiJcqX9!z79!}kV>UcC=^Z-xHbTQYvUVkcDs|HCkft^UjH%NEfqLF6~9mA cpO{b0FL+@BA&x}#ga7~l07*qoM6N<$f>T5WmH+?% 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 f1116bfd70d94ee1feeffa49165bfde6a27a1c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^5|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&aw9`+JXUsv|4++wT}OwXcKKLCZgJzX3_EKVn*Np@V4-kBlD(`llx(Bv_nxur8R#+Npf{z<~=uT+quTzro1Bpa7^+?&t;ucLK6TGF;wpW 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 efe2350fa8f9417c643cc09d9c206deebf176796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#|JP)f03X_Vs^&;S4eyGcYrR5*?8ls{+_Q5?rV zXL8V_y}LA&{vokRs-f2mN;_CezzSU~EnQj%K~Nk7>t-j#Rz-BOjtX6ZgCH32PX~3A zB7z`DmzG%QA8mpywcaI$Hfb);!KCP!Qc)-I3pf1Uz59ILpL-Af=bw*ctB(Me{{r_a z@B+YDL9hti{S}JC;pkUYwO^8?f?*i zb#--#&dyHJ-QAs6RW-JwprN7RjHYQ;OH0eA=H}*vuIq)Ko}M2BZEbBuV5B@AP1D|b zz1}a1qGUBqdk(nmg7PMN48u5YS=K$%H0Obs)9IXZyWNh(#l`JGWV2a-r=@b$G|hIv z59EQ>N~=;96oe3ig+k$2sa~qCuD-CcvT`FDjmo7qvAMbV5x8z+6oFg237UOA-_5P9 zt^EM9EO%~fY{10;1e^vYcM=>L9v(hAG&BUj)YR0zk&%%i zkOB?^vZ5&ATrQW*=krT;2v7j-0}p_Mz(c!$y1F`o!5{#$v$K}V+5@!NF)ve^S>k5o`KivO*GNbt>&;9zLtl8}^;*rxDNcj1@9 r84TRa%*`^Bn94MC+fTblSqL!*MzON;duOZ#>SpkC^>bP0l+XkKo;Wl! 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 ec2e287a410d35ac727721cb7ab9802a9a48a044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^5|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&aw9`+JXUsv|4++wWanrG_|)B}ZjJY5_^EKVn*Np@V4-kBlD(`llx(Bv_nxur8R_*?27BN>k(ZhE@*KN**4briw`~P1)GmLZ?Jb z*iq^|htZ5Pf4-|0P$u?=jzn)tQ-fesh{U77;@-x_MAbeIF`yk25)%?Qj)jH@2%n5v qY*~4QsVQ|L3p2AbbMGo2P6n}W(k@??tkMU%i^0>?&t;ucLK6VNs8Hho 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 dab7e54fc2103e6951e74ad89a4d9cc821733261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmV;d0#p5oP)f03X_Vs^&;S4eMoC0LR5*?8RKIH)aTI^& zT{K9D7`Y$Ag;>GVwWM|s2kBHH6hv?c{sRh5Iu$qf<}WA(I|L6xt4;;!;3N*F4p&HN zNrmIMS}*a6lIxxEbtti3b4Js#^fSKid!HW<-WT9MmVj8HhXR1dUa$9o$K!c~i1!GB zIMXz(eQ|Md0s!v-VDeY$BuPGH80Jehn;i;*fTAekcsxc?6j2Za%w#e{hGEVqih6Qq za+YPQ$z<|ek|ewhy@>`7zXa`?Wq6|UgrK#5Cn@m zS(Z`Leg{e<5(og;?RG7Ff*>GG(}%YTa2$84D9XZ}>$;ACKmd1kc2L)K%bTJo$Z_21 zJfGuFfvc-4_vYrNt+-(raBy${kw^qOoesEMF3bDI#s&bu`mzKsj*pKgcJ6bz90r5I zh3OiN2J$@r>ed8`q7(~-f@UY~a5x~9N-Z>3sZ>UiB)y)mQ8s<*+S;1!Wk#dX>owfK z(b17vtybRyz?+2*0DfI>KA-2ziU zk|bff-9}YaEyVqPAM5q{G!zPbqiOmj0BqUu-T3S{j#Fh>-m2AVSS%LLhr{7#ilROM zz}Wp4_>HBika>B)jwWx7uTt$3epD!Pu?Ostnz~{4rtC>8=T$zNZ!`1Z`KePR zyOuOoI*DZ_{ZFub5GN_%$t0bUf5|lQ&f^Ks{ks_&Z?-?Z(7UGlPiAM!CYju#CBdQ> z^gfucVk)cT{AL->x~AaQBHgT=Pn8!R_~ume_34={-o-U3d8t1oOw#{M+6lr_-+%H|h zHRlMU=d{GsL`&-pV&xCCf_AX(UZarv$|TZ7;bOPO4u*-@);w0miDz`rm+$*MPoD4p zA1Bids*Z7&gd$S}HH7$oSbh9;X5+c*ToX7ZmWxci5}RQ2WH;Xg)2$LSq0 d>67?*)=o>+j)3rwi-GQD@O1TaS?83{1OP{KYQg{j 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 c2e2d09cd07da5414e73280f586beeb48b194743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kS|!`8c`CQ zpH@gsbM7c#o!@*t@A1`ijo6v4>$Hf03X_Vs^&;S4ebV)=(R5*>*Q_pMDP#pif zB=2=ulV)a>BG%z5Zc`Z;7%fBGS%rZIPhKbVqK8Q@vWtI!Fb~s9q2PTN=|u&Xf|to; zmF*;M6l7553L3K}v03swsIWEdXm=4m$M56wvdZYgi|v! zGlQmS4)z%sx0pv%?n`7rCM+&-)Rdlx6w*($Z28h9M8b zkh`uMG5Cva20|C{bFwVIo1UIdlu9K#l}a@kV}Yuw2f18se`{;2-$@*Wq9`UIgln4i z7Qih482~W=1A-ttotm23@3n)-CsRuAd!Co#oKIMm^{MUo0%L4$c6K&isZ@?UY;SLO z3>(>7#@OXntMwB=C&uLP@bC*lNQ4Ifj^jLb9Ovb+1^~_jxY{ue5CSLz;9bH->JbB7 z*WZthj$YAq{ortYcXyX=Zf?q)^Gg8QM<-HBU;DoQ1i-5<;eI2TOjb?PjI3cMli6pC zJ!%&Qa7WX$4M~!!03wIh%OwK<48uU9(a4LUcqSH$>7poRJkOh;lq$Aui$M?=0GtyW zEH5v|S5{WyYinx{hK7caPN!j67V`PL8w9~!02@6CbsN!Pc%H`>78Y8vEdKy-`#8Oh z9n@+y%+Jr;gpjaMC}@UZU~g{^jYb2jtE+yoSUljIS6tVf15iKCAhJctWU^{m)}$m! z4_(*&tm}Fq2!e4*lD+}>>UmzZ*=#-oQ0r+V?MNgNHvwEb5&2)>7cq5Ag!EkM0ssI2 M07*qoM6N<$g1);wrvLx| 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 d3dc9659ecc9e02fb1bace449953f9c28a30b66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVf03X_Vs^&;S4efJsC_R5*?8l+8=iaU92A z-``K2GB))$^QX3Ki8`MkmktEcX(8oBA?CxuyHVHvgpS>!gXb<510POy(5WP3Gqrpi z5lT4N1VyvuPu=$G(1f*#56~%k-#!m~-ki{7LUzQ;4tl_up_Ay0Ol~^Pay;)w45CTVY^D98#4TW~``yX7E zB!wUfQeI)9TIX_=CFY&2t(5>iuXlCB@4u`7q{P4qS?O`l0gg2dpVzzY^Lp2hHSIJl zB&e`L)|D0LV87>f`)u~#980sapH`=*8vrCpdSB;q-M-V*RH@|W&v`u_2e5c01t~>Y zj%`A86QYtV#}aD-vads}6_oR4$caHV?0;Qd9hPLdwa8|(SX8yJz-;a+x7nUl)z{a^ zX=(T-Ce~Nx<~&BTxv9Oc??o^Wuw646D~#drhdqcS6Z~P(798e*Uy>vpAj4pw+UcxF z?D@X4qqKE(J<2c`Vy2uN?)Ua~A8A^TcW4Mgp=ak3#3jYH1A*<2Q&R$TWbu8xk*onVlmfdNM#>F`&26+o6!RP?f~ySpcRaIm+r zwzgDUT3TgR6wBMe!8d!s;NxTkDHbIn{(BNPI?RqnSB{U4gwbTmX=rO}{;|KWA8DG< zb$vN`_=O72f(f03X_Vs^&;S4feMv+?R5*>rl+Q~mR}{y; zb7v;^CNgA_jOd$$7Ys4}Xds4yNkQzwLP{)!zKsPpU6wA2xO&hox+`zhO)dThU3B9@ zO`#Ghb>T~?m`Jrv6dXuRqb4Z@lT0$neT$mcS6pP;O~0E9hjYFk&b{Yc0roVfs_Hj_ zAc%uNqtW;Xz_-H+iCsV_j%3omg2}nE;TqQz+R4z~k}s=jP@B0ApigcFSyc z@SpYn12j$BaJgL1D5Z1|V~l|@_OYgEU;SI42f$kZo-)QVl+r4tw5O^nFPF=FpxfJ9 zuBs}hlv=VZ-!jI&BZPbk;B5e-uNn&X=ZBQiFHO@F2_ZZj4tHl~XC1n(L(?>5G8y=M zKJ4u5005Skmr<+LkWQyjtJP4cRB(QN-aS1%6}#OoA%t`|=bv-VKNA3eQu=Ew7K@0Y z2*WUNeSHl=2%JtQ*E9{mU{Ej&1F2LB0I;{WheRTQYPHHQFE4wQN=3Z8yAv2=9Ys+Z z&1RFCrio6cqY40IQ52hNYip9CC@)*9*Xy{txxI|rMKl@(0C3K+ zxw*+HrGFL*g)iK0w>9iR2_f$jQ54^qnVE46OK!K@sMTr+hrwhmh<`i&z5C9lK}h(;QM$yKAy>Bekc};uHD_;M~8=pkMjBaguXB zKR;hhrBc67Pfx$R?}dehKZY5VN+s9!_O_nO<^22m`w`Ch8SwX4;R5hPmgR&bNpF~@ z`5I%a8486e@p!zROeU+TRH~Xzr{4_*gVx5z#@7S0LZL8f7>3?zwcHMeJP`|FA)GU0A9a`CQZ|v<($j+6V`P&9A}ngJ+~|?2jC|FrvM)8#|!XVTU6$i RIbQ$(002ovPDHLkV1kNF$KL<| 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 514ef83cf1bbc72f97f2b33109a3621fae45e251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1153 zcmV-{1b+L8P)f03X_Vs^&;S4g8%ab#R5*>rR8L4FR~-K4 z%}m~?JD7|k?oK4Bx``SE4T4GkU<;OwC=|O07J6CsP|8A!NDqY;+FRLEFSUB?( z9@LbrN<)RJrHe*%w~2y*?9R>@6I?Kv$&8s^OxdoqoA%Q0^5FO0_kHjC@q3R!ZRmHq z-QO_`!&VE0Lg5a8A6`TxwHibs5oK*{t!-^>t!;90vJF7A79v-p0X!a0rN6%)0MOFX zQY)?I1pgWTzkw{vGxhcLcPXW`S`!2Tf*^b-%ktO%*3bjsO#mMYf)J;aYLwD*x7+Px zvstH#TrTIh-EN0cYV$mw69nN$Ldd58MgTNFE67}|?^8;@GEI{uggDo)U$;V`kV{b% z$g+%hJdUQOCM+#20RYCv#&B|Sg3-}YoSd9MRaG1u99aAN`>bVIgb-489OnziaXx1N zfKvKW>Ks{?;rIKQOeTX^ECv8rSy@3O5`m^^&e74)xvHw{ z+1VK*2trvD#X_-I6im}ZxmMS=ve_&$nGBAPk3k3l z%d#*G19f$EWl%rJsyt@0DXOZ?<8g+_|=Y%4hH`K!!WSAx{7c({N(iX^y#fzx86&oQr*R3F(65j($mv(MUo^= z*Yz{YvKWS8okl}LgUPb2qpIqaP$+ahK0Yoyd!|q*;Pmtq z0O0j{D}_SgDrcIe@BaP!c0QlyT3cJu)YJrqxf~{yN|}_>;)^Z<06fpzySuxnR4P0N zAiBN1{fVloub0bZSE*E@t*x!LqA0xA>m^>V7lI(*@bHjT6s1&)L2qwwc4ud2&$jKm z9DrW|{1gs{ug2r?pHrz+{qpkiwT+F9YdbqTzJ-N_W5Vi*QYoK`6Gjx2xfBI3JBhwOA~sjgF4K<@fvTnVFeyt76GyvN@Bf03X_Vs^&;S4dxJg7oR5*?8lE16kP#A_E zZHqxGLEP#O5Oh=mE*%{@NGB;cRuJ90I2LN6I4b@Lg5czSN8RcW$lxLb6`%oG-5Cq08lQM9|qjgO+YS}LseA(3WdViH%*iEdQB#iAsi0>Ip8$?Nrqui zsZ_8mi%2AbuIm(wMcVB)p-|{`fL^c1csxGWhr@yCbV{q$Vm_Z^nkJ1#gUMtgZRuhV%T=|-&iFiCNoc+&doaJ>RN|Ho2o5e7UD}Oi~lF#Q| zCw2uKk4N_VJwBiB%8$ijEEWq_fKzoGkv$%dh(@EL+wBU!-!A}>N~J`<-#^#9@QZG~ zqDu)O*lxEpn@u!LBM=Cn>pInH72CGmw!0_5apAHo3$NFEx5q8PlPt@h-KGczgLl^~ g%X)e&%YQxVH$phHi3g?Lk^lez07*qoM6N<$g7Hi1H~;_u 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 3ccdfc885b4c071858ed3430d6228a69a5b67c99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmV;G18V$f03X_Vs^&;S4fFG)l}R5*?8R6$51R~Y_g z-kZrxOqyLxp*ChwvKGAzI2faL+|=q#u1U9=p?4{rB|KG>=z4w1V5BMK%8>9tJ z2Y`}s19*^g1uh;ukrBZp15JFT{wSvK5TPBmi<>e)D9Ea=c>vKj%Mi7g| zh^ndx27@>{I)bk2&hGB+i%cd%%jGgB%kp1_VPvb->Sq940N?~c$Oi%e*|u$Oxm@PM z;jlA2JnW8+j?#gF0r>rX?Ck6yl}fp%r>D-v#RV}FMdGJkPtWgv`H+FflQ4xv{a427vAD?Vo36X3m?5 z=W;pk?Ck6q8Wx8(5?=?2L?X->qX3}mddJq**2l6eI{@0zY(%dszOb)y)B ziep(8SzccL$uNvN08ZZ6fH6iDMX4Pe97v64Jv}|`b8~YK4a1mxWd?78v9U2O6bjKm zAaLhDWl$^@`BWBasU(S__)eiv;2C4fwr$@B0FDsyg~#KWsaC71>$-AhXXjHzQ3`{DgZc6C z@#jNBLq!1KIPM$Qb-x9GbUJ+_nM}TaczD>6&1T;{KR*xGYBhlnA~}xpL%m-A96-I< z#XNEO00RI<0Hgu@2H>ovIRf|_oV!YNw&Cad00000NkvXXu0mjfYc9D3 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 a9de432ff07c37782addcc9c0a42d24e04354db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)f03X_Vs^&;S4dy-7qtR5*=&l0QfrQ5?rV zISYz4dEO9EDq@EuLOTjl3K`VxN}+=Y8H7xB?cm-iQ-)9o4nh&3bP(%OJaEX6F=Ww( zETJ?SFb>x&O^(p0KZm>6mvGlFyy5-%e&6?f-*2|wP ztJNfv$!O$=z>IhTPY=i6KL<1{%aR~uvsoz=3UYnjmZPH+nV(-2;73r9-z$|$porr* zBlCPdFTV2`{KSWNnMfo?RC~Q10H$eDE|;m->-xF@BmpKg&U!kXP7Z}ytro>%k-=bq z>-MqjQ%uvOR4S3n<#1j19@qu`>KE^(QYqz=$9TdiD)7* z;5;6WFYWBSXL1r;P)f03X_Vs^&;S4d+et)0R5*?8l(DPRP!z_0 zrb$VgkXtO+R}i$kPKEcxrGqY|WGYWVC`y(JPRiQ^M^SNia2Jb{VvC|KIynfs3H=K! z?NEx?6ebL5@2b^mwqCCzgdhk4Z8RF~`M%$akc}HCQc7(+9@A_#84L!rS}lSg5NnJUhN0H) z_i-Et&+}-v+i`|X0ikJ{pG&3E#agYV%;$4-U0*1Q@^+0`7>4nsTrOX*Z9BDGF0m{t z&Lrx7baqVB?3t$NWilCG2=M{P#@JIrh_Cs4er8$LPa(wnh*^1T+yG!So6Yut)4<&G zym10Eo=&IdR}7HEYz$cG3~(DzwlE>^=x+ip15bdvz-SA%1H1-q0DrteJRk(F0B3=# zz<1!<7W0(?;5qOTI0w91UBthNlhNb=Js=I}M+lfkUi(q~2KaG=zGJ~J1azRiSqF(j P00000NkvXXu0mjf{96FC 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 6b3933ceb181dae706937b8c0a59251b4b3e8059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmV-{1AhF8P)f03X_Vs^&;S4f8%ab#R7i=1Qoqf(VFUAl5ngg!(l(nYna zLKiIrT(l};i=ioMqKGC)US2XYnVH*#Ntz}x#zkpAxSRW(bH4i>&b=4@C+PS$i+>H| zfbW3U9-6GS5c4Z=RuU*aR6uFMeF{7S-T-{y82G*<)(AP^IbgLS@EG{HmRD7kNF-t# zhT+#HTwGjemSz2E+x8UjTa$wW@GT%4t!OkVeczY0$Ye5dYHG^SG|d8@);f3-_!4-v zwD%sM-K8D~1bkIhrIb?9G))GBK@UJm$<578KuQVl0q~7p%K6AJjHlz{>h10QF&>Y%4-O8pu&~fnAdyILczDR#+8W_-m{=@Ee}8|4 z@9XQ!#^dpEV7L4hot&Sa8;YW!X?Ko)1*U0oeSM9lX$T?wWHR{={`B-T2>elQ5kN-M zv|KWo3`V0-mX?;93c0RZX`>LrJw84TOiWAwu)n`gTU*PqHvIq7-cotJHK zaZz@4brn;ol$@QNmF?~A(lCr)%0+8O>}|s^eiA|`uIoBL!1FxAbzM|d^@R|wqA0S; zHM*_~MNwovpC=d$($UdjpPik3;kxchBNy{CGc(rk@NgD*!tI0i1b7E9fLFME5X1r;P)f03X_Vs^&;S4d+et)0R5*?8l(DPRP!z_0 zrb$VgkXtO+R}i$kPKEcxrGqY|WGYWVC`y(JPRiQ^M^SNia2Jb{VvC|KIynfs3H=K! z?NEx?6ebL5@2b^mwqCCzgdhk4Z8RF~`M%$akc}HCQc7(+9@A_#84L!rS}lSg5NnJUhN0H) z_i-Et&+}-v+i`|X0ikJ{pG&3E#agYV%;$4-U0*1Q@^+0`7>4nsTrOX*Z9BDGF0m{t z&Lrx7baqVB?3t$NWilCG2=M{P#@JIrh_Cs4er8$LPa(wnh*^1T+yG!So6Yut)4<&G zym10Eo=&IdR}7HEYz$cG3~(DzwlE>^=x+ip15bdvz-SA%1H1-q0DrteJRk(F0B3=# zz<1!<7W0(?;5qOTI0w91UBthNlhNb=Js=I}M+lfkUi(q~2KaG=zGJ~J1azRiSqF(j P00000NkvXXu0mjf{96FC diff --git a/veejay-current/veejay-client/share/knob.png b/veejay-current/veejay-client/share/knob.png deleted file mode 100644 index af1ac70a68d00d99e7f6daccd91f604f32327d31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45659 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

c*;kcOA?4l5*EW;$%(5E{M#H5p8(fkkN>@IY< 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 Cgk)3z diff --git a/veejay-current/veejay-client/share/multicast.ico b/veejay-current/veejay-client/share/multicast.ico deleted file mode 100644 index aad528c80a44a3a2e8a72f4264c6fe188a73e664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 zcmcJQPl(M?6vxkKBKKIlq-m05Az4VnLW;~RWoaR4lB_H&*hrczOp0V7$wJaBWhGh2 z!pu^#nj{Mip|=vRNk&6IpYQqI*Zb3Z={NJ7*Y}-!&%Ni*J?Gr}GaKSJI%@oHvuo?k zM$Bv{KxAV;@*vj!FZo(CpD{~6;qyT52S|Pn+XeWVIX(tSeutQ4e+rHd=NyA1pTOpy zGWPI8t_Dr=k#r7nrFyJ}(i&_W2b))8rN6HFLwWG`EguP4nr1!;@Lz>|E4ru9yAHnx z9sp_>J@Xd%5yrprTy-W-qO_5SS4P;>dD-I! zLF-sCO1oGiKYjy_By9jsf%J72=`4a?XO-+W*wkgTYnqh5E}7$}S=*HDcf_3I*ZEgM z?e>+Qp7EKpRhpXp2KJDn)y zRsW-2$}Rnwa(}kl@H6>r&*2sCp6sOk=r#LQe(2eDa(W@X0_vUnfO%EYo1yn1P4amc0ykyVb{vPDt&$4%W|2@4{d=$MGKx$;Lo{4mJ<5;fH~OF5No@%heJtIm7}@$$a<1%R@?hl!j-&amxcMbWUL_zpg2 zz6>wG0V|ejR-ZMyvaV(}zQ+*SP@rMc=+ui3wg_(&%eI94_c%IMvto9bt?=T!{RNke B@h$)W 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 471b269b377e0807d2c2cfb468f39d0743a2085e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 902 zcmV;119|+3P)WFU8GbZ8({Xk{QrNlj4iWF>9@00QbsL_t(o!^PN7h*fnI z2k_6G_uh=-@|8XK z5D!qmD8?{^$M`Pi^?inSYCJDsA-$q}h zEY<~u{(!fmOeDzjkRfyyt6J%sv1ONV7v=b$RMz49V6kmU?bnn3 zXkg2+7`>Pu-0}jlRtJ(zQKlvAjw9As4c*@YY!)S5jO{Prr8qgYEXA0NZbrjeUxx?k zvElpJIhmn!6eq9(XK^~_!v1l7KisaP*+BG-Ws%iC$7I|)j_*3#c`&&jeDZ3<_-Zg| zqi)!f$LaVld=NSDpsIVOGMLBVG?hQ_cb)2}3@SZS^?%_1fn+KHJTs8wC3o>-GK{8w cND8?26dy072)-9XWdHyG07*qoM6N<$g8S5#YybcN 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 c925fd92beaee2a63b0398b1508997789336b5ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2755 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 JPDHLkV1hudAm9K1 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 457745d1d43c0813d795917264c4ff39b64dd632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11997 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 Vf{#?s24c^_08&blwc^G<{|5)=ZD0TZ 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 34f421dd72fb69cb269628fecaef00543c4bbde6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29623 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 - * (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 462d3b6fd373dd374de5217c643e0d49479e750d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76291 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 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 8a321872483e9f4933ec848068cdc8f11321be8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1696 zcmV;R24DF?T4*^jL0KkKSt`&;3jhZ1fB*mcNb_2EfBJv#-|GMW-};a$*c8B_MJh~y zfS7mykc;33uc`C^A7)WN6az;Fi8P_3BOo*y00w~cfCE4P&;vt20BN8A8V1sBN2Ecf zCIK)6!5V3R0Wbn+XkuUh000q$U=gM!LjeYum;}HR1Zk!K1i%TQp^1P1002f2fJT^^ z3<4+WNC}Q`Broz(=HcL&^g{(9mcera)w500Y$BfIn1xjS7IM z;z$5E!h<~tGJ^6|5DXJ@02bq<5F!gK;Fjsx89#;a=Tf~<8_<*)NCbS3AsF>Fa(c!M z-U2W_zAF?+ATd0U)M42^NNlh&ko8JdRS-st;140+DkS{)Pf?+faNgd{d z9wdM_k{ahpj01T9R40(4JOW@^$*Zb1Hrq{Fpu%_@kTg+B*tXDAnKaeQXrQ-btPm3p zi1|F#`R|&zv8D*QMldQb9YWO5%j;RGwF(H*kz%%=HuRP@7c8VzQg1na-mXr4$;ViJ zcZNHCdc>Q$+hFf`SI)=96qA&-=y^@ua^IAt1^IJ4`LOcm=(>}LXQQ4QB;|FroKmJ3 zWzCu=wfkKe@Q6a4jzy1_pV^5XSj2P?34;)AjCemzp>U(#%yiiI7Hfn2U|f*U^^fX) zXhF%cJ~3cGfa(I{JRQkyiL;v!={PbR*V%#2*5T8@oXU)gt|AMYyQeE8sJe^f)bX)+ zm=!@<_H&qH31Aiz#F|nAMP~|Al!+G>8A@+RGmdkuWUmZnO{=t;$i*Cr)ow~mSpQyt zxP*Oh4%Q2USm1D|s-S=|L=_cSut?URDA5!IMv8!ftfeTS2r0~j{v>ewLKt5So~+hd z&+wGPMy)pYoLaUf2NKRAmDH==Q%;QW7Z#5Sjoscg_NdVpGM)MnobCyUuwhad^3U<> zLj8Zr?#|8hFQL0{D3(Dk6ouO3ji4@wgL{ZUsEPRR5KKx!Q{ND6=J#wveJXB|#Solp zDLAvhTh^jY3mDR)Gy`N?oXA^lGSMM);z?UsoD0=JK?#jQM;RhYKtT!xxxU5>ZN4GE z?QRCi5Zs~@LmL>xHrO-UmmQvYccCEkup~>p-`+jGrtR$FF4 z=i9Ag(|*jwC4M@GBv>e>6hKB)ig0{!Xz}Dc!HAPdcm@N1W<`kX1jQvKU2WrF6YV}iR$ihD8^ zPYnyVB5M-`iW>~Za$uw*-CWs>=AoF0-o>G36vgl!0FHI%dcFB6GCUnkBAQ1S84w*_ zI1WQfE5wE|jWL587%`?a#z3?x8qjkFv{2m+d(EjFWe*K?q{C@vYnQou8Jkcdr_L7B zI$cExjf%i2Y>eZ-t)Oic=A!bMEHT332CWTX+H*);u&)yueO0$)l0SHnG_wT)hq!DN z4qH)`1^AmqTlAi>S&D0|w6}t*_QL(}PeHB*P*V%VTBr<#6w4|o zP~meNyb5V<9Ji^ZxRDT88{~$j8kXFX5h7QFFHQ6;OIU8_TTWiznYwXVqX}>f=b@c` z6^Z0)iC{oc$vGwxXGw4O-LohoX2Xi=0-`L$tLb($c4PtN;K21Ohf45(atw1yp3zDB%XHhASD|_3Psj zty3^tg{w9Q=OL3f(k-ykFb#K06LMoA+g7W+o+yRGH>@L7o$=DmKXe~Hp! qBJ5=`#`Y9uS!^yM!)Ves^{jqw7mYyy;PyI&{x0N-aG@Yoppq7lu=9KX 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