diff --git a/veejay-current/veejay-client/src/vj-api.c b/veejay-current/veejay-client/src/vj-api.c index de37356e..ef4cc12a 100644 --- a/veejay-current/veejay-client/src/vj-api.c +++ b/veejay-current/veejay-client/src/vj-api.c @@ -1035,6 +1035,7 @@ static void set_tooltip(const char *name, const char *text) } gtk_widget_set_tooltip_text( w,text ); } + void on_devicelist_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, @@ -2976,7 +2977,6 @@ chain_update_row(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, disable_widget( "fx_m2" ); disable_widget( "fx_m3" ); disable_widget( "fx_m4" ); - disable_widget( "fx_mnone" ); } else { @@ -3011,7 +3011,6 @@ chain_update_row(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, enable_widget( "fx_m1" ); enable_widget( "fx_m2" ); - enable_widget( "fx_mnone" ); /* if( gui->uc.entry_tokens[FADE_METHOD] <= 1 || gui->uc.entry_tokens[FADE_ENTRY] != info->uc.selected_chain_entry ) @@ -3740,7 +3739,8 @@ static void load_v4l_info() { int values[21]; int len = 0; - veejay_memset(values,0,sizeof(values)); + + 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); @@ -3750,7 +3750,7 @@ static void load_v4l_info() &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 < 25 ) + if(res < 21 ) { free(answer); return; @@ -3790,7 +3790,7 @@ static gint load_parameter_info() { int *p = &(info->uc.entry_tokens[0]); int len = 0; - int i = 0; + int i = 0; veejay_memset( p, 0, sizeof(info->uc.entry_tokens)); diff --git a/veejay-current/veejay-server/doc/HowToDebugging.txt b/veejay-current/veejay-server/doc/HowToDebugging.txt index 875e35ca..d3e150ad 100644 --- a/veejay-current/veejay-server/doc/HowToDebugging.txt +++ b/veejay-current/veejay-server/doc/HowToDebugging.txt @@ -1,57 +1,85 @@ -Debugging veejay +#Debugging veejay ---------------- -There are various ways to submit useful bug-reports - -Basically, send as much logging as possible, +Please report any issues here: https://github.com/c0ntrol/veejay/issues -=== VERBOSIVE CONSOLE LOGGING === +## Redirecting veejay's console output -1) Run veejay with the verbose flag: +You can run veejay with the -v commandline flag, telling it to be more +verbosive: +
$ veejay -v -n > /tmp/logfile +-To watch it: +You can watch the console logging using tail: +
$ tail -f /tmp/logfile +-=== NETWORK EVENT LOG === +## Network event logging -2) If it crashes in combination with reloaded or another external, enable all network logging: +You can log all network related events to /tmp/veejay.net.log (file +destination cannot be changed) +
$ export VEEJAY_LOG_NET_IO=on -$ veejay -v -n -> /tmp/console.logfile +$ veejay -v +-=== POST CRASH === +## Crash Recovery -3) When it has crashed, there are files in your $HOME/.veejay/recovery directory +If veejay crahes, it will write your samplelist and edit descision files to +$HOME/.veejay/recovery. -The files come in pairs, an editlist and a samplelist with veejays pid number. The recovery files can be loaded with: +
$ veejay /path/to/recovery_editlist_p???.edl -l /path/to/recovery_samplelist_p???.sl ++## Useful backtraces -=== DIGGING DEEPER === -From the source: ----------------- +A useful backtrace not only contains symbols but also lists the linenumber and +name of the source file -1) Run configure --enable-debug +To enable debugging symbols to be build in you must do a clean build and pass +the --enable-debug flag to configure. -2) Run veejay in gdb +
+$ ./configure --enable-debug +$ (make clean) +$ make -j12 && make install ++ + +You can attach a debugger to veejay, or you can load veejay in the debugger: + +
+$ ps -aef |grep veejay +$ gdb -p $PID ++ +
$ gdb /path/to/veejay ... $ bt +-3) Run veejay with valgrind +Alternatively, you can use valgrind to look for memory leaks, threading +problems, etc: + +
$ valgrind --leak-check=yes --leak-resolution=high --log-file=/tmp/valgrind.veejay.log /path/to/veejay -n -v ... $ valgrind --tool=helgrind /path/to/veejay -n -v +diff --git a/veejay-current/veejay-server/doc/HowtoCache.txt b/veejay-current/veejay-server/doc/HowtoCache.txt index 524d328d..7af72d27 100644 --- a/veejay-current/veejay-server/doc/HowtoCache.txt +++ b/veejay-current/veejay-server/doc/HowtoCache.txt @@ -1,8 +1,12 @@ +# Frame cache + Since version 0.9.3 veejay features a caching mechanism to load frames from disk into the system's memory. The cache size is limited to the amount of RAM available in your machine. If the cache is full, Veejay must decide which frames to discard. Veejay will discard the frame furthest away from the current position. You can configure the cache with two commandline options: +
-m / --memory [percentage of available RAM to use] -j / --max_chain [maximum number of samples to cache] +The second option, '-j' is used to divide up the cache memory into a number of equal sized chunks. Veejay will cache by default up to 8 samples into your system's main memory, if you specified the -m option. diff --git a/veejay-current/veejay-server/doc/HowtoCompile.txt b/veejay-current/veejay-server/doc/HowtoCompile.txt index c0169771..994e3342 100644 --- a/veejay-current/veejay-server/doc/HowtoCompile.txt +++ b/veejay-current/veejay-server/doc/HowtoCompile.txt @@ -1,54 +1,36 @@ -Compiling Veejay ¶ -Prerequisities ¶ +# Compiling Veejay + + +## Prerequisities Required: - * MJPEG Tools - * FFmpeg (libavcodec, libavformat, libavutil, libswscale) - * libxml2 for saving project data - * SDL for the video window - * libdv for playback of DV Video - * DirectFB for secundary head (TVOut) - * Jack for audio playback - * freetype2 for font rendering - * libjpegMMX for SIMD optimized JPEG decoding - * [http://www.gtk.org GTK-2.4 (GTK 2.6 recommended) - * [http://www.gnome.org GdkPixbuf (comes with Gnome) - * Cairo (needed for GVeejay Reloaded) - * GtkCairo (needed for GVeejay Reloaded) - * Libquicktime for Quicktime] - * openGL library (gl.h and libGL.so) for the video window - * Unicap API for more video input devices] - * Video4Linux II - * libpthread +* FFmpeg (libavcodec, libavformat, libavutil, libswscale) *please use ffmpeg instead of libav* +* libxml2 for saving project data +* SDL for the video window +* libdv for playback of DV Video +* freetype2 for font rendering +* [http://www.gtk.org GTK-2.4 (GTK 2.6 recommended) +* [http://www.gnome.org GdkPixbuf (comes with Gnome) +* Cairo (needed for GVeejay Reloaded) +* GtkCairo (needed for GVeejay Reloaded) +* Libquicktime for Quicktime] +* Video4Linux II +* libpthread Optional: - * liblo +* liblo +* DirectFB for secundary head (TVOut) +* Jack for audio playback -You should check with the package manager of your distribution to see if all development packages have been installed, among others this includes: - * libdv-dev - * cairo - * jack-dev - * glib >= 2.4 dev - * gtk >= 2.4 dev - * libglade >= 2.2 dev - * automake, autoconf, libtool, etc. - * linux kernel header files - -If you are one of those lucky users with a distribution without any compiler pre-installed you will need to setup a build system by installing a gcc, automake, autoconf, etc etc. - - * Compiling On Ubuntu: doc/HowtoUbuntu.txt - -Preperation ¶ -Configuration ¶ +## Generic build instructions Normally, you can just run 'configure'. If you have cloned the veejay git respository, you will need to run autogen.sh first to produce the configure file. -Options -------- +## Configure options Before running configure, check if the PKG_CONFIG_PATH variable is setup correctly: @@ -56,45 +38,38 @@ Before running configure, check if the PKG_CONFIG_PATH variable is setup correct If echo is silent, you must set the PKG_CONFIG_PATH to point to the directory containing all your .pc files (like for example libdv.pc or jack.pc ) -Configure options: ------------------- - --enable-debug +### Configure flags -Builds veejay for debugging purposes (disables optimization) +`--enable-debug` Builds veejay for debugging purposes (disables optimization) +`--with-arch-target=generic` Build veejay for generic x86 cpu-type. If the default is used (auto), the resulting binary may not run on another computer. - --with-arch-target=generic - -Build veejay for generic x86 cpu-type. If the default is used (auto), the resulting binary may not run on another computer. - - -Compilation: ------------- +## Building 1. Get the sources from Veejay's repository: - +
$ git clone git://code.dyne.org/veejay.git veejay - +2. Enter the source directory and run autogen.sh - +
$ cd veejay/veejay-current $ cd veejay-server $ sh autogen.sh - +3. Run ./configure - +
$ ./configure - +4. Type 'make' to build veejay - +
$ make - +5. Installing - +
$ sudo make install - -6. Continue with building veejay-client and veejay-utils - ++6. *optional* continue with building veejay-client and veejay-utils +
$ cd veejay-client $ sh autogen.sh $ ./configure @@ -104,29 +79,31 @@ Compilation: $ sh autogen.sh $ ./configure $ make && sudo make install ++7. *optional* continue with building the plugin-packs +
+ $ cd plugin-packs/lvdgmic + $ sh autogen.sh + $ ./configure + $ make && sudo make install +- -Running veejay --------------- +## Test your build Test if veejay works: - +
$ veejay -d -n +Start another terminal and type: - +
$ reloaded +-or - - $ reloaded -t - -Stopping veejay ---------------- - -Open another terminal - +Open another terminal (depends on sayVIMS, build in step 6) +
$ sayVIMS "600:;" +(or press CTRL-C in the terminal running veejay) diff --git a/veejay-current/veejay-server/doc/HowtoPlugins.txt b/veejay-current/veejay-server/doc/HowtoPlugins.txt index 99a764fb..324fdff0 100644 --- a/veejay-current/veejay-server/doc/HowtoPlugins.txt +++ b/veejay-current/veejay-server/doc/HowtoPlugins.txt @@ -1,6 +1,12 @@ - ¶ +# Plugins -First, you need to create a file to tell veejay where to find plugins. +By default, veejay looks in the following commmon locations to find plugins: +- /usr/local/lib +- /usr/lib/ +- /usr/local/lib64 +- /usr/lib64 + +Alternatively, you can create a file to tell veejay where to find plugins. $ mkdir ~/.veejay $ vi ~/.veejay/plugins diff --git a/veejay-current/veejay-server/libstream/v4l2utils.c b/veejay-current/veejay-server/libstream/v4l2utils.c index 41dc63a6..1e15ed17 100644 --- a/veejay-current/veejay-server/libstream/v4l2utils.c +++ b/veejay-current/veejay-server/libstream/v4l2utils.c @@ -1647,18 +1647,15 @@ int32_t v4l2_get_control( void *d, int32_t type ) struct v4l2_queryctrl queryctrl; struct v4l2_control control; - memset(&queryctrl, 0,sizeof(queryctrl)); - memset( &control,0,sizeof(control)); + veejay_memset(&queryctrl, 0,sizeof(queryctrl)); + veejay_memset( &control,0,sizeof(control)); queryctrl.id = type; - if( -1 == vioctl( v->fd, VIDIOC_QUERYCTRL, &queryctrl)) { - if( errno != EINVAL ) { - return -1; - } + if( vioctl( v->fd, VIDIOC_QUERYCTRL, &queryctrl) == -1 ) { return -1; } else if ( queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) { - veejay_msg( VEEJAY_MSG_DEBUG, "v4l2: property type %x not supported",type ); + veejay_msg( VEEJAY_MSG_DEBUG, "v4l2: property type %x disabled",type ); return -1; } else { control.id = type; diff --git a/veejay-current/veejay-server/libvje/Makefile.am b/veejay-current/veejay-server/libvje/Makefile.am index 2483ec37..97e8da53 100644 --- a/veejay-current/veejay-server/libvje/Makefile.am +++ b/veejay-current/veejay-server/libvje/Makefile.am @@ -57,6 +57,6 @@ libvje_la_SOURCES = vj-effect.c vj-effman.c effects/common.c \ effects/magicalphaoverlays.c effects/travelmatte.c effects/feathermask.c effects/alphaselect.c \ effects/alphaselect2.c effects/alphablend.c effects/porterduff.c effects/alphanegate.c effects/lumakeyalpha.c \ effects/chromamagickalpha.c effects/magicoverlaysalpha.c effects/gaussblur.c effects/levelcorrection.c \ - effects/masktransition.c effects/alphadampen.c effects/passthrough.c + effects/masktransition.c effects/alphadampen.c effects/passthrough.c effects/alphatransition.c diff --git a/veejay-current/veejay-server/libvje/effects/alphatransition.c b/veejay-current/veejay-server/libvje/effects/alphatransition.c new file mode 100644 index 00000000..d40cf2a5 --- /dev/null +++ b/veejay-current/veejay-server/libvje/effects/alphatransition.c @@ -0,0 +1,170 @@ +/* + * Linux VeeJay + * + * Copyright(C)2015 Niels Elburg