mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-21 23:30:00 +01:00
cummulative changes
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
<pre>
|
||||
$ veejay -v -n > /tmp/logfile
|
||||
</pre>
|
||||
|
||||
To watch it:
|
||||
You can watch the console logging using tail:
|
||||
|
||||
<pre>
|
||||
$ tail -f /tmp/logfile
|
||||
</pre>
|
||||
|
||||
=== 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)
|
||||
|
||||
<pre>
|
||||
$ export VEEJAY_LOG_NET_IO=on
|
||||
|
||||
$ veejay -v -n -> /tmp/console.logfile
|
||||
$ veejay -v
|
||||
</pre>
|
||||
|
||||
=== 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:
|
||||
|
||||
<pre>
|
||||
$ veejay /path/to/recovery_editlist_p???.edl -l /path/to/recovery_samplelist_p???.sl
|
||||
</pre>
|
||||
|
||||
|
||||
## 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
|
||||
|
||||
<pre>
|
||||
$ ./configure --enable-debug
|
||||
$ (make clean)
|
||||
$ make -j12 && make install
|
||||
</pre>
|
||||
|
||||
|
||||
You can attach a debugger to veejay, or you can load veejay in the debugger:
|
||||
|
||||
<pre>
|
||||
$ ps -aef |grep veejay
|
||||
$ gdb -p $PID
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
$ gdb /path/to/veejay
|
||||
...
|
||||
$ bt
|
||||
</pre>
|
||||
|
||||
3) Run veejay with valgrind
|
||||
Alternatively, you can use valgrind to look for memory leaks, threading
|
||||
problems, etc:
|
||||
|
||||
<pre>
|
||||
|
||||
$ 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
|
||||
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
<pre>
|
||||
-m / --memory [percentage of available RAM to use]
|
||||
-j / --max_chain [maximum number of samples to cache]
|
||||
</pre>
|
||||
|
||||
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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
<pre>
|
||||
$ git clone git://code.dyne.org/veejay.git veejay
|
||||
|
||||
</pre>
|
||||
2. Enter the source directory and run autogen.sh
|
||||
|
||||
<pre>
|
||||
$ cd veejay/veejay-current
|
||||
$ cd veejay-server
|
||||
$ sh autogen.sh
|
||||
|
||||
</pre>
|
||||
3. Run ./configure
|
||||
|
||||
<pre>
|
||||
$ ./configure
|
||||
|
||||
</pre>
|
||||
4. Type 'make' to build veejay
|
||||
|
||||
<pre>
|
||||
$ make
|
||||
|
||||
</pre>
|
||||
5. Installing
|
||||
|
||||
<pre>
|
||||
$ sudo make install
|
||||
|
||||
6. Continue with building veejay-client and veejay-utils
|
||||
|
||||
</pre>
|
||||
6. *optional* continue with building veejay-client and veejay-utils
|
||||
<pre>
|
||||
$ cd veejay-client
|
||||
$ sh autogen.sh
|
||||
$ ./configure
|
||||
@@ -104,29 +79,31 @@ Compilation:
|
||||
$ sh autogen.sh
|
||||
$ ./configure
|
||||
$ make && sudo make install
|
||||
</pre>
|
||||
7. *optional* continue with building the plugin-packs
|
||||
<pre>
|
||||
$ cd plugin-packs/lvdgmic
|
||||
$ sh autogen.sh
|
||||
$ ./configure
|
||||
$ make && sudo make install
|
||||
</pre>
|
||||
|
||||
|
||||
Running veejay
|
||||
--------------
|
||||
## Test your build
|
||||
|
||||
Test if veejay works:
|
||||
|
||||
<pre>
|
||||
$ veejay -d -n
|
||||
</pre>
|
||||
|
||||
Start another terminal and type:
|
||||
|
||||
<pre>
|
||||
$ reloaded
|
||||
</pre>
|
||||
|
||||
or
|
||||
|
||||
$ reloaded -t
|
||||
|
||||
Stopping veejay
|
||||
---------------
|
||||
|
||||
Open another terminal
|
||||
|
||||
Open another terminal (depends on sayVIMS, build in step 6)
|
||||
<pre>
|
||||
$ sayVIMS "600:;"
|
||||
</pre>
|
||||
|
||||
(or press CTRL-C in the terminal running veejay)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
170
veejay-current/veejay-server/libvje/effects/alphatransition.c
Normal file
170
veejay-current/veejay-server/libvje/effects/alphatransition.c
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Linux VeeJay
|
||||
*
|
||||
* Copyright(C)2015 Niels Elburg <nwelburg@gmail.com>
|
||||
*
|
||||
* 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 <config.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <libvjmem/vjmem.h>
|
||||
#include "alphatransition.h"
|
||||
#include <veejay/vj-task.h>
|
||||
#include "common.h"
|
||||
|
||||
/* almost the same as masktransition.c, but adding threshold and direction parameters */
|
||||
|
||||
vj_effect *alphatransition_init(int width, int height)
|
||||
{
|
||||
vj_effect *ve = (vj_effect *) vj_calloc(sizeof(vj_effect));
|
||||
ve->num_params = 4;
|
||||
ve->defaults = (int *) vj_calloc(sizeof(int) * ve->num_params); /* default values */
|
||||
ve->limits[0] = (int *) vj_calloc(sizeof(int) * ve->num_params); /* min */
|
||||
ve->limits[1] = (int *) vj_calloc(sizeof(int) * ve->num_params); /* max */
|
||||
ve->limits[0][0] = 0;
|
||||
ve->limits[1][0] = 1255;
|
||||
ve->limits[0][1] = 0;
|
||||
ve->limits[1][1] = 1000;
|
||||
ve->limits[0][2] = 0;
|
||||
ve->limits[1][2] = 1;
|
||||
ve->limits[0][3] = 0;
|
||||
ve->limits[1][3] = 0xff;
|
||||
|
||||
ve->defaults[0] = 0;
|
||||
ve->defaults[1] = 50;
|
||||
ve->defaults[2] = 0;
|
||||
ve->defaults[3] = 30;
|
||||
|
||||
ve->description = "Alpha: Transition Mask";
|
||||
ve->sub_format = 1;
|
||||
ve->extra_frame = 1;
|
||||
ve->has_user = 0;
|
||||
ve->parallel = 1;
|
||||
ve->alpha = FLAG_ALPHA_SRC_A;
|
||||
|
||||
ve->param_description = vje_build_param_list(ve->num_params, "Time Index", "Smooth", "Direction", "Threshold" );
|
||||
|
||||
ve->hints = vje_init_value_hint_list( ve->num_params );
|
||||
|
||||
vje_build_value_hint_list( ve->hints, ve->limits[1][2], 2, "Channel A", "Channel B" );
|
||||
|
||||
return ve;
|
||||
}
|
||||
|
||||
static inline void alpha_blend1(uint8_t *Y,
|
||||
const uint8_t *Y2,
|
||||
const uint8_t *AA,
|
||||
size_t w)
|
||||
{
|
||||
size_t j;
|
||||
for( j = 0; j < w; j ++ )
|
||||
{
|
||||
Y[j] = ((AA[j] * Y[j]) + ((0xff-AA[j]) * Y2[j])) >> 8;
|
||||
}
|
||||
}
|
||||
static inline void alpha_blend2(uint8_t *Y,
|
||||
const uint8_t *Y2,
|
||||
const uint8_t *AA,
|
||||
size_t w)
|
||||
{
|
||||
size_t j;
|
||||
for( j = 0; j < w; j ++ )
|
||||
{
|
||||
Y[j] = (((0xff-AA[j]) * Y[j]) + (AA[j] * Y2[j])) >> 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void expand_lookup_table( uint8_t *AA, const uint8_t *lookup, const uint8_t *aA, const size_t w )
|
||||
{
|
||||
size_t j;
|
||||
for( j = 0; j < w; j ++ )
|
||||
{
|
||||
AA[j] = lookup[ aA[j] ];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void alpha_blend_transition( uint8_t *Y, uint8_t *Cb, uint8_t *Cr, uint8_t *a0,
|
||||
const uint8_t *Y2, const uint8_t *Cb2, const uint8_t *Cr2,
|
||||
const uint8_t *a1, const size_t len, const size_t w,
|
||||
unsigned int time_index, const unsigned int dur, const int direction, const int threshold )
|
||||
{
|
||||
uint8_t lookup[256];
|
||||
uint8_t AA[ RUP8(w+7) ];
|
||||
|
||||
const uint8_t *T = (const uint8_t*) lookup;
|
||||
const uint8_t *aA = a0;
|
||||
|
||||
size_t i;
|
||||
|
||||
/* precalc lookup table for vectorization */
|
||||
for( i = 0; i < 256; i ++ )
|
||||
{
|
||||
if( time_index < aA[i] )
|
||||
lookup[i] = 0;
|
||||
else if ( time_index >= (aA[i] + dur) )
|
||||
lookup[i] = 0xff;
|
||||
else
|
||||
lookup[i] = 0xff * ( (double) (time_index - i ) / dur );
|
||||
|
||||
if( lookup[i] < threshold )
|
||||
lookup[i] = 0;
|
||||
}
|
||||
|
||||
if( direction == 0 )
|
||||
{
|
||||
for( i = 0; i < len; i += w )
|
||||
{
|
||||
/* unroll the lookup table so we can vectorize */
|
||||
expand_lookup_table( AA, T, aA + i, w );
|
||||
|
||||
alpha_blend1( Y + i, Y2 + i, AA, w );
|
||||
alpha_blend1( Cb+ i, Cb2+ i, AA, w );
|
||||
alpha_blend1( Cr+ i, Cr2+ i, AA, w );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( i = 0; i < len; i += w )
|
||||
{
|
||||
/* unroll the lookup table so we can vectorize */
|
||||
expand_lookup_table( AA, T, aA + i, w );
|
||||
|
||||
alpha_blend2( Y + i, Y2 + i, AA, w );
|
||||
alpha_blend2( Cb+ i, Cb2+ i, AA, w );
|
||||
alpha_blend2( Cr+ i, Cr2+ i, AA, w );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void alphatransition_apply( VJFrame *frame, VJFrame *frame2, int time_index, int duration, int direction, int threshold )
|
||||
{
|
||||
alpha_blend_transition(
|
||||
frame->data[0],frame->data[1],frame->data[2],frame->data[3],
|
||||
frame2->data[0],frame2->data[1],frame2->data[2],frame->data[3],
|
||||
frame->len,
|
||||
frame->width,
|
||||
time_index,
|
||||
duration + 1,
|
||||
direction,
|
||||
threshold
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Linux VeeJay
|
||||
*
|
||||
* Copyright(C)2002-2015 Niels Elburg <nwelburg@gmail.com>
|
||||
*
|
||||
* 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 MASKTRANSITION_H
|
||||
#define MASKTRANSITION_H
|
||||
#include <libvje/vje.h>
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void masktransition_apply( VJFrame *frame, VJFrame *frame2, int index, int duration, int dir, int threshold);
|
||||
vj_effect *masktransition_init(int w, int h);
|
||||
#endif
|
||||
@@ -54,8 +54,6 @@ vj_effect *lumakeyalpha_init(int width, int height)
|
||||
return ve;
|
||||
}
|
||||
|
||||
/* fixme */
|
||||
|
||||
void lumakeyalpha_apply( VJFrame *frame, VJFrame *frame2, int width,int height, int type, int opacity )
|
||||
{
|
||||
unsigned int i, len = width * height;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#define VJ_IMAGE_EFFECT_MAX 199
|
||||
|
||||
#define VJ_VIDEO_EFFECT_MIN 200
|
||||
#define VJ_VIDEO_EFFECT_MAX 258
|
||||
#define VJ_VIDEO_EFFECT_MAX 259
|
||||
|
||||
#define VJ_PLUGIN 500
|
||||
|
||||
@@ -141,6 +141,7 @@ enum {
|
||||
VJ_VIDEO_EFFECT_MAGICOVERLAYALPHA = 255,
|
||||
VJ_VIDEO_EFFECT_MASKTRANSITION = 256,
|
||||
VJ_VIDEO_EFFECT_PASSTHROUGH = 257,
|
||||
VJ_VIDEO_EFFECT_ALPHATRANSITION = 258,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -656,4 +657,6 @@ extern void levelcorrection_apply(VJFrame *frame, int min, int max, int bmin, in
|
||||
extern void masktransition_apply( VJFrame *frame, VJFrame *frame2, int width,int height, int time_index, int duration);
|
||||
extern void alphadampen_apply( VJFrame *frame, int b1);
|
||||
extern void passthrough_apply( VJFrame *frame, VJFrame *frame2);
|
||||
extern void alphatransition_apply( VJFrame *frame, VJFrame *frame2, int time_index, int duration, int direction, int threshold);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -193,6 +193,7 @@
|
||||
#include "effects/alphadampen.h"
|
||||
#include "effects/masktransition.h"
|
||||
#include "effects/passthrough.h"
|
||||
#include "effects/alphatransition.h"
|
||||
#include <libplugger/plugload.h>
|
||||
#include <veejay/vims.h>
|
||||
|
||||
@@ -570,6 +571,7 @@ void vj_effect_initialize(int width, int height, int full_range)
|
||||
vj_effects[VJ_VIDEO_EFFECT_MAGICOVERLAYALPHA] = overlaymagicalpha_init(width,height);
|
||||
vj_effects[VJ_VIDEO_EFFECT_MASKTRANSITION] = masktransition_init(width,height);
|
||||
vj_effects[VJ_VIDEO_EFFECT_PASSTHROUGH] = passthrough_init(width,height);
|
||||
vj_effects[VJ_VIDEO_EFFECT_ALPHATRANSITION] = alphatransition_init(width,height);
|
||||
|
||||
vj_effects[VJ_IMAGE_EFFECT_DUMMY] = dummy_init(width,height);
|
||||
|
||||
|
||||
@@ -699,6 +699,9 @@ void vj_effman_apply_video_effect( VJFrame **frames, vjp_kf *todo_info,int *arg,
|
||||
case VJ_VIDEO_EFFECT_PASSTHROUGH:
|
||||
passthrough_apply(frames[0],frames[1]);
|
||||
break;
|
||||
case VJ_VIDEO_EFFECT_ALPHATRANSITION:
|
||||
alphatransition_apply(frames[0],frames[1],arg[0],arg[1],arg[2],arg[3]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#define FX_LIMIT 1024
|
||||
|
||||
#define MAX_EFFECTS 162
|
||||
#define MAX_EFFECTS 163
|
||||
#define PARAM_WIDTH (1<<0x2)
|
||||
#define PARAM_HEIGHT (1<<0x3)
|
||||
#define PARAM_FADER (1<<0x1)
|
||||
|
||||
Reference in New Issue
Block a user