mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-20 14:50:01 +01:00
refactorized
git-svn-id: svn://code.dyne.org/veejay/trunk@159 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
@@ -14,6 +14,10 @@
|
|||||||
+ fixed screenshot dump when playing 4:2:2
|
+ fixed screenshot dump when playing 4:2:2
|
||||||
+ changed VIMS 054 (screenshot) 054:name.jpg; or 054:;
|
+ changed VIMS 054 (screenshot) 054:name.jpg; or 054:;
|
||||||
+ added multicast video transmitter/receiver !!
|
+ added multicast video transmitter/receiver !!
|
||||||
|
+ revisited OSC implementation ( use veejay -u -n |less )
|
||||||
|
+ updated documentation (Howto, MAN pages, etc)
|
||||||
|
+ removed obsolete VIMS messages
|
||||||
|
+ removed any references on dropped vloopback support
|
||||||
|
|
||||||
0.7.1
|
0.7.1
|
||||||
+ fixed color corruption in fib
|
+ fixed color corruption in fib
|
||||||
|
|||||||
@@ -2,50 +2,18 @@
|
|||||||
Veejay - Video Mixing/Editing Instrument
|
Veejay - Video Mixing/Editing Instrument
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
This is Veejay codename 'Dawn of New Babylon'
|
|
||||||
|
|
||||||
NEWEST:
|
See:
|
||||||
- network (peer to peer streaming)
|
README.quickstart
|
||||||
- network (multicast)
|
README.performance
|
||||||
see doc/NET.txt
|
doc/veejay-HOWTO.html
|
||||||
(90% completed, doesnt work between little <-> big endian machines)
|
doc/NET.txt
|
||||||
|
doc/VIMS.txt
|
||||||
|
doc/YCbCr.txt
|
||||||
|
doc/COPYING
|
||||||
|
|
||||||
NEW:
|
Tips:
|
||||||
|
=====
|
||||||
(to be) supported platforms:
|
|
||||||
|
|
||||||
x86 architecture (intel and compatibles) (works!)
|
|
||||||
PS/2 (Mips)
|
|
||||||
PPC / MacOS X (please test!)
|
|
||||||
*BSD (please test!)
|
|
||||||
|
|
||||||
Optional dependencies:
|
|
||||||
======================
|
|
||||||
|
|
||||||
XML library for Gnome
|
|
||||||
http://libxml.gnome.org
|
|
||||||
|
|
||||||
SDL (simple direct media layer)
|
|
||||||
http://www.libsdl.org
|
|
||||||
|
|
||||||
Quasar DV codec
|
|
||||||
http://libdv.sourceforge.net
|
|
||||||
|
|
||||||
DirectFB (for output on secundary head/TV-Out)
|
|
||||||
http://www.directfb.org
|
|
||||||
|
|
||||||
JACK, (a low latency audio server)
|
|
||||||
http://jackit.sourceforge.net
|
|
||||||
|
|
||||||
FreeType-2.1.9
|
|
||||||
http://freetype.sourceforge.net
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QUICK OVERVIEW
|
|
||||||
==============
|
|
||||||
|
|
||||||
Read the HOWTO if you a new user , see doc/veejay-HOWTO.html
|
|
||||||
|
|
||||||
To see a list of key events, type 'man veejay' in your shell or try
|
To see a list of key events, type 'man veejay' in your shell or try
|
||||||
'cat veejay/vj-event.c |grep SDLK' for a more up to date version.
|
'cat veejay/vj-event.c |grep SDLK' for a more up to date version.
|
||||||
@@ -103,9 +71,8 @@ CONTACT / FEEDBACK & HELP
|
|||||||
|
|
||||||
Niels Elburg <nelburg@looze.net>
|
Niels Elburg <nelburg@looze.net>
|
||||||
|
|
||||||
For usage related questions:
|
Please use the mailinglist on
|
||||||
|
http://veejay.sourceforge.net
|
||||||
http://veejay.sourceforge.net
|
|
||||||
|
|
||||||
BUG REPORTS / BLEEDING EDGE SOURCE CODE
|
BUG REPORTS / BLEEDING EDGE SOURCE CODE
|
||||||
=======================================
|
=======================================
|
||||||
@@ -115,6 +82,6 @@ Please use the ticket system !
|
|||||||
http://veejay.dyne.org
|
http://veejay.dyne.org
|
||||||
|
|
||||||
|
|
||||||
ENJOY!
|
ENJOY! And let us know about your performances/installations with veejay!
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
#undef PACKAGE_SOURCE_DIR
|
#undef PACKAGE_SOURCE_DIR
|
||||||
#undef HAVE_XML2
|
#undef HAVE_XML2
|
||||||
#undef HAVE_DIRECTFB
|
#undef HAVE_DIRECTFB
|
||||||
|
#undef HAVE_VEVO
|
||||||
|
#undef ARCH_MIPS
|
||||||
#define _GNU_SOURCE 1 /* We make some use of C9X and POSIX and GNU
|
#define _GNU_SOURCE 1 /* We make some use of C9X and POSIX and GNU
|
||||||
facilities... */
|
facilities... */
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,13 @@ how to load an ActionFile, how to use Perl for batch like video processing and h
|
|||||||
keyboard events.
|
keyboard events.
|
||||||
|
|
||||||
|
|
||||||
|
Use the command
|
||||||
|
|
||||||
|
$ veejay -u -n |less
|
||||||
|
|
||||||
|
to see documentation generated by veejay on using Effects, VIMS and OSC.
|
||||||
|
If there is an error in the documentation, you have found a bug in veejay
|
||||||
|
and should report it :)
|
||||||
|
|
||||||
1.1 Message Format
|
1.1 Message Format
|
||||||
==================
|
==================
|
||||||
@@ -211,6 +217,21 @@ this protocol. However, for such thing bi-directional communication is required
|
|||||||
In veejay, VIMS provides a status port that can be read which will provide all kind
|
In veejay, VIMS provides a status port that can be read which will provide all kind
|
||||||
of status information but it is not mapped to OSC yet.
|
of status information but it is not mapped to OSC yet.
|
||||||
|
|
||||||
|
Also, in the veejay source package you will find a utility 'mcastOSC'
|
||||||
|
(which is not installed by default)
|
||||||
|
|
||||||
|
Build instructions (from veejay top source directory)
|
||||||
|
|
||||||
|
$ cd test/OSC
|
||||||
|
$ cd libOSC
|
||||||
|
$ make
|
||||||
|
$ cd ..
|
||||||
|
$ cd send+dump
|
||||||
|
$ make
|
||||||
|
|
||||||
|
Start veejay with -M or --multicast-osc , and use mcastOSC to control
|
||||||
|
all instances of veejay listening on the given multicast address.
|
||||||
|
(One tool to rule all).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,3 +4,9 @@
|
|||||||
YUV 4:2:0 Planar ( 1 Cr and 1 Cb sample per 2x2 Y samples)
|
YUV 4:2:0 Planar ( 1 Cr and 1 Cb sample per 2x2 Y samples)
|
||||||
YUV 4:2:2 Planar ( 1 Cr and 1 Cr sample per 1x2 Y samples)
|
YUV 4:2:2 Planar ( 1 Cr and 1 Cr sample per 1x2 Y samples)
|
||||||
|
|
||||||
|
You can customize the sampling method used when sub- and super sampling
|
||||||
|
video data:
|
||||||
|
OSC: /config/sampling
|
||||||
|
VIMS: 250:;
|
||||||
|
|
||||||
|
Use the triangle filter for best quality, or the box filter for best performance (default is best quality).
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ v1.2, 26 August 2003<br>
|
|||||||
v1.2, 26 August 2003<br>
|
v1.2, 26 August 2003<br>
|
||||||
v1.3, 9 November 2003<br>
|
v1.3, 9 November 2003<br>
|
||||||
v1.4, 24 May 2004<br>
|
v1.4, 24 May 2004<br>
|
||||||
|
v2.0, 25 July 2004<br>
|
||||||
v2.1 27 January 2005<br>
|
v2.1 27 January 2005<br>
|
||||||
<hr><i>
|
<hr><i>
|
||||||
This document describes how to use <b>veejay</b>, a visual 'music' instrument for Linux/GNU </i>
|
This document describes how to use <b>veejay</b>, a visual 'music' instrument for Linux/GNU </i>
|
||||||
@@ -40,7 +41,7 @@ This document describes how to use <b>veejay</b>, a visual 'music' instrument f
|
|||||||
<dt>3.3 <a href="veejay-HOWTO.html#3.3">Setting up streams</a></dt></dl></dd>
|
<dt>3.3 <a href="veejay-HOWTO.html#3.3">Setting up streams</a></dt></dl></dd>
|
||||||
|
|
||||||
<dt>4. <a href="veejay-HOWTO.html#4">Using Veejay</a></dt>
|
<dt>4. <a href="veejay-HOWTO.html#4">Using Veejay</a></dt>
|
||||||
<dd><dl><dt>4.1 <a href="veejay-HOWTO.html#4.1">Terminology</a></dt>
|
<dd><dl><dt>4.1 <a href="veejay-HOWTO.html#4.1">Terminology</a></dt>
|
||||||
<dt>4.2 <a href="veejay-HOWTO.html#4.2">sayVIMS</a></dt>
|
<dt>4.2 <a href="veejay-HOWTO.html#4.2">sayVIMS</a></dt>
|
||||||
<dt>4.3 <a href="veejay-HOWTO.html#4.3">The keyboard interface</a></dt>
|
<dt>4.3 <a href="veejay-HOWTO.html#4.3">The keyboard interface</a></dt>
|
||||||
<dt>4.4 <a href="veejay-HOWTO.html#4.4">Recording video</a></dt>
|
<dt>4.4 <a href="veejay-HOWTO.html#4.4">Recording video</a></dt>
|
||||||
@@ -100,10 +101,12 @@ This document is targeted at the Linux user interested in learning a bit about v
|
|||||||
<b>Version 1.2</b>
|
<b>Version 1.2</b>
|
||||||
<dd><dl><dt>Updated Howto to match version 0.4.6. Revised chapter 2.1,2.2,3.3</dd></dl></dt>
|
<dd><dl><dt>Updated Howto to match version 0.4.6. Revised chapter 2.1,2.2,3.3</dd></dl></dt>
|
||||||
<b>Version 1.3</b>
|
<b>Version 1.3</b>
|
||||||
<dd><dl><dt>Updated Howto to match version 0.5.3. </dd></dl></dt>
|
<dd><dl><dt>Updated Howto to match version 0.5.3. </dd></dl></dt>
|
||||||
<b>Version 1.4</b>
|
<b>Version 1.4</b>
|
||||||
<dd><dl><dt>Updated Howto to match version 0.5.9</dd></dl></dt>
|
<dd><dl><dt>Updated Howto to match version 0.5.9</dd></dl></dt>
|
||||||
<b>Version 2.0</b>
|
<b>Version 2.0</b>
|
||||||
|
<dd><dl><dt>Partial re-write to match version 0.6</dd></dl></dt>
|
||||||
|
<b>Version 2.1</b>
|
||||||
<dd><dl><dt>Updated Howto to match version 0.7.2</dd></dl></dt>
|
<dd><dl><dt>Updated Howto to match version 0.7.2</dd></dl></dt>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -134,11 +137,12 @@ with no Front-Cover Texts , and with no Back-Cover Texts. A copy of this license
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h2><a name="2">2. About Veejay</a></h2><p>
|
<h2><a name="2">2. About Veejay</a></h2><p>
|
||||||
Veejay is a live performance tool featuring simple non-linear editing and mixing
|
Veejay is a 'visual' instrument and realtime video sampler, featuring simple non-linear
|
||||||
from multiple sources.<br> You can load multiple video files, cut and paste portion
|
editing and mixing from multiple sources.<br>
|
||||||
s of video/audio and save it as an EditList.<br> Also, you can record new clips from
|
You can load multiple video files, cut and paste portion
|
||||||
existing clips or (live) streams. <br>With these clips you can change playback spee
|
s of video/audio and save it as an Edit Decision List.<br> Also, you can record new clips from
|
||||||
|
existing clips or (live) streams. <br>With these clips you can change playback speed
|
||||||
(slow motion/acceleration), change the looptype and set markers.<br><br>
|
(slow motion/acceleration), change the looptype and set markers.<br><br>
|
||||||
|
|
||||||
With both clips and streams you can edit the effect chain and mix from multiple
|
With both clips and streams you can edit the effect chain and mix from multiple
|
||||||
@@ -146,8 +150,10 @@ sources to one. Veejay currently has 94 effects, divided into two categories: Im
|
|||||||
Video Effects, only with Video Effects you can select a channel to mix in.<br><br>
|
Video Effects, only with Video Effects you can select a channel to mix in.<br><br>
|
||||||
|
|
||||||
Veejay has many frame blending methods, some of these are: Additive,Substractive
|
Veejay has many frame blending methods, some of these are: Additive,Substractive
|
||||||
,Difference Negate, Relative Addition and Selective Replacement. Next to blendin
|
,Difference Negate, Relative Addition and Selective Replacement. Next to blendin
|
||||||
g, you can key on Luma and Chroma seperatly or combined or simply use Transition
|
g, you can key on Luma and Chroma seperatly or combined or simply use Transitions
|
||||||
|
or other effects. Veejay has over 100 original video effects, most of them you will
|
||||||
|
not find anywhere else (except those few ported from EffecTV, Mplayer, The Demo Effect Collection)
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
Most edit and navigation commands are mapped to single key press commands, this
|
Most edit and navigation commands are mapped to single key press commands, this
|
||||||
@@ -157,10 +163,12 @@ Also, you can record a new clip on the fly from a live feed or from the video cl
|
|||||||
Also, you can record a new clip on the fly from a live feed or from the video cl
|
Also, you can record a new clip on the fly from a live feed or from the video cl
|
||||||
ip you are playing. If requested, the recorded videofile will be added to the ed
|
ip you are playing. If requested, the recorded videofile will be added to the ed
|
||||||
it descision list and activated as a new video clip. This is particular usefull
|
it descision list and activated as a new video clip. This is particular usefull
|
||||||
for time-looping,rebouncing and rough clip scratching/editing. <br><br>
|
for time-looping,rebouncing and rough clip scratching/editing. <br><br>
|
||||||
Veejay can be remotely controled through using OSC (Open Sound Control) or via i
|
Veejay can be remotely controled through using OSC (Open Sound Control) or via
|
||||||
its own internal message system 'VIMS'.<br> 'VIMS' allows you to create/load/save
|
its own internal message system 'VIMS'.<br> 'VIMS' allows you to create/load/save
|
||||||
effect chain templates and to add customized events which can be triggered by a
|
effect chain templates and to add customized events which can be triggered by a
|
||||||
|
keypress or by a remote message.<br><br>
|
||||||
|
Finally, you can stream (uncompressed) video over the network from peer to peer over TCP
|
||||||
or by using multicast over UDP (one to many).<br>
|
or by using multicast over UDP (one to many).<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -170,9 +178,8 @@ keypress or a remote message.<br><br>
|
|||||||
|
|
||||||
<h3>General</h3>
|
<h3>General</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li> Free Software (GNU GPL)
|
<li> Free Software (GNU GPL)
|
||||||
<li> TCP/IP support for media and content control
|
<li> Realtime video sampling from multiple sources
|
||||||
<li> support for Open Sound Control
|
|
||||||
<li> Native YUV processing
|
<li> Native YUV processing
|
||||||
<li> XML formatted Sample Lists and Effect Templates
|
<li> XML formatted Sample Lists and Effect Templates
|
||||||
<li> JACK (low latency audio server) support
|
<li> JACK (low latency audio server) support
|
||||||
@@ -183,19 +190,19 @@ keypress or a remote message.<br><br>
|
|||||||
<h3>Media</h3>
|
<h3>Media</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li> MJPEG (Quicktime/Movtar or AVI)
|
<li> MJPEG (Quicktime/Movtar or AVI)
|
||||||
<li> DV avi type 2 (PAL or NTSC)
|
<li> DV avi type 2 (PAL or NTSC)
|
||||||
<li> YUV 4:2:0/ 4:2:2 AVI support (uncompressed) for lossless editing
|
<li> YUV 4:2:0/ 4:2:2 AVI support (uncompressed) for lossless editing
|
||||||
<li> limited support for MPEG4 and Divx;-)
|
<li> limited support for MPEG4 and Divx;-)
|
||||||
<li> YUV4MPEG streams
|
|
||||||
<li> YUV4MPEG streams
|
<li> YUV4MPEG streams
|
||||||
|
<li> Video4Linux support (only Input)
|
||||||
<li> unicast/multicast video streaming
|
<li> unicast/multicast video streaming
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Editing</h3>
|
<h3>Editing</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li> Clip based (purely virtual,also called 'Sample' like in Audio Samplers)
|
<li> Clip based (purely virtual,also called 'Sample' like in Audio Samplers)
|
||||||
<li> Non descructive (Edit Decision List)
|
<li> Non descructive (Edit Decision List)
|
||||||
<li> Over 40 different types of blending
|
<li> Over 40 different types of blending
|
||||||
<li> Chroma / Luma keying
|
<li> Chroma / Luma keying
|
||||||
<li> 103 image/video effects
|
<li> 103 image/video effects
|
||||||
<li> No undo/redo
|
<li> No undo/redo
|
||||||
<li> Frame accurate navigation/editing
|
<li> Frame accurate navigation/editing
|
||||||
@@ -203,10 +210,10 @@ keypress or a remote message.<br><br>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h3>Interaction</h3>
|
<h3>Interaction</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li> Remote (over TCP/IP)
|
<li> VIMS (over TCP/IP)
|
||||||
<li> sayVIMS (command line utility)
|
<li> sayVIMS (command line utility)
|
||||||
<li> SDL Keybindings
|
<li> SDL Keybindings
|
||||||
<li> OSC (over UDP, both unicast and multicast)
|
<li> OSC (over UDP, both unicast and multicast)
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -225,9 +232,10 @@ a few systems veejay was reported to work on:<br>
|
|||||||
<li>An Athlon 850 Mhz and Matrox G550 Dualhead( TVout support through DirectFB)
|
<li>An Athlon 850 Mhz and Matrox G550 Dualhead( TVout support through DirectFB)
|
||||||
<li>An Athlon XP 1600 Mhz and Matrox G550 Dualhead( TVout support through DirectFB)
|
<li>An Athlon XP 1600 Mhz and Matrox G550 Dualhead( TVout support through DirectFB)
|
||||||
<li>A Pentium 4 2.2 Ghz and Matrox G550 Dualhead( TVout support through DirectFB)
|
<li>A Pentium 4 2.2 Ghz and Matrox G550 Dualhead( TVout support through DirectFB)
|
||||||
|
<li>A Pentium 4 3.0 Ghz and ATI Radeon 9600 XT/ (no TVout yet)
|
||||||
<li>Sony Playstation 2 (MIPS, little endian) (but runs very slow, doesnt use PS/2 hardware features)
|
<li>Sony Playstation 2 (MIPS, little endian) (but runs very slow, doesnt use PS/2 hardware features)
|
||||||
</ul><br>
|
</ul><br>
|
||||||
Video Editing requires a lot of diskspace, make sure you you have enough diskspace available for
|
Video Editing requires a lot of diskspace, make sure you you have enough diskspace available for
|
||||||
your project. If you are going to use the recording functions, make sure you have sufficient free disk space available.Otherwise you are quite safe, veejay does not change your original video or fill your harddisk with needless temporary files. Neither does it waste all your resources.<br>
|
your project. If you are going to use the recording functions, make sure you have sufficient free disk space available.Otherwise you are quite safe, veejay does not change your original video or fill your harddisk with needless temporary files. Neither does it waste all your resources.<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -236,14 +244,15 @@ your project. If you are going to use the recording functions, make sure you hav
|
|||||||
|
|
||||||
<h2><a name="3.1">3.1 Dependencies</a></h2><p>
|
<h2><a name="3.1">3.1 Dependencies</a></h2><p>
|
||||||
Before you install Veejay, make sure you have the following dependencies installed:<br>
|
Before you install Veejay, make sure you have the following dependencies installed:<br>
|
||||||
<ul>
|
<ul>
|
||||||
<li>(required) libdv >= 0.99
|
<li>(optional) libdv >= 0.99
|
||||||
<li>(required) The SDL library >= 1.2.3
|
<li>(recommended) The SDL library >= 1.2.3
|
||||||
<li>(optional) The XML C library 2 for gnome >=2.5.4
|
<li>(optional) The XML C library 2 for gnome >=2.5.4
|
||||||
<li>(optional) JACK low latency audio server >= 0.98.1
|
<li>(optional) JACK low latency audio server >= 0.98.1
|
||||||
|
<li>(optional) DirectFB >= 0.9.17
|
||||||
<li>(optional) FreeType >= 2.1.9
|
<li>(optional) FreeType >= 2.1.9
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
<i>On newer distributions, some of the listed software is already installed but you may be missing the -devel- packages! (especially on redhat, suse and debdian systems!!)</i><br><br>
|
<i>On newer distributions, some of the listed software is already installed but you may be missing the -devel- packages! (especially on redhat, suse and debdian systems!!)</i><br><br>
|
||||||
You can find the websites of these projects in <a href="veejay-HOWTO.html#6">Other Resources</a>.<br><br>
|
You can find the websites of these projects in <a href="veejay-HOWTO.html#6">Other Resources</a>.<br><br>
|
||||||
</p>
|
</p>
|
||||||
@@ -257,19 +266,22 @@ $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
|||||||
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
||||||
</pre>
|
</pre>
|
||||||
Decompress and untar the file by typing:
|
Decompress and untar the file by typing:
|
||||||
<pre>
|
<pre>
|
||||||
$ tar -jxvf veejay-0.7.x.tar.bz2
|
$ tar -jxvf veejay-0.7.x.tar.bz2
|
||||||
</pre>
|
</pre>
|
||||||
Change to the directory containing veejay's source's:
|
Change to the directory containing veejay's source's:
|
||||||
<pre>
|
<pre>
|
||||||
$ cd veejay-0.7.x
|
$ cd veejay-0.7.x
|
||||||
|
|
||||||
$ ./configure
|
$ ./configure
|
||||||
</pre>
|
</pre>
|
||||||
On completion it will summarize the results of the ./configure script, which could look like this:
|
On completion it will summarize the results of the ./configure script, which could look like this:
|
||||||
<pre>
|
<pre>
|
||||||
|
veejay 0.7.2 build configuration :
|
||||||
|
|
||||||
Compiler flags: -mcpu=i686 -march=i686 -Wall -Wunused -g
|
Compiler flags: -mcpu=i686 -march=i686 -Wall -Wunused -g
|
||||||
|
|
||||||
|
Build configuration:
|
||||||
x86 Architecture : true
|
x86 Architecture : true
|
||||||
MMX enabled : true
|
MMX enabled : true
|
||||||
MMX2 enabled : false
|
MMX2 enabled : false
|
||||||
@@ -280,18 +292,22 @@ veejay 0.6.0 build configuration :
|
|||||||
|
|
||||||
Required dependencies:
|
Required dependencies:
|
||||||
POSIX Threads (pthread) : true
|
POSIX Threads (pthread) : true
|
||||||
video4linux recording/playback : true
|
|
||||||
Simple Direct Media Layer : true
|
|
||||||
XML C library for Gnome libxml2 : true
|
|
||||||
video4linux recording/playback : true
|
video4linux recording/playback : true
|
||||||
libJPEG : true
|
libJPEG : true
|
||||||
|
|
||||||
Optional dependencies:
|
Optional dependencies:
|
||||||
|
libDV (digital video) : true
|
||||||
Jack Audio Connection Kit : false
|
Jack Audio Connection Kit : false
|
||||||
|
DirectFB support : false
|
||||||
|
Simple Direct Media Layer : true
|
||||||
XML C library for Gnome libxml2 : true
|
XML C library for Gnome libxml2 : true
|
||||||
|
|
||||||
|
Plugin dependencies:
|
||||||
|
FreeType support : true
|
||||||
Veejay Video Objects support : true
|
Veejay Video Objects support : true
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
Dont worry if you dont have 'Veejay Video Objects support' ; it is still in development.
|
Dont worry if you dont have 'Veejay Video Objects support' ; it is still in development.
|
||||||
Now, you can start building veejay
|
Now, you can start building veejay
|
||||||
<pre>
|
<pre>
|
||||||
@@ -306,49 +322,41 @@ Followed by
|
|||||||
<h2><a name="3.3">3.3 Setting up streams</a></h2><p>
|
<h2><a name="3.3">3.3 Setting up streams</a></h2><p>
|
||||||
First of all, you need to have <i>Video For Linux</i> enabled in your kernel configuration.
|
First of all, you need to have <i>Video For Linux</i> enabled in your kernel configuration.
|
||||||
Make sure that <i>V4L information in proc filesystem</i> is enabled; veejay uses the proc file
|
Make sure that <i>V4L information in proc filesystem</i> is enabled; veejay uses the proc file
|
||||||
system to find out what devices can be used to read from.
|
|
||||||
<br><br>
|
|
||||||
If you have no Video4Linux devices you can only stream from vloopback (only kernel <= 2.4) or from a yuv4mpeg stream.
|
|
||||||
<br><br>
|
|
||||||
If you have one or more Video4Linux devices, you should load the modules for these devices prior to loading
|
|
||||||
the vloopback module. The example below loads the vloopback module with a device offset parameter
|
|
||||||
system to find out what devices can be used to read from.
|
system to find out what devices can be used to read from.
|
||||||
|
<br>
|
||||||
|
Secondly, in order to use multicast streaming, you must have the option <i>IP multicast</i>
|
||||||
enabled in your kernel configuration. Also, you need to add a multicast route :
|
enabled in your kernel configuration. Also, you need to add a multicast route :
|
||||||
<pre>
|
<pre>
|
||||||
# insmod vloopback.o pipes=4 dev_offset=2
|
|
||||||
</pre>
|
|
||||||
On typing the command
|
|
||||||
<pre>
|
|
||||||
# dmesg
|
|
||||||
</pre>
|
|
||||||
you should see something like this:
|
|
||||||
<pre>
|
|
||||||
Mar 31 23:41:01 dev kernel: vloopback.c: Video4linux loopback driver v0.90
|
|
||||||
Mar 31 23:41:01 dev kernel: vloopback.c: Loopback 0 registered, input: video2, output: video3
|
|
||||||
Mar 31 23:41:01 dev kernel: vloopback.c: Loopback 1 registered, input: video4, output: video5
|
|
||||||
Mar 31 23:41:01 dev kernel: vloopback.c: Loopback 2 registered, input: video6, output: video7
|
|
||||||
$ route add -net 224.0.0.0 netmask 255.255.255.0 dev eth0
|
$ route add -net 224.0.0.0 netmask 255.255.255.0 dev eth0
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
Refer to chapter <a href="veejay-HOWTO.html#5">5. Popular Packages</a> for using a video source.
|
Chapter <a href="veejay-HOWTO.html#4.2">4.2 sayVIMS</a> includes examples to create several
|
||||||
|
types of input streams
|
||||||
Also, the chapter <a href="veejay-HOWTO.html#4.2">4.2 The console interface</a> includes commands to create several types of streams
|
<br><br>
|
||||||
|
Veejay can stream out to SDL (video window), to STDOUT (in yuv4mpeg) , to DirectFB secundary head (TV-Out)
|
||||||
|
and it can stream over the network (all is uncompressed video). See the man page on how to activate one
|
||||||
or more of these options.<br>
|
or more of these options.<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="4">4. Using Veejay</a></h2><p>
|
<h2><a name="4">4. Using Veejay</a></h2><p>
|
||||||
Veejay uses by default a SDL window to play a video file or video stream,
|
Veejay uses by default a SDL window to play a video file or video stream,
|
||||||
all the keybinding in veejay depend on SDL; if you move your mouse over to the
|
all the keybinding in veejay depend on SDL; if you move your mouse over to the
|
||||||
SDL windows to focus it , you can press the keys explained in <a href="veejay-HOWTO.html#4.3">4.3 The keyboard interface</a>.<br>
|
SDL windows to focus it , you can press the keys explained in <a href="veejay-HOWTO.html#4.3">4.3 The keyboard interface</a>.<br>
|
||||||
On focussing the terminal in which veejay is running, you can type short commands (followed by a Return or Enter)
|
To use veejay in commandline style interface mode, see
|
||||||
for saving / loading samplelists , to activate other video sources and much more, see
|
<a href="veejay-HOWTO.html#4.2">4.2 sayVIMS</a>.<br>
|
||||||
<a href="veejay-HOWTO.html#4.2">4.2 The console interface</a>.<br>
|
You must no longer provide a video file to use with veejay; it will run in dummy mode by
|
||||||
|
using the '-d' commandline parameter:<br>
|
||||||
|
<pre>
|
||||||
|
$ veejay -d
|
||||||
|
</pre>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
</p>
|
</p>
|
||||||
<h2><a name="4.1">4.1 Terminology</a></h2><p>
|
<h2><a name="4.1">4.1 Terminology</a></h2><p>
|
||||||
Veejay has a number of playback modes, each playback mode is unique and defines more or less
|
Veejay has a number of playback modes, each playback mode is unique and defines more or less
|
||||||
a different functionality:<br><br>
|
a different functionality:<br><br>
|
||||||
|
Also, note that veejay runs in only 1 resolution at a time (depending on the video dimensions of
|
||||||
|
the first loaded movie). All movies loaded must have identical properties, otherwise veejay will not start.
|
||||||
This limitation is also valid when streaming video from veejay to another veejay.<br><br><br>
|
This limitation is also valid when streaming video from veejay to another veejay.<br><br><br>
|
||||||
<table border=0 width=80%>
|
<table border=0 width=80%>
|
||||||
<caption><h4>Playback modes in veejay</h4></caption>
|
<caption><h4>Playback modes in veejay</h4></caption>
|
||||||
@@ -392,14 +400,18 @@ a different functionality:<br><br>
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="4.2">4.2 The console interface</a></h2><p>
|
<h2><a name="4.2">4.2 sayVIMS</a></h2><p>
|
||||||
|
sayVIMS is a commandline utility distributed with the veejay package,
|
||||||
|
it allows you to give short commands in interactive mode<br>
|
||||||
|
<i>$ sayVIMS -i -h localhost -p 3490</i><br><br>
|
||||||
Typing '?' followed by pressing ENTER gives the list of command below:
|
Typing '?' followed by pressing ENTER gives the list of command below:
|
||||||
<pre>
|
<pre>
|
||||||
vi [file] Open video4linux device
|
|
||||||
vi [file] Open video4linux device
|
vi [file] Open video4linux device
|
||||||
fi [file] Open Y4M stream for input
|
fi [file] Open Y4M stream for input
|
||||||
fo [file] Open Y4M stream for output
|
fo [file] Open Y4M stream for output
|
||||||
|
av [file] Open (almost any) video file using FFmpeg
|
||||||
|
mc [address] [port] Open a multicast UDP video stream
|
||||||
pr [hostname][port] Open a unicast TCP video stream
|
pr [hostname][port] Open a unicast TCP video stream
|
||||||
cl [file] Load cliplist from file
|
cl [file] Load cliplist from file
|
||||||
cn [n1] [n2] New clip from frames n1 to n2
|
cn [n1] [n2] New clip from frames n1 to n2
|
||||||
@@ -416,21 +428,45 @@ The console interface takes commands from STDIN , the commands you can give are:
|
|||||||
as [file] Action file save
|
as [file] Action file save
|
||||||
de Toggle debug level (default off)
|
de Toggle debug level (default off)
|
||||||
be Toggle bezerk mode (default on)
|
be Toggle bezerk mode (default on)
|
||||||
</pre>
|
</pre>
|
||||||
Also, you can send messages in VIMS format (or files, containing VIMS messages )<br><br>
|
Also, you can send messages in VIMS format (or files, containing VIMS messages )<br><br>
|
||||||
For example, add the Pixelate effect on the Effect Chain of the current playing stream or clip:
|
For example, add the Pixelate effect on the Effect Chain of the current playing stream or clip:
|
||||||
<pre>
|
<pre>
|
||||||
sayVIMS -h localhost -p 3490 "182:0 0 150 3;"
|
sayVIMS -h localhost -p 3490 "182:0 0 150 3;"
|
||||||
</pre>
|
</pre>
|
||||||
See the VIMS document in the source package for a more detailed (but not yet complete) overview.<br>
|
See the VIMS document in the source package for a more detailed (but not yet complete) overview.<br>
|
||||||
|
<br>
|
||||||
<br><br>
|
<br>
|
||||||
The complete list of all console commands/keybinding and commandline parameters can be found in the Man pages, you can
|
|
||||||
For example, you can open /dev/video0, channel 0 (composite port) by giving the VIMS message:<br>
|
For example, you can open /dev/video0, channel 0 (composite port) by giving the VIMS message:<br>
|
||||||
<pre>
|
<pre>
|
||||||
|
$ sayVIMS -h localhost -p 3490 "144:0 0;"
|
||||||
|
</pre>
|
||||||
|
Alternativly, you can start a secundary veejay and stream from peer to peer in uncompressed video:
|
||||||
|
<br>
|
||||||
|
<pre>
|
||||||
|
$ veejay -d -p 5000
|
||||||
|
|
||||||
|
$ sayVIMS -h localhost -p 5000 "165:localhost 3490;"
|
||||||
|
|
||||||
|
(press 'F7' in veejay to display the stream, prob. stream 7)
|
||||||
|
</pre>
|
||||||
|
Or for multicast:
|
||||||
|
<pre>
|
||||||
|
$ veejay -V 224.0.0.50 -p 5000 -n -L movie1.avi
|
||||||
|
|
||||||
|
$ veejay -d
|
||||||
|
|
||||||
|
$ sayVIMS -h localhost -p 3490 "166:224.0.0.50 5000;"
|
||||||
|
|
||||||
|
$ veejay -d -p 4000
|
||||||
|
|
||||||
|
$ sayVIMS -h localhost -p 4000 "166:224.0.0.50 5000;"
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
Or, if you want to play a XVID movie (or any other compressed format that is not I frame only):
|
||||||
|
<pre>
|
||||||
|
$ sayVIMS -h localhost -p 3490 "149:/tmp/my-XVID-movie.avi;"
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<h2><a name="4.3">4.3 The keyboard interface</a></h2><p>
|
<h2><a name="4.3">4.3 The keyboard interface</a></h2><p>
|
||||||
@@ -650,84 +686,37 @@ where possible params are:
|
|||||||
-n num Norm to use: 0 = NTSC, 1 = PAL (default 1)
|
-n num Norm to use: 0 = NTSC, 1 = PAL (default 1)
|
||||||
</pre>
|
</pre>
|
||||||
<br>
|
<br>
|
||||||
<br><br>
|
<br><br>
|
||||||
<b>sayVIMS</b> can be used to send commands or files to batch-process to veejay
|
<b>sayVIMS</b> can be used to send commands or files to batch-process to veejay
|
||||||
<pre>
|
<pre>
|
||||||
Usage: sayVIMS [options] [messages]
|
Usage: sayVIMS [options] [messages]
|
||||||
where options are:
|
where options are:
|
||||||
-p Veejay port (3490)
|
-p Veejay port (3490)
|
||||||
|
-h Veejay host (localhost)
|
||||||
-g Veejay multicast address (224.0.0.50)
|
-g Veejay multicast address (224.0.0.50)
|
||||||
|
-f <filename> Send contents of this file to veejay
|
||||||
-c Colored output (geek feature)
|
-c Colored output (geek feature)
|
||||||
|
|
||||||
Messages to send to veejay must be wrapped in quotes
|
Messages to send to veejay must be wrapped in quotes
|
||||||
You can send multiple messages by seperating them with a whitespace
|
You can send multiple messages by seperating them with a whitespace
|
||||||
</pre>
|
</pre>
|
||||||
<br><br>
|
|
||||||
For example<br>
|
|
||||||
<pre>
|
|
||||||
sendVIMS "182:0 0 113 1;"
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="5">5 Popular Packages</a></h2><p>
|
<h2><a name="5">5 Popular Packages</a></h2><p>
|
||||||
Usefull software (in no apparant order):
|
Usefull software (in no apparant order):
|
||||||
<ul>
|
|
||||||
<li>EffecTV
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>The MJPEG Tools
|
<li>The MJPEG Tools
|
||||||
<li>Transcode
|
<li>Transcode
|
||||||
|
<li>PureData (PD)
|
||||||
<li>PDP for PD
|
<li>PDP for PD
|
||||||
</ul>
|
</ul>
|
||||||
Please refer to <a href="veejay-HOWTO.html#5">Other Resources</a> to find the project's website<br>
|
Please refer to <a href="veejay-HOWTO.html#5">Other Resources</a> to find the project's website<br>
|
||||||
</p>
|
</p>
|
||||||
<p><a name="5.1"><h2>5.1 EffecTV</a></h2></p>
|
|
||||||
EffecTV is a real-time video effector. You can watch TV or video through amazing effectors,
|
|
||||||
it supports output and input from a vloopback device, enabling you to create multiple video pipelines
|
|
||||||
to veejay for further processing.
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
Starting effectv to read from your video4linux device and output to veejay:
|
|
||||||
<pre>
|
|
||||||
$ effectv -device /dev/video0 -channel 1 -norm pal -vloopback /dev/video2
|
|
||||||
</pre>
|
|
||||||
If everything goes well you should see your camera input in EffecTV; continue loading veejay:
|
|
||||||
<pre>
|
|
||||||
$ veejay /tmp/my_video_file.avi
|
|
||||||
</pre>
|
|
||||||
<br>
|
|
||||||
Now, open the vloopback device in veejay:
|
|
||||||
<pre>
|
|
||||||
> li video3
|
|
||||||
</pre>
|
|
||||||
If everything goes well again, you should see EffecTV's output in veejay.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><h2><a name="5.2">5.2 mplayer</b></h2></a></p>
|
|
||||||
<p>Mplayer is the movie player for linux, it has support for different types of output
|
|
||||||
You can use mplayer to play a DVD or some MPEG4 file and stream it into veejay.
|
|
||||||
|
|
||||||
First, create a named pipe
|
|
||||||
<pre>
|
|
||||||
$ mkfifo stream.yuv
|
|
||||||
</pre>
|
|
||||||
Continue with starting mplayer
|
|
||||||
<pre>
|
|
||||||
$ mplayer -vo yuv4mpeg -ao null -zoom -x 352 -y 288 -vop scale yuy2 /tmp/mpeg4_movie.avi
|
|
||||||
</pre>
|
|
||||||
If everything goes well, mplayer waits until a frame has been read from the named pipe.
|
|
||||||
Mplayer uses by default the filename stream.yuv, if you specify another mplayer will
|
|
||||||
create a stream.yuv.
|
|
||||||
<br>
|
|
||||||
Start veejay as usual and type the command <i>fi stream.yuv</i>, hit <i>ESC</i> and
|
|
||||||
press some F-key if it is not already playing.
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><h2><a name="5.3">5.1 The MJPEG Tools</h2></a></p>
|
<p><h2><a name="5.3">5.1 The MJPEG Tools</h2></a></p>
|
||||||
<p>The Mjpeg tools are a set of tools that can do recording of videos and playback, simple cut-and-paste
|
<p>The Mjpeg tools are a set of tools that can do recording of videos and playback, simple cut-and-paste
|
||||||
editing and the MPEG compression of audio and video under Linux.
|
editing and the MPEG compression of audio and video under Linux.
|
||||||
You can use the EditLists from this package in veejay and vice versa<br>
|
You can use the EditLists from this package in veejay and vice versa<br>
|
||||||
|
|
||||||
Here are a few examples for processing video data:<br><br>
|
Here are a few examples for processing video data:<br><br>
|
||||||
@@ -745,12 +734,15 @@ $ cat /tmp/special_file | yuv2rawdv -v 2 > rawdv
|
|||||||
<br>
|
<br>
|
||||||
Encoding it to MJPEG file 'video-mjpeg.avi'
|
Encoding it to MJPEG file 'video-mjpeg.avi'
|
||||||
<pre>
|
<pre>
|
||||||
$ cat /tmp/special_file | yuv2lav -v2 -f 0 -I 0 -q 90 -o video-mjpeg.avi
|
$ cat /tmp/special_file | yuv2lav -v2 -f 0 -I 0 -q 90 -o video-mjpeg.avi
|
||||||
|
</pre>
|
||||||
|
Encoding veejay output to MJPEG file:
|
||||||
|
<pre>
|
||||||
$ veejay movie1.avi -o stdout -O3 | yuv2lav -f 0 -I 0 -q 90 -o movie1-mjpeg.avi
|
$ veejay movie1.avi -o stdout -O3 | yuv2lav -f 0 -I 0 -q 90 -o movie1-mjpeg.avi
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="5.4">5.2 Transcode</b></h2></a>
|
<h2><a name="5.4">5.2 Transcode</b></h2></a>
|
||||||
<p>Transcode is a Linux video Stream Processing Tool, it can convert between different types of video formats<br>
|
<p>Transcode is a Linux video Stream Processing Tool, it can convert between different types of video formats<br>
|
||||||
<br>
|
<br>
|
||||||
@@ -773,15 +765,14 @@ you can use in combination with veejay.
|
|||||||
<li><a href="http://www.libsdl.org">Simple DirectMedia Layer http://www.libsdl.org</a>
|
<li><a href="http://www.libsdl.org">Simple DirectMedia Layer http://www.libsdl.org</a>
|
||||||
<li><a href="http://www.xmlsoft.org">The XML C library for Gnome http://www.xmlsoft.org</a>
|
<li><a href="http://www.xmlsoft.org">The XML C library for Gnome http://www.xmlsoft.org</a>
|
||||||
<li><a href="http://www.directfb.org">DirectFB http://www.directfb.org</a>
|
<li><a href="http://www.directfb.org">DirectFB http://www.directfb.org</a>
|
||||||
|
<li><a href="http://jackit.sourceforge.net">JACK http://jackit.sourceforge.net</a>
|
||||||
<li><a href="http://freetype.sourceforge.net">FreeType , http://freetype.sourceforge.net</a>
|
<li><a href="http://freetype.sourceforge.net">FreeType , http://freetype.sourceforge.net</a>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<h3>Usefull software</h3>
|
<h3>Usefull software</h3>
|
||||||
<ul>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="http://www.mplayerhq.hu/">Mplayer http://www.mplayerhq.hu</a>
|
<li><a href="http://www.mplayerhq.hu/">Mplayer http://www.mplayerhq.hu</a>
|
||||||
<li><a href="http://mjpeg.sourceforge.net">The MJPEGTools http://mjpeg.sourceforge.net</a>
|
|
||||||
<li><a href="http://mjpeg.sourceforge.net">The MJPEGTools http://mjpeg.sourceforge.net</a>
|
<li><a href="http://mjpeg.sourceforge.net">The MJPEGTools http://mjpeg.sourceforge.net</a>
|
||||||
<li><a href="http://pure-data.sourceforge.net">Pure Data</a>
|
<li><a href="http://pure-data.sourceforge.net">Pure Data</a>
|
||||||
<li><a href="http://zwizwa.fartit.com/pd/sendVIMS/">sendVIMS PD module (very cool!)</a>
|
<li><a href="http://zwizwa.fartit.com/pd/sendVIMS/">sendVIMS PD module (very cool!)</a>
|
||||||
@@ -791,6 +782,15 @@ you can use in combination with veejay.
|
|||||||
<h2><a name="6.2">6.2 Mailing Lists</a></h2><p>
|
<h2><a name="6.2">6.2 Mailing Lists</a></h2><p>
|
||||||
There is a mailing list for veejay which is hosted by Sourceforge.
|
There is a mailing list for veejay which is hosted by Sourceforge.
|
||||||
The address is <a href="mailto:veejay-users@lists.sourceforge.net">veejay-users@lists.sourceforge.net</a>
|
The address is <a href="mailto:veejay-users@lists.sourceforge.net">veejay-users@lists.sourceforge.net</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<h2><a name="6.3">6.3 Veejay developer's lounge</a></h2>
|
||||||
|
Veejay's developer lounge provides a ticket system for you , the user, to report
|
||||||
|
any problem or feature requests. The ticket system allows us to keep track of
|
||||||
|
problems.<br>
|
||||||
|
Also, the developer lounge hosts a subversion code repository where you can
|
||||||
|
find the 'on the bleeding edge' source codes of veejay.<br>
|
||||||
|
Many thanks to jaromil (author of FreeJ/Muse) and the <a href="http://dyne.org">Dyne Foundation</a> for providing these tools<br>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="7">7. Credits</a></h2><p>
|
<h2><a name="7">7. Credits</a></h2><p>
|
||||||
|
|||||||
@@ -787,8 +787,8 @@ Boolean NetworkPacketWaiting(OSCPacketBuffer packet) {
|
|||||||
int n;
|
int n;
|
||||||
NetworkReturnAddressPtr na = OSCPacketBufferGetClientAddr(packet);
|
NetworkReturnAddressPtr na = OSCPacketBufferGetClientAddr(packet);
|
||||||
|
|
||||||
if( use_mcast_ )
|
// if( use_mcast_ )
|
||||||
{
|
// {
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
struct timeval no_wait;
|
struct timeval no_wait;
|
||||||
int status;
|
int status;
|
||||||
@@ -798,13 +798,16 @@ Boolean NetworkPacketWaiting(OSCPacketBuffer packet) {
|
|||||||
status = select( na->sockfd + 1, &fds, 0, 0, &no_wait );
|
status = select( na->sockfd + 1, &fds, 0, 0, &no_wait );
|
||||||
if(status <= 0)
|
if(status <= 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
if(FD_ISSET( na->sockfd, &fds ))
|
||||||
else
|
|
||||||
{
|
|
||||||
if( ioctl( na->sockfd, FIONREAD, &n, 0)==-1) return FALSE;
|
|
||||||
if( n==0 ) return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if( ioctl( na->sockfd, FIONREAD, &n, 0)==-1) return FALSE;
|
||||||
|
// if( n==0 ) return FALSE;
|
||||||
|
// }
|
||||||
|
// return TRUE;
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean NetworkReceivePacket( OSCPacketBuffer packet ) {
|
Boolean NetworkReceivePacket( OSCPacketBuffer packet ) {
|
||||||
|
|||||||
@@ -483,6 +483,12 @@ void vj_effect_shutdown() {
|
|||||||
|
|
||||||
void vj_effect_dump() {
|
void vj_effect_dump() {
|
||||||
int i;
|
int i;
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Below follow all effects in Veejay,");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Effect numbers starting with 2xx are effects that use");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "*two* sources (by default a copy of itself)");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "Use the channel/source commands to select another clip/stream");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "to mix with.");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "\n [effect num] [effect name] [arg 0 , min/max ] [ arg 1, min/max ] ...");
|
||||||
for(i=0; i < MAX_EFFECTS; i++)
|
for(i=0; i < MAX_EFFECTS; i++)
|
||||||
{
|
{
|
||||||
if(vj_effects[i])
|
if(vj_effects[i])
|
||||||
|
|||||||
@@ -260,3 +260,31 @@ int vj_client_close( vj_client *v )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int vj_client_test(char *host, int port)
|
||||||
|
{
|
||||||
|
struct hostent *he = gethostbyname( host );
|
||||||
|
|
||||||
|
if( h_errno == HOST_NOT_FOUND )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Specified host '%s' is unknown", host );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( h_errno == NO_ADDRESS || h_errno == NO_DATA )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Specified host '%s' is valid but does not have IP address",
|
||||||
|
host );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if( h_errno == NO_RECOVERY )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Non recoverable name server error occured");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if( h_errno == TRY_AGAIN )
|
||||||
|
{
|
||||||
|
veejay_msg(VEEJAY_MSG_ERROR, "Temporary error occurred on an authoritative name. Try again later");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|||||||
@@ -63,5 +63,7 @@ vj_client *vj_client_alloc(int w , int h, int f);
|
|||||||
|
|
||||||
void vj_client_free(vj_client *v);
|
void vj_client_free(vj_client *v);
|
||||||
|
|
||||||
|
int vj_client_test(char *addr, int port );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
.TH "sendVIMS" 1
|
.TH "sayVIMS" 1
|
||||||
.SH NAME
|
.SH NAME
|
||||||
sendVIMS - sends VIMS messages to veejay
|
sayVIMS - sends VIMS messages to veejay
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B sendVIMS [options] [filename]
|
.B sayVIMS [options] [filename]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B sendVIMS
|
.B sayVIMS
|
||||||
is a simple program to send VIMS messages to veejay.
|
is a simple program to send VIMS messages to veejay.
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
@@ -18,10 +18,24 @@ Veejay host to connect to
|
|||||||
.TP
|
.TP
|
||||||
.B \-f [filename]
|
.B \-f [filename]
|
||||||
Use a filename instead of strings on the commandline
|
Use a filename instead of strings on the commandline
|
||||||
|
.TP
|
||||||
|
.B \-g [multicast address]
|
||||||
|
Multicast address to send to
|
||||||
|
.TP
|
||||||
|
.B \-i
|
||||||
|
Start in interactive mode (use ? to get help)
|
||||||
|
.TP
|
||||||
|
.B \-c
|
||||||
|
Start with colored text (geek feature)
|
||||||
|
|
||||||
.SH USEFULL EXAMPLES
|
.SH USEFULL EXAMPLES
|
||||||
.TP
|
.TP
|
||||||
.B sendVIMS +100 "255:;"
|
.B sayVIMS -h localhost -p 3490 "255:;"
|
||||||
Quit veejay after playing 100 frames
|
Start sayVIMS and connect to veejay (and tell veejay to quit)
|
||||||
|
.TP
|
||||||
|
.B sayVIMS -g 224.0.0.50 -p 5000 "255:;"
|
||||||
|
Ditto, for multicast.
|
||||||
|
.TP
|
||||||
.SH Message Format
|
.SH Message Format
|
||||||
A message is described as
|
A message is described as
|
||||||
.B <selector>:<arguments>;
|
.B <selector>:<arguments>;
|
||||||
@@ -56,5 +70,9 @@ project is:
|
|||||||
.I veejay-users@lists.sourceforge.net
|
.I veejay-users@lists.sourceforge.net
|
||||||
For more info see the website at
|
For more info see the website at
|
||||||
.I http://veejay.sourceforge.net
|
.I http://veejay.sourceforge.net
|
||||||
|
.SH HISTORY
|
||||||
|
This tool was first named 'sendVIMS' , but it
|
||||||
|
confused to much with 'sendVIMS for PD' although
|
||||||
|
the latter is derived from this one.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.B veejay yuv2rawdv rawdv2yuv sendVIMS
|
.B veejay yuv2rawdv rawdv2yuv
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ can be used to manipulate video in a realtime environment i.e. 'VJ'
|
|||||||
for visual performances or for (automated) interactive video installations.
|
for visual performances or for (automated) interactive video installations.
|
||||||
It provides mechanisms for simple non-desctructive editing, loop-based
|
It provides mechanisms for simple non-desctructive editing, loop-based
|
||||||
clip editing (video sampling) ,capturing from multiple streams, direct-to-disk
|
clip editing (video sampling) ,capturing from multiple streams, direct-to-disk
|
||||||
recording in various formats and mixing from multiple sources to one.
|
recording in various formats , mixing from multiple sources to one
|
||||||
|
and network streaming (both unicast and multicast in uncompressed video)
|
||||||
Also, it can communicate with other sound and/or video applications
|
Also, it can communicate with other sound and/or video applications
|
||||||
using the Open Sound Control (or through an inhouse protocol called 'VIMS')
|
using the Open Sound Control (or through an inhouse protocol called 'VIMS')
|
||||||
Veejay uses Jack for transporting Audio (currently only output) but its support
|
Veejay uses Jack for transporting Audio (currently only output) but its support
|
||||||
@@ -39,7 +40,7 @@ You can select effects to put on your clips by pressing the cursor keys up and d
|
|||||||
.TP
|
.TP
|
||||||
.SH Interoperability
|
.SH Interoperability
|
||||||
.TP
|
.TP
|
||||||
Veejay can be used with PD (PureData) by using sendVIMS, a small commandline utility that translates PD's symbols to veejay and vice versa.Look at the REFERENCES to find out where to download this utility. Also, by using the OpenSoundControl veejay can be used with a great number of sound and video processing applications.
|
Veejay can be used with PD (PureData) by using sendVIMS, a small commandline utility that translates PD's symbols to veejay and vice versa.Look at the REFERENCES to find out where to download this utility. Also, by using the OpenSoundControl veejay can be used with a great number of sound and video processing applications.Also veejay can stream video data to STDOUT (-o stdout -O3) in yuv4mpeg format, or stream uncompressed video over the network (uni - and multicast)
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
.B \-p/--port <num>
|
.B \-p/--port <num>
|
||||||
@@ -121,6 +122,13 @@ Specify framerate of dummy video
|
|||||||
.TP
|
.TP
|
||||||
.B \-N [01]
|
.B \-N [01]
|
||||||
Specify norm of dummy video (0=PAL, 1=NTSC)
|
Specify norm of dummy video (0=PAL, 1=NTSC)
|
||||||
|
.TP
|
||||||
|
.B \-M/--multicast-osc
|
||||||
|
Starts OSC receiver in multicast mode
|
||||||
|
.TP
|
||||||
|
.B \-V/--multicast-vims
|
||||||
|
Starts VIMS in multicast mode (needed for multicast streaming)
|
||||||
|
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
.TP
|
.TP
|
||||||
.B veejay -u |less
|
.B veejay -u |less
|
||||||
@@ -133,7 +141,11 @@ Startup veejay listening on port 4000 (use this to use multiple veejays)
|
|||||||
.B veejay -d -W 352 -H 288 -R 25 -N 0
|
.B veejay -d -W 352 -H 288 -R 25 -N 0
|
||||||
Startup veejay using dummy video at 25 frames per second, dimensions 352x288
|
Startup veejay using dummy video at 25 frames per second, dimensions 352x288
|
||||||
and using PAL.
|
and using PAL.
|
||||||
|
.TP
|
||||||
|
.B veejay movie1.avi -V 224.0.0.50 -p 5000 -n -v -L
|
||||||
|
Startup veejay, using multicast protocol on port 5000 , with autolooping
|
||||||
|
and no colored verbose output
|
||||||
|
.TP
|
||||||
.SH INTERFACE COMMANDS (STDIN)
|
.SH INTERFACE COMMANDS (STDIN)
|
||||||
When you are running veejay with a SDL window you can use keybindings for
|
When you are running veejay with a SDL window you can use keybindings for
|
||||||
realtime interaction. See
|
realtime interaction. See
|
||||||
@@ -348,7 +360,6 @@ template. Use SHIFT + [Any key] to apply the template
|
|||||||
.SH REFERENCES
|
.SH REFERENCES
|
||||||
.TP
|
.TP
|
||||||
sendVIMS for PD: http://zwizwa.fartit.com/pd/sendVIMS/
|
sendVIMS for PD: http://zwizwa.fartit.com/pd/sendVIMS/
|
||||||
sayVIMS command line utility
|
|
||||||
.SH BUGS
|
.SH BUGS
|
||||||
see BUGS in the source package
|
see BUGS in the source package
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
@@ -359,5 +370,6 @@ project is:
|
|||||||
.I veejay-users@lists.sourceforge.net
|
.I veejay-users@lists.sourceforge.net
|
||||||
For more info see the website at
|
For more info see the website at
|
||||||
.I http://veejay.sourceforge.net
|
.I http://veejay.sourceforge.net
|
||||||
|
.I or http://veejay.dyne.org
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.B veejay yuv2rawdv rawdv2yuv sendVIMS
|
.B veejay yuv2rawdv rawdv2yuv any2yuv sayVIMS
|
||||||
|
|||||||
@@ -134,6 +134,9 @@ static int human_friendly_vims(char *buffer)
|
|||||||
veejay_msg(VEEJAY_MSG_INFO, "fi\t\tOpen Y4M stream for input");
|
veejay_msg(VEEJAY_MSG_INFO, "fi\t\tOpen Y4M stream for input");
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "fo\t\tOpen Y4M stream for output");
|
veejay_msg(VEEJAY_MSG_INFO, "fo\t\tOpen Y4M stream for output");
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "lo\t\tOpen vloopback device for output");
|
veejay_msg(VEEJAY_MSG_INFO, "lo\t\tOpen vloopback device for output");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "mr\t\tOpen multicast receiver [address port]");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "pr\t\tOpen unicast receiver [address port]");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO, "av\t\tOpen file as stream using FFmpeg [filename]");
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "cl\t\tLoad cliplist from file");
|
veejay_msg(VEEJAY_MSG_INFO, "cl\t\tLoad cliplist from file");
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "cn\t\tNew clip from frames n1 to n2");
|
veejay_msg(VEEJAY_MSG_INFO, "cn\t\tNew clip from frames n1 to n2");
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "cd\t\tDelete clip n1");
|
veejay_msg(VEEJAY_MSG_INFO, "cd\t\tDelete clip n1");
|
||||||
@@ -170,6 +173,10 @@ static int human_friendly_vims(char *buffer)
|
|||||||
if(strncmp( buffer, "de",2 ) == 0 ) { human_friendly_msg( NET_DEBUG_LEVEL, NULL); return 1;}
|
if(strncmp( buffer, "de",2 ) == 0 ) { human_friendly_msg( NET_DEBUG_LEVEL, NULL); return 1;}
|
||||||
if(strncmp( buffer, "be",2 ) == 0 ) { human_friendly_msg( NET_BEZERK,NULL); return 1;}
|
if(strncmp( buffer, "be",2 ) == 0 ) { human_friendly_msg( NET_BEZERK,NULL); return 1;}
|
||||||
if(strncmp( buffer, "sa",2 ) == 0 ) { human_friendly_msg( NET_SAMPLE_MODE,NULL); return 1;}
|
if(strncmp( buffer, "sa",2 ) == 0 ) { human_friendly_msg( NET_SAMPLE_MODE,NULL); return 1;}
|
||||||
|
if(strncmp(buffer, "mr",2 ) == 0 ) { human_friendly_msg( NET_TAG_NEW_MCAST, buffer+2); return 1; }
|
||||||
|
if(strncmp(buffer, "pr",2 ) == 0 ) { human_friendly_msg( NET_TAG_NEW_NET, buffer+2);
|
||||||
|
return 1;}
|
||||||
|
if(strncmp(buffer, "av",2 ) == 0 ) { human_friendly_msg( NET_TAG_NEW_AVFORMAT, buffer+2); return 1; }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#include <config.h>
|
||||||
#ifndef VIMS_H
|
#ifndef VIMS_H
|
||||||
#define VIMS_H
|
#define VIMS_H
|
||||||
enum {
|
enum {
|
||||||
@@ -61,12 +62,6 @@ enum {
|
|||||||
NET_CLIP_SET_MARKER = 115,
|
NET_CLIP_SET_MARKER = 115,
|
||||||
NET_CLIP_CLEAR_MARKER = 116,
|
NET_CLIP_CLEAR_MARKER = 116,
|
||||||
NET_CLIP_CLEAR_FREEZE = 117,
|
NET_CLIP_CLEAR_FREEZE = 117,
|
||||||
NET_CLIP_HISTORY_SET_ENTRY = 118,
|
|
||||||
NET_CLIP_HISTORY_ENTRY_AS_NEW = 119,
|
|
||||||
NET_CLIP_HISTORY_CLEAR_ENTRY = 120,
|
|
||||||
NET_CLIP_HISTORY_LOCK_ENTRY = 121,
|
|
||||||
NET_CLIP_HISTORY_UNLOCK_ENTRY = 122,
|
|
||||||
NET_CLIP_HISTORY_PLAY_ENTRY = 123,
|
|
||||||
NET_CLIP_LOAD_CLIPLIST = 124,
|
NET_CLIP_LOAD_CLIPLIST = 124,
|
||||||
NET_CLIP_SAVE_CLIPLIST = 125,
|
NET_CLIP_SAVE_CLIPLIST = 125,
|
||||||
NET_CLIP_HISTORY_LIST = 126,
|
NET_CLIP_HISTORY_LIST = 126,
|
||||||
@@ -81,8 +76,6 @@ enum {
|
|||||||
NET_CLIP_CHAIN_DISABLE = 133,
|
NET_CLIP_CHAIN_DISABLE = 133,
|
||||||
NET_CLIP_RENDER_SELECT = 129,
|
NET_CLIP_RENDER_SELECT = 129,
|
||||||
NET_CLIP_RENDER_TO = 138,
|
NET_CLIP_RENDER_TO = 138,
|
||||||
NET_CLIP_ADD_WAVE = 136,
|
|
||||||
NET_CLIP_DEL_WAVE = 137,
|
|
||||||
NET_CLIP_UPDATE = 134,
|
NET_CLIP_UPDATE = 134,
|
||||||
NET_TAG_SELECT = 140,
|
NET_TAG_SELECT = 140,
|
||||||
NET_TAG_ACTIVATE = 141,
|
NET_TAG_ACTIVATE = 141,
|
||||||
@@ -90,30 +83,27 @@ enum {
|
|||||||
NET_TAG_DELETE = 143,
|
NET_TAG_DELETE = 143,
|
||||||
NET_TAG_NEW_V4L = 144,
|
NET_TAG_NEW_V4L = 144,
|
||||||
NET_TAG_NEW_Y4M = 147,
|
NET_TAG_NEW_Y4M = 147,
|
||||||
NET_TAG_NEW_RAW = 148,
|
|
||||||
NET_TAG_NEW_AVFORMAT = 149,
|
NET_TAG_NEW_AVFORMAT = 149,
|
||||||
NET_TAG_OFFLINE_REC_START = 150,
|
NET_TAG_OFFLINE_REC_START = 150,
|
||||||
NET_TAG_OFFLINE_REC_STOP = 151,
|
NET_TAG_OFFLINE_REC_STOP = 151,
|
||||||
NET_TAG_REC_START = 152,
|
NET_TAG_REC_START = 152,
|
||||||
NET_TAG_REC_STOP = 153,
|
NET_TAG_REC_STOP = 153,
|
||||||
NET_TAG_LOAD_TAGLIST = 154,
|
|
||||||
NET_TAG_SAVE_TAGLIST = 155,
|
|
||||||
NET_TAG_LIST = 206,
|
NET_TAG_LIST = 206,
|
||||||
NET_TAG_DEVICES = 207,
|
NET_TAG_DEVICES = 207,
|
||||||
NET_TAG_CHAIN_ENABLE = 156,
|
NET_TAG_CHAIN_ENABLE = 156,
|
||||||
NET_TAG_CHAIN_DISABLE = 157,
|
NET_TAG_CHAIN_DISABLE = 157,
|
||||||
|
#ifdef HAVE_V4L
|
||||||
NET_TAG_SET_BRIGHTNESS = 160,
|
NET_TAG_SET_BRIGHTNESS = 160,
|
||||||
NET_TAG_SET_CONTRAST = 161,
|
NET_TAG_SET_CONTRAST = 161,
|
||||||
NET_TAG_SET_HUE = 162,
|
NET_TAG_SET_HUE = 162,
|
||||||
NET_TAG_SET_COLOR = 163,
|
NET_TAG_SET_COLOR = 163,
|
||||||
|
#endif
|
||||||
NET_TAG_NEW_NET = 165,
|
NET_TAG_NEW_NET = 165,
|
||||||
NET_TAG_NEW_MCAST = 166,
|
NET_TAG_NEW_MCAST = 166,
|
||||||
NET_CHAIN_CHANNEL_INC = 170,
|
NET_CHAIN_CHANNEL_INC = 170,
|
||||||
NET_CHAIN_CHANNEL_DEC = 171,
|
NET_CHAIN_CHANNEL_DEC = 171,
|
||||||
NET_CHAIN_GET_ENTRY = 208,
|
NET_CHAIN_GET_ENTRY = 208,
|
||||||
NET_CHAIN_TOGGLE_ALL = 172,
|
NET_CHAIN_TOGGLE_ALL = 172,
|
||||||
NET_CHAIN_COPY_TO_BUF = 173,
|
|
||||||
NET_CHAIN_PASTE_AS_NEW = 174,
|
|
||||||
NET_CHAIN_ENABLE = 175,
|
NET_CHAIN_ENABLE = 175,
|
||||||
NET_CHAIN_DISABLE = 176,
|
NET_CHAIN_DISABLE = 176,
|
||||||
NET_CHAIN_CLEAR = 177,
|
NET_CHAIN_CLEAR = 177,
|
||||||
@@ -134,18 +124,12 @@ enum {
|
|||||||
NET_CHAIN_ENTRY_SET_SOURCE = 191,
|
NET_CHAIN_ENTRY_SET_SOURCE = 191,
|
||||||
NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL = 192,
|
NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL = 192,
|
||||||
NET_CHAIN_ENTRY_CLEAR = 193,
|
NET_CHAIN_ENTRY_CLEAR = 193,
|
||||||
NET_CHAIN_ENTRY_SET_AUTOMATIC = 194,
|
|
||||||
NET_CHAIN_ENTRY_DEL_AUTOMATIC = 195,
|
|
||||||
NET_CHAIN_ENTRY_ENABLE_AUTOMATIC = 196,
|
|
||||||
NET_CHAIN_ENTRY_DISABLE_AUTOMATIC = 197,
|
|
||||||
NET_CHAIN_MANUAL_FADE = 198,
|
NET_CHAIN_MANUAL_FADE = 198,
|
||||||
NET_EFFECT_SET_BG = 200,
|
NET_EFFECT_SET_BG = 200,
|
||||||
NET_SET_VOLUME = 220,
|
NET_SET_VOLUME = 220,
|
||||||
NET_FULLSCREEN = 222,
|
NET_FULLSCREEN = 222,
|
||||||
NET_OUTPUT_Y4M_START = 71,
|
NET_OUTPUT_Y4M_START = 71,
|
||||||
NET_OUTPUT_Y4M_STOP = 72,
|
NET_OUTPUT_Y4M_STOP = 72,
|
||||||
NET_OUTPUT_RAW_START = 73,
|
|
||||||
NET_OUTPUT_RAW_STOP = 74,
|
|
||||||
NET_GET_FRAME = 225,
|
NET_GET_FRAME = 225,
|
||||||
NET_SAMPLE_MODE = 250,
|
NET_SAMPLE_MODE = 250,
|
||||||
NET_BEZERK = 251,
|
NET_BEZERK = 251,
|
||||||
|
|||||||
@@ -231,15 +231,8 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_CLIP_SET_MARKER_END = 2012,
|
VJ_EVENT_CLIP_SET_MARKER_END = 2012,
|
||||||
VJ_EVENT_CLIP_SET_MARKER = 2026,
|
VJ_EVENT_CLIP_SET_MARKER = 2026,
|
||||||
VJ_EVENT_CLIP_CLEAR_MARKER = 2013,
|
VJ_EVENT_CLIP_CLEAR_MARKER = 2013,
|
||||||
VJ_EVENT_CLIP_HISTORY_SET_ENTRY = 2015,
|
|
||||||
VJ_EVENT_CLIP_HISTORY_ENTRY_AS_NEW = 2016,
|
|
||||||
VJ_EVENT_CLIP_HISTORY_CLEAR_ENTRY = 2017,
|
|
||||||
VJ_EVENT_CLIP_HISTORY_LOCK_ENTRY = 2018,
|
|
||||||
VJ_EVENT_CLIP_HISTORY_UNLOCK_ENTRY = 2019,
|
|
||||||
VJ_EVENT_CLIP_HISTORY_PLAY_ENTRY = 2020,
|
|
||||||
VJ_EVENT_CLIP_LOAD_CLIPLIST = 2021,
|
VJ_EVENT_CLIP_LOAD_CLIPLIST = 2021,
|
||||||
VJ_EVENT_CLIP_SAVE_CLIPLIST = 2022,
|
VJ_EVENT_CLIP_SAVE_CLIPLIST = 2022,
|
||||||
VJ_EVENT_CLIP_HISTORY_LIST = 2023,
|
|
||||||
VJ_EVENT_CLIP_LIST = 2024,
|
VJ_EVENT_CLIP_LIST = 2024,
|
||||||
VJ_EVENT_CLIP_DEL = 2030,
|
VJ_EVENT_CLIP_DEL = 2030,
|
||||||
VJ_EVENT_CLIP_REC_START = 2031,
|
VJ_EVENT_CLIP_REC_START = 2031,
|
||||||
@@ -251,8 +244,6 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_CHAIN_TOGGLE_ALL = 2037,
|
VJ_EVENT_CHAIN_TOGGLE_ALL = 2037,
|
||||||
VJ_EVENT_CLIP_UPDATE = 2038,
|
VJ_EVENT_CLIP_UPDATE = 2038,
|
||||||
VJ_EVENT_CLIP_DEL_ALL = 2039,
|
VJ_EVENT_CLIP_DEL_ALL = 2039,
|
||||||
VJ_EVENT_CLIP_ADD_WAVE = 2041,
|
|
||||||
VJ_EVENT_CLIP_DEL_WAVE = 2042,
|
|
||||||
VJ_EVENT_CLIP_COPY = 2040,
|
VJ_EVENT_CLIP_COPY = 2040,
|
||||||
VJ_EVENT_CLIP_SELECT_RENDER = 2051,
|
VJ_EVENT_CLIP_SELECT_RENDER = 2051,
|
||||||
VJ_EVENT_CLIP_RENDER_TO = 2052,
|
VJ_EVENT_CLIP_RENDER_TO = 2052,
|
||||||
@@ -260,24 +251,25 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_TAG_ACTIVATE = 2101,
|
VJ_EVENT_TAG_ACTIVATE = 2101,
|
||||||
VJ_EVENT_TAG_DEACTIVATE = 2102,
|
VJ_EVENT_TAG_DEACTIVATE = 2102,
|
||||||
VJ_EVENT_TAG_DELETE = 2103,
|
VJ_EVENT_TAG_DELETE = 2103,
|
||||||
|
#ifdef HAVE_V4L
|
||||||
VJ_EVENT_TAG_NEW_V4L = 2104,
|
VJ_EVENT_TAG_NEW_V4L = 2104,
|
||||||
|
#endif
|
||||||
VJ_EVENT_TAG_NEW_Y4M = 2107,
|
VJ_EVENT_TAG_NEW_Y4M = 2107,
|
||||||
VJ_EVENT_TAG_NEW_RAW = 2108,
|
|
||||||
VJ_EVENT_TAG_OFFLINE_REC_START = 2109,
|
VJ_EVENT_TAG_OFFLINE_REC_START = 2109,
|
||||||
VJ_EVENT_TAG_OFFLINE_REC_STOP = 2110,
|
VJ_EVENT_TAG_OFFLINE_REC_STOP = 2110,
|
||||||
VJ_EVENT_TAG_REC_START = 2111,
|
VJ_EVENT_TAG_REC_START = 2111,
|
||||||
VJ_EVENT_TAG_REC_STOP = 2112,
|
VJ_EVENT_TAG_REC_STOP = 2112,
|
||||||
VJ_EVENT_TAG_LOAD_TAGLIST = 2113,
|
|
||||||
VJ_EVENT_TAG_SAVE_TAGLIST = 2114,
|
|
||||||
VJ_EVENT_TAG_LIST = 2115,
|
VJ_EVENT_TAG_LIST = 2115,
|
||||||
VJ_EVENT_TAG_DEVICES = 2116,
|
VJ_EVENT_TAG_DEVICES = 2116,
|
||||||
VJ_EVENT_TAG_CHAIN_DISABLE = 2117,
|
VJ_EVENT_TAG_CHAIN_DISABLE = 2117,
|
||||||
VJ_EVENT_TAG_CHAIN_ENABLE = 2118,
|
VJ_EVENT_TAG_CHAIN_ENABLE = 2118,
|
||||||
VJ_EVENT_TAG_NEW_AVFORMAT = 2119,
|
VJ_EVENT_TAG_NEW_AVFORMAT = 2119,
|
||||||
|
#ifdef HAVE_V4L
|
||||||
VJ_EVENT_TAG_SET_BRIGHTNESS = 2301,
|
VJ_EVENT_TAG_SET_BRIGHTNESS = 2301,
|
||||||
VJ_EVENT_TAG_SET_CONTRAST = 2302,
|
VJ_EVENT_TAG_SET_CONTRAST = 2302,
|
||||||
VJ_EVENT_TAG_SET_HUE = 2303,
|
VJ_EVENT_TAG_SET_HUE = 2303,
|
||||||
VJ_EVENT_TAG_SET_COLOR = 2304,
|
VJ_EVENT_TAG_SET_COLOR = 2304,
|
||||||
|
#endif
|
||||||
VJ_EVENT_CHAIN_ENTRY_SET_EFFECT = 2201,
|
VJ_EVENT_CHAIN_ENTRY_SET_EFFECT = 2201,
|
||||||
VJ_EVENT_CHAIN_ENTRY_SET_PRESET = 2202,
|
VJ_EVENT_CHAIN_ENTRY_SET_PRESET = 2202,
|
||||||
VJ_EVENT_CHAIN_ENTRY_SET_ARG_VAL = 2203,
|
VJ_EVENT_CHAIN_ENTRY_SET_ARG_VAL = 2203,
|
||||||
@@ -292,8 +284,6 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_CHAIN_ENTRY_SET_SOURCE_CHANNEL = 2212,
|
VJ_EVENT_CHAIN_ENTRY_SET_SOURCE_CHANNEL = 2212,
|
||||||
VJ_EVENT_CHAIN_ENTRY_CLEAR = 2213,
|
VJ_EVENT_CHAIN_ENTRY_CLEAR = 2213,
|
||||||
VJ_EVENT_CHAIN_MANUAL = 2222,
|
VJ_EVENT_CHAIN_MANUAL = 2222,
|
||||||
VJ_EVENT_CHAIN_COPY_TO_BUF = 2221,
|
|
||||||
VJ_EVENT_CHAIN_PASTE_AS_NEW = 2220,
|
|
||||||
VJ_EVENT_CHAIN_ENABLE = 2214,
|
VJ_EVENT_CHAIN_ENABLE = 2214,
|
||||||
VJ_EVENT_CHAIN_DISABLE = 2219,
|
VJ_EVENT_CHAIN_DISABLE = 2219,
|
||||||
VJ_EVENT_CHAIN_CLEAR = 2205,
|
VJ_EVENT_CHAIN_CLEAR = 2205,
|
||||||
@@ -301,18 +291,12 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_CHAIN_FADE_OUT = 2217,
|
VJ_EVENT_CHAIN_FADE_OUT = 2217,
|
||||||
VJ_EVENT_CHAIN_SET_ENTRY = 2218,
|
VJ_EVENT_CHAIN_SET_ENTRY = 2218,
|
||||||
VJ_EVENT_CHAIN_LIST = 2215,
|
VJ_EVENT_CHAIN_LIST = 2215,
|
||||||
VJ_EVENT_CHAIN_ENTRY_SET_AUTOMATIC = 2230,
|
|
||||||
VJ_EVENT_CHAIN_ENTRY_DEL_AUTOMATIC = 2231,
|
|
||||||
VJ_EVENT_CHAIN_ENTRY_ENABLE_AUTOMATIC = 2232,
|
|
||||||
VJ_EVENT_CHAIN_ENTRY_DISABLE_AUTOMATIC = 2233,
|
|
||||||
VJ_EVENT_CHAIN_GET_ENTRY = 2250,
|
VJ_EVENT_CHAIN_GET_ENTRY = 2250,
|
||||||
VJ_EVENT_EFFECT_LIST = 2500,
|
VJ_EVENT_EFFECT_LIST = 2500,
|
||||||
VJ_EVENT_EDITLIST_LIST = 2501,
|
VJ_EVENT_EDITLIST_LIST = 2501,
|
||||||
VJ_EVENT_VIDEO_INFORMATION = 2502,
|
VJ_EVENT_VIDEO_INFORMATION = 2502,
|
||||||
VJ_EVENT_OUTPUT_Y4M_START = 3001,
|
VJ_EVENT_OUTPUT_Y4M_START = 3001,
|
||||||
VJ_EVENT_OUTPUT_Y4M_STOP = 3002,
|
VJ_EVENT_OUTPUT_Y4M_STOP = 3002,
|
||||||
VJ_EVENT_OUTPUT_RAW_START = 3003,
|
|
||||||
VJ_EVENT_OUTPUT_RAW_STOP = 3004,
|
|
||||||
VJ_EVENT_RESIZE_SDL_SCREEN = 3008,
|
VJ_EVENT_RESIZE_SDL_SCREEN = 3008,
|
||||||
VJ_EVENT_SET_PLAY_MODE = 3009,
|
VJ_EVENT_SET_PLAY_MODE = 3009,
|
||||||
VJ_EVENT_SET_MODE_AND_GO = 3010,
|
VJ_EVENT_SET_MODE_AND_GO = 3010,
|
||||||
@@ -327,7 +311,6 @@ enum { /* all events, network/keyboard crossover */
|
|||||||
VJ_EVENT_EDITLIST_CUT = 4007,
|
VJ_EVENT_EDITLIST_CUT = 4007,
|
||||||
VJ_EVENT_EDITLIST_ADD = 4008,
|
VJ_EVENT_EDITLIST_ADD = 4008,
|
||||||
VJ_EVENT_EDITLIST_ADD_CLIP = 4009,
|
VJ_EVENT_EDITLIST_ADD_CLIP = 4009,
|
||||||
VJ_EVENT_EDITLIST_ADD_HIS = 4010,
|
|
||||||
VJ_EVENT_EDITLIST_SAVE = 4011,
|
VJ_EVENT_EDITLIST_SAVE = 4011,
|
||||||
VJ_EVENT_EDITLIST_LOAD = 4012,
|
VJ_EVENT_EDITLIST_LOAD = 4012,
|
||||||
/* message bundles are bundles of events, start at 5000 */
|
/* message bundles are bundles of events, start at 5000 */
|
||||||
@@ -392,15 +375,8 @@ static struct { /* internal message relay for remote host */
|
|||||||
{ VJ_EVENT_CLIP_SET_MARKER_END, NET_CLIP_SET_MARKER_END },
|
{ VJ_EVENT_CLIP_SET_MARKER_END, NET_CLIP_SET_MARKER_END },
|
||||||
{ VJ_EVENT_CLIP_SET_MARKER, NET_CLIP_SET_MARKER },
|
{ VJ_EVENT_CLIP_SET_MARKER, NET_CLIP_SET_MARKER },
|
||||||
{ VJ_EVENT_CLIP_CLEAR_MARKER, NET_CLIP_CLEAR_MARKER },
|
{ VJ_EVENT_CLIP_CLEAR_MARKER, NET_CLIP_CLEAR_MARKER },
|
||||||
{ VJ_EVENT_CLIP_HISTORY_SET_ENTRY, NET_CLIP_HISTORY_SET_ENTRY },
|
|
||||||
{ VJ_EVENT_CLIP_HISTORY_ENTRY_AS_NEW, NET_CLIP_HISTORY_ENTRY_AS_NEW },
|
|
||||||
{ VJ_EVENT_CLIP_HISTORY_CLEAR_ENTRY, NET_CLIP_HISTORY_CLEAR_ENTRY },
|
|
||||||
{ VJ_EVENT_CLIP_HISTORY_LOCK_ENTRY, NET_CLIP_HISTORY_LOCK_ENTRY },
|
|
||||||
{ VJ_EVENT_CLIP_HISTORY_UNLOCK_ENTRY, NET_CLIP_HISTORY_UNLOCK_ENTRY },
|
|
||||||
{ VJ_EVENT_CLIP_HISTORY_PLAY_ENTRY, NET_CLIP_HISTORY_PLAY_ENTRY },
|
|
||||||
{ VJ_EVENT_CLIP_LOAD_CLIPLIST, NET_CLIP_LOAD_CLIPLIST },
|
{ VJ_EVENT_CLIP_LOAD_CLIPLIST, NET_CLIP_LOAD_CLIPLIST },
|
||||||
{ VJ_EVENT_CLIP_SAVE_CLIPLIST, NET_CLIP_SAVE_CLIPLIST },
|
{ VJ_EVENT_CLIP_SAVE_CLIPLIST, NET_CLIP_SAVE_CLIPLIST },
|
||||||
{ VJ_EVENT_CLIP_HISTORY_LIST, NET_CLIP_HISTORY_LIST },
|
|
||||||
{ VJ_EVENT_CLIP_LIST, NET_CLIP_LIST },
|
{ VJ_EVENT_CLIP_LIST, NET_CLIP_LIST },
|
||||||
{ VJ_EVENT_CLIP_DEL, NET_CLIP_DEL },
|
{ VJ_EVENT_CLIP_DEL, NET_CLIP_DEL },
|
||||||
{ VJ_EVENT_CLIP_DEL_ALL, NET_CLIP_DEL_ALL },
|
{ VJ_EVENT_CLIP_DEL_ALL, NET_CLIP_DEL_ALL },
|
||||||
@@ -415,16 +391,15 @@ static struct { /* internal message relay for remote host */
|
|||||||
{ VJ_EVENT_TAG_ACTIVATE, NET_TAG_ACTIVATE },
|
{ VJ_EVENT_TAG_ACTIVATE, NET_TAG_ACTIVATE },
|
||||||
{ VJ_EVENT_TAG_DEACTIVATE, NET_TAG_DEACTIVATE },
|
{ VJ_EVENT_TAG_DEACTIVATE, NET_TAG_DEACTIVATE },
|
||||||
{ VJ_EVENT_TAG_DELETE, NET_TAG_DELETE },
|
{ VJ_EVENT_TAG_DELETE, NET_TAG_DELETE },
|
||||||
|
#ifdef HAVE_V4L
|
||||||
{ VJ_EVENT_TAG_NEW_V4L, NET_TAG_NEW_V4L },
|
{ VJ_EVENT_TAG_NEW_V4L, NET_TAG_NEW_V4L },
|
||||||
|
#endif
|
||||||
{ VJ_EVENT_TAG_NEW_Y4M, NET_TAG_NEW_Y4M },
|
{ VJ_EVENT_TAG_NEW_Y4M, NET_TAG_NEW_Y4M },
|
||||||
{ VJ_EVENT_TAG_NEW_RAW, NET_TAG_NEW_RAW },
|
|
||||||
{ VJ_EVENT_TAG_NEW_AVFORMAT, NET_TAG_NEW_AVFORMAT },
|
{ VJ_EVENT_TAG_NEW_AVFORMAT, NET_TAG_NEW_AVFORMAT },
|
||||||
{ VJ_EVENT_TAG_OFFLINE_REC_START, NET_TAG_OFFLINE_REC_START },
|
{ VJ_EVENT_TAG_OFFLINE_REC_START, NET_TAG_OFFLINE_REC_START },
|
||||||
{ VJ_EVENT_TAG_OFFLINE_REC_STOP, NET_TAG_OFFLINE_REC_STOP },
|
{ VJ_EVENT_TAG_OFFLINE_REC_STOP, NET_TAG_OFFLINE_REC_STOP },
|
||||||
{ VJ_EVENT_TAG_REC_START, NET_TAG_REC_START },
|
{ VJ_EVENT_TAG_REC_START, NET_TAG_REC_START },
|
||||||
{ VJ_EVENT_TAG_REC_STOP, NET_TAG_REC_STOP },
|
{ VJ_EVENT_TAG_REC_STOP, NET_TAG_REC_STOP },
|
||||||
{ VJ_EVENT_TAG_LOAD_TAGLIST, NET_TAG_LOAD_TAGLIST },
|
|
||||||
{ VJ_EVENT_TAG_SAVE_TAGLIST, NET_TAG_SAVE_TAGLIST },
|
|
||||||
{ VJ_EVENT_TAG_LIST, NET_TAG_LIST },
|
{ VJ_EVENT_TAG_LIST, NET_TAG_LIST },
|
||||||
{ VJ_EVENT_TAG_DEVICES, NET_TAG_DEVICES },
|
{ VJ_EVENT_TAG_DEVICES, NET_TAG_DEVICES },
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_SET_EFFECT, NET_CHAIN_ENTRY_SET_EFFECT },
|
{ VJ_EVENT_CHAIN_ENTRY_SET_EFFECT, NET_CHAIN_ENTRY_SET_EFFECT },
|
||||||
@@ -440,8 +415,6 @@ static struct { /* internal message relay for remote host */
|
|||||||
{ VJ_EVENT_CHAIN_ENTRY_SET_SOURCE, NET_CHAIN_ENTRY_SET_SOURCE },
|
{ VJ_EVENT_CHAIN_ENTRY_SET_SOURCE, NET_CHAIN_ENTRY_SET_SOURCE },
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_SET_SOURCE_CHANNEL, NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL },
|
{ VJ_EVENT_CHAIN_ENTRY_SET_SOURCE_CHANNEL, NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL },
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_CLEAR, NET_CHAIN_ENTRY_CLEAR },
|
{ VJ_EVENT_CHAIN_ENTRY_CLEAR, NET_CHAIN_ENTRY_CLEAR },
|
||||||
{ VJ_EVENT_CHAIN_COPY_TO_BUF, NET_CHAIN_COPY_TO_BUF },
|
|
||||||
{ VJ_EVENT_CHAIN_PASTE_AS_NEW, NET_CHAIN_PASTE_AS_NEW },
|
|
||||||
{ VJ_EVENT_CHAIN_ENABLE, NET_CHAIN_ENABLE },
|
{ VJ_EVENT_CHAIN_ENABLE, NET_CHAIN_ENABLE },
|
||||||
{ VJ_EVENT_CHAIN_DISABLE, NET_CHAIN_DISABLE },
|
{ VJ_EVENT_CHAIN_DISABLE, NET_CHAIN_DISABLE },
|
||||||
{ VJ_EVENT_CHAIN_CLEAR , NET_CHAIN_CLEAR },
|
{ VJ_EVENT_CHAIN_CLEAR , NET_CHAIN_CLEAR },
|
||||||
@@ -453,8 +426,6 @@ static struct { /* internal message relay for remote host */
|
|||||||
{ VJ_EVENT_VIDEO_INFORMATION, NET_VIDEO_INFORMATION },
|
{ VJ_EVENT_VIDEO_INFORMATION, NET_VIDEO_INFORMATION },
|
||||||
{ VJ_EVENT_OUTPUT_Y4M_START, NET_OUTPUT_Y4M_START },
|
{ VJ_EVENT_OUTPUT_Y4M_START, NET_OUTPUT_Y4M_START },
|
||||||
{ VJ_EVENT_OUTPUT_Y4M_STOP, NET_OUTPUT_Y4M_STOP },
|
{ VJ_EVENT_OUTPUT_Y4M_STOP, NET_OUTPUT_Y4M_STOP },
|
||||||
{ VJ_EVENT_OUTPUT_RAW_START, NET_OUTPUT_RAW_START },
|
|
||||||
{ VJ_EVENT_OUTPUT_RAW_STOP, NET_OUTPUT_RAW_STOP },
|
|
||||||
{ VJ_EVENT_RESIZE_SDL_SCREEN, NET_RESIZE_SDL_SCREEN },
|
{ VJ_EVENT_RESIZE_SDL_SCREEN, NET_RESIZE_SDL_SCREEN },
|
||||||
{ VJ_EVENT_SET_PLAY_MODE, NET_SET_PLAY_MODE },
|
{ VJ_EVENT_SET_PLAY_MODE, NET_SET_PLAY_MODE },
|
||||||
{ VJ_EVENT_SET_MODE_AND_GO, NET_SET_MODE_AND_GO },
|
{ VJ_EVENT_SET_MODE_AND_GO, NET_SET_MODE_AND_GO },
|
||||||
@@ -483,19 +454,17 @@ static struct { /* internal message relay for remote host */
|
|||||||
{ VJ_EVENT_CHAIN_GET_ENTRY, NET_CHAIN_GET_ENTRY },
|
{ VJ_EVENT_CHAIN_GET_ENTRY, NET_CHAIN_GET_ENTRY },
|
||||||
{ VJ_EVENT_CHAIN_TOGGLE_ALL, NET_CHAIN_TOGGLE_ALL },
|
{ VJ_EVENT_CHAIN_TOGGLE_ALL, NET_CHAIN_TOGGLE_ALL },
|
||||||
{ VJ_EVENT_CLIP_UPDATE, NET_CLIP_UPDATE },
|
{ VJ_EVENT_CLIP_UPDATE, NET_CLIP_UPDATE },
|
||||||
|
#ifdef HAVE_V4L
|
||||||
{ VJ_EVENT_TAG_SET_BRIGHTNESS, NET_TAG_SET_BRIGHTNESS },
|
{ VJ_EVENT_TAG_SET_BRIGHTNESS, NET_TAG_SET_BRIGHTNESS },
|
||||||
{ VJ_EVENT_TAG_SET_CONTRAST, NET_TAG_SET_CONTRAST },
|
{ VJ_EVENT_TAG_SET_CONTRAST, NET_TAG_SET_CONTRAST },
|
||||||
{ VJ_EVENT_TAG_SET_HUE, NET_TAG_SET_HUE },
|
{ VJ_EVENT_TAG_SET_HUE, NET_TAG_SET_HUE },
|
||||||
{ VJ_EVENT_CLIP_ADD_WAVE, NET_CLIP_ADD_WAVE },
|
#endif
|
||||||
{ VJ_EVENT_CLIP_DEL_WAVE, NET_CLIP_DEL_WAVE },
|
|
||||||
{ VJ_EVENT_RECORD_DATAFORMAT, NET_RECORD_DATAFORMAT },
|
{ VJ_EVENT_RECORD_DATAFORMAT, NET_RECORD_DATAFORMAT },
|
||||||
|
#ifdef HAVE_V4L
|
||||||
{ VJ_EVENT_TAG_SET_COLOR, NET_TAG_SET_COLOR },
|
{ VJ_EVENT_TAG_SET_COLOR, NET_TAG_SET_COLOR },
|
||||||
|
#endif
|
||||||
{ VJ_EVENT_QUIT, NET_QUIT },
|
{ VJ_EVENT_QUIT, NET_QUIT },
|
||||||
{ VJ_EVENT_INIT_GUI_SCREEN, NET_INIT_GUI_SCREEN },
|
{ VJ_EVENT_INIT_GUI_SCREEN, NET_INIT_GUI_SCREEN },
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_SET_AUTOMATIC, NET_CHAIN_ENTRY_SET_AUTOMATIC },
|
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_DEL_AUTOMATIC, NET_CHAIN_ENTRY_DEL_AUTOMATIC },
|
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_ENABLE_AUTOMATIC, NET_CHAIN_ENTRY_ENABLE_AUTOMATIC },
|
|
||||||
{ VJ_EVENT_CHAIN_ENTRY_DISABLE_AUTOMATIC, NET_CHAIN_ENTRY_DISABLE_AUTOMATIC },
|
|
||||||
{ VJ_EVENT_EFFECT_SET_BG, NET_EFFECT_SET_BG },
|
{ VJ_EVENT_EFFECT_SET_BG, NET_EFFECT_SET_BG },
|
||||||
{ VJ_EVENT_SWITCH_CLIP_TAG, NET_SWITCH_CLIP_TAG },
|
{ VJ_EVENT_SWITCH_CLIP_TAG, NET_SWITCH_CLIP_TAG },
|
||||||
{ VJ_EVENT_SET_VOLUME, NET_SET_VOLUME },
|
{ VJ_EVENT_SET_VOLUME, NET_SET_VOLUME },
|
||||||
@@ -769,11 +738,6 @@ static struct {
|
|||||||
{ VJ_EVENT_CLIP_SET_MARKER_END, "Clip: set marker ending position", vj_event_clip_set_marker_end, 2, "%d %d", {0,0} },
|
{ VJ_EVENT_CLIP_SET_MARKER_END, "Clip: set marker ending position", vj_event_clip_set_marker_end, 2, "%d %d", {0,0} },
|
||||||
{ VJ_EVENT_CLIP_SET_MARKER, "Clip: set marker starting and ending position", vj_event_clip_set_marker, 3, "%d %d %d", {0,0} },
|
{ VJ_EVENT_CLIP_SET_MARKER, "Clip: set marker starting and ending position", vj_event_clip_set_marker, 3, "%d %d %d", {0,0} },
|
||||||
{ VJ_EVENT_CLIP_CLEAR_MARKER, "Clip: clear marker", vj_event_clip_set_marker_clear,1, "%d", {0,0} },
|
{ VJ_EVENT_CLIP_CLEAR_MARKER, "Clip: clear marker", vj_event_clip_set_marker_clear,1, "%d", {0,0} },
|
||||||
// { VJ_EVENT_CLIP_HISTORY_ENTRY_AS_NEW, "ClipHistory: move entry to new clip", vj_event_clip_his_entry_to_new,2, "%d %d", {0,0} },
|
|
||||||
// { VJ_EVENT_CLIP_HISTORY_CLEAR_ENTRY, "ClipHistory: clear entry", vj_event_clip_his_del_entry, 2, "%d %d", {0,0} },
|
|
||||||
// { VJ_EVENT_CLIP_HISTORY_LOCK_ENTRY, "ClipHistory: lock entry", vj_event_clip_his_lock_entry, 2, "%d %d", {0,0} },
|
|
||||||
// { VJ_EVENT_CLIP_HISTORY_UNLOCK_ENTRY, "ClipHistory: unlock entry", vj_event_clip_his_unlock_entry,2, "%d %d", {0,0} },
|
|
||||||
// { VJ_EVENT_CLIP_HISTORY_PLAY_ENTRY, "ClipHistory: play entry", vj_event_clip_his_play_entry, 2, "%d %d", {0,0} },
|
|
||||||
#ifdef HAVE_XML2
|
#ifdef HAVE_XML2
|
||||||
{ VJ_EVENT_CLIP_LOAD_CLIPLIST, "Clip: load clips from file", vj_event_clip_load_list, 1, "%s", {0,0} },
|
{ VJ_EVENT_CLIP_LOAD_CLIPLIST, "Clip: load clips from file", vj_event_clip_load_list, 1, "%s", {0,0} },
|
||||||
{ VJ_EVENT_CLIP_SAVE_CLIPLIST, "Clip: save clips to file", vj_event_clip_save_list, 1, "%s", {0,0} },
|
{ VJ_EVENT_CLIP_SAVE_CLIPLIST, "Clip: save clips to file", vj_event_clip_save_list, 1, "%s", {0,0} },
|
||||||
@@ -796,7 +760,6 @@ static struct {
|
|||||||
{ VJ_EVENT_TAG_NEW_V4L, "Stream: open video4linux device (hw)", vj_event_tag_new_v4l, 2, "%d %d", {0,1} },
|
{ VJ_EVENT_TAG_NEW_V4L, "Stream: open video4linux device (hw)", vj_event_tag_new_v4l, 2, "%d %d", {0,1} },
|
||||||
#endif
|
#endif
|
||||||
{ VJ_EVENT_TAG_NEW_Y4M, "Stream: open y4m stream by name (file)", vj_event_tag_new_y4m, 1, "%s", {0,0} },
|
{ VJ_EVENT_TAG_NEW_Y4M, "Stream: open y4m stream by name (file)", vj_event_tag_new_y4m, 1, "%s", {0,0} },
|
||||||
// { VJ_EVENT_TAG_NEW_RAW, "Stream: open raw stream by name (file)", vj_event_tag_new_raw, 1, "%s", {0,0} },
|
|
||||||
{ VJ_EVENT_STREAM_NEW_NET, "Stream: open network stream ", vj_event_tag_new_net, 2, "%s %d", {0,0} },
|
{ VJ_EVENT_STREAM_NEW_NET, "Stream: open network stream ", vj_event_tag_new_net, 2, "%s %d", {0,0} },
|
||||||
{ VJ_EVENT_STREAM_NEW_MCAST, "Stream: open multicast stream", vj_event_tag_new_mcast, 2, "%s %d", {0,0} },
|
{ VJ_EVENT_STREAM_NEW_MCAST, "Stream: open multicast stream", vj_event_tag_new_mcast, 2, "%s %d", {0,0} },
|
||||||
{ VJ_EVENT_TAG_NEW_AVFORMAT, "Stream: open file as stream with FFmpeg", vj_event_tag_new_avformat, 1, "%s", {0,0} },
|
{ VJ_EVENT_TAG_NEW_AVFORMAT, "Stream: open file as stream with FFmpeg", vj_event_tag_new_avformat, 1, "%s", {0,0} },
|
||||||
@@ -828,8 +791,6 @@ static struct {
|
|||||||
{ VJ_EVENT_CHAIN_SET_ENTRY, "Chain: select entry ", vj_event_chain_entry_select, 1, "%d", {0,0} },
|
{ VJ_EVENT_CHAIN_SET_ENTRY, "Chain: select entry ", vj_event_chain_entry_select, 1, "%d", {0,0} },
|
||||||
{ VJ_EVENT_OUTPUT_Y4M_START, "Output: Yuv4Mpeg start writing to file", vj_event_output_y4m_start, 1, "%s", {0,0} },
|
{ VJ_EVENT_OUTPUT_Y4M_START, "Output: Yuv4Mpeg start writing to file", vj_event_output_y4m_start, 1, "%s", {0,0} },
|
||||||
{ VJ_EVENT_OUTPUT_Y4M_STOP, "Output: Yuv4Mpeg stop writing to file", vj_event_output_y4m_stop, 0, NULL, {0,0} },
|
{ VJ_EVENT_OUTPUT_Y4M_STOP, "Output: Yuv4Mpeg stop writing to file", vj_event_output_y4m_stop, 0, NULL, {0,0} },
|
||||||
// { VJ_EVENT_OUTPUT_RAW_START, "Output: RAW start writing to file", vj_event_output_raw_start, 1, "%s", {0,0} },
|
|
||||||
// { VJ_EVENT_OUTPUT_RAW_STOP, "Output: RAW stop writing to file", vj_event_output_raw_stop, 1, "%s", {0,0} },
|
|
||||||
#ifdef HAVE_SDL
|
#ifdef HAVE_SDL
|
||||||
{ VJ_EVENT_RESIZE_SDL_SCREEN, "Output: Resize SDL video screen", vj_event_set_screen_size, 2, "%d %d", {0,0} },
|
{ VJ_EVENT_RESIZE_SDL_SCREEN, "Output: Resize SDL video screen", vj_event_set_screen_size, 2, "%d %d", {0,0} },
|
||||||
{ VJ_EVENT_INIT_GUI_SCREEN, "Output: Initialize GUI screen", vj_event_init_gui_screen, 2, "%s %d", {0,0} },
|
{ VJ_EVENT_INIT_GUI_SCREEN, "Output: Initialize GUI screen", vj_event_init_gui_screen, 2, "%s %d", {0,0} },
|
||||||
@@ -848,7 +809,6 @@ static struct {
|
|||||||
{ VJ_EVENT_EDITLIST_LOAD, "EditList: load EditList into veejay", vj_event_el_load_editlist, 1, "%s", {0,0} },
|
{ VJ_EVENT_EDITLIST_LOAD, "EditList: load EditList into veejay", vj_event_el_load_editlist, 1, "%s", {0,0} },
|
||||||
{ VJ_EVENT_EDITLIST_ADD, "EditList: add video file to editlist", vj_event_el_add_video, 1, "%s", {0,0} },
|
{ VJ_EVENT_EDITLIST_ADD, "EditList: add video file to editlist", vj_event_el_add_video, 1, "%s", {0,0} },
|
||||||
{ VJ_EVENT_EDITLIST_ADD_CLIP, "EditList: add video file to editlist as clip", vj_event_el_add_video_clip, 1, "%s", {0,0} },
|
{ VJ_EVENT_EDITLIST_ADD_CLIP, "EditList: add video file to editlist as clip", vj_event_el_add_video_clip, 1, "%s", {0,0} },
|
||||||
{ VJ_EVENT_EDITLIST_ADD_HIS, "EditList: add video file to history list", vj_event_el_add_video_his, 4, "%s %d %d %d", {0,0} },
|
|
||||||
{ VJ_EVENT_TAG_LIST, "Stream: send list of all streams", vj_event_send_tag_list, 1, "%d", {0,0} },
|
{ VJ_EVENT_TAG_LIST, "Stream: send list of all streams", vj_event_send_tag_list, 1, "%d", {0,0} },
|
||||||
{ VJ_EVENT_CLIP_LIST, "Clip: send list of Clips", vj_event_send_clip_list, 1, "%d", {0,0} },
|
{ VJ_EVENT_CLIP_LIST, "Clip: send list of Clips", vj_event_send_clip_list, 1, "%d", {0,0} },
|
||||||
{ VJ_EVENT_EDITLIST_LIST, "EditList: send list of all files", vj_event_send_editlist, 0, NULL, {0,0} },
|
{ VJ_EVENT_EDITLIST_LIST, "EditList: send list of all files", vj_event_send_editlist, 0, NULL, {0,0} },
|
||||||
@@ -866,7 +826,6 @@ static struct {
|
|||||||
{ VJ_EVENT_CHAIN_GET_ENTRY, "Chain: get entry contents", vj_event_send_chain_entry, 2, "%d %d", {0,0} },
|
{ VJ_EVENT_CHAIN_GET_ENTRY, "Chain: get entry contents", vj_event_send_chain_entry, 2, "%d %d", {0,0} },
|
||||||
{ VJ_EVENT_EFFECT_LIST, "EffectList: list all effects", vj_event_send_effect_list, 0, NULL, {0,0} },
|
{ VJ_EVENT_EFFECT_LIST, "EffectList: list all effects", vj_event_send_effect_list, 0, NULL, {0,0} },
|
||||||
{ VJ_EVENT_VIDEO_INFORMATION, "Video: send properties", vj_event_send_video_information,0, NULL, {0,0} },
|
{ VJ_EVENT_VIDEO_INFORMATION, "Video: send properties", vj_event_send_video_information,0, NULL, {0,0} },
|
||||||
{ VJ_EVENT_CLIP_HISTORY_LIST, "Clip: send history list", vj_event_send_clip_history_list,1, "%d", {0,0} },
|
|
||||||
#ifdef HAVE_SDL
|
#ifdef HAVE_SDL
|
||||||
{ VJ_EVENT_BUNDLE_ATTACH_KEY, "Bundle: attach a Key to a bundle", vj_event_attach_key_to_bundle, 3, "%d %d %d", {0,0} },
|
{ VJ_EVENT_BUNDLE_ATTACH_KEY, "Bundle: attach a Key to a bundle", vj_event_attach_key_to_bundle, 3, "%d %d %d", {0,0} },
|
||||||
#endif
|
#endif
|
||||||
@@ -1265,15 +1224,14 @@ void vj_event_fire_net_event(veejay_t *v, int net_id, char *str_arg, int *args,
|
|||||||
{
|
{
|
||||||
int id = net_list[ net_id ].list_id;
|
int id = net_list[ net_id ].list_id;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
int argument_list[16];
|
||||||
|
memset( argument_list, 0, 16 );
|
||||||
|
|
||||||
|
if(args != NULL)
|
||||||
|
for( i = 0; i < 16; i ++ ) argument_list[i] = args[i];
|
||||||
|
|
||||||
if( arglen <= 0 )
|
if( arglen <= 0 )
|
||||||
{/*
|
{
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,
|
|
||||||
"(VIMS) Network %03d: '%s' (defaults)",
|
|
||||||
net_id,
|
|
||||||
vj_event_list[id].name
|
|
||||||
);*/
|
|
||||||
|
|
||||||
vj_event_trigger_function(
|
vj_event_trigger_function(
|
||||||
(void*)v,
|
(void*)v,
|
||||||
net_list[net_id].act,
|
net_list[net_id].act,
|
||||||
@@ -1282,27 +1240,19 @@ void vj_event_fire_net_event(veejay_t *v, int net_id, char *str_arg, int *args,
|
|||||||
vj_event_list[id].args[0],
|
vj_event_list[id].args[0],
|
||||||
vj_event_list[id].args[1]
|
vj_event_list[id].args[1]
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( str_arg != NULL && vj_event_list[id].format[1] == 's' )
|
if( str_arg != NULL && vj_event_list[id].format[1] == 's' )
|
||||||
{
|
{
|
||||||
char *str = strdup( str_arg);
|
char *str = strdup( str_arg);
|
||||||
veejay_msg(VEEJAY_MSG_DEBUG,
|
|
||||||
"(VIMS) Network %03d: '%s' [%s]",
|
|
||||||
net_id,
|
|
||||||
vj_event_list[id].name,
|
|
||||||
str_arg
|
|
||||||
);
|
|
||||||
|
|
||||||
for(i=0; i < 16; i++)
|
|
||||||
{
|
|
||||||
argument_list[i] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
_last_known_num_args = vj_event_list[id].num_params;
|
_last_known_num_args = vj_event_list[id].num_params;
|
||||||
|
|
||||||
|
veejay_msg(VEEJAY_MSG_DEBUG, "(VIMS) Network %04d: [%s] [%d][%d][%d][%d] ...",
|
||||||
|
net_id, vj_event_list[id].name, str_arg, argument_list[0],argument_list[1],
|
||||||
|
argument_list[2],argument_list[3]);
|
||||||
|
|
||||||
vj_event_trigger_function(
|
vj_event_trigger_function(
|
||||||
(void*) v,
|
(void*) v,
|
||||||
net_list[net_id].act,
|
net_list[net_id].act,
|
||||||
@@ -1352,16 +1302,6 @@ void vj_event_fire_net_event(veejay_t *v, int net_id, char *str_arg, int *args,
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i=0; i < arglen; i++)
|
|
||||||
{
|
|
||||||
argument_list[i] = args[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i=arglen; i < 16; i++)
|
|
||||||
{
|
|
||||||
argument_list[i] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_last_known_num_args = vj_event_list[id].num_params;
|
_last_known_num_args = vj_event_list[id].num_params;
|
||||||
@@ -3184,201 +3124,6 @@ void vj_event_clip_load_list(void *ptr, const char format[], va_list ap)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vj_event_clip_his_play_entry(void *ptr, const char format[], va_list ap)
|
|
||||||
{
|
|
||||||
int args[2];
|
|
||||||
veejay_t *v = (veejay_t *)ptr;
|
|
||||||
char *str = NULL;
|
|
||||||
P_A(args,str,format,ap);
|
|
||||||
if(args[0] == 0 )
|
|
||||||
{
|
|
||||||
args[0] = v->uc->clip_id;
|
|
||||||
}
|
|
||||||
if(args[0] == -1) args[0] = clip_size()-1;
|
|
||||||
|
|
||||||
if( clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
if( clip_set_render_entry(args[0],args[1]) )
|
|
||||||
{
|
|
||||||
veejay_set_clip(v, args[0]);
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Playing render entry %d of clip %d", args[1],args[0]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot set render entry to %d for clip %d",args[1],args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_no_clip(args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_event_clip_his_lock_entry(void *ptr, const char format[], va_list ap)
|
|
||||||
{
|
|
||||||
int args[2];
|
|
||||||
veejay_t *v= (veejay_t*)ptr;
|
|
||||||
char *s = NULL;
|
|
||||||
P_A(args,s,format,ap);
|
|
||||||
if(args[0] == 0 )
|
|
||||||
{
|
|
||||||
args[0] = v->uc->clip_id;
|
|
||||||
}
|
|
||||||
if(args[0] == -1) args[0] = clip_size()-1;
|
|
||||||
|
|
||||||
if( clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
if( clip_entry_set_is_rendering( args[0] , args[0] , 1))
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Locking render entry %d of clip %d",
|
|
||||||
args[1],args[0]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot lock render entry %d of clip %d",args[1],args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_no_clip(args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_event_clip_his_unlock_entry(void *ptr, const char format[],va_list ap)
|
|
||||||
{
|
|
||||||
int args[2];
|
|
||||||
veejay_t *v = (veejay_t*)ptr;
|
|
||||||
char *s = NULL;
|
|
||||||
P_A(args,s,format,ap);
|
|
||||||
|
|
||||||
if(args[0] == 0 )
|
|
||||||
{
|
|
||||||
args[0] = v->uc->clip_id;
|
|
||||||
}
|
|
||||||
if(args[0] == -1) args[0] = clip_size()-1;
|
|
||||||
|
|
||||||
if( clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
if(clip_entry_set_is_rendering( args[0],args[1],0))
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Unlocking render entry %d of clip %d",
|
|
||||||
args[1],args[0]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot unlock render entry %d of clip %d",args[1],args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_no_clip(args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_event_clip_his_del_entry(void *ptr, const char format[], va_list ap)
|
|
||||||
{
|
|
||||||
veejay_t *v = (veejay_t*)ptr;
|
|
||||||
int args[2];
|
|
||||||
char *s = NULL;
|
|
||||||
P_A(args,s,format,ap);
|
|
||||||
if(args[0] == 0 )
|
|
||||||
{
|
|
||||||
args[0] = v->uc->clip_id;
|
|
||||||
}
|
|
||||||
if(args[0] == -1) args[0] = clip_size()-1;
|
|
||||||
|
|
||||||
if(clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
if(args[1] >= 0 && args[1] < CLIP_MAX_RENDER)
|
|
||||||
{
|
|
||||||
int s,e;
|
|
||||||
int ds = clip_get_startFrame(args[0]);
|
|
||||||
int de = clip_get_endFrame(args[0]);
|
|
||||||
if( clip_set_render_entry(args[0],0) )
|
|
||||||
{
|
|
||||||
s = clip_get_startFrame(args[0]);
|
|
||||||
e = clip_get_endFrame(args[0]);
|
|
||||||
|
|
||||||
if( clip_set_render_entry(args[0], args[1]) &&
|
|
||||||
clip_set_startframe(args[0],s) &&
|
|
||||||
clip_set_endframe(args[0],e) )
|
|
||||||
{
|
|
||||||
|
|
||||||
if( veejay_edit_delete(v, ds,de) )
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Deleted rendered editlist frames from entry %d of clip %d",args[1],args[0]);
|
|
||||||
v->uc->render_changed = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR,"Unable to delete frames %d-%d from EditList",ds,de);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannnot update clip %d 's render history entry %d with %d - %d",
|
|
||||||
args[0],args[1],s,e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot set Clip %d 's render entry to %d", args[0],args[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_no_clip(args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_event_clip_his_entry_to_new(void *ptr, const char format[],va_list ap)
|
|
||||||
{
|
|
||||||
veejay_t *v = (veejay_t*)ptr;
|
|
||||||
int args[2];
|
|
||||||
char *s = NULL;
|
|
||||||
P_A(args,s,format,ap);
|
|
||||||
|
|
||||||
if(args[0] == 0 )
|
|
||||||
{
|
|
||||||
args[0] = v->uc->clip_id;
|
|
||||||
}
|
|
||||||
if(args[0] == -1) args[0] = clip_size()-1;
|
|
||||||
if(clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
int s,e;
|
|
||||||
clip_info *skel;
|
|
||||||
clip_set_render_entry(args[0], args[1]);
|
|
||||||
|
|
||||||
s = clip_get_startFrame( args[0] );
|
|
||||||
e = clip_get_endFrame(args[0]);
|
|
||||||
if(args[1] == 0)
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "This clip cannot be moved to a new clip");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* move to original */
|
|
||||||
clip_set_render_entry(args[0] , 0);
|
|
||||||
skel = clip_skeleton_new( s,e);
|
|
||||||
if( clip_store(skel) == 0)
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Moved rendered entry to new clip %d", clip_size()-1);
|
|
||||||
clip_set_looptype(skel->clip_id, clip_get_looptype(args[0]));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot store newly created clip !");
|
|
||||||
}
|
|
||||||
v->uc->render_changed = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_no_clip(args[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_event_clip_ren_start ( void *ptr, const char format[], va_list ap )
|
void vj_event_clip_ren_start ( void *ptr, const char format[], va_list ap )
|
||||||
{
|
{
|
||||||
veejay_t *v = (veejay_t*) ptr;
|
veejay_t *v = (veejay_t*) ptr;
|
||||||
@@ -5611,45 +5356,6 @@ void vj_event_el_add_video_clip(void *ptr, const char format[], va_list ap)
|
|||||||
veejay_msg(VEEJAY_MSG_ERROR, "Appended file %s to EditList",str);
|
veejay_msg(VEEJAY_MSG_ERROR, "Appended file %s to EditList",str);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
void vj_event_el_add_video_his(void *ptr, const char format[], va_list ap)
|
|
||||||
{
|
|
||||||
veejay_t *v = (veejay_t*)ptr;
|
|
||||||
int start = -1;
|
|
||||||
int destination = v->edit_list->video_frames-1;
|
|
||||||
char str[1024];
|
|
||||||
int args[4]; /* clip_id, len, entry, file */
|
|
||||||
P_A(args,str,format,ap);
|
|
||||||
|
|
||||||
if ( !clip_exists(args[0]))
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Clip %d does not exist",args[0]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ( args[2] < 0 || args[2] >= CLIP_MAX_RENDER)
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Invalid render entry %d given",args[2]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ( veejay_edit_addmovie(v,str,start,destination,destination))
|
|
||||||
{
|
|
||||||
int start_pos = destination;
|
|
||||||
int end_pos = (args[1]==0 ? v->edit_list->video_frames-1 : destination+args[1]);
|
|
||||||
int cs = clip_get_render_entry( args[0] );
|
|
||||||
clip_set_render_entry( args[0], args[2] );
|
|
||||||
clip_set_startframe( args[0], start_pos );
|
|
||||||
clip_set_endframe( args[0], end_pos);
|
|
||||||
clip_set_render_entry( args[0], cs );
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "Clip %d R[%d,%d] added on Entry %d (%ld frames)",
|
|
||||||
args[0],start_pos,end_pos,args[2],v->edit_list->video_frames-1);
|
|
||||||
v->uc->render_changed = 1;
|
|
||||||
clip_entry_set_is_rendering( args[0], args[2], 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
veejay_msg(VEEJAY_MSG_ERROR, "Cannot add file %s to EditList",str);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vj_event_tag_del(void *ptr, const char format[] , va_list ap )
|
void vj_event_tag_del(void *ptr, const char format[] , va_list ap )
|
||||||
|
|||||||
@@ -72,15 +72,18 @@ void vj_osc_cb_skip_to_start(void *context, int arglen, const void *vargs, OSCTi
|
|||||||
void vj_osc_cb_skip_to_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_skip_to_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_set_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_set_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_set_slow(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_set_slow(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_plain_mode( void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra );
|
||||||
void vj_osc_cb_next_second(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_next_second(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_prev_second(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_prev_second(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_next_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_next_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_prev_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_prev_frame(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_new_clip(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_new_clip(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_copy_clip(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_select_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_select_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_select_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_select_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_del(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_del(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_select_clip(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_select_clip(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_clip_set_jitter(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_set_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_set_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_set_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_set_end(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_set_dup(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_set_dup(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
@@ -90,6 +93,9 @@ void vj_osc_cb_clip_set_marker(void *context, int arglen, const void *vargs, OSC
|
|||||||
void vj_osc_cb_clip_clear_marker(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_clear_marker(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_record_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_record_start(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_clip_record_stop(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_clip_record_stop(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_record_format(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_clip_his_render(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_clip_his_play(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_chain_clear(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_chain_clear(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_chain_entry_disable_video(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_chain_entry_disable_video(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_chain_entry_enable_video(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_chain_entry_enable_video(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
@@ -116,6 +122,7 @@ void vj_osc_cb_tag_record_stop(void *context, int arglen, const void *vargs, OSC
|
|||||||
void vj_osc_cb_tag_select(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_tag_select(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_chain_add(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_chain_add(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_chain_preset(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_chain_preset(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_chain_toggle_all(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_set_parameter0(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_set_parameter0(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_set_parameter1(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_set_parameter1(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_set_parameter2(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_set_parameter2(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
@@ -129,11 +136,34 @@ void vj_osc_cb_set_parameter8(void *context, int arglen, const void *vargs, OSCT
|
|||||||
void vj_osc_cb_tag_new_v4l(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_tag_new_v4l(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
#endif
|
#endif
|
||||||
void vj_osc_cb_tag_new_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_tag_new_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
|
||||||
|
void vj_osc_cb_tag_new_net(void *context, int arglen, const void *vargs, OSCTimeTag when,NetworkReturnAddressPtr ra );
|
||||||
|
|
||||||
|
void vj_osc_cb_tag_new_mcast(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra );
|
||||||
|
|
||||||
|
void vj_osc_cb_tag_new_avformat(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
|
||||||
void vj_osc_cb_load_cliplist(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_load_cliplist(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_save_cliplist(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_save_cliplist(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_output_start_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_output_start_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_output_stop_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
void vj_osc_cb_output_stop_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
void vj_osc_cb_save_editlist(void *context, int arglen, const void *vargs,OSCTimeTag when, NetworkReturnAddressPtr ra);
|
#ifdef HAVE_SDL
|
||||||
|
void vj_osc_cb_resize( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra );
|
||||||
|
void vj_osc_cb_fullscreen(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
#endif
|
||||||
|
void vj_osc_cb_screenshot(void *context, int arglen, const void *vargs,OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_sampling(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_bezerk(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_verbose(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_paste_at(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_copy(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_del(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_crop(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_cut(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_add(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_save(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
void vj_osc_cb_el_load(void *context,int arglen,const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra);
|
||||||
|
|
||||||
|
|
||||||
void vj_osc_set_veejay_t(veejay_t *t);
|
void vj_osc_set_veejay_t(veejay_t *t);
|
||||||
|
|
||||||
@@ -250,6 +280,7 @@ void *_vj_osc_rt_malloc(int num_bytes) {
|
|||||||
{\
|
{\
|
||||||
int arg[4];\
|
int arg[4];\
|
||||||
int arguments[16];\
|
int arguments[16];\
|
||||||
|
memset(arguments,0,16);\
|
||||||
arguments[1] = -1;\
|
arguments[1] = -1;\
|
||||||
arguments[2] = d;\
|
arguments[2] = d;\
|
||||||
arguments[3] = arg[0];\
|
arguments[3] = arg[0];\
|
||||||
@@ -265,11 +296,26 @@ printf("SNET: [%s]\n",str);\
|
|||||||
vj_event_fire_net_event(osc_info, c, str,NULL, 1);\
|
vj_event_fire_net_event(osc_info, c, str,NULL, 1);\
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SDNET_F( a,b,c )\
|
||||||
|
{\
|
||||||
|
char str[OSC_STRING_SIZE];\
|
||||||
|
int args[16];\
|
||||||
|
int __a = 0;\
|
||||||
|
int __n = vj_osc_parse_char_arguments(a,b,str);\
|
||||||
|
memset( args,0,16 );\
|
||||||
|
str[__n] = '\0';\
|
||||||
|
__a = vj_osc_parse_int_arguments( a - __n , b + __n, args );\
|
||||||
|
vj_event_fire_net_event(osc_info, c, str,args, 2);\
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define NET_F(a,b,c)\
|
#define NET_F(a,b,c)\
|
||||||
{\
|
{\
|
||||||
int arguments[16];\
|
int arguments[16];\
|
||||||
int num_arg = vj_osc_parse_int_arguments(a,b,arguments);\
|
int num_arg = vj_osc_parse_int_arguments(a,b,arguments);\
|
||||||
|
memset(arguments,0,16);\
|
||||||
vj_event_fire_net_event( osc_info, c, NULL,arguments, num_arg );\
|
vj_event_fire_net_event( osc_info, c, NULL,arguments, num_arg );\
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,6 +331,7 @@ int c_a = vj_osc_count_int_arguments(a,b);\
|
|||||||
int num_arg = vj_event_get_num_args(c);\
|
int num_arg = vj_event_get_num_args(c);\
|
||||||
int arguments[16];\
|
int arguments[16];\
|
||||||
int n_a;\
|
int n_a;\
|
||||||
|
memset(arguments,0,16);\
|
||||||
if(c_a >= 0 && c != NET_CHAIN_ENTRY_SET_PRESET) {\
|
if(c_a >= 0 && c != NET_CHAIN_ENTRY_SET_PRESET) {\
|
||||||
if( (num_arg-1) == c_a ) {\
|
if( (num_arg-1) == c_a ) {\
|
||||||
arguments[0]=0;\
|
arguments[0]=0;\
|
||||||
@@ -312,6 +359,7 @@ if(c_a >= 0 && c == NET_CHAIN_ENTRY_SET_PRESET) {\
|
|||||||
int c_a = vj_osc_count_int_arguments(a,b);\
|
int c_a = vj_osc_count_int_arguments(a,b);\
|
||||||
int num_arg = vj_event_get_num_args(c);\
|
int num_arg = vj_event_get_num_args(c);\
|
||||||
int arguments[16];\
|
int arguments[16];\
|
||||||
|
memset(arguments,0,16);\
|
||||||
if(c_a == 0) {\
|
if(c_a == 0) {\
|
||||||
arguments[0]=-1;\
|
arguments[0]=-1;\
|
||||||
vj_event_fire_net_event( osc_info,c, NULL,arguments,num_arg );\
|
vj_event_fire_net_event( osc_info,c, NULL,arguments,num_arg );\
|
||||||
@@ -323,11 +371,45 @@ vj_event_fire_net_event(osc_info,c,NULL,arguments,c_a); }\
|
|||||||
}\
|
}\
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void vj_osc_cb_el_add_clip(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_el_add_clip(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
SNET_F(arglen, vargs, NET_EDITLIST_ADD_CLIP);
|
SNET_F(arglen, vargs, NET_EDITLIST_ADD_CLIP);
|
||||||
}
|
}
|
||||||
|
void vj_osc_cb_el_load(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SNET_F(arglen, vargs, NET_EDITLIST_LOAD);
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_save(void *context, int arglen , const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SNET_F(arglen, vargs, NET_EDITLIST_SAVE);
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_add(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
SNET_F(arglen, vargs, NET_EDITLIST_ADD );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_cut(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_EDITLIST_CUT );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_crop(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_EDITLIST_CROP );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_del(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_EDITLIST_DEL );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_copy(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_EDITLIST_COPY );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_el_paste_at( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_EDITLIST_PASTE_AT);
|
||||||
|
}
|
||||||
|
|
||||||
/* /video/playforward */
|
/* /video/playforward */
|
||||||
void vj_osc_cb_play_forward(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_play_forward(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
@@ -390,6 +472,12 @@ void vj_osc_cb_set_slow(void *context, int arglen, const void *vargs, OSCTimeTag
|
|||||||
NET_F(arglen,vargs,NET_VIDEO_SET_SLOW);
|
NET_F(arglen,vargs,NET_VIDEO_SET_SLOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vj_osc_cb_plain_mode(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F( arglen,vargs,NET_SET_PLAIN_MODE );
|
||||||
|
}
|
||||||
|
|
||||||
void vj_osc_cb_next_second(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_next_second(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -420,6 +508,11 @@ void vj_osc_cb_new_clip(void *context, int arglen, const void *vargs, OSCTimeTag
|
|||||||
NET_F(arglen, vargs, NET_CLIP_NEW);
|
NET_F(arglen, vargs, NET_CLIP_NEW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vj_osc_cb_copy_clip(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_CLIP_COPY );
|
||||||
|
}
|
||||||
|
|
||||||
void vj_osc_cb_select_start(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_select_start(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
@@ -446,7 +539,10 @@ void vj_osc_cb_select_clip(void *context, int arglen, const void *vargs, OSCTime
|
|||||||
{
|
{
|
||||||
DSNET_F(arglen, vargs, NET_CLIP_SELECT);
|
DSNET_F(arglen, vargs, NET_CLIP_SELECT);
|
||||||
}
|
}
|
||||||
|
void vj_osc_cb_clip_set_jitter(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
DNET_F(arglen, vargs, NET_CLIP_UPDATE );
|
||||||
|
}
|
||||||
void vj_osc_cb_clip_set_start(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_clip_set_start(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -470,6 +566,14 @@ void vj_osc_cb_clip_set_speed(void *context, int arglen, const void *vargs, OSCT
|
|||||||
{
|
{
|
||||||
DNET_F(arglen, vargs,NET_CLIP_SET_SPEED);
|
DNET_F(arglen, vargs,NET_CLIP_SET_SPEED);
|
||||||
}
|
}
|
||||||
|
void vj_osc_cb_clip_his_render(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
DNET_F(arglen, vargs, NET_CLIP_RENDER_TO );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_clip_his_play(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
DNET_F(arglen, vargs, NET_CLIP_RENDER_SELECT );
|
||||||
|
}
|
||||||
|
|
||||||
void vj_osc_cb_clip_set_looptype(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_clip_set_looptype(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
@@ -494,7 +598,10 @@ void vj_osc_cb_clip_record_start(void *context, int arglen, const void *vargs, O
|
|||||||
{
|
{
|
||||||
NET_F(arglen,vargs,NET_CLIP_REC_START);
|
NET_F(arglen,vargs,NET_CLIP_REC_START);
|
||||||
}
|
}
|
||||||
|
void vj_osc_cb_record_format(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SNET_F(arglen, vargs, NET_RECORD_DATAFORMAT );
|
||||||
|
}
|
||||||
void vj_osc_cb_clip_record_stop(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_clip_record_stop(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -524,7 +631,10 @@ void vj_osc_cb_chain_entry_disable_audio(void *context, int arglen, const void *
|
|||||||
{
|
{
|
||||||
DNET_F(arglen,vargs,NET_CHAIN_ENTRY_SET_VIDEO_OFF);
|
DNET_F(arglen,vargs,NET_CHAIN_ENTRY_SET_VIDEO_OFF);
|
||||||
}
|
}
|
||||||
|
void vj_osc_cb_chain_toggle_all(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
DNET_F(arglen,vargs,NET_CHAIN_TOGGLE_ALL);
|
||||||
|
}
|
||||||
void vj_osc_cb_chain_entry_enable_audio(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_chain_entry_enable_audio(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -721,6 +831,22 @@ void vj_osc_cb_tag_new_v4l(void *context, int arglen, const void *vargs, OSCTime
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void vj_osc_cb_tag_new_net(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SDNET_F(arglen,vargs,NET_TAG_NEW_NET);
|
||||||
|
}
|
||||||
|
void vj_osc_cb_tag_new_mcast(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
SDNET_F(arglen,vargs,NET_TAG_NEW_MCAST);
|
||||||
|
}
|
||||||
|
void vj_osc_cb_tag_new_avformat(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SNET_F(arglen,vargs,NET_TAG_NEW_AVFORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
void vj_osc_cb_tag_new_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
void vj_osc_cb_tag_new_y4m(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
NetworkReturnAddressPtr ra)
|
NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -739,12 +865,6 @@ void vj_osc_cb_save_cliplist(void *context, int arglen, const void *vargs,
|
|||||||
SNET_F(arglen,vargs,NET_CLIP_SAVE_CLIPLIST);
|
SNET_F(arglen,vargs,NET_CLIP_SAVE_CLIPLIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vj_osc_cb_save_editlist(void *context, int arglen, const void *vargs,
|
|
||||||
OSCTimeTag when, NetworkReturnAddressPtr ra)
|
|
||||||
{
|
|
||||||
SNET_F(arglen,vargs,NET_EDITLIST_SAVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void vj_osc_cb_output_start_y4m(void *context, int arglen, const void *vargs,
|
void vj_osc_cb_output_start_y4m(void *context, int arglen, const void *vargs,
|
||||||
OSCTimeTag when, NetworkReturnAddressPtr ra)
|
OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
{
|
{
|
||||||
@@ -757,6 +877,33 @@ void vj_osc_cb_output_stop_y4m(void *context, int arglen, const void *vargs,
|
|||||||
SNET_F(arglen,vargs,NET_OUTPUT_Y4M_STOP);
|
SNET_F(arglen,vargs,NET_OUTPUT_Y4M_STOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_SDL
|
||||||
|
void vj_osc_cb_resize(void *context, int arglen, const void *vargs, OSCTimeTag when,
|
||||||
|
NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
NET_F( arglen, vargs, NET_RESIZE_SDL_SCREEN );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_fullscreen(void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F( arglen, vargs, NET_FULLSCREEN );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
void vj_osc_cb_screenshot( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
SNET_F(arglen, vargs, NET_SCREENSHOT);
|
||||||
|
}
|
||||||
|
void vj_osc_cb_sampling( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F(arglen, vargs, NET_SAMPLE_MODE );
|
||||||
|
}
|
||||||
|
void vj_osc_cb_verbose( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra)
|
||||||
|
{
|
||||||
|
NET_F( arglen, vargs, NET_DEBUG_LEVEL )
|
||||||
|
}
|
||||||
|
void vj_osc_cb_bezerk( void *context, int arglen, const void *vargs, OSCTimeTag when, NetworkReturnAddressPtr ra )
|
||||||
|
{
|
||||||
|
NET_F( arglen, vargs, NET_BEZERK );
|
||||||
|
}
|
||||||
/* initialize the pointer to veejay_t */
|
/* initialize the pointer to veejay_t */
|
||||||
|
|
||||||
void vj_osc_set_veejay_t(veejay_t *info) {
|
void vj_osc_set_veejay_t(veejay_t *info) {
|
||||||
@@ -781,69 +928,144 @@ static struct
|
|||||||
int leave;
|
int leave;
|
||||||
} osc_methods[] =
|
} osc_methods[] =
|
||||||
{
|
{
|
||||||
{ "/video/play", "play", vj_osc_cb_play_forward, 0 },
|
{ "play foward", "play", vj_osc_cb_play_forward, 0 },
|
||||||
{ "/video/reverse", "reverse", vj_osc_cb_play_backward, 0 },
|
{ "play reverse", "reverse", vj_osc_cb_play_backward, 0 },
|
||||||
{ "/video/pause", "pause", vj_osc_cb_stop, 0 },
|
{ "pause", "pause", vj_osc_cb_stop, 0 },
|
||||||
{ "/video/speed", "speed", vj_osc_cb_set_speed, 0 },
|
{ "speed ( < 0 = reverse, > 0 = forward)",
|
||||||
{ "/video/slow", "slow", vj_osc_cb_set_dup, 0 },
|
"speed", vj_osc_cb_set_speed, 0 },
|
||||||
{ "/video/goto_start", "goto_start", vj_osc_cb_skip_to_start, 0 },
|
{ "slow", "slow", vj_osc_cb_set_dup, 0 },
|
||||||
{ "/video/goto_end", "goto_end", vj_osc_cb_skip_to_end, 0 },
|
{ "goto start", "goto_start", vj_osc_cb_skip_to_start, 0 },
|
||||||
{ "/video/set_frame", "set_frame", vj_osc_cb_set_frame, 0 },
|
{ "goto end", "goto_end", vj_osc_cb_skip_to_end, 0 },
|
||||||
{ "/video/prev_frame", "prev_frame", vj_osc_cb_prev_frame, 0 },
|
{ "set frame <pos>", "set_frame", vj_osc_cb_set_frame, 0 },
|
||||||
{ "/video/next_frame", "next_frame", vj_osc_cb_next_frame, 0 },
|
{ "set previous frame", "prev_frame", vj_osc_cb_prev_frame, 0 },
|
||||||
{ "/video/next_second", "next_second", vj_osc_cb_next_second, 0 },
|
{ "set next frame", "next_frame", vj_osc_cb_next_frame, 0 },
|
||||||
{ "/video/prev_second", "prev_second", vj_osc_cb_prev_second, 0 },
|
{ "set next second", "next_second", vj_osc_cb_next_second, 0 },
|
||||||
|
{ "set previous second", "prev_second", vj_osc_cb_prev_second, 0 },
|
||||||
{ "/clip/new", "new", vj_osc_cb_new_clip, 1 },
|
{ "play plain video", "plain", vj_osc_cb_plain_mode, 0 },
|
||||||
{ "/clip/del", "del", vj_osc_cb_clip_del, 1 },
|
{ "create new clip <pos start> <pos end>",
|
||||||
{ "/clip/select", "select", vj_osc_cb_select_clip, 1 },
|
"new", vj_osc_cb_new_clip, 1 },
|
||||||
{ "/clip/goto_start", "goto_start", vj_osc_cb_select_start, 1 },
|
{ "copy clip <num> as new clip",
|
||||||
{ "/clip/goto_end", "goto_end", vj_osc_cb_select_end, 1 },
|
"copy", vj_osc_cb_copy_clip, 1 },
|
||||||
{ "/clip/set/start", "start", vj_osc_cb_clip_set_start, 13 },
|
{ "delete clip <num>", "del", vj_osc_cb_clip_del, 1 },
|
||||||
{ "/clip/set/end", "end", vj_osc_cb_clip_set_end, 13 },
|
{ "select and play clip <num>",
|
||||||
{ "/clip/set/looptype", "looptype", vj_osc_cb_clip_set_looptype, 13 },
|
"select", vj_osc_cb_select_clip, 1 },
|
||||||
{ "/clip/set/speed", "speed", vj_osc_cb_clip_set_speed, 13 },
|
{ "goto clip starting position",
|
||||||
{ "/clip/set/marker", "marker", vj_osc_cb_clip_set_marker, 13 },
|
"goto_start", vj_osc_cb_select_start, 1 },
|
||||||
{ "/clip/set/slow", "slow", vj_osc_cb_clip_set_dup, 13 },
|
{ "goto clip ending position",
|
||||||
{ "/clip/set/nomarker", "nomarker", vj_osc_cb_clip_clear_marker, 13 },
|
"goto_end", vj_osc_cb_select_end, 1 },
|
||||||
{ "/clip/rec/start", "start", vj_osc_cb_clip_record_start, 14 },
|
{ "relative start/end position update <pos1> <pos2>",
|
||||||
{ "/clip/rec/stop", "stop", vj_osc_cb_clip_record_stop, 14 },
|
"jitter", vj_osc_cb_clip_set_jitter, 13 },
|
||||||
|
{ "set clip new starting position <pos>",
|
||||||
{ "/stream/select", "select", vj_osc_cb_tag_select, 2 },
|
"start", vj_osc_cb_clip_set_start, 13 },
|
||||||
|
{ "set clip new ending position <pos>",
|
||||||
|
"end", vj_osc_cb_clip_set_end, 13 },
|
||||||
|
{ "clip set looptype <0 = none, 1 = normal, 2 = bounce>",
|
||||||
|
"looptype", vj_osc_cb_clip_set_looptype, 13 },
|
||||||
|
{ "clip set playback speed <num>",
|
||||||
|
"speed", vj_osc_cb_clip_set_speed, 13 },
|
||||||
|
{ "clip set marker <pos1> <pos2>",
|
||||||
|
"marker", vj_osc_cb_clip_set_marker, 13 },
|
||||||
|
{ "clip set frame duplicate <num>",
|
||||||
|
"slow", vj_osc_cb_clip_set_dup, 13 },
|
||||||
|
{ "clip delete marker",
|
||||||
|
"nomarker", vj_osc_cb_clip_clear_marker, 13 },
|
||||||
|
{ "clip start recording <0=entire clip, N=num frames> <0=dont play 1=play>",
|
||||||
|
"start", vj_osc_cb_clip_record_start, 14 },
|
||||||
|
{ "clip stop recording", "stop", vj_osc_cb_clip_record_stop, 14 },
|
||||||
|
{ "clip set recorder format (mjpeg,mpeg4,dv,divx,yv12,yv16)",
|
||||||
|
"format", vj_osc_cb_record_format, 14 },
|
||||||
|
{ "clip render new entry <num>",
|
||||||
|
"render", vj_osc_cb_clip_his_render, 15 },
|
||||||
|
{ "clip play rendered entry <num>",
|
||||||
|
"play", vj_osc_cb_clip_his_play, 15 },
|
||||||
|
{ "stream select and play <num>",
|
||||||
|
"select", vj_osc_cb_tag_select, 2 },
|
||||||
#ifdef HAVE_V4L
|
#ifdef HAVE_V4L
|
||||||
{ "/stream/new/v4l", "v4l", vj_osc_cb_tag_new_v4l, 19 },
|
{ "new video4linux input stream <device num> <channel num>",
|
||||||
|
"v4l", vj_osc_cb_tag_new_v4l, 19 },
|
||||||
#endif
|
#endif
|
||||||
{ "/stream/new/y4m", "y4m", vj_osc_cb_tag_new_y4m, 19 },
|
{ "new yuv4mpeg input stream <filename>",
|
||||||
// { "/stream/new/avformat", "avformat", vj_osc_cb_tag_new_avformat, 19 },
|
"y4m", vj_osc_cb_tag_new_y4m, 19 },
|
||||||
|
{ "new ffmpeg input stream <filename>",
|
||||||
|
"avformat", vj_osc_cb_tag_new_avformat, 19 },
|
||||||
|
{ "new multicast input stream <address> <port>",
|
||||||
|
"mcast", vj_osc_cb_tag_new_mcast, 19 },
|
||||||
|
{ "new peer-to-peer input stream <hostname> <port>",
|
||||||
|
"net", vj_osc_cb_tag_new_net, 19 },
|
||||||
|
|
||||||
{ "/stream/rec/o_start", "o_start", vj_osc_cb_tag_record_offline_start, 16 },
|
{ "hidden record from stream <num frames> <autoplay bool>",
|
||||||
{ "/stream/rec/o_stop", "o_stop", vj_osc_cb_tag_record_offline_stop, 16 },
|
"o_start", vj_osc_cb_tag_record_offline_start, 16 },
|
||||||
{ "/stream/rec/start", "start", vj_osc_cb_tag_record_start, 16 },
|
{ "stop hidden recording ", "o_stop", vj_osc_cb_tag_record_offline_stop, 16 },
|
||||||
{ "/stream/rec/stop", "stop", vj_osc_cb_tag_record_stop, 16 },
|
{ "start stream recorder <num frames> <autoplay bool>",
|
||||||
|
"start", vj_osc_cb_tag_record_start, 16 },
|
||||||
|
{ "stop stream recorder ", "stop", vj_osc_cb_tag_record_stop, 16 },
|
||||||
|
{ "set stream recorder format (mjpeg,divx,dv,yv12,yv16,mpeg4)",
|
||||||
|
"format", vj_osc_cb_record_format, 16 },
|
||||||
|
{ "Effect chain clear", "reset", vj_osc_cb_chain_clear, 4 },
|
||||||
|
{ "Fade in effect chain <num frames>",
|
||||||
|
"fade_in" , vj_osc_cb_chain_fade_in, 4 },
|
||||||
|
{ "Fade out effect chain <num frames>",
|
||||||
|
"fade_out", vj_osc_cb_chain_fade_out, 4 },
|
||||||
|
{ "Effect chain enabled", "enable", vj_osc_cb_chain_enable, 4 },
|
||||||
|
{ "Effect chain disabled", "disable", vj_osc_cb_chain_disable, 4 },
|
||||||
|
{ "Manual Fader (0=A 255=B",
|
||||||
|
"opacity", vj_osc_cb_chain_manual_fade, 4 },
|
||||||
|
{ "All Effect chains on/off (1/0)",
|
||||||
|
"global_fx", vj_osc_cb_chain_toggle_all, 4 },
|
||||||
|
{ "Disable effect chain entry <num>",
|
||||||
|
"disable", vj_osc_cb_chain_entry_disable_video,9 },
|
||||||
|
{ "Enable effect chain entry <num>",
|
||||||
|
"enable", vj_osc_cb_chain_entry_enable_video, 9 },
|
||||||
|
{ "Clear effect chain entry <num>",
|
||||||
|
"clear", vj_osc_cb_chain_entry_del, 9 },
|
||||||
|
{ "Select effect chain entry <num>",
|
||||||
|
"select", vj_osc_cb_chain_entry_select, 9 },
|
||||||
|
{ "Set effect default values on chain entry <num>",
|
||||||
|
"defaults", vj_osc_cb_chain_entry_default, 9 },
|
||||||
|
{ "Preset an effect on chain entry",
|
||||||
|
"preset", vj_osc_cb_chain_entry_preset, 9 },
|
||||||
|
// { "/entry/set", "set", vj_osc_cb_chain_entry_set, 9 },
|
||||||
|
{ "Select channel <num> for mixing effect on entry <num>",
|
||||||
|
"channel", vj_osc_cb_chain_entry_channel, 9 },
|
||||||
|
{ "Select source (0=clip,1=stream) for mixing effect on entry <num>",
|
||||||
|
"source", vj_osc_cb_chain_entry_source, 9 },
|
||||||
|
|
||||||
{ "/chain/reset", "reset", vj_osc_cb_chain_clear, 4 },
|
{ "Set argument <num> to value <num> for effect on entry <num>",
|
||||||
{ "/chain/fade_in", "fade_in", vj_osc_cb_chain_fade_in, 4 },
|
"set", vj_osc_cb_chain_entry_set_arg_val, 8 },
|
||||||
{ "/chain/fade_out", "fade_out", vj_osc_cb_chain_fade_out, 4 },
|
|
||||||
{ "/chain/enable", "enable", vj_osc_cb_chain_enable, 4 },
|
|
||||||
{ "/chain/disable", "disable", vj_osc_cb_chain_disable, 4 },
|
|
||||||
{ "/chain/opacity", "opacity", vj_osc_cb_chain_manual_fade, 4 },
|
|
||||||
|
|
||||||
{ "/entry/disable", "disable", vj_osc_cb_chain_entry_disable_video, 9 },
|
|
||||||
{ "/entry/enable", "enable", vj_osc_cb_chain_entry_enable_video, 9 },
|
|
||||||
{ "/entry/del", "del", vj_osc_cb_chain_entry_del, 9 },
|
|
||||||
{ "/entry/select", "select", vj_osc_cb_chain_entry_select, 9 },
|
|
||||||
{ "/entry/defaults", "defaults", vj_osc_cb_chain_entry_default, 9 },
|
|
||||||
{ "/entry/preset", "preset", vj_osc_cb_chain_entry_preset, 9 },
|
|
||||||
{ "/entry/set", "set", vj_osc_cb_chain_entry_set, 9 },
|
|
||||||
{ "/entry/channel", "channel", vj_osc_cb_chain_entry_channel, 9 },
|
|
||||||
{ "/entry/source", "source", vj_osc_cb_chain_entry_source, 9 },
|
|
||||||
|
|
||||||
{ "/arg/set", "set", vj_osc_cb_chain_entry_set_arg_val, 8 },
|
|
||||||
|
|
||||||
|
|
||||||
{ "/cl/load", "load", vj_osc_cb_load_cliplist, 6 },
|
{ "Cliplist load <filename>", "load", vj_osc_cb_load_cliplist, 6 },
|
||||||
{ "/cl/save", "save", vj_osc_cb_save_cliplist, 6 },
|
{ "Cliplist save <filename>", "save", vj_osc_cb_save_cliplist, 6 },
|
||||||
{ "/el/add_clip", "add_clip", vj_osc_cb_el_add_clip, 7 },
|
{ "Editlist add filename (as new clip)","add_clip", vj_osc_cb_el_add_clip, 7 },
|
||||||
|
{ "EditList paste frames from buf at frame <num>",
|
||||||
|
"paste_at", vj_osc_cb_el_paste_at, 7 },
|
||||||
|
{ "EditList copy frames <n1> to <n2> to buffer",
|
||||||
|
"copy", vj_osc_cb_el_copy, 7 },
|
||||||
|
{ "EditList delete frames <n1> to <n2>",
|
||||||
|
"del", vj_osc_cb_el_del, 7 },
|
||||||
|
{ "EditList crop frames 0 - <n1> <n2> - end",
|
||||||
|
"crop", vj_osc_cb_el_crop, 7 },
|
||||||
|
{ "EditList cut frames <n1> to <n2> into buffer",
|
||||||
|
"cut", vj_osc_cb_el_cut, 7 },
|
||||||
|
{ "EditList add file <filename>",
|
||||||
|
"add", vj_osc_cb_el_add, 7 },
|
||||||
|
{ "EditList save <filename>",
|
||||||
|
"save", vj_osc_cb_el_save, 7 },
|
||||||
|
{ "EditList load <filename>",
|
||||||
|
"load", vj_osc_cb_el_load, 7 },
|
||||||
|
#ifdef HAVE_SDL
|
||||||
|
{ "Resize SDL video window <width> <height>",
|
||||||
|
"resize", vj_osc_cb_resize, 10 },
|
||||||
|
{ "Toggle SDL video window fullscreen/windowed",
|
||||||
|
"fullscreen", vj_osc_cb_fullscreen, 10 },
|
||||||
|
#endif
|
||||||
|
{ "Dump current frame as JPG <filename>",
|
||||||
|
"screenshot", vj_osc_cb_screenshot, 10 },
|
||||||
|
{ "Configure sampling mode (linear=0 or triangle=1)",
|
||||||
|
"sampling", vj_osc_cb_sampling, 11 },
|
||||||
|
{ "Toggle verbose output mode",
|
||||||
|
"verbose", vj_osc_cb_verbose, 11 },
|
||||||
|
{ "Toggle bezerk mode", "bezerk", vj_osc_cb_bezerk, 11 },
|
||||||
{ NULL, NULL, NULL, 0 },
|
{ NULL, NULL, NULL, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -864,6 +1086,7 @@ static struct
|
|||||||
{ "/video/set", "set", 12, 0,0 },
|
{ "/video/set", "set", 12, 0,0 },
|
||||||
{ "/clip/set", "set", 13, 1,0 },
|
{ "/clip/set", "set", 13, 1,0 },
|
||||||
{ "/clip/rec", "rec", 14, 1,0 },
|
{ "/clip/rec", "rec", 14, 1,0 },
|
||||||
|
{ "/clip/his", "his", 15, 1,0 },
|
||||||
// { "/clip/chain", "chain", 15, 1,0 },
|
// { "/clip/chain", "chain", 15, 1,0 },
|
||||||
// { "/clip/entry", "entry", 18, 1,0 },
|
// { "/clip/entry", "entry", 18, 1,0 },
|
||||||
{ "/stream/rec", "rec", 16, 2,0 },
|
{ "/stream/rec", "rec", 16, 2,0 },
|
||||||
@@ -875,9 +1098,14 @@ static struct
|
|||||||
{ "/el", "el", 7, -1,0 },
|
{ "/el", "el", 7, -1,0 },
|
||||||
{ "/arg", "arg", 8, -1,0 },
|
{ "/arg", "arg", 8, -1,0 },
|
||||||
{ "/entry", "entry", 9, -1,0 },
|
{ "/entry", "entry", 9, -1,0 },
|
||||||
|
#ifdef HAVE_SDL
|
||||||
|
{ "/output", "output", 10, -1,0 },
|
||||||
|
#endif
|
||||||
|
{ "/config", "config", 11, -1,0 },
|
||||||
// { "<n>", "%d", 20, 9 ,20 },
|
// { "<n>", "%d", 20, 9 ,20 },
|
||||||
// { "<n>", "%d", 40, 8 ,10 },
|
// { "<n>", "%d", 40, 8 ,10 },
|
||||||
{ NULL, NULL, 0, -1,0 },
|
{ NULL, NULL, 0, -1,0 },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -1012,6 +1240,14 @@ vj_osc* vj_osc_allocate(int port_id) {
|
|||||||
|
|
||||||
void vj_osc_dump()
|
void vj_osc_dump()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"The OSC message space is a subset of VIMS");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"By default, the actions are applied on the current playing");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"video (clip/stream). This can be overriden by setting the");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"stream or clip number as first argument, followed by the arguments");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"required by the message.");
|
||||||
|
veejay_msg(VEEJAY_MSG_INFO,"For Chain commands, ditto, use second argument to identify the chain entry");
|
||||||
|
|
||||||
OSCPrintWholeAddressSpace();
|
OSCPrintWholeAddressSpace();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -225,6 +225,9 @@ int _vj_tag_new_net(vj_tag *tag, int stream_nr, int w, int h,int f, char *host,
|
|||||||
v = vj_tag_input->net[stream_nr];
|
v = vj_tag_input->net[stream_nr];
|
||||||
if(!v) return 0;
|
if(!v) return 0;
|
||||||
|
|
||||||
|
if(!vj_client_test(host,port))
|
||||||
|
return 0;
|
||||||
|
|
||||||
v->planes[0] = w * h;
|
v->planes[0] = w * h;
|
||||||
if( p == VIDEO_PALETTE_YUV420P )
|
if( p == VIDEO_PALETTE_YUV420P )
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user