Transcode http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/
@@ -791,6 +782,15 @@ you can use in combination with veejay.
There is a mailing list for veejay which is hosted by Sourceforge.
The address is veejay-users@lists.sourceforge.net
+
+
+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.
+Also, the developer lounge hosts a subversion code repository where you can
+find the 'on the bleeding edge' source codes of veejay.
+Many thanks to jaromil (author of FreeJ/Muse) and the Dyne Foundation for providing these tools
.
+
End of the Veejay HOWTO. (You can stop reading here.)
diff --git a/veejay-current/libOSC/OSC-receive.c b/veejay-current/libOSC/OSC-receive.c
index a49b787f..29c56162 100644
--- a/veejay-current/libOSC/OSC-receive.c
+++ b/veejay-current/libOSC/OSC-receive.c
@@ -787,8 +787,8 @@ Boolean NetworkPacketWaiting(OSCPacketBuffer packet) {
int n;
NetworkReturnAddressPtr na = OSCPacketBufferGetClientAddr(packet);
- if( use_mcast_ )
- {
+// if( use_mcast_ )
+// {
fd_set fds;
struct timeval no_wait;
int status;
@@ -798,13 +798,16 @@ Boolean NetworkPacketWaiting(OSCPacketBuffer packet) {
status = select( na->sockfd + 1, &fds, 0, 0, &no_wait );
if(status <= 0)
return FALSE;
- }
- else
- {
- if( ioctl( na->sockfd, FIONREAD, &n, 0)==-1) return FALSE;
- if( n==0 ) return FALSE;
- }
- return TRUE;
+ if(FD_ISSET( na->sockfd, &fds ))
+ 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 ) {
diff --git a/veejay-current/libvje/vj-effect.c b/veejay-current/libvje/vj-effect.c
index 1ba315d7..f8f6b0a2 100644
--- a/veejay-current/libvje/vj-effect.c
+++ b/veejay-current/libvje/vj-effect.c
@@ -483,6 +483,12 @@ void vj_effect_shutdown() {
void vj_effect_dump() {
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++)
{
if(vj_effects[i])
diff --git a/veejay-current/libvjnet/vj-client.c b/veejay-current/libvjnet/vj-client.c
index a86f44e6..0bee1a15 100644
--- a/veejay-current/libvjnet/vj-client.c
+++ b/veejay-current/libvjnet/vj-client.c
@@ -260,3 +260,31 @@ int vj_client_close( vj_client *v )
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;
+}
diff --git a/veejay-current/libvjnet/vj-client.h b/veejay-current/libvjnet/vj-client.h
index 5f97c967..24095757 100644
--- a/veejay-current/libvjnet/vj-client.h
+++ b/veejay-current/libvjnet/vj-client.h
@@ -63,5 +63,7 @@ vj_client *vj_client_alloc(int w , int h, int f);
void vj_client_free(vj_client *v);
+int vj_client_test(char *addr, int port );
+
#endif
diff --git a/veejay-current/man/sayVIMS.1 b/veejay-current/man/sayVIMS.1
index f08b712d..aa096bc0 100644
--- a/veejay-current/man/sayVIMS.1
+++ b/veejay-current/man/sayVIMS.1
@@ -1,10 +1,10 @@
-.TH "sendVIMS" 1
+.TH "sayVIMS" 1
.SH NAME
-sendVIMS - sends VIMS messages to veejay
+sayVIMS - sends VIMS messages to veejay
.SH SYNOPSIS
-.B sendVIMS [options] [filename]
+.B sayVIMS [options] [filename]
.SH DESCRIPTION
-.B sendVIMS
+.B sayVIMS
is a simple program to send VIMS messages to veejay.
.SH OPTIONS
@@ -18,10 +18,24 @@ Veejay host to connect to
.TP
.B \-f [filename]
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
.TP
-.B sendVIMS +100 "255:;"
-Quit veejay after playing 100 frames
+.B sayVIMS -h localhost -p 3490 "255:;"
+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
A message is described as
.B :;
@@ -56,5 +70,9 @@ project is:
.I veejay-users@lists.sourceforge.net
For more info see the website at
.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"
-.B veejay yuv2rawdv rawdv2yuv sendVIMS
+.B veejay yuv2rawdv rawdv2yuv
diff --git a/veejay-current/man/veejay.1 b/veejay-current/man/veejay.1
index a8979779..4c5cd1ab 100644
--- a/veejay-current/man/veejay.1
+++ b/veejay-current/man/veejay.1
@@ -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.
It provides mechanisms for simple non-desctructive editing, loop-based
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
using the Open Sound Control (or through an inhouse protocol called 'VIMS')
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
.SH Interoperability
.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
.TP
.B \-p/--port
@@ -121,6 +122,13 @@ Specify framerate of dummy video
.TP
.B \-N [01]
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
.TP
.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
Startup veejay using dummy video at 25 frames per second, dimensions 352x288
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)
When you are running veejay with a SDL window you can use keybindings for
realtime interaction. See
@@ -348,7 +360,6 @@ template. Use SHIFT + [Any key] to apply the template
.SH REFERENCES
.TP
sendVIMS for PD: http://zwizwa.fartit.com/pd/sendVIMS/
-sayVIMS command line utility
.SH BUGS
see BUGS in the source package
.SH AUTHOR
@@ -359,5 +370,6 @@ project is:
.I veejay-users@lists.sourceforge.net
For more info see the website at
.I http://veejay.sourceforge.net
+.I or http://veejay.dyne.org
.SH "SEE ALSO"
-.B veejay yuv2rawdv rawdv2yuv sendVIMS
+.B veejay yuv2rawdv rawdv2yuv any2yuv sayVIMS
diff --git a/veejay-current/tools/sayVIMS.c b/veejay-current/tools/sayVIMS.c
index 40fb7672..6a1d5681 100644
--- a/veejay-current/tools/sayVIMS.c
+++ b/veejay-current/tools/sayVIMS.c
@@ -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, "fo\t\tOpen Y4M stream 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, "cn\t\tNew clip from frames n1 to n2");
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, "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, "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;
}
diff --git a/veejay-current/veejay/vims.h b/veejay-current/veejay/vims.h
index d223e2da..41b54134 100644
--- a/veejay-current/veejay/vims.h
+++ b/veejay-current/veejay/vims.h
@@ -1,3 +1,4 @@
+#include
#ifndef VIMS_H
#define VIMS_H
enum {
@@ -61,12 +62,6 @@ enum {
NET_CLIP_SET_MARKER = 115,
NET_CLIP_CLEAR_MARKER = 116,
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_SAVE_CLIPLIST = 125,
NET_CLIP_HISTORY_LIST = 126,
@@ -81,8 +76,6 @@ enum {
NET_CLIP_CHAIN_DISABLE = 133,
NET_CLIP_RENDER_SELECT = 129,
NET_CLIP_RENDER_TO = 138,
- NET_CLIP_ADD_WAVE = 136,
- NET_CLIP_DEL_WAVE = 137,
NET_CLIP_UPDATE = 134,
NET_TAG_SELECT = 140,
NET_TAG_ACTIVATE = 141,
@@ -90,30 +83,27 @@ enum {
NET_TAG_DELETE = 143,
NET_TAG_NEW_V4L = 144,
NET_TAG_NEW_Y4M = 147,
- NET_TAG_NEW_RAW = 148,
NET_TAG_NEW_AVFORMAT = 149,
NET_TAG_OFFLINE_REC_START = 150,
NET_TAG_OFFLINE_REC_STOP = 151,
NET_TAG_REC_START = 152,
NET_TAG_REC_STOP = 153,
- NET_TAG_LOAD_TAGLIST = 154,
- NET_TAG_SAVE_TAGLIST = 155,
NET_TAG_LIST = 206,
NET_TAG_DEVICES = 207,
NET_TAG_CHAIN_ENABLE = 156,
NET_TAG_CHAIN_DISABLE = 157,
+#ifdef HAVE_V4L
NET_TAG_SET_BRIGHTNESS = 160,
NET_TAG_SET_CONTRAST = 161,
NET_TAG_SET_HUE = 162,
NET_TAG_SET_COLOR = 163,
+#endif
NET_TAG_NEW_NET = 165,
NET_TAG_NEW_MCAST = 166,
NET_CHAIN_CHANNEL_INC = 170,
NET_CHAIN_CHANNEL_DEC = 171,
NET_CHAIN_GET_ENTRY = 208,
NET_CHAIN_TOGGLE_ALL = 172,
- NET_CHAIN_COPY_TO_BUF = 173,
- NET_CHAIN_PASTE_AS_NEW = 174,
NET_CHAIN_ENABLE = 175,
NET_CHAIN_DISABLE = 176,
NET_CHAIN_CLEAR = 177,
@@ -134,18 +124,12 @@ enum {
NET_CHAIN_ENTRY_SET_SOURCE = 191,
NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL = 192,
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_EFFECT_SET_BG = 200,
NET_SET_VOLUME = 220,
NET_FULLSCREEN = 222,
NET_OUTPUT_Y4M_START = 71,
NET_OUTPUT_Y4M_STOP = 72,
- NET_OUTPUT_RAW_START = 73,
- NET_OUTPUT_RAW_STOP = 74,
NET_GET_FRAME = 225,
NET_SAMPLE_MODE = 250,
NET_BEZERK = 251,
diff --git a/veejay-current/veejay/vj-event.c b/veejay-current/veejay/vj-event.c
index 4314a394..bbb340bc 100644
--- a/veejay-current/veejay/vj-event.c
+++ b/veejay-current/veejay/vj-event.c
@@ -231,15 +231,8 @@ enum { /* all events, network/keyboard crossover */
VJ_EVENT_CLIP_SET_MARKER_END = 2012,
VJ_EVENT_CLIP_SET_MARKER = 2026,
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_SAVE_CLIPLIST = 2022,
- VJ_EVENT_CLIP_HISTORY_LIST = 2023,
VJ_EVENT_CLIP_LIST = 2024,
VJ_EVENT_CLIP_DEL = 2030,
VJ_EVENT_CLIP_REC_START = 2031,
@@ -251,8 +244,6 @@ enum { /* all events, network/keyboard crossover */
VJ_EVENT_CHAIN_TOGGLE_ALL = 2037,
VJ_EVENT_CLIP_UPDATE = 2038,
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_SELECT_RENDER = 2051,
VJ_EVENT_CLIP_RENDER_TO = 2052,
@@ -260,24 +251,25 @@ enum { /* all events, network/keyboard crossover */
VJ_EVENT_TAG_ACTIVATE = 2101,
VJ_EVENT_TAG_DEACTIVATE = 2102,
VJ_EVENT_TAG_DELETE = 2103,
+#ifdef HAVE_V4L
VJ_EVENT_TAG_NEW_V4L = 2104,
+#endif
VJ_EVENT_TAG_NEW_Y4M = 2107,
- VJ_EVENT_TAG_NEW_RAW = 2108,
VJ_EVENT_TAG_OFFLINE_REC_START = 2109,
VJ_EVENT_TAG_OFFLINE_REC_STOP = 2110,
VJ_EVENT_TAG_REC_START = 2111,
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_DEVICES = 2116,
VJ_EVENT_TAG_CHAIN_DISABLE = 2117,
VJ_EVENT_TAG_CHAIN_ENABLE = 2118,
VJ_EVENT_TAG_NEW_AVFORMAT = 2119,
+#ifdef HAVE_V4L
VJ_EVENT_TAG_SET_BRIGHTNESS = 2301,
VJ_EVENT_TAG_SET_CONTRAST = 2302,
VJ_EVENT_TAG_SET_HUE = 2303,
VJ_EVENT_TAG_SET_COLOR = 2304,
+#endif
VJ_EVENT_CHAIN_ENTRY_SET_EFFECT = 2201,
VJ_EVENT_CHAIN_ENTRY_SET_PRESET = 2202,
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_CLEAR = 2213,
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_DISABLE = 2219,
VJ_EVENT_CHAIN_CLEAR = 2205,
@@ -301,18 +291,12 @@ enum { /* all events, network/keyboard crossover */
VJ_EVENT_CHAIN_FADE_OUT = 2217,
VJ_EVENT_CHAIN_SET_ENTRY = 2218,
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_EFFECT_LIST = 2500,
VJ_EVENT_EDITLIST_LIST = 2501,
VJ_EVENT_VIDEO_INFORMATION = 2502,
VJ_EVENT_OUTPUT_Y4M_START = 3001,
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_SET_PLAY_MODE = 3009,
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_ADD = 4008,
VJ_EVENT_EDITLIST_ADD_CLIP = 4009,
- VJ_EVENT_EDITLIST_ADD_HIS = 4010,
VJ_EVENT_EDITLIST_SAVE = 4011,
VJ_EVENT_EDITLIST_LOAD = 4012,
/* 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, NET_CLIP_SET_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_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_DEL, NET_CLIP_DEL },
{ 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_DEACTIVATE, NET_TAG_DEACTIVATE },
{ VJ_EVENT_TAG_DELETE, NET_TAG_DELETE },
+#ifdef HAVE_V4L
{ VJ_EVENT_TAG_NEW_V4L, NET_TAG_NEW_V4L },
+#endif
{ 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_OFFLINE_REC_START, NET_TAG_OFFLINE_REC_START },
{ VJ_EVENT_TAG_OFFLINE_REC_STOP, NET_TAG_OFFLINE_REC_STOP },
{ VJ_EVENT_TAG_REC_START, NET_TAG_REC_START },
{ 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_DEVICES, NET_TAG_DEVICES },
{ 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_CHANNEL, NET_CHAIN_ENTRY_SET_SOURCE_CHANNEL },
{ 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_DISABLE, NET_CHAIN_DISABLE },
{ 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_OUTPUT_Y4M_START, NET_OUTPUT_Y4M_START },
{ 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_SET_PLAY_MODE, NET_SET_PLAY_MODE },
{ 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_TOGGLE_ALL, NET_CHAIN_TOGGLE_ALL },
{ VJ_EVENT_CLIP_UPDATE, NET_CLIP_UPDATE },
+#ifdef HAVE_V4L
{ VJ_EVENT_TAG_SET_BRIGHTNESS, NET_TAG_SET_BRIGHTNESS },
{ VJ_EVENT_TAG_SET_CONTRAST, NET_TAG_SET_CONTRAST },
{ VJ_EVENT_TAG_SET_HUE, NET_TAG_SET_HUE },
- { VJ_EVENT_CLIP_ADD_WAVE, NET_CLIP_ADD_WAVE },
- { VJ_EVENT_CLIP_DEL_WAVE, NET_CLIP_DEL_WAVE },
+#endif
{ VJ_EVENT_RECORD_DATAFORMAT, NET_RECORD_DATAFORMAT },
+#ifdef HAVE_V4L
{ VJ_EVENT_TAG_SET_COLOR, NET_TAG_SET_COLOR },
+#endif
{ VJ_EVENT_QUIT, NET_QUIT },
{ 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_SWITCH_CLIP_TAG, NET_SWITCH_CLIP_TAG },
{ 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, "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_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
{ 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} },
@@ -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} },
#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_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_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} },
@@ -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_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_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
{ 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} },
@@ -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_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_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_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} },
@@ -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_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_CLIP_HISTORY_LIST, "Clip: send history list", vj_event_send_clip_history_list,1, "%d", {0,0} },
#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} },
#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 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 )
- {/*
- veejay_msg(VEEJAY_MSG_DEBUG,
- "(VIMS) Network %03d: '%s' (defaults)",
- net_id,
- vj_event_list[id].name
- );*/
-
+ {
vj_event_trigger_function(
(void*)v,
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[1]
);
-
return;
}
if( str_arg != NULL && vj_event_list[id].format[1] == 's' )
{
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;
-
+
+ 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(
(void*) v,
net_list[net_id].act,
@@ -1349,24 +1299,14 @@ void vj_event_fire_net_event(veejay_t *v, int net_id, char *str_arg, int *args,
net_id,
vj_event_list[id].name,
str_args
- );
+ );
}
- for(i=0; i < arglen; i++)
- {
- argument_list[i] = args[i];
- }
+ _last_known_num_args = vj_event_list[id].num_params;
- for(i=arglen; i < 16; i++)
- {
- argument_list[i] = 0;
- }
-
- _last_known_num_args = vj_event_list[id].num_params;
-
- vj_event_trigger_function(
+ vj_event_trigger_function(
(void*) v,
net_list[net_id].act,
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
-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 )
{
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);
}
-}
-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 )
diff --git a/veejay-current/veejay/vj-osc.c b/veejay-current/veejay/vj-osc.c
index df05715b..ec444221 100644
--- a/veejay-current/veejay/vj-osc.c
+++ b/veejay-current/veejay/vj-osc.c
@@ -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_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_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_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_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_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_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_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_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);
@@ -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_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_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_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);
@@ -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_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_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_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);
@@ -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);
#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_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_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_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);
@@ -250,6 +280,7 @@ void *_vj_osc_rt_malloc(int num_bytes) {
{\
int arg[4];\
int arguments[16];\
+memset(arguments,0,16);\
arguments[1] = -1;\
arguments[2] = d;\
arguments[3] = arg[0];\
@@ -265,11 +296,26 @@ printf("SNET: [%s]\n",str);\
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)\
{\
int arguments[16];\
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 );\
}
@@ -285,6 +331,7 @@ int c_a = vj_osc_count_int_arguments(a,b);\
int num_arg = vj_event_get_num_args(c);\
int arguments[16];\
int n_a;\
+memset(arguments,0,16);\
if(c_a >= 0 && c != NET_CHAIN_ENTRY_SET_PRESET) {\
if( (num_arg-1) == c_a ) {\
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 num_arg = vj_event_get_num_args(c);\
int arguments[16];\
+memset(arguments,0,16);\
if(c_a == 0) {\
arguments[0]=-1;\
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,
NetworkReturnAddressPtr ra)
{
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 */
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);
}
+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,
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);
}
+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,
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);
}
-
+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,
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);
}
+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,
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);
}
-
+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,
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);
}
-
+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,
NetworkReturnAddressPtr ra)
{
@@ -721,6 +831,22 @@ void vj_osc_cb_tag_new_v4l(void *context, int arglen, const void *vargs, OSCTime
}
#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,
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);
}
-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,
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);
}
+#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 */
void vj_osc_set_veejay_t(veejay_t *info) {
@@ -781,69 +928,144 @@ static struct
int leave;
} osc_methods[] =
{
- { "/video/play", "play", vj_osc_cb_play_forward, 0 },
- { "/video/reverse", "reverse", vj_osc_cb_play_backward, 0 },
- { "/video/pause", "pause", vj_osc_cb_stop, 0 },
- { "/video/speed", "speed", vj_osc_cb_set_speed, 0 },
- { "/video/slow", "slow", vj_osc_cb_set_dup, 0 },
- { "/video/goto_start", "goto_start", vj_osc_cb_skip_to_start, 0 },
- { "/video/goto_end", "goto_end", vj_osc_cb_skip_to_end, 0 },
- { "/video/set_frame", "set_frame", vj_osc_cb_set_frame, 0 },
- { "/video/prev_frame", "prev_frame", vj_osc_cb_prev_frame, 0 },
- { "/video/next_frame", "next_frame", vj_osc_cb_next_frame, 0 },
- { "/video/next_second", "next_second", vj_osc_cb_next_second, 0 },
- { "/video/prev_second", "prev_second", vj_osc_cb_prev_second, 0 },
-
- { "/clip/new", "new", vj_osc_cb_new_clip, 1 },
- { "/clip/del", "del", vj_osc_cb_clip_del, 1 },
- { "/clip/select", "select", vj_osc_cb_select_clip, 1 },
- { "/clip/goto_start", "goto_start", vj_osc_cb_select_start, 1 },
- { "/clip/goto_end", "goto_end", vj_osc_cb_select_end, 1 },
- { "/clip/set/start", "start", vj_osc_cb_clip_set_start, 13 },
- { "/clip/set/end", "end", vj_osc_cb_clip_set_end, 13 },
- { "/clip/set/looptype", "looptype", vj_osc_cb_clip_set_looptype, 13 },
- { "/clip/set/speed", "speed", vj_osc_cb_clip_set_speed, 13 },
- { "/clip/set/marker", "marker", vj_osc_cb_clip_set_marker, 13 },
- { "/clip/set/slow", "slow", vj_osc_cb_clip_set_dup, 13 },
- { "/clip/set/nomarker", "nomarker", vj_osc_cb_clip_clear_marker, 13 },
- { "/clip/rec/start", "start", vj_osc_cb_clip_record_start, 14 },
- { "/clip/rec/stop", "stop", vj_osc_cb_clip_record_stop, 14 },
-
- { "/stream/select", "select", vj_osc_cb_tag_select, 2 },
+ { "play foward", "play", vj_osc_cb_play_forward, 0 },
+ { "play reverse", "reverse", vj_osc_cb_play_backward, 0 },
+ { "pause", "pause", vj_osc_cb_stop, 0 },
+ { "speed ( < 0 = reverse, > 0 = forward)",
+ "speed", vj_osc_cb_set_speed, 0 },
+ { "slow", "slow", vj_osc_cb_set_dup, 0 },
+ { "goto start", "goto_start", vj_osc_cb_skip_to_start, 0 },
+ { "goto end", "goto_end", vj_osc_cb_skip_to_end, 0 },
+ { "set frame ", "set_frame", vj_osc_cb_set_frame, 0 },
+ { "set previous frame", "prev_frame", vj_osc_cb_prev_frame, 0 },
+ { "set next frame", "next_frame", vj_osc_cb_next_frame, 0 },
+ { "set next second", "next_second", vj_osc_cb_next_second, 0 },
+ { "set previous second", "prev_second", vj_osc_cb_prev_second, 0 },
+ { "play plain video", "plain", vj_osc_cb_plain_mode, 0 },
+ { "create new clip ",
+ "new", vj_osc_cb_new_clip, 1 },
+ { "copy clip as new clip",
+ "copy", vj_osc_cb_copy_clip, 1 },
+ { "delete clip ", "del", vj_osc_cb_clip_del, 1 },
+ { "select and play clip ",
+ "select", vj_osc_cb_select_clip, 1 },
+ { "goto clip starting position",
+ "goto_start", vj_osc_cb_select_start, 1 },
+ { "goto clip ending position",
+ "goto_end", vj_osc_cb_select_end, 1 },
+ { "relative start/end position update ",
+ "jitter", vj_osc_cb_clip_set_jitter, 13 },
+ { "set clip new starting position ",
+ "start", vj_osc_cb_clip_set_start, 13 },
+ { "set clip new ending position ",
+ "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 ",
+ "speed", vj_osc_cb_clip_set_speed, 13 },
+ { "clip set marker ",
+ "marker", vj_osc_cb_clip_set_marker, 13 },
+ { "clip set frame duplicate ",
+ "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 ",
+ "render", vj_osc_cb_clip_his_render, 15 },
+ { "clip play rendered entry ",
+ "play", vj_osc_cb_clip_his_play, 15 },
+ { "stream select and play ",
+ "select", vj_osc_cb_tag_select, 2 },
#ifdef HAVE_V4L
- { "/stream/new/v4l", "v4l", vj_osc_cb_tag_new_v4l, 19 },
+ { "new video4linux input stream ",
+ "v4l", vj_osc_cb_tag_new_v4l, 19 },
#endif
- { "/stream/new/y4m", "y4m", vj_osc_cb_tag_new_y4m, 19 },
-// { "/stream/new/avformat", "avformat", vj_osc_cb_tag_new_avformat, 19 },
+ { "new yuv4mpeg input stream ",
+ "y4m", vj_osc_cb_tag_new_y4m, 19 },
+ { "new ffmpeg input stream ",
+ "avformat", vj_osc_cb_tag_new_avformat, 19 },
+ { "new multicast input stream ",
+ "mcast", vj_osc_cb_tag_new_mcast, 19 },
+ { "new peer-to-peer input stream ",
+ "net", vj_osc_cb_tag_new_net, 19 },
- { "/stream/rec/o_start", "o_start", vj_osc_cb_tag_record_offline_start, 16 },
- { "/stream/rec/o_stop", "o_stop", vj_osc_cb_tag_record_offline_stop, 16 },
- { "/stream/rec/start", "start", vj_osc_cb_tag_record_start, 16 },
- { "/stream/rec/stop", "stop", vj_osc_cb_tag_record_stop, 16 },
+ { "hidden record from stream ",
+ "o_start", vj_osc_cb_tag_record_offline_start, 16 },
+ { "stop hidden recording ", "o_stop", vj_osc_cb_tag_record_offline_stop, 16 },
+ { "start stream recorder ",
+ "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 ",
+ "fade_in" , vj_osc_cb_chain_fade_in, 4 },
+ { "Fade out effect chain ",
+ "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 ",
+ "disable", vj_osc_cb_chain_entry_disable_video,9 },
+ { "Enable effect chain entry ",
+ "enable", vj_osc_cb_chain_entry_enable_video, 9 },
+ { "Clear effect chain entry ",
+ "clear", vj_osc_cb_chain_entry_del, 9 },
+ { "Select effect chain entry ",
+ "select", vj_osc_cb_chain_entry_select, 9 },
+ { "Set effect default values on chain entry ",
+ "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 for mixing effect on entry ",
+ "channel", vj_osc_cb_chain_entry_channel, 9 },
+ { "Select source (0=clip,1=stream) for mixing effect on entry ",
+ "source", vj_osc_cb_chain_entry_source, 9 },
- { "/chain/reset", "reset", vj_osc_cb_chain_clear, 4 },
- { "/chain/fade_in", "fade_in", vj_osc_cb_chain_fade_in, 4 },
- { "/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 },
+ { "Set argument to value for effect on entry ",
+ "set", vj_osc_cb_chain_entry_set_arg_val, 8 },
- { "/cl/load", "load", vj_osc_cb_load_cliplist, 6 },
- { "/cl/save", "save", vj_osc_cb_save_cliplist, 6 },
- { "/el/add_clip", "add_clip", vj_osc_cb_el_add_clip, 7 },
+ { "Cliplist load ", "load", vj_osc_cb_load_cliplist, 6 },
+ { "Cliplist save ", "save", vj_osc_cb_save_cliplist, 6 },
+ { "Editlist add filename (as new clip)","add_clip", vj_osc_cb_el_add_clip, 7 },
+ { "EditList paste frames from buf at frame ",
+ "paste_at", vj_osc_cb_el_paste_at, 7 },
+ { "EditList copy frames to to buffer",
+ "copy", vj_osc_cb_el_copy, 7 },
+ { "EditList delete frames to ",
+ "del", vj_osc_cb_el_del, 7 },
+ { "EditList crop frames 0 - - end",
+ "crop", vj_osc_cb_el_crop, 7 },
+ { "EditList cut frames to into buffer",
+ "cut", vj_osc_cb_el_cut, 7 },
+ { "EditList add file ",
+ "add", vj_osc_cb_el_add, 7 },
+ { "EditList save ",
+ "save", vj_osc_cb_el_save, 7 },
+ { "EditList load ",
+ "load", vj_osc_cb_el_load, 7 },
+#ifdef HAVE_SDL
+ { "Resize SDL video window ",
+ "resize", vj_osc_cb_resize, 10 },
+ { "Toggle SDL video window fullscreen/windowed",
+ "fullscreen", vj_osc_cb_fullscreen, 10 },
+#endif
+ { "Dump current frame as JPG ",
+ "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 },
};
@@ -864,6 +1086,7 @@ static struct
{ "/video/set", "set", 12, 0,0 },
{ "/clip/set", "set", 13, 1,0 },
{ "/clip/rec", "rec", 14, 1,0 },
+ { "/clip/his", "his", 15, 1,0 },
// { "/clip/chain", "chain", 15, 1,0 },
// { "/clip/entry", "entry", 18, 1,0 },
{ "/stream/rec", "rec", 16, 2,0 },
@@ -875,9 +1098,14 @@ static struct
{ "/el", "el", 7, -1,0 },
{ "/arg", "arg", 8, -1,0 },
{ "/entry", "entry", 9, -1,0 },
+#ifdef HAVE_SDL
+ { "/output", "output", 10, -1,0 },
+#endif
+ { "/config", "config", 11, -1,0 },
// { "", "%d", 20, 9 ,20 },
// { "", "%d", 40, 8 ,10 },
{ NULL, NULL, 0, -1,0 },
+
};
@@ -1012,6 +1240,14 @@ vj_osc* vj_osc_allocate(int port_id) {
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();
diff --git a/veejay-current/veejay/vj-tag.c b/veejay-current/veejay/vj-tag.c
index 3ccbe90a..3e9ff475 100644
--- a/veejay-current/veejay/vj-tag.c
+++ b/veejay-current/veejay/vj-tag.c
@@ -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];
if(!v) return 0;
+ if(!vj_client_test(host,port))
+ return 0;
+
v->planes[0] = w * h;
if( p == VIDEO_PALETTE_YUV420P )
{