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 (Marco Balmer)


----------------------------------------------------------------------

Message: 1
Date: Tue, 24 Nov 2015 14:26:47 +0100
From: Marco Balmer <[email protected]>
Subject: Re: [Motion-user] texts & external events
To: <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8; format=flowed

It would be a good idea to change the official repos to github.com!?

Am 24.11.2015 14:23, schrieb tosiara:
> 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] 
> [24]>
> wrote:
>
>> Thats ok but Kenneths 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 [1]
>> >
>> > 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]
>> [2]> wrote:
>> >
>> > > Hi,
>> > >
>> > > Ive 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.
>> > >
>> > > Ive 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
>> > > clockn"
>> > > -? ? "# 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-rightn",
>> > > +? ? 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 textn"
>> > > -? ? "# 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-leftn",
>> > > +? ? 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 settingsn"
>> > > @@ -901,6 +925,34 @@
>> > >? ? ? print_bool
>> > >? ? ? },
>> > >? ? ? {
>> > > +? ? "ext_event_udp_listener_port",
>> > > +? ? "# On what UDP port to listen for external
>> (text-)events. They willn"
>> > > +? ? "# be show on the screen for ext_event_show_time seconds
>> at
>> > > positionn"
>> > > +? ? "# 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 = centern",
>> > > +? ? 0,
>> > > +? ? CONF_OFFSET(ext_event_location),
>> > > +? ? copy_string,
>> > > +? ? print_string
>> > > +? ? },
>> > > +? ? {
>> > >? ? ? "exif_text",
>> > >? ? ? "# Text to include in a JPEG EXIF commentn"
>> > >? ? ? "# 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 [3]
>> > >
>> ===================================================================
>> > > --- motion-dist.conf.in [4] (revision 564)
>> > > +++ motion-dist.conf.in [5] (working copy)
>> > > @@ -369,14 +369,24 @@
>> > >
>> > >? # Draws the timestamp using same options as C function
>> strftime(3)
>> > >? # Default: %Y-%m-%dn%T = date in ISO format and time in 24
>> hour clock
>> > > -# Text is placed in lower right corner
>> > > -text_right %Y-%m-%dn%T-%q
>> > > +# Text is placed default in lower right corner. Change this
>> with
>> > > timestamp_location
>> > > +timestamp %Y-%m-%dn%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:
>> > > %sn", 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:
>> > > %sn", 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/ [6]
>> > >
>>
> 
> ----------------------------------------------------------------------
>> > > Phone: +31-6-41278122 [7], PGP-key: 1F28D8AE,
>> www.vanheusden.com [8]
>> > >
>> > >
>> > >
>>
> 
> ------------------------------------------------------------------------------
>> > > 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 [9]
>> > > _______________________________________________
>> > > Motion-user mailing list
>> > > [email protected] [10]
>> > > https://lists.sourceforge.net/lists/listinfo/motion-user [11]
>> > > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome [12]
>> > >
>>
>> >
>>
> 
> ------------------------------------------------------------------------------
>> > 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
>> [13]
>>
>> > _______________________________________________
>> > Motion-user mailing list
>> > [email protected] [14]
>> > https://lists.sourceforge.net/lists/listinfo/motion-user [15]
>> > http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome [16]
>>
>> Folkert van Heusden
>>
>> --
>> Feeling generous? -> http://www.vanheusden.com/wishlist.php [17]
>>
>>
> 
> ----------------------------------------------------------------------
>> Phone: +31-6-41278122 [18], PGP-key: 1F28D8AE, www.vanheusden.com
>> [19]
>>
>>
> 
> ------------------------------------------------------------------------------
>> 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
>> [20]
>> _______________________________________________
>> Motion-user mailing list
>> [email protected] [21]
>> https://lists.sourceforge.net/lists/listinfo/motion-user [22]
>> http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome [23]
>
>
>
> Links:
> ------
> [1] https://github.com/Mr-Dave/motion
> [2] mailto:[email protected]
> [3] http://motion-dist.conf.in
> [4] http://motion-dist.conf.in
> [5] http://motion-dist.conf.in
> [6] http://www.vanheusden.com/multitail/
> [7] http://webmail.nine.ch/tel:%2B31-6-41278122
> [8] http://www.vanheusden.com
> [9] 
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&amp;iu=/4140
> [10] mailto:[email protected]
> [11] https://lists.sourceforge.net/lists/listinfo/motion-user
> [12] http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> [13] 
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&amp;iu=/4140
> [14] mailto:[email protected]
> [15] https://lists.sourceforge.net/lists/listinfo/motion-user
> [16] http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> [17] http://www.vanheusden.com/wishlist.php
> [18] http://webmail.nine.ch/tel:%2B31-6-41278122
> [19] http://www.vanheusden.com
> [20] 
> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&amp;iu=/4140
> [21] mailto:[email protected]
> [22] https://lists.sourceforge.net/lists/listinfo/motion-user
> [23] http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
> [24] mailto:[email protected]




------------------------------

------------------------------------------------------------------------------
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 8
*******************************************

Reply via email to