Send Motion-user mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/motion-user
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Motion-user digest..."
Today's Topics:
1. Re: texts & external events (tosiara)
----------------------------------------------------------------------
Message: 1
Date: Tue, 24 Nov 2015 16:11:49 +0200
From: tosiara <[email protected]>
Subject: Re: [Motion-user] texts & external events
To: Motion discussion list <[email protected]>
Message-ID:
<cachtdwtryszzr4hsun48ayktkrmm5vnv1mek_jsyrt8wpgo...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
This is known issue: https://github.com/Mr-Dave/motion/issues/85
apt-get install pkgconf
On Tue, Nov 24, 2015 at 4:01 PM, folkert <[email protected]> wrote:
> Oh never mind. I did something stupid.
>
> On Tue, Nov 24, 2015 at 02:58:23PM +0100, folkert wrote:
> > I tried compiling the git-version:
> >
> > ./configure: line 5283: syntax error near unexpected token `FFMPEG,'
> > ./configure: line 5283: ` PKG_CHECK_MODULES(FFMPEG, libavutil
> libavformat libavcodec libswscale, HAVE_FFMPEG=yes)'
> >
> > I ran autoconf before.
> >
> >
> > On Tue, Nov 24, 2015 at 03:40:21PM +0200, tosiara wrote:
> > > There is a process ongoing right now of releasing an "unofficial"
> version.
> > > You can read a mail thread on "motion-devel" list:
> > > http://sourceforge.net/p/motion/mailman/message/34585096/
> > >
> > > On Tue, Nov 24, 2015 at 3:29 PM, folkert <[email protected]>
> wrote:
> > >
> > > > And do changes in the github repo end up in the version that is
> > > > distributed? E.g. in debian.
> > > >
> > > > On Tue, Nov 24, 2015 at 03:23:21PM +0200, tosiara wrote:
> > > > > Yes, Github repo is not an official one. But it is actively
> developed and
> > > > > maintained which is more important in the world of open source
> > > > >
> > > > > On Tue, Nov 24, 2015 at 3:19 PM, folkert <[email protected]>
> wrote:
> > > > >
> > > > > > That's ok but Kenneth's wiki says the github things are not
> official?
> > > > > >
> > > > > > On Tue, Nov 24, 2015 at 03:16:36PM +0200, tosiara wrote:
> > > > > > > Hi,
> > > > > > >
> > > > > > > thanks, it is really cool you share your changes!
> > > > > > > However it would be really useful if you could fork motion
> project on
> > > > > > > Github and create branches for every new feature. When
> branches are
> > > > > > ready -
> > > > > > > issue pull request so maintainer can review your changes
> > > > > > > Use this as base fork: https://github.com/Mr-Dave/motion
> > > > > > >
> > > > > > > If you are not familiar with Github - feel free to ask
> questions
> > > > here on
> > > > > > > mail list or mail me directly
> > > > > > >
> > > > > > > On Tue, Nov 24, 2015 at 3:09 PM, folkert <
> [email protected]>
> > > > wrote:
> > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > I've extended my patch a bit. I fixed that the defaults did
> not
> > > > work.
> > > > > > > > Todo is adding a "center"-mode and maybe even a mode where
> one can
> > > > > > > > explicitly set the coordinates.
> > > > > > > >
> > > > > > > > I've also added something new:
> > > > > > > >
> > > > > > > > ext_event_udp_listener_port 1888
> > > > > > > > ext_event_show_time 5
> > > > > > > > ext_event_location upper-left
> > > > > > > >
> > > > > > > > What this does: it listens on an UDP port. Then when it
> receives a
> > > > > > > > text-packet on that port, it will show that text for 5
> seconds on
> > > > the
> > > > > > > > selected location.
> > > > > > > > Sending such a packet can be something simple as with this
> > > > > > > > python-script:
> > > > > > > > #! /usr/bin/python
> > > > > > > >
> > > > > > > > import socket
> > > > > > > > import sys
> > > > > > > >
> > > > > > > > UDP_IP = '127.0.0.1'
> > > > > > > > UDP_PORT = 1888
> > > > > > > > MESSAGE = sys.argv[1]
> > > > > > > >
> > > > > > > > sock = socket.socket(socket.AF_INET,
> socket.SOCK_DGRAM)
> > > > > > > > sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
> > > > > > > >
> > > > > > > > e.g.:
> > > > > > > > ./send.py "some-one is at the front-door!"
> > > > > > > >
> > > > > > > > As you can see I use it myself for my door-bell which is
> connected
> > > > to
> > > > > > > > a raspberry pi which sends udp messages to all kinds of
> devices
> > > > around
> > > > > > > > the house.
> > > > > > > >
> > > > > > > > Index: conf.c
> > > > > > > >
> ===================================================================
> > > > > > > > --- conf.c (revision 564)
> > > > > > > > +++ conf.c (working copy)
> > > > > > > > @@ -147,9 +147,10 @@
> > > > > > > > netcam_proxy: NULL,
> > > > > > > > netcam_tolerant_check: 0,
> > > > > > > > text_changes: 0,
> > > > > > > > - text_left: NULL,
> > > > > > > > - text_right: DEF_TIMESTAMP,
> > > > > > > > - text_event: DEF_EVENTSTAMP,
> > > > > > > > + timestamp: DEF_TIMESTAMP,
> > > > > > > > + timestamp_location: NULL,
> > > > > > > > + generic_text: NULL,
> > > > > > > > + generic_text_location: NULL,
> > > > > > > > text_double: 0,
> > > > > > > > despeckle_filter: NULL,
> > > > > > > > area_detect: NULL,
> > > > > > > > @@ -159,6 +160,9 @@
> > > > > > > > log_file: NULL,
> > > > > > > > log_level: LEVEL_DEFAULT+10,
> > > > > > > > log_type_str: NULL,
> > > > > > > > + ext_event_udp_listener_port: 0,
> > > > > > > > + ext_event_show_time: 5,
> > > > > > > > + ext_event_location: "upper-left",
> > > > > > > > };
> > > > > > > >
> > > > > > > >
> > > > > > > > @@ -850,26 +854,46 @@
> > > > > > > > print_string
> > > > > > > > },
> > > > > > > > {
> > > > > > > > - "text_right",
> > > > > > > > + "timestamp",
> > > > > > > > "# Draws the timestamp using same options as C function
> > > > > > strftime(3)\n"
> > > > > > > > "# Default: %Y-%m-%d\\n%T = date in ISO format and time
> in 24
> > > > hour
> > > > > > > > clock\n"
> > > > > > > > - "# Text is placed in lower right corner",
> > > > > > > > + "# Text is placed in lower right corner (default,
> override
> > > > with
> > > > > > > > timestamp_location)",
> > > > > > > > 0,
> > > > > > > > - CONF_OFFSET(text_right),
> > > > > > > > + CONF_OFFSET(timestamp),
> > > > > > > > copy_string,
> > > > > > > > print_string
> > > > > > > > },
> > > > > > > > {
> > > > > > > > - "text_left",
> > > > > > > > + "timestamp_location",
> > > > > > > > + "# Where to place the timestamp-text. Can be upper-left,
> > > > > > > > upper-right,\n"
> > > > > > > > + "# bottom-left or bottom-right.\n"
> > > > > > > > + "# Default: Not defined = bottom-right\n",
> > > > > > > > + 0,
> > > > > > > > + CONF_OFFSET(timestamp_location),
> > > > > > > > + copy_string,
> > > > > > > > + print_string
> > > > > > > > + },
> > > > > > > > + {
> > > > > > > > + "generic_text",
> > > > > > > > "# Draw a user defined text on the images using same
> options
> > > > as C
> > > > > > > > function strftime(3)\n"
> > > > > > > > "# Default: Not defined = no text\n"
> > > > > > > > - "# Text is placed in lower left corner",
> > > > > > > > + "# Text is placed in lower left corner (default,
> override with
> > > > > > > > generic_text_location)",
> > > > > > > > 0,
> > > > > > > > - CONF_OFFSET(text_left),
> > > > > > > > + CONF_OFFSET(generic_text),
> > > > > > > > copy_string,
> > > > > > > > print_string
> > > > > > > > },
> > > > > > > > - {
> > > > > > > > + {
> > > > > > > > + "generic_text_location",
> > > > > > > > + "# Where to place the generic text. Can be upper-left,
> > > > > > upper-right,\n"
> > > > > > > > + "# ceter, bottom-left or bottom-right.\n"
> > > > > > > > + "# Default: Not defined = bottom-left\n",
> > > > > > > > + 0,
> > > > > > > > + CONF_OFFSET(generic_text_location),
> > > > > > > > + copy_string,
> > > > > > > > + print_string
> > > > > > > > + },
> > > > > > > > + {
> > > > > > > > "text_changes",
> > > > > > > > "# Draw the number of changed pixed on the images
> (default:
> > > > > > off)\n"
> > > > > > > > "# Will normally be set to off except when you setup and
> > > > adjust
> > > > > > the
> > > > > > > > motion settings\n"
> > > > > > > > @@ -901,6 +925,34 @@
> > > > > > > > print_bool
> > > > > > > > },
> > > > > > > > {
> > > > > > > > + "ext_event_udp_listener_port",
> > > > > > > > + "# On what UDP port to listen for external
> (text-)events. They
> > > > > > will\n"
> > > > > > > > + "# be show on the screen for ext_event_show_time
> seconds at
> > > > > > > > position\n"
> > > > > > > > + "# ext_event_location. You can send any text to it.\n",
> > > > > > > > + 0,
> > > > > > > > + CONF_OFFSET(ext_event_udp_listener_port),
> > > > > > > > + copy_int,
> > > > > > > > + print_int
> > > > > > > > + },
> > > > > > > > + {
> > > > > > > > + "ext_event_show_time",
> > > > > > > > + "# How long to show an external event text.\n",
> > > > > > > > + 0,
> > > > > > > > + CONF_OFFSET(ext_event_show_time),
> > > > > > > > + copy_int,
> > > > > > > > + print_int
> > > > > > > > + },
> > > > > > > > + {
> > > > > > > > + "ext_event_location",
> > > > > > > > + "# Where to place the external event text. Can be
> upper-left,
> > > > > > > > upper-right,\n"
> > > > > > > > + "# bottom-left or bottom-right.\n"
> > > > > > > > + "# Default: Not defined = center\n",
> > > > > > > > + 0,
> > > > > > > > + CONF_OFFSET(ext_event_location),
> > > > > > > > + copy_string,
> > > > > > > > + print_string
> > > > > > > > + },
> > > > > > > > + {
> > > > > > > > "exif_text",
> > > > > > > > "# Text to include in a JPEG EXIF comment\n"
> > > > > > > > "# May be any text, including conversion specifiers.\n"
> > > > > > > > @@ -1710,7 +1762,7 @@
> > > > > > > > /*
> > > > > > > > * If argument is in "" we will strip them
> off
> > > > > > > > * It is important that we can use "" so
> that we
> > > > can
> > > > > > use
> > > > > > > > - * leading spaces in text_left and
> text_right.
> > > > > > > > + * leading spaces in timestamp and
> generic_text.
> > > > > > > > */
> > > > > > > > if ((beg[0] == '"' && beg[strlen(beg)-1] ==
> '"')
> > > > ||
> > > > > > > > (beg[0] == '\'' && beg[strlen(beg)-1] ==
> > > > '\'')) {
> > > > > > > > Index: conf.h
> > > > > > > >
> ===================================================================
> > > > > > > > --- conf.h (revision 564)
> > > > > > > > +++ conf.h (working copy)
> > > > > > > > @@ -124,9 +124,11 @@
> > > > > > > > const char *netcam_proxy;
> > > > > > > > unsigned int netcam_tolerant_check;
> > > > > > > > int text_changes;
> > > > > > > > - const char *text_left;
> > > > > > > > - const char *text_right;
> > > > > > > > + const char *timestamp, *timestamp_location;
> > > > > > > > + const char *generic_text, *generic_text_location;
> > > > > > > > const char *text_event;
> > > > > > > > + int ext_event_udp_listener_port, ext_event_show_time;
> > > > > > > > + const char *ext_event_location;
> > > > > > > > int text_double;
> > > > > > > > const char *despeckle_filter;
> > > > > > > > const char *area_detect;
> > > > > > > > Index: ffmpeg.c
> > > > > > > >
> ===================================================================
> > > > > > > > --- ffmpeg.c (revision 564)
> > > > > > > > +++ ffmpeg.c (working copy)
> > > > > > > > @@ -374,7 +374,7 @@
> > > > > > > > #endif
> > > > > > > > /* Manually override the codec id. */
> > > > > > > > if (of)
> > > > > > > > - of->video_codec = CODEC_ID_MSMPEG4V2;
> > > > > > > > + of->video_codec = AV_CODEC_ID_MSMPEG4V2;
> > > > > > > >
> > > > > > > > } else if (strcmp(codec, "swf") == 0) {
> > > > > > > > ext = ".swf";
> > > > > > > > @@ -390,7 +390,7 @@
> > > > > > > > #else
> > > > > > > > of = av_guess_format("flv", NULL, NULL);
> > > > > > > > #endif
> > > > > > > > - of->video_codec = CODEC_ID_FLV1;
> > > > > > > > + of->video_codec = AV_CODEC_ID_FLV1;
> > > > > > > > } else if (strcmp(codec, "ffv1") == 0) {
> > > > > > > > ext = ".avi";
> > > > > > > > #ifdef GUESS_NO_DEPRECATED
> > > > > > > > @@ -403,7 +403,7 @@
> > > > > > > > * Requires strict_std_compliance to be <= -2
> > > > > > > > */
> > > > > > > > if (of)
> > > > > > > > - of->video_codec = CODEC_ID_FFV1;
> > > > > > > > + of->video_codec = AV_CODEC_ID_FFV1;
> > > > > > > >
> > > > > > > > } else if (strcmp(codec, "mov") == 0) {
> > > > > > > > ext = ".mov";
> > > > > > > > @@ -499,7 +499,7 @@
> > > > > > > >
> > > > > > > > /* Create a new video stream and initialize the codecs.
> */
> > > > > > > > ffmpeg->video_st = NULL;
> > > > > > > > - if (ffmpeg->oc->oformat->video_codec != CODEC_ID_NONE) {
> > > > > > > > + if (ffmpeg->oc->oformat->video_codec !=
> AV_CODEC_ID_NONE) {
> > > > > > > > #if defined FF_API_NEW_AVIO
> > > > > > > > ffmpeg->video_st = avformat_new_stream(ffmpeg->oc,
> NULL /*
> > > > > > Codec
> > > > > > > > */);
> > > > > > > > #else
> > > > > > > > @@ -526,7 +526,7 @@
> > > > > > > > #else
> > > > > > > > c->codec_type = AVMEDIA_TYPE_VIDEO;
> > > > > > > > #endif
> > > > > > > > - is_mpeg1 = c->codec_id == CODEC_ID_MPEG1VIDEO;
> > > > > > > > + is_mpeg1 = c->codec_id == AV_CODEC_ID_MPEG1VIDEO;
> > > > > > > >
> > > > > > > > if (strcmp(ffmpeg_video_codec, "ffv1") == 0)
> > > > > > > > c->strict_std_compliance = -2;
> > > > > > > > Index: motion-dist.conf.in
> > > > > > > >
> ===================================================================
> > > > > > > > --- motion-dist.conf.in (revision 564)
> > > > > > > > +++ motion-dist.conf.in (working copy)
> > > > > > > > @@ -369,14 +369,24 @@
> > > > > > > >
> > > > > > > > # Draws the timestamp using same options as C function
> strftime(3)
> > > > > > > > # Default: %Y-%m-%d\n%T = date in ISO format and time in 24
> hour
> > > > clock
> > > > > > > > -# Text is placed in lower right corner
> > > > > > > > -text_right %Y-%m-%d\n%T-%q
> > > > > > > > +# Text is placed default in lower right corner. Change this
> with
> > > > > > > > timestamp_location
> > > > > > > > +timestamp %Y-%m-%d\n%T-%q
> > > > > > > >
> > > > > > > > +# Select where to place the "timestamp".
> > > > > > > > +# Default: Not defined = bottom-right
> > > > > > > > +# Can be bottom-left, bottom-right, upper-left, upper-right
> > > > > > > > +; timestamp bottom-right
> > > > > > > > +
> > > > > > > > # Draw a user defined text on the images using same options
> as C
> > > > > > function
> > > > > > > > strftime(3)
> > > > > > > > # Default: Not defined = no text
> > > > > > > > -# Text is placed in lower left corner
> > > > > > > > -; text_left CAMERA %t
> > > > > > > > +# Text is placed default in lower left corner. Change this
> with
> > > > > > > > generic_text_location
> > > > > > > > +; generic_text CAMERA %t
> > > > > > > >
> > > > > > > > +# Select where to place the "generic_text".
> > > > > > > > +# Default: Not defined = bottom-left
> > > > > > > > +# Can be bottom-left, bottom-right, upper-left, upper-right
> > > > > > > > +; generic_text_location bottom-left
> > > > > > > > +
> > > > > > > > # Draw the number of changed pixed on the images (default:
> off)
> > > > > > > > # Will normally be set to off except when you setup and
> adjust the
> > > > > > motion
> > > > > > > > settings
> > > > > > > > # Text is placed in upper right corner
> > > > > > > > Index: motion.c
> > > > > > > >
> ===================================================================
> > > > > > > > --- motion.c (revision 564)
> > > > > > > > +++ motion.c (working copy)
> > > > > > > > @@ -26,6 +26,10 @@
> > > > > > > > static int motion_init(struct context *cnt);
> > > > > > > > static void motion_cleanup(struct context *cnt);
> > > > > > > >
> > > > > > > > +pthread_t ext_event_th;
> > > > > > > > +pthread_mutex_t ext_event_lock = PTHREAD_MUTEX_INITIALIZER;
> > > > > > > > +const char *ext_event_text = NULL;
> > > > > > > > +time_t ext_event_shown_since = 0;
> > > > > > > >
> > > > > > > > /**
> > > > > > > > * tls_key_threadnr
> > > > > > > > @@ -73,6 +77,59 @@
> > > > > > > > */
> > > > > > > > unsigned int restart = 0;
> > > > > > > >
> > > > > > > > +static void * ext_event_thread(void *p)
> > > > > > > > +{
> > > > > > > > + struct context *cnt = (struct context *)p;
> > > > > > > > + struct sockaddr_in name;
> > > > > > > > + int set = 1, fd = -1;
> > > > > > > > +
> > > > > > > > + if (cnt->conf.ext_event_udp_listener_port <= 0)
> > > > > > > > + return NULL;
> > > > > > > > +
> > > > > > > > + fd = socket(PF_INET, SOCK_DGRAM, 0);
> > > > > > > > + if (fd == -1)
> > > > > > > > + {
> > > > > > > > + fprintf(stderr, "ext event UDP listener: failed
> creating
> > > > > > socket:
> > > > > > > > %s\n", strerror(errno));
> > > > > > > > + return NULL;
> > > > > > > > + }
> > > > > > > > +
> > > > > > > > + (void)setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &set,
> sizeof
> > > > set);
> > > > > > > > +
> > > > > > > > + name.sin_family = AF_INET;
> > > > > > > > + name.sin_port =
> htons(cnt->conf.ext_event_udp_listener_port);
> > > > > > > > + name.sin_addr.s_addr = htonl(INADDR_ANY);
> > > > > > > > + if (bind(fd, (struct sockaddr *)&name, sizeof(name)) ==
> -1)
> > > > > > > > + {
> > > > > > > > + fprintf(stderr, "ext event UDP listener: failed
> binding
> > > > > > socket:
> > > > > > > > %s\n", strerror(errno));
> > > > > > > > + close(fd);
> > > > > > > > + return NULL;
> > > > > > > > + }
> > > > > > > > +
> > > > > > > > + while (!cnt->finish || cnt->makemovie)
> > > > > > > > + {
> > > > > > > > + char buffer[1024];
> > > > > > > > + int rc = recv(fd, buffer, sizeof buffer - 1, 0);
> > > > > > > > +
> > > > > > > > + if (rc == -1)
> > > > > > > > + break;
> > > > > > > > +
> > > > > > > > + if (rc == 0)
> > > > > > > > + continue;
> > > > > > > > +
> > > > > > > > + buffer[rc] = 0x00;
> > > > > > > > +
> > > > > > > > + pthread_mutex_lock(&ext_event_lock);
> > > > > > > > + free((void *)ext_event_text);
> > > > > > > > + ext_event_text = strdup(buffer);
> > > > > > > > + ext_event_shown_since = time(NULL);
> > > > > > > > + pthread_mutex_unlock(&ext_event_lock);
> > > > > > > > + }
> > > > > > > > +
> > > > > > > > + close(fd);
> > > > > > > > +
> > > > > > > > + return NULL;
> > > > > > > > +}
> > > > > > > > +
> > > > > > > > /**
> > > > > > > > * image_ring_resize
> > > > > > > > *
> > > > > > > > @@ -942,6 +999,8 @@
> > > > > > > > /* 2 sec startup delay so FPS is calculated correct */
> > > > > > > > cnt->startup_frames = cnt->conf.frame_limit * 2;
> > > > > > > >
> > > > > > > > + pthread_create(&ext_event_th, NULL, ext_event_thread,
> cnt);
> > > > > > > > +
> > > > > > > > return 0;
> > > > > > > > }
> > > > > > > >
> > > > > > > > @@ -1069,6 +1128,26 @@
> > > > > > > > }
> > > > > > > > }
> > > > > > > >
> > > > > > > > +void format_and_draw_text_at_location(struct context *const
> cnt,
> > > > const
> > > > > > > > char *const text, const char *const location, const char
> *const
> > > > > > > > default_location)
> > > > > > > > +{
> > > > > > > > + const char *const use_location = location ? location :
> > > > > > > > default_location;
> > > > > > > > + int size_mul = cnt->conf.text_double ? 2 : 1;
> > > > > > > > + char tmp[PATH_MAX];
> > > > > > > > + mystrftime(cnt, tmp, sizeof(tmp), text,
> > > > > > > > &cnt->current_image->timestamp_tm, NULL, 0);
> > > > > > > > +
> > > > > > > > + if (strcasecmp(use_location, "bottom-left") == 0)
> > > > > > > > + draw_text(cnt->current_image->image, 10,
> cnt->imgs.height
> > > > -
> > > > > > 10 *
> > > > > > > > size_mul, cnt->imgs.width, tmp, cnt->conf.text_double);
> > > > > > > > +
> > > > > > > > + else if (strcasecmp(use_location, "bottom-right") == 0)
> > > > > > > > + draw_text(cnt->current_image->image,
> cnt->imgs.width - 10,
> > > > > > > > cnt->imgs.height - 10 * size_mul, cnt->imgs.width, tmp,
> > > > > > > > cnt->conf.text_double);
> > > > > > > > +
> > > > > > > > + else if (strcasecmp(use_location, "upper-left") == 0)
> > > > > > > > + draw_text(cnt->current_image->image, 10, 10,
> > > > cnt->imgs.width,
> > > > > > > > tmp, cnt->conf.text_double);
> > > > > > > > +
> > > > > > > > + else if (strcasecmp(use_location, "upper-right") == 0)
> > > > > > > > + draw_text(cnt->current_image->image,
> cnt->imgs.width -
> > > > 10, 10,
> > > > > > > > cnt->imgs.width, tmp, cnt->conf.text_double);
> > > > > > > > +}
> > > > > > > > +
> > > > > > > > /**
> > > > > > > > * motion_loop
> > > > > > > > *
> > > > > > > > @@ -1721,26 +1800,31 @@
> > > > > > > > cnt->imgs.width, tmp,
> > > > > > cnt->conf.text_double);
> > > > > > > > }
> > > > > > > >
> > > > > > > > - /* Add text in lower left corner of the
> pictures */
> > > > > > > > - if (cnt->conf.text_left) {
> > > > > > > > - char tmp[PATH_MAX];
> > > > > > > > - mystrftime(cnt, tmp, sizeof(tmp),
> > > > cnt->conf.text_left,
> > > > > > > > -
> &cnt->current_image->timestamp_tm,
> > > > NULL,
> > > > > > 0);
> > > > > > > > - draw_text(cnt->current_image->image, 10,
> > > > > > cnt->imgs.height
> > > > > > > > - 10 * text_size_factor,
> > > > > > > > - cnt->imgs.width, tmp,
> > > > > > cnt->conf.text_double);
> > > > > > > > - }
> > > > > > > > + /* Add generic text */
> > > > > > > > + if (cnt->conf.generic_text)
> > > > > > > > + format_and_draw_text_at_location(cnt,
> > > > > > > > cnt->conf.generic_text, cnt->conf.generic_text_location,
> > > > > > "bottom-left");
> > > > > > > >
> > > > > > > > - /* Add text in lower right corner of the
> pictures */
> > > > > > > > - if (cnt->conf.text_right) {
> > > > > > > > - char tmp[PATH_MAX];
> > > > > > > > - mystrftime(cnt, tmp, sizeof(tmp),
> > > > > > cnt->conf.text_right,
> > > > > > > > -
> &cnt->current_image->timestamp_tm,
> > > > NULL,
> > > > > > 0);
> > > > > > > > - draw_text(cnt->current_image->image,
> > > > cnt->imgs.width
> > > > > > - 10,
> > > > > > > > - cnt->imgs.height - 10 *
> > > > text_size_factor,
> > > > > > > > - cnt->imgs.width, tmp,
> > > > > > cnt->conf.text_double);
> > > > > > > > + /* Add timestamp */
> > > > > > > > + if (cnt->conf.timestamp)
> > > > > > > > + format_and_draw_text_at_location(cnt,
> > > > > > cnt->conf.timestamp,
> > > > > > > > cnt->conf.timestamp_location, "bottom-right");
> > > > > > > > +
> > > > > > > > + if (cnt->conf.ext_event_udp_listener_port > 0)
> > > > > > > > + {
> > > > > > > > + time_t now = time(NULL);
> > > > > > > > +
> > > > > > > > + pthread_mutex_lock(&ext_event_lock);
> > > > > > > > +
> > > > > > > > + if (now - ext_event_shown_since <=
> > > > > > > > cnt->conf.ext_event_show_time && ext_event_text != NULL)
> > > > > > > > + format_and_draw_text_at_location(cnt,
> > > > > > > > ext_event_text, cnt->conf.ext_event_location, "upper-left");
> > > > > > > > + else
> > > > > > > > + {
> > > > > > > > + free((void *)ext_event_text);
> > > > > > > > + ext_event_text = NULL;
> > > > > > > > + }
> > > > > > > > +
> > > > > > > > + pthread_mutex_unlock(&ext_event_lock);
> > > > > > > > }
> > > > > > > >
> > > > > > > > -
> > > > > > > > /***** MOTION LOOP - ACTIONS AND EVENT CONTROL
> SECTION
> > > > *****/
> > > > > > > >
> > > > > > > > if (cnt->current_image->diffs > cnt->threshold)
> {
> > > > > > > > Index: motion.h
> > > > > > > >
> ===================================================================
> > > > > > > > --- motion.h (revision 564)
> > > > > > > > +++ motion.h (working copy)
> > > > > > > > @@ -50,6 +50,8 @@
> > > > > > > > #include <sys/param.h>
> > > > > > > > #include <stdint.h>
> > > > > > > >
> > > > > > > > +#include <netinet/in.h>
> > > > > > > > +
> > > > > > > > #define _LINUX_TIME_H 1
> > > > > > > > #if defined(HAVE_LINUX_VIDEODEV_H) &&
> (!defined(WITHOUT_V4L)) &&
> > > > > > > > (!defined(BSD))
> > > > > > > > #include <linux/videodev.h>
> > > > > > > >
> > > > > > > >
> > > > > > > > Folkert van Heusden
> > > > > > > >
> > > > > > > > --
> > > > > > > > To MultiTail einai ena polymorfiko ergaleio gia ta logfiles
> kai tin
> > > > > > > > eksodo twn entolwn. Prosferei: filtrarisma, xrwmatismo,
> sygxwneysi,
> > > > > > > > diaforetikes provoles. http://www.vanheusden.com/multitail/
> > > > > > > >
> > > >
> ----------------------------------------------------------------------
> > > > > > > > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> ------------------------------------------------------------------------------
> > > > > > > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > > > > > > Give your users amazing mobile app experiences with Intel(R)
> XDK.
> > > > > > > > Use one codebase in this all-in-one HTML5 development
> environment.
> > > > > > > > Design, debug & build mobile apps & 2D/3D high-impact games
> for
> > > > > > multiple
> > > > > > > > OSs.
> > > > > > > >
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > > > > > > > _______________________________________________
> > > > > > > > Motion-user mailing list
> > > > > > > > [email protected]
> > > > > > > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > > > > > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> > > > > > > >
> > > > > >
> > > > > > >
> > > > > >
> > > >
> ------------------------------------------------------------------------------
> > > > > > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > > > > > Give your users amazing mobile app experiences with Intel(R)
> XDK.
> > > > > > > Use one codebase in this all-in-one HTML5 development
> environment.
> > > > > > > Design, debug & build mobile apps & 2D/3D high-impact games for
> > > > multiple
> > > > > > OSs.
> > > > > > >
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > > > > >
> > > > > > > _______________________________________________
> > > > > > > Motion-user mailing list
> > > > > > > [email protected]
> > > > > > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > > > > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> > > > > >
> > > > > >
> > > > > >
> > > > > > Folkert van Heusden
> > > > > >
> > > > > > --
> > > > > > Feeling generous? -> http://www.vanheusden.com/wishlist.php
> > > > > >
> ----------------------------------------------------------------------
> > > > > > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> > > > > >
> > > > > >
> > > > > >
> > > >
> ------------------------------------------------------------------------------
> > > > > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > > > > Give your users amazing mobile app experiences with Intel(R) XDK.
> > > > > > Use one codebase in this all-in-one HTML5 development
> environment.
> > > > > > Design, debug & build mobile apps & 2D/3D high-impact games for
> > > > multiple
> > > > > > OSs.
> > > > > > http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > > > > > _______________________________________________
> > > > > > Motion-user mailing list
> > > > > > [email protected]
> > > > > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > > > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> > > > > >
> > > >
> > > > >
> > > >
> ------------------------------------------------------------------------------
> > > > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > > > Give your users amazing mobile app experiences with Intel(R) XDK.
> > > > > Use one codebase in this all-in-one HTML5 development environment.
> > > > > Design, debug & build mobile apps & 2D/3D high-impact games for
> multiple
> > > > OSs.
> > > > > http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > > >
> > > > > _______________________________________________
> > > > > Motion-user mailing list
> > > > > [email protected]
> > > > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> > > >
> > > >
> > > >
> > > > Folkert van Heusden
> > > >
> > > > --
> > > > Winnen in de staatsloterij? Check htp://vanheusden.com/sl.php voor
> > > > alle staatsloterij-uitslag statistieken denkbaar en zelfs ook een
> paar
> > > > win-tips!
> > > >
> ----------------------------------------------------------------------
> > > > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> > > >
> > > >
> > > >
> ------------------------------------------------------------------------------
> > > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > > Give your users amazing mobile app experiences with Intel(R) XDK.
> > > > Use one codebase in this all-in-one HTML5 development environment.
> > > > Design, debug & build mobile apps & 2D/3D high-impact games for
> multiple
> > > > OSs.
> > > > http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > > > _______________________________________________
> > > > Motion-user mailing list
> > > > [email protected]
> > > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> > > >
> >
> > >
> ------------------------------------------------------------------------------
> > > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > > Give your users amazing mobile app experiences with Intel(R) XDK.
> > > Use one codebase in this all-in-one HTML5 development environment.
> > > Design, debug & build mobile apps & 2D/3D high-impact games for
> multiple OSs.
> > > http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> >
> > > _______________________________________________
> > > Motion-user mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/motion-user
> > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> >
> >
> >
> > Folkert van Heusden
> >
> > --
> > Multitail est un outil permettant la visualisation de fichiers de
> > journalisation et/ou le suivi de l'ex?cution de commandes. Filtrage,
> > mise en couleur de mot-cl?, fusions, visualisation de diff?rences
> > (diff-view), etc. http://www.vanheusden.com/multitail/
> > ----------------------------------------------------------------------
> > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> >
> >
> ------------------------------------------------------------------------------
> > Go from Idea to Many App Stores Faster with Intel(R) XDK
> > Give your users amazing mobile app experiences with Intel(R) XDK.
> > Use one codebase in this all-in-one HTML5 development environment.
> > Design, debug & build mobile apps & 2D/3D high-impact games for multiple
> OSs.
> > http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> > _______________________________________________
> > Motion-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/motion-user
> > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
>
>
> Folkert van Heusden
>
> --
> Multi tail barnamaj mowahib li mora9abat attasjilat wa nataij awamir
> al 7asoub. damj, talwin, mora9abat attarchi7 wa ila akhirih.
> http://www.vanheusden.com/multitail/
> ----------------------------------------------------------------------
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
>
>
> ------------------------------------------------------------------------------
> Go from Idea to Many App Stores Faster with Intel(R) XDK
> Give your users amazing mobile app experiences with Intel(R) XDK.
> Use one codebase in this all-in-one HTML5 development environment.
> Design, debug & build mobile apps & 2D/3D high-impact games for multiple
> OSs.
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
> _______________________________________________
> Motion-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/motion-user
> http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
>
-------------- next part --------------
An HTML attachment was scrubbed...
------------------------------
------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
------------------------------
_______________________________________________
Motion-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/motion-user
End of Motion-user Digest, Vol 114, Issue 11
********************************************