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: ffmpeg 5.6 & motion (folkert)
2. Re: ffmpeg 5.6 & motion (tosiara)
3. texts & external events (folkert)
----------------------------------------------------------------------
Message: 1
Date: Tue, 24 Nov 2015 12:08:42 +0100
From: folkert <[email protected]>
Subject: Re: [Motion-user] ffmpeg 5.6 & motion
To: Motion discussion list <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
The one from subversion.
On Tue, Nov 24, 2015 at 12:48:59PM +0200, tosiara wrote:
> Which motion version are you compiling?
>
> On Tue, Nov 24, 2015 at 12:27 PM, folkert <[email protected]> wrote:
>
> > Hi,
> >
> > To get motion compile with ffmpeg 5.6 I had to make a couple of changes:
> >
> > 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;
> >
> >
> > Folkert van Heusden
> >
> > --
> > Curious about the inner workings of your car? Then check O2OO: it'll
> > tell you all that there is to know about your car's engine!
> > http://www.vanheusden.com/O2OO/
> > ----------------------------------------------------------------------
> > 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
--
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
------------------------------
Message: 2
Date: Tue, 24 Nov 2015 13:11:39 +0200
From: tosiara <[email protected]>
Subject: Re: [Motion-user] ffmpeg 5.6 & motion
To: Motion discussion list <[email protected]>
Message-ID:
<CACHTdwS=3yy2sqq2nr_jxup0gawcokiwaanaljtr+tlnbay...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Can you try the latest trunk from Github if it also requires same changes?
https://github.com/Mr-Dave/motion
On Tue, Nov 24, 2015 at 1:08 PM, folkert <[email protected]> wrote:
> The one from subversion.
>
> On Tue, Nov 24, 2015 at 12:48:59PM +0200, tosiara wrote:
> > Which motion version are you compiling?
> >
> > On Tue, Nov 24, 2015 at 12:27 PM, folkert <[email protected]>
> wrote:
> >
> > > Hi,
> > >
> > > To get motion compile with ffmpeg 5.6 I had to make a couple of
> changes:
> > >
> > > 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;
> > >
> > >
> > > Folkert van Heusden
> > >
> > > --
> > > Curious about the inner workings of your car? Then check O2OO: it'll
> > > tell you all that there is to know about your car's engine!
> > > http://www.vanheusden.com/O2OO/
> > > ----------------------------------------------------------------------
> > > 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
>
> --
> 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...
------------------------------
Message: 3
Date: Tue, 24 Nov 2015 14:09:51 +0100
From: folkert <[email protected]>
Subject: [Motion-user] texts & external events
To: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
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
End of Motion-user Digest, Vol 114, Issue 4
*******************************************