diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 64fd8f92..51e13dc6 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - - name: MotionPlus User Questions - url: https://github.com/Motion-Project/motionplus/discussions + - name: Motion User Questions + url: https://github.com/Motion-Project/motion/discussions about: Please ask and answer questions here. - - name: MotionPlus Enhancements - url: https://github.com/Motion-Project/motionplus/discussions + - name: Motion Enhancements + url: https://github.com/Motion-Project/motion/discussions about: Please use the discussions page and tag as an enhancement request. diff --git a/.github/ISSUE_TEMPLATE/issue.yml b/.github/ISSUE_TEMPLATE/issue.yml index b977906f..fad8ac9b 100644 --- a/.github/ISSUE_TEMPLATE/issue.yml +++ b/.github/ISSUE_TEMPLATE/issue.yml @@ -19,15 +19,20 @@ body: - type: dropdown id: baseversion attributes: - label: What is the base version number of MotionPlus being used? + label: What is the base version number of Motion being used? multiple: false options: - - 0.0.x - - 0.1.x - - 0.2.x - - 0.3.x - - 0.4.x - - 0.5.x + - 4.0.x + - 4.1.x + - 4.2.x + - 4.3.x + - 4.4.x + - 4.5.x + - 4.6.x + - 4.7.x + - 5.0.x + - 5.1.x + - 5.2.x validations: required: true - type: dropdown @@ -99,8 +104,8 @@ body: - type: textarea id: logs attributes: - label: Relevant MotionPlus log output (at log_level 8) - description: Please copy and paste the log output. This will be automatically formatted into code, so no need for backticks. + label: Full Motion log output (at log_level 8) + description: Please copy and paste the full log output. This will be automatically formatted into code, so no need for backticks. render: shell validations: required: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 598ac4e8..e8c8a433 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,5 +93,5 @@ jobs: - name: Run artifact run: | - file ./src/motionplus - ./src/motionplus -h || true + file ./src/motion + ./src/motion -h || true diff --git a/.gitignore b/.gitignore index 7458942c..065df68b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,8 +20,8 @@ missing stamp-h1 #data -data/motionplus-dist.service -data/motionplus-dist.conf +data/motion-dist.service +data/motion-dist.conf data/camera1-dist.conf data/camera2-dist.conf data/camera3-dist.conf @@ -29,7 +29,7 @@ data/sound1-dist.conf #src src/*.o -src/motionplus +src/motion src/Makefile src/Makefile.in src/.deps/ @@ -52,7 +52,7 @@ po/en@boldquot.header po/en@quot.header po/insert-header.sin po/quot.sed -po/motionplus.pot +po/motion.pot po/remove-potcdate.sed po/remove-potcdate.sin po/stamp-po diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 62acf66b..a9485186 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,13 +2,7 @@ Issues on the github site are intended to discuss code problems, crashes and application enhancements. The discussions is intended for questions after you have read the guide. -## Submitting Problems - -During the initial development of MotionPlus issues may frequently arise and it is best to provide as much detail as possible regarding how to replicate. - ## Questions submitted as issues -Questions that are submitted as a github issue will be transferred to the discussions section without comment. - +Questions that are submitted as a github issue will be transferred to the discussions section. -Thanks \ No newline at end of file diff --git a/ChangeMasterFileNames.patch b/ChangeMasterFileNames.patch new file mode 100644 index 00000000..12657b92 --- /dev/null +++ b/ChangeMasterFileNames.patch @@ -0,0 +1,1414 @@ +From 5d8f33e4ecf3715580f1353eadbcae68d0fc65f3 Mon Sep 17 00:00:00 2001 +From: Mr-Dave +Date: Tue, 4 Feb 2025 14:57:34 -0700 +Subject: [PATCH 1/2] Rename files to prepare for merge with 5.0 branch + +--- + doc/{CHANGELOG => changelog} | 0 + doc/{CODE_STANDARD => code_standard} | 0 + src/{alg.c => alg.cpp} | 0 + src/{alg.h => alg.hpp} | 0 + src/{conf.c => conf.cpp} | 0 + src/{conf.h => conf.hpp} | 0 + src/{dbse.c => dbse.cpp} | 0 + src/{dbse.h => dbse.hpp} | 0 + src/{draw.c => draw.cpp} | 0 + src/{draw.h => draw.hpp} | 0 + src/{event.c => event.cpp} | 0 + src/{event.h => event.hpp} | 0 + src/{ffmpeg.c => ffmpeg.cpp} | 0 + src/{ffmpeg.h => ffmpeg.hpp} | 0 + src/{jpegutils.c => jpegutils.cpp} | 0 + src/{jpegutils.h => jpegutils.hpp} | 0 + src/{logger.c => logger.cpp} | 0 + src/{logger.h => logger.hpp} | 0 + src/{mmx.h => mmx.hpp} | 0 + src/{motion.c => motion.cpp} | 0 + src/{motion.h => motion.hpp} | 0 + src/{netcam.c => netcam.cpp} | 0 + src/{netcam.h => netcam.hpp} | 0 + src/{netcam_ftp.c => netcam_ftp.cpp} | 0 + src/{netcam_ftp.h => netcam_ftp.hpp} | 0 + src/{netcam_http.c => netcam_http.cpp} | 0 + src/{netcam_http.h => netcam_http.hpp} | 0 + src/{netcam_jpeg.c => netcam_jpeg.cpp} | 0 + src/{netcam_jpeg.h => netcam_jpeg.hpp} | 0 + src/{netcam_rtsp.c => netcam_rtsp.cpp} | 0 + src/{netcam_rtsp.h => netcam_rtsp.hpp} | 0 + src/{netcam_wget.c => netcam_wget.cpp} | 0 + src/{netcam_wget.h => netcam_wget.hpp} | 0 + src/{picture.c => picture.cpp} | 0 + src/{picture.h => picture.hpp} | 0 + src/{pwc-ioctl.h => pwc-ioctl.hpp} | 0 + src/{rotate.c => rotate.cpp} | 0 + src/{rotate.h => rotate.hpp} | 0 + src/{track.c => track.cpp} | 0 + src/{track.h => track.hpp} | 0 + src/{translate.c => translate.cpp} | 0 + src/{translate.h => translate.hpp} | 0 + src/{util.c => util.cpp} | 0 + src/{util.h => util.hpp} | 0 + src/{video_bktr.c => video_bktr.cpp} | 0 + src/{video_bktr.h => video_bktr.hpp} | 0 + src/{video_common.c => video_common.cpp} | 0 + src/{video_common.h => video_common.hpp} | 0 + src/{video_loopback.c => video_loopback.cpp} | 0 + src/{video_loopback.h => video_loopback.hpp} | 0 + src/{video_v4l2.c => video_v4l2.cpp} | 0 + src/{video_v4l2.h => video_v4l2.hpp} | 0 + src/{webu.c => webu.cpp} | 0 + src/{webu.h => webu.hpp} | 0 + src/{webu_html.c => webu_html.cpp} | 0 + src/{webu_html.h => webu_html.hpp} | 0 + src/{webu_status.c => webu_status.cpp} | 0 + src/{webu_status.h => webu_status.hpp} | 0 + src/{webu_stream.c => webu_stream.cpp} | 0 + src/{webu_stream.h => webu_stream.hpp} | 0 + src/{webu_text.c => webu_text.cpp} | 0 + src/{webu_text.h => webu_text.hpp} | 0 + 62 files changed, 0 insertions(+), 0 deletions(-) + rename doc/{CHANGELOG => changelog} (100%) + rename doc/{CODE_STANDARD => code_standard} (100%) + rename src/{alg.c => alg.cpp} (100%) + rename src/{alg.h => alg.hpp} (100%) + rename src/{conf.c => conf.cpp} (100%) + rename src/{conf.h => conf.hpp} (100%) + rename src/{dbse.c => dbse.cpp} (100%) + rename src/{dbse.h => dbse.hpp} (100%) + rename src/{draw.c => draw.cpp} (100%) + rename src/{draw.h => draw.hpp} (100%) + rename src/{event.c => event.cpp} (100%) + rename src/{event.h => event.hpp} (100%) + rename src/{ffmpeg.c => ffmpeg.cpp} (100%) + rename src/{ffmpeg.h => ffmpeg.hpp} (100%) + rename src/{jpegutils.c => jpegutils.cpp} (100%) + rename src/{jpegutils.h => jpegutils.hpp} (100%) + rename src/{logger.c => logger.cpp} (100%) + rename src/{logger.h => logger.hpp} (100%) + rename src/{mmx.h => mmx.hpp} (100%) + rename src/{motion.c => motion.cpp} (100%) + rename src/{motion.h => motion.hpp} (100%) + rename src/{netcam.c => netcam.cpp} (100%) + rename src/{netcam.h => netcam.hpp} (100%) + rename src/{netcam_ftp.c => netcam_ftp.cpp} (100%) + rename src/{netcam_ftp.h => netcam_ftp.hpp} (100%) + rename src/{netcam_http.c => netcam_http.cpp} (100%) + rename src/{netcam_http.h => netcam_http.hpp} (100%) + rename src/{netcam_jpeg.c => netcam_jpeg.cpp} (100%) + rename src/{netcam_jpeg.h => netcam_jpeg.hpp} (100%) + rename src/{netcam_rtsp.c => netcam_rtsp.cpp} (100%) + rename src/{netcam_rtsp.h => netcam_rtsp.hpp} (100%) + rename src/{netcam_wget.c => netcam_wget.cpp} (100%) + rename src/{netcam_wget.h => netcam_wget.hpp} (100%) + rename src/{picture.c => picture.cpp} (100%) + rename src/{picture.h => picture.hpp} (100%) + rename src/{pwc-ioctl.h => pwc-ioctl.hpp} (100%) + rename src/{rotate.c => rotate.cpp} (100%) + rename src/{rotate.h => rotate.hpp} (100%) + rename src/{track.c => track.cpp} (100%) + rename src/{track.h => track.hpp} (100%) + rename src/{translate.c => translate.cpp} (100%) + rename src/{translate.h => translate.hpp} (100%) + rename src/{util.c => util.cpp} (100%) + rename src/{util.h => util.hpp} (100%) + rename src/{video_bktr.c => video_bktr.cpp} (100%) + rename src/{video_bktr.h => video_bktr.hpp} (100%) + rename src/{video_common.c => video_common.cpp} (100%) + rename src/{video_common.h => video_common.hpp} (100%) + rename src/{video_loopback.c => video_loopback.cpp} (100%) + rename src/{video_loopback.h => video_loopback.hpp} (100%) + rename src/{video_v4l2.c => video_v4l2.cpp} (100%) + rename src/{video_v4l2.h => video_v4l2.hpp} (100%) + rename src/{webu.c => webu.cpp} (100%) + rename src/{webu.h => webu.hpp} (100%) + rename src/{webu_html.c => webu_html.cpp} (100%) + rename src/{webu_html.h => webu_html.hpp} (100%) + rename src/{webu_status.c => webu_status.cpp} (100%) + rename src/{webu_status.h => webu_status.hpp} (100%) + rename src/{webu_stream.c => webu_stream.cpp} (100%) + rename src/{webu_stream.h => webu_stream.hpp} (100%) + rename src/{webu_text.c => webu_text.cpp} (100%) + rename src/{webu_text.h => webu_text.hpp} (100%) + +diff --git a/doc/CHANGELOG b/doc/changelog +similarity index 100% +rename from doc/CHANGELOG +rename to doc/changelog +diff --git a/doc/CODE_STANDARD b/doc/code_standard +similarity index 100% +rename from doc/CODE_STANDARD +rename to doc/code_standard +diff --git a/src/alg.c b/src/alg.cpp +similarity index 100% +rename from src/alg.c +rename to src/alg.cpp +diff --git a/src/alg.h b/src/alg.hpp +similarity index 100% +rename from src/alg.h +rename to src/alg.hpp +diff --git a/src/conf.c b/src/conf.cpp +similarity index 100% +rename from src/conf.c +rename to src/conf.cpp +diff --git a/src/conf.h b/src/conf.hpp +similarity index 100% +rename from src/conf.h +rename to src/conf.hpp +diff --git a/src/dbse.c b/src/dbse.cpp +similarity index 100% +rename from src/dbse.c +rename to src/dbse.cpp +diff --git a/src/dbse.h b/src/dbse.hpp +similarity index 100% +rename from src/dbse.h +rename to src/dbse.hpp +diff --git a/src/draw.c b/src/draw.cpp +similarity index 100% +rename from src/draw.c +rename to src/draw.cpp +diff --git a/src/draw.h b/src/draw.hpp +similarity index 100% +rename from src/draw.h +rename to src/draw.hpp +diff --git a/src/event.c b/src/event.cpp +similarity index 100% +rename from src/event.c +rename to src/event.cpp +diff --git a/src/event.h b/src/event.hpp +similarity index 100% +rename from src/event.h +rename to src/event.hpp +diff --git a/src/ffmpeg.c b/src/ffmpeg.cpp +similarity index 100% +rename from src/ffmpeg.c +rename to src/ffmpeg.cpp +diff --git a/src/ffmpeg.h b/src/ffmpeg.hpp +similarity index 100% +rename from src/ffmpeg.h +rename to src/ffmpeg.hpp +diff --git a/src/jpegutils.c b/src/jpegutils.cpp +similarity index 100% +rename from src/jpegutils.c +rename to src/jpegutils.cpp +diff --git a/src/jpegutils.h b/src/jpegutils.hpp +similarity index 100% +rename from src/jpegutils.h +rename to src/jpegutils.hpp +diff --git a/src/logger.c b/src/logger.cpp +similarity index 100% +rename from src/logger.c +rename to src/logger.cpp +diff --git a/src/logger.h b/src/logger.hpp +similarity index 100% +rename from src/logger.h +rename to src/logger.hpp +diff --git a/src/mmx.h b/src/mmx.hpp +similarity index 100% +rename from src/mmx.h +rename to src/mmx.hpp +diff --git a/src/motion.c b/src/motion.cpp +similarity index 100% +rename from src/motion.c +rename to src/motion.cpp +diff --git a/src/motion.h b/src/motion.hpp +similarity index 100% +rename from src/motion.h +rename to src/motion.hpp +diff --git a/src/netcam.c b/src/netcam.cpp +similarity index 100% +rename from src/netcam.c +rename to src/netcam.cpp +diff --git a/src/netcam.h b/src/netcam.hpp +similarity index 100% +rename from src/netcam.h +rename to src/netcam.hpp +diff --git a/src/netcam_ftp.c b/src/netcam_ftp.cpp +similarity index 100% +rename from src/netcam_ftp.c +rename to src/netcam_ftp.cpp +diff --git a/src/netcam_ftp.h b/src/netcam_ftp.hpp +similarity index 100% +rename from src/netcam_ftp.h +rename to src/netcam_ftp.hpp +diff --git a/src/netcam_http.c b/src/netcam_http.cpp +similarity index 100% +rename from src/netcam_http.c +rename to src/netcam_http.cpp +diff --git a/src/netcam_http.h b/src/netcam_http.hpp +similarity index 100% +rename from src/netcam_http.h +rename to src/netcam_http.hpp +diff --git a/src/netcam_jpeg.c b/src/netcam_jpeg.cpp +similarity index 100% +rename from src/netcam_jpeg.c +rename to src/netcam_jpeg.cpp +diff --git a/src/netcam_jpeg.h b/src/netcam_jpeg.hpp +similarity index 100% +rename from src/netcam_jpeg.h +rename to src/netcam_jpeg.hpp +diff --git a/src/netcam_rtsp.c b/src/netcam_rtsp.cpp +similarity index 100% +rename from src/netcam_rtsp.c +rename to src/netcam_rtsp.cpp +diff --git a/src/netcam_rtsp.h b/src/netcam_rtsp.hpp +similarity index 100% +rename from src/netcam_rtsp.h +rename to src/netcam_rtsp.hpp +diff --git a/src/netcam_wget.c b/src/netcam_wget.cpp +similarity index 100% +rename from src/netcam_wget.c +rename to src/netcam_wget.cpp +diff --git a/src/netcam_wget.h b/src/netcam_wget.hpp +similarity index 100% +rename from src/netcam_wget.h +rename to src/netcam_wget.hpp +diff --git a/src/picture.c b/src/picture.cpp +similarity index 100% +rename from src/picture.c +rename to src/picture.cpp +diff --git a/src/picture.h b/src/picture.hpp +similarity index 100% +rename from src/picture.h +rename to src/picture.hpp +diff --git a/src/pwc-ioctl.h b/src/pwc-ioctl.hpp +similarity index 100% +rename from src/pwc-ioctl.h +rename to src/pwc-ioctl.hpp +diff --git a/src/rotate.c b/src/rotate.cpp +similarity index 100% +rename from src/rotate.c +rename to src/rotate.cpp +diff --git a/src/rotate.h b/src/rotate.hpp +similarity index 100% +rename from src/rotate.h +rename to src/rotate.hpp +diff --git a/src/track.c b/src/track.cpp +similarity index 100% +rename from src/track.c +rename to src/track.cpp +diff --git a/src/track.h b/src/track.hpp +similarity index 100% +rename from src/track.h +rename to src/track.hpp +diff --git a/src/translate.c b/src/translate.cpp +similarity index 100% +rename from src/translate.c +rename to src/translate.cpp +diff --git a/src/translate.h b/src/translate.hpp +similarity index 100% +rename from src/translate.h +rename to src/translate.hpp +diff --git a/src/util.c b/src/util.cpp +similarity index 100% +rename from src/util.c +rename to src/util.cpp +diff --git a/src/util.h b/src/util.hpp +similarity index 100% +rename from src/util.h +rename to src/util.hpp +diff --git a/src/video_bktr.c b/src/video_bktr.cpp +similarity index 100% +rename from src/video_bktr.c +rename to src/video_bktr.cpp +diff --git a/src/video_bktr.h b/src/video_bktr.hpp +similarity index 100% +rename from src/video_bktr.h +rename to src/video_bktr.hpp +diff --git a/src/video_common.c b/src/video_common.cpp +similarity index 100% +rename from src/video_common.c +rename to src/video_common.cpp +diff --git a/src/video_common.h b/src/video_common.hpp +similarity index 100% +rename from src/video_common.h +rename to src/video_common.hpp +diff --git a/src/video_loopback.c b/src/video_loopback.cpp +similarity index 100% +rename from src/video_loopback.c +rename to src/video_loopback.cpp +diff --git a/src/video_loopback.h b/src/video_loopback.hpp +similarity index 100% +rename from src/video_loopback.h +rename to src/video_loopback.hpp +diff --git a/src/video_v4l2.c b/src/video_v4l2.cpp +similarity index 100% +rename from src/video_v4l2.c +rename to src/video_v4l2.cpp +diff --git a/src/video_v4l2.h b/src/video_v4l2.hpp +similarity index 100% +rename from src/video_v4l2.h +rename to src/video_v4l2.hpp +diff --git a/src/webu.c b/src/webu.cpp +similarity index 100% +rename from src/webu.c +rename to src/webu.cpp +diff --git a/src/webu.h b/src/webu.hpp +similarity index 100% +rename from src/webu.h +rename to src/webu.hpp +diff --git a/src/webu_html.c b/src/webu_html.cpp +similarity index 100% +rename from src/webu_html.c +rename to src/webu_html.cpp +diff --git a/src/webu_html.h b/src/webu_html.hpp +similarity index 100% +rename from src/webu_html.h +rename to src/webu_html.hpp +diff --git a/src/webu_status.c b/src/webu_status.cpp +similarity index 100% +rename from src/webu_status.c +rename to src/webu_status.cpp +diff --git a/src/webu_status.h b/src/webu_status.hpp +similarity index 100% +rename from src/webu_status.h +rename to src/webu_status.hpp +diff --git a/src/webu_stream.c b/src/webu_stream.cpp +similarity index 100% +rename from src/webu_stream.c +rename to src/webu_stream.cpp +diff --git a/src/webu_stream.h b/src/webu_stream.hpp +similarity index 100% +rename from src/webu_stream.h +rename to src/webu_stream.hpp +diff --git a/src/webu_text.c b/src/webu_text.cpp +similarity index 100% +rename from src/webu_text.c +rename to src/webu_text.cpp +diff --git a/src/webu_text.h b/src/webu_text.hpp +similarity index 100% +rename from src/webu_text.h +rename to src/webu_text.hpp +-- +2.39.5 + + +From 4a5c38292082b8a2b9d43c2f12c593743ec63b30 Mon Sep 17 00:00:00 2001 +From: Mr-Dave +Date: Tue, 4 Feb 2025 15:17:33 -0700 +Subject: [PATCH 2/2] Revise file names + +--- + configure.ac | 8 +++--- + po/POTFILES.in | 58 ++++++++++++++++++++-------------------- + src/Makefile.am | 60 +++++++++++++++++++++--------------------- + src/alg.cpp | 10 +++---- + src/alg.hpp | 2 +- + src/conf.cpp | 8 +++--- + src/dbse.cpp | 10 +++---- + src/draw.cpp | 6 ++--- + src/event.cpp | 24 ++++++++--------- + src/ffmpeg.cpp | 14 +++++----- + src/ffmpeg.hpp | 2 +- + src/jpegutils.cpp | 14 +++++----- + src/logger.cpp | 4 +-- + src/logger.hpp | 2 +- + src/motion.cpp | 38 +++++++++++++------------- + src/motion.hpp | 6 ++--- + src/netcam.cpp | 14 +++++----- + src/netcam.hpp | 4 +-- + src/netcam_ftp.cpp | 12 ++++----- + src/netcam_http.cpp | 12 ++++----- + src/netcam_jpeg.cpp | 14 +++++----- + src/netcam_rtsp.cpp | 16 +++++------ + src/netcam_wget.cpp | 8 +++--- + src/netcam_wget.hpp | 2 +- + src/picture.cpp | 16 +++++------ + src/rotate.cpp | 10 +++---- + src/track.cpp | 10 +++---- + src/track.hpp | 2 +- + src/translate.cpp | 6 ++--- + src/util.cpp | 8 +++--- + src/video_bktr.cpp | 14 +++++----- + src/video_common.cpp | 20 +++++++------- + src/video_loopback.cpp | 10 +++---- + src/video_v4l2.cpp | 14 +++++----- + src/webu.cpp | 18 ++++++------- + src/webu_html.cpp | 12 ++++----- + src/webu_status.cpp | 6 ++--- + src/webu_stream.cpp | 12 ++++----- + src/webu_text.cpp | 12 ++++----- + 39 files changed, 259 insertions(+), 259 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ef7cb3e..1c41c8e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4,8 +4,8 @@ AM_MAINTAINER_MODE([enable]) + AC_PROG_CC + AC_PROG_CXX + AC_GNU_SOURCE +-AC_CONFIG_HEADERS([config.h]) +-AC_CONFIG_SRCDIR([src/motion.c]) ++AC_CONFIG_HEADERS([config.hpp]) ++AC_CONFIG_SRCDIR([src/motion.cpp]) + AC_CANONICAL_HOST + AC_CONFIG_MACRO_DIR([m4]) + +@@ -37,7 +37,7 @@ AS_IF([test "${PKGCONFIG}" = "no" ],[ + ### Check pthread + ############################################################################## + AC_CHECK_HEADERS(pthread.h,,AC_MSG_ERROR([pthread is required.])) +-TEMP_CFLAGS="-D_THREAD_SAFE" ++TEMP_CFLAGS="-x c -D_THREAD_SAFE" + LIBS="$LIBS -pthread " + + ############################################################################## +@@ -440,7 +440,7 @@ AS_IF([test "${PROTOTYPE_FLAGS}" = "yes"], [ + ] + ) + +- ++CPPFLAGS="$CPPFLAGS $TEMP_CFLAGS" + AC_SUBST(AM_CFLAGS, "$TEMP_CFLAGS") + LIBS="$LIBS $TEMP_LIBS" + AC_SUBST(AM_LDFLAGS, "$TEMP_LDFLAGS") +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 1e91632..72c7eb4 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -1,30 +1,30 @@ + # main sources +-src/alg.c +-src/conf.c +-src/dbse.c +-src/draw.c +-src/event.c +-src/ffmpeg.c +-src/jpegutils.c +-src/logger.c +-src/motion.c +-src/netcam.c +-src/netcam_ftp.c +-src/netcam_http.c +-src/netcam_jpeg.c +-src/netcam_rtsp.c +-src/netcam_wget.c +-src/picture.c +-src/rotate.c +-src/track.c +-src/translate.c +-src/util.c +-src/video_bktr.c +-src/video_common.c +-src/video_loopback.c +-src/video_v4l2.c +-src/webu.c +-src/webu_html.c +-src/webu_status.c +-src/webu_stream.c +-src/webu_text.c ++src/alg.cpp ++src/conf.cpp ++src/dbse.cpp ++src/draw.cpp ++src/event.cpp ++src/ffmpeg.cpp ++src/jpegutils.cpp ++src/logger.cpp ++src/motion.cpp ++src/netcam.cpp ++src/netcam_ftp.cpp ++src/netcam_http.cpp ++src/netcam_jpeg.cpp ++src/netcam_rtsp.cpp ++src/netcam_wget.cpp ++src/picture.cpp ++src/rotate.cpp ++src/track.cpp ++src/translate.cpp ++src/util.cpp ++src/video_bktr.cpp ++src/video_common.cpp ++src/video_loopback.cpp ++src/video_v4l2.cpp ++src/webu.cpp ++src/webu_html.cpp ++src/webu_status.cpp ++src/webu_stream.cpp ++src/webu_text.cpp +diff --git a/src/Makefile.am b/src/Makefile.am +index 827bf19..868d3b4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -4,34 +4,34 @@ LDADD = $(LIBINTL) + bin_PROGRAMS = motion + + motion_SOURCES = \ +- alg.h alg.c \ +- conf.h conf.c \ +- dbse.h dbse.c \ +- draw.h draw.c \ +- event.h event.c \ +- ffmpeg.h ffmpeg.c \ +- jpegutils.h jpegutils.c \ +- logger.h logger.c \ +- motion.h motion.c \ +- netcam.h netcam.c \ +- netcam_ftp.h netcam_ftp.c \ +- netcam_http.h netcam_http.c \ +- netcam_jpeg.h netcam_jpeg.c \ +- netcam_rtsp.h netcam_rtsp.c \ +- netcam_wget.h netcam_wget.c \ +- picture.h picture.c \ +- rotate.h rotate.c \ +- track.h track.c \ +- translate.h translate.c \ +- util.h util.c \ +- video_bktr.h video_bktr.c \ +- video_common.h video_common.c \ +- video_loopback.h video_loopback.c \ +- video_v4l2.h video_v4l2.c \ +- webu.h webu.c \ +- webu_html.h webu_html.c \ +- webu_status.h webu_status.c \ +- webu_stream.h webu_stream.c \ +- webu_text.h webu_text.c \ +- mmx.h pwc-ioctl.h ++ alg.hpp alg.cpp \ ++ conf.hpp conf.cpp \ ++ dbse.hpp dbse.cpp \ ++ draw.hpp draw.cpp \ ++ event.hpp event.cpp \ ++ ffmpeg.hpp ffmpeg.cpp \ ++ jpegutils.hpp jpegutils.cpp \ ++ logger.hpp logger.cpp \ ++ motion.hpp motion.cpp \ ++ netcam.hpp netcam.cpp \ ++ netcam_ftp.hpp netcam_ftp.cpp \ ++ netcam_http.hpp netcam_http.cpp \ ++ netcam_jpeg.hpp netcam_jpeg.cpp \ ++ netcam_rtsp.hpp netcam_rtsp.cpp \ ++ netcam_wget.hpp netcam_wget.cpp \ ++ picture.hpp picture.cpp \ ++ rotate.hpp rotate.cpp \ ++ track.hpp track.cpp \ ++ translate.hpp translate.cpp \ ++ util.hpp util.cpp \ ++ video_bktr.hpp video_bktr.cpp \ ++ video_common.hpp video_common.cpp \ ++ video_loopback.hpp video_loopback.cpp \ ++ video_v4l2.hpp video_v4l2.cpp \ ++ webu.hpp webu.cpp \ ++ webu_html.hpp webu_html.cpp \ ++ webu_status.hpp webu_status.cpp \ ++ webu_stream.hpp webu_stream.cpp \ ++ webu_text.hpp webu_text.cpp \ ++ mmx.hpp pwc-ioctl.hpp + +diff --git a/src/alg.cpp b/src/alg.cpp +index c8ca553..a87e76c 100644 +--- a/src/alg.cpp ++++ b/src/alg.cpp +@@ -21,14 +21,14 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "draw.h" +-#include "alg.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "draw.hpp" ++#include "alg.hpp" + + #ifdef __MMX__ + #define HAVE_MMX +- #include "mmx.h" ++ #include "mmx.hpp" + #endif + + #define MAX2(x, y) ((x) > (y) ? (x) : (y)) +diff --git a/src/alg.hpp b/src/alg.hpp +index 59f872c..342db09 100644 +--- a/src/alg.hpp ++++ b/src/alg.hpp +@@ -23,7 +23,7 @@ + #ifndef _INCLUDE_ALG_H + #define _INCLUDE_ALG_H + +-#include "motion.h" ++#include "motion.hpp" + + struct coord { + int x; +diff --git a/src/conf.cpp b/src/conf.cpp +index 41b8a0f..d19fde2 100644 +--- a/src/conf.cpp ++++ b/src/conf.cpp +@@ -29,10 +29,10 @@ + + #include + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #define EXTENSION ".conf" + +diff --git a/src/dbse.cpp b/src/dbse.cpp +index d4a5de6..62872f2 100644 +--- a/src/dbse.cpp ++++ b/src/dbse.cpp +@@ -21,11 +21,11 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "dbse.hpp" + + pthread_mutex_t dbse_lock; + +diff --git a/src/draw.cpp b/src/draw.cpp +index aee2224..be7fb40 100644 +--- a/src/draw.cpp ++++ b/src/draw.cpp +@@ -24,9 +24,9 @@ + */ + + #include +-#include "motion.h" +-#include "util.h" +-#include "draw.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "draw.hpp" + + /* Highest ascii value is 126 (~) */ + #define ASCII_MAX 127 +diff --git a/src/event.cpp b/src/event.cpp +index a36e249..6b05eba 100644 +--- a/src/event.cpp ++++ b/src/event.cpp +@@ -22,18 +22,18 @@ + Copyright Jeroen Vreeken, 2002 + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "picture.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "ffmpeg.h" +-#include "event.h" +-#include "video_loopback.h" +-#include "video_common.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "picture.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "ffmpeg.hpp" ++#include "event.hpp" ++#include "video_loopback.hpp" ++#include "video_common.hpp" ++#include "dbse.hpp" + + /* + * TODO Items: +diff --git a/src/ffmpeg.cpp b/src/ffmpeg.cpp +index 988d662..496d02e 100644 +--- a/src/ffmpeg.cpp ++++ b/src/ffmpeg.cpp +@@ -34,13 +34,13 @@ + * indicate libav + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "ffmpeg.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "ffmpeg.hpp" + + #ifdef HAVE_FFMPEG + +diff --git a/src/ffmpeg.hpp b/src/ffmpeg.hpp +index 2043689..b694290 100644 +--- a/src/ffmpeg.hpp ++++ b/src/ffmpeg.hpp +@@ -26,7 +26,7 @@ + #include + #include + #include +-#include "config.h" ++#include "config.hpp" + struct image_data; /* forward declare for functions */ + struct rtsp_context; + +diff --git a/src/jpegutils.cpp b/src/jpegutils.cpp +index a606f7a..099034f 100644 +--- a/src/jpegutils.cpp ++++ b/src/jpegutils.cpp +@@ -51,13 +51,13 @@ + * jpgutl_decode_jpeg + */ + +-#include "motion.h" +-#include "config.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "jpegutils.h" +-#include "picture.h" /* For the prepare_exif */ ++#include "motion.hpp" ++#include "config.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "jpegutils.hpp" ++#include "picture.hpp" /* For the prepare_exif */ + #include + + +diff --git a/src/logger.cpp b/src/logger.cpp +index d6ac5fc..3324961 100644 +--- a/src/logger.cpp ++++ b/src/logger.cpp +@@ -24,8 +24,8 @@ + * + */ + +-#include "logger.h" /* already includes motion.h */ +-#include "util.h" ++#include "logger.hpp" /* already includes motion.h */ ++#include "util.hpp" + #include + + static int log_mode = LOGMODE_SYSLOG; +diff --git a/src/logger.hpp b/src/logger.hpp +index 5e25aaf..e492ec0 100644 +--- a/src/logger.hpp ++++ b/src/logger.hpp +@@ -24,7 +24,7 @@ + #ifndef _INCLUDE_LOGGER_H_ + #define _INCLUDE_LOGGER_H_ + +-#include "motion.h" ++#include "motion.hpp" + #include + + /* Logging mode */ +diff --git a/src/motion.cpp b/src/motion.cpp +index 2d9da20..b5eb335 100644 +--- a/src/motion.cpp ++++ b/src/motion.cpp +@@ -20,25 +20,25 @@ + * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "ffmpeg.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "video_common.h" +-#include "video_v4l2.h" +-#include "video_loopback.h" +-#include "conf.h" +-#include "alg.h" +-#include "track.h" +-#include "event.h" +-#include "picture.h" +-#include "rotate.h" +-#include "webu.h" +-#include "draw.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "ffmpeg.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "video_common.hpp" ++#include "video_v4l2.hpp" ++#include "video_loopback.hpp" ++#include "conf.hpp" ++#include "alg.hpp" ++#include "track.hpp" ++#include "event.hpp" ++#include "picture.hpp" ++#include "rotate.hpp" ++#include "webu.hpp" ++#include "draw.hpp" ++#include "dbse.hpp" + + + /** +diff --git a/src/motion.hpp b/src/motion.hpp +index 8563a72..d1a312d 100644 +--- a/src/motion.hpp ++++ b/src/motion.hpp +@@ -29,7 +29,7 @@ struct image_data; + struct rtsp_context; + struct ffmpeg; + +-#include "config.h" ++#include "config.hpp" + + /* Includes */ + #include +@@ -111,8 +111,8 @@ struct ffmpeg; + #endif + + /* Due to the pointer magic method of conf, the conf.h and track.h must stay in here */ +-#include "conf.h" +-#include "track.h" ++#include "conf.hpp" ++#include "track.hpp" + + + /* +diff --git a/src/netcam.cpp b/src/netcam.cpp +index 4c3a141..e929896 100644 +--- a/src/netcam.cpp ++++ b/src/netcam.cpp +@@ -21,13 +21,13 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_http.h" +-#include "netcam_ftp.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_http.hpp" ++#include "netcam_ftp.hpp" + + /* + * The following three routines (netcam_url_match, netcam_url_parse and +diff --git a/src/netcam.hpp b/src/netcam.hpp +index dea3c62..6bace9f 100644 +--- a/src/netcam.hpp ++++ b/src/netcam.hpp +@@ -55,8 +55,8 @@ + + typedef struct netcam_context *netcam_context_ptr; + +-#include "netcam_wget.h" +-#include "netcam_jpeg.h" ++#include "netcam_wget.hpp" ++#include "netcam_jpeg.hpp" + + #define NETCAM_BUFFSIZE 4096 /* Initial size reserved for a JPEG + image. If expansion is required, +diff --git a/src/netcam_ftp.cpp b/src/netcam_ftp.cpp +index b460a8c..7740d2f 100644 +--- a/src/netcam_ftp.cpp ++++ b/src/netcam_ftp.cpp +@@ -22,15 +22,15 @@ + * Copyright 2005, William M. Brack + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + #include + #include + #include +-#include "netcam.h" +-#include "netcam_ftp.h" ++#include "netcam.hpp" ++#include "netcam_ftp.hpp" + + /** + * ftp_new_context +diff --git a/src/netcam_http.cpp b/src/netcam_http.cpp +index 57262e9..c8301bd 100644 +--- a/src/netcam_http.cpp ++++ b/src/netcam_http.cpp +@@ -25,12 +25,12 @@ + * Copyright 2005, William M. Brack + ***********************************************************/ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_http.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_http.hpp" + + #define CONNECT_TIMEOUT 10 /* Timeout on remote connection attempt */ + #define READ_TIMEOUT 5 /* Default timeout on recv requests */ +diff --git a/src/netcam_jpeg.cpp b/src/netcam_jpeg.cpp +index 87583fd..65cf5b9 100644 +--- a/src/netcam_jpeg.cpp ++++ b/src/netcam_jpeg.cpp +@@ -26,13 +26,13 @@ + * + * Copyright 2005, William M. Brack + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "netcam.h" +-#include "netcam_jpeg.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "netcam.hpp" ++#include "netcam_jpeg.hpp" + + /* This is a workaround regarding these defines. The config.h file defines + * HAVE_STDLIB_H as 1 whereas the jpeglib.h just defines it without a value. +diff --git a/src/netcam_rtsp.cpp b/src/netcam_rtsp.cpp +index 80b643d..46c690a 100644 +--- a/src/netcam_rtsp.cpp ++++ b/src/netcam_rtsp.cpp +@@ -40,17 +40,17 @@ + ***********************************************************/ + + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" + + #ifdef HAVE_FFMPEG + +-#include "ffmpeg.h" ++#include "ffmpeg.hpp" + + static void netcam_rtsp_free_pkt(struct rtsp_context *rtsp_data) + { +diff --git a/src/netcam_wget.cpp b/src/netcam_wget.cpp +index 63e8aa4..8f44586 100644 +--- a/src/netcam_wget.cpp ++++ b/src/netcam_wget.cpp +@@ -27,10 +27,10 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "netcam.h" +-#include "netcam_wget.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "netcam.hpp" ++#include "netcam_wget.hpp" + #include + #include + #include +diff --git a/src/netcam_wget.hpp b/src/netcam_wget.hpp +index 8d2aa44..d3e2163 100644 +--- a/src/netcam_wget.hpp ++++ b/src/netcam_wget.hpp +@@ -29,7 +29,7 @@ + #ifndef NETCAM_WGET_H + #define NETCAM_WGET_H + +-#include "netcam.h" ++#include "netcam.hpp" + + /* Retrieval stream */ + struct rbuf +diff --git a/src/picture.cpp b/src/picture.cpp +index 53d9439..7611899 100644 +--- a/src/picture.cpp ++++ b/src/picture.cpp +@@ -22,14 +22,14 @@ + * Portions of this file are Copyright 2010 by Wim Lewis (wiml@hhhh.org) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "picture.h" +-#include "jpegutils.h" +-#include "event.h" +-#include "netcam.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "picture.hpp" ++#include "jpegutils.hpp" ++#include "event.hpp" ++#include "netcam.hpp" + + #include + +diff --git a/src/rotate.cpp b/src/rotate.cpp +index 9078628..43fd9b6 100644 +--- a/src/rotate.cpp ++++ b/src/rotate.cpp +@@ -42,11 +42,11 @@ + * - speed optimization, including bswap + * v1 (28-Aug-2004) - initial version + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" + #include + #if defined(__APPLE__) + #include +diff --git a/src/track.cpp b/src/track.cpp +index a5b67ef..8104222 100644 +--- a/src/track.cpp ++++ b/src/track.cpp +@@ -21,10 +21,10 @@ + * Copyright 2000, Jeroen Vreeken + */ + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #ifdef HAVE_V4L2 + #if defined(HAVE_LINUX_VIDEODEV2_H) +@@ -32,7 +32,7 @@ + #else + #include + #endif +- #include "pwc-ioctl.h" ++ #include "pwc-ioctl.hpp" + #endif + + +diff --git a/src/track.hpp b/src/track.hpp +index f5e0a41..33936e7 100644 +--- a/src/track.hpp ++++ b/src/track.hpp +@@ -23,7 +23,7 @@ + #ifndef _INCLUDE_TRACK_H + #define _INCLUDE_TRACK_H + +-#include "alg.h" ++#include "alg.hpp" + #include + + struct trackoptions { +diff --git a/src/translate.cpp b/src/translate.cpp +index 870d84b..f482504 100644 +--- a/src/translate.cpp ++++ b/src/translate.cpp +@@ -21,9 +21,9 @@ + */ + + #include +-#include "motion.h" +-#include "logger.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "logger.hpp" ++#include "translate.hpp" + + int nls_enabled; + +diff --git a/src/util.cpp b/src/util.cpp +index cc3d28b..4f55e3a 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -21,10 +21,10 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "logger.h" +-#include "util.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "logger.hpp" ++#include "util.hpp" + + #ifdef HAVE_FFMPEG + +diff --git a/src/video_bktr.cpp b/src/video_bktr.cpp +index 7c5185c..d960d9a 100644 +--- a/src/video_bktr.cpp ++++ b/src/video_bktr.cpp +@@ -22,13 +22,13 @@ + */ + + /* For rotation */ +-#include "motion.h" +-#include "util.h" +-#include "translate.h" +-#include "logger.h" +-#include "rotate.h" +-#include "video_common.h" +-#include "video_bktr.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "translate.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "video_common.hpp" ++#include "video_bktr.hpp" + + #ifdef HAVE_BKTR + +diff --git a/src/video_common.cpp b/src/video_common.cpp +index 13ee5d0..e7f96b0 100644 +--- a/src/video_common.cpp ++++ b/src/video_common.cpp +@@ -22,16 +22,16 @@ + * 2007 by Angel Carpintero (motiondevelop@gmail.com) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "video_common.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "video_v4l2.h" +-#include "video_bktr.h" +-#include "jpegutils.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "video_common.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "video_v4l2.hpp" ++#include "video_bktr.hpp" ++#include "jpegutils.hpp" + + typedef unsigned char uint8_t; + typedef unsigned short int uint16_t; +diff --git a/src/video_loopback.cpp b/src/video_loopback.cpp +index 9c68ec3..191924c 100644 +--- a/src/video_loopback.cpp ++++ b/src/video_loopback.cpp +@@ -22,14 +22,14 @@ + * Copyright 2008 by Angel Carpintero (motiondevelop@gmail.com) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #if (defined(HAVE_V4L2)) && (!defined(BSD)) + +-#include "video_loopback.h" ++#include "video_loopback.hpp" + #include + #include + #include +diff --git a/src/video_v4l2.cpp b/src/video_v4l2.cpp +index 662bc66..3011bfa 100644 +--- a/src/video_v4l2.cpp ++++ b/src/video_v4l2.cpp +@@ -23,13 +23,13 @@ + * Refactor/rewrite code: 2018 MrDave + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "video_common.h" +-#include "video_v4l2.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "video_common.hpp" ++#include "video_v4l2.hpp" + #include + + +diff --git a/src/webu.cpp b/src/webu.cpp +index 02866e2..3eca379 100644 +--- a/src/webu.cpp ++++ b/src/webu.cpp +@@ -45,15 +45,15 @@ + #include + #include + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_html.h" +-#include "webu_text.h" +-#include "webu_stream.h" +-#include "webu_status.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_html.hpp" ++#include "webu_text.hpp" ++#include "webu_stream.hpp" ++#include "webu_status.hpp" ++#include "translate.hpp" + + static mymhd_retcd webu_mhd_send(struct webui_ctx *webui, int ctrl); + +diff --git a/src/webu_html.cpp b/src/webu_html.cpp +index 2c444c6..4e01b3f 100644 +--- a/src/webu_html.cpp ++++ b/src/webu_html.cpp +@@ -46,12 +46,12 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_html.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_html.hpp" ++#include "translate.hpp" + + /* struct to save information regarding the links to include in html page */ + struct strminfo_ctx { +diff --git a/src/webu_status.cpp b/src/webu_status.cpp +index ade6d7d..8594019 100644 +--- a/src/webu_status.cpp ++++ b/src/webu_status.cpp +@@ -24,9 +24,9 @@ + #include + #include + +-#include "motion.h" +-#include "webu.h" +-#include "webu_status.h" ++#include "motion.hpp" ++#include "webu.hpp" ++#include "webu_status.hpp" + + /* Conservatively encode characters in an array as a JSON string */ + static void webu_json_write_string(struct webui_ctx *webui, const char *str) +diff --git a/src/webu_stream.cpp b/src/webu_stream.cpp +index cc72ae9..b1874f3 100644 +--- a/src/webu_stream.cpp ++++ b/src/webu_stream.cpp +@@ -26,12 +26,12 @@ + * webu_stream_checks - Edit/validate request from user + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_stream.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_stream.hpp" ++#include "translate.hpp" + + void webu_stream_deinit(struct webui_ctx *webui, struct stream_data *stream) + { +diff --git a/src/webu_text.cpp b/src/webu_text.cpp +index 10a7b0b..c24a374 100644 +--- a/src/webu_text.cpp ++++ b/src/webu_text.cpp +@@ -32,12 +32,12 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_text.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_text.hpp" ++#include "translate.hpp" + + static void webu_text_seteol(struct webui_ctx *webui) + { +-- +2.39.5 + diff --git a/ChangeMasterFileNames2.patch b/ChangeMasterFileNames2.patch new file mode 100644 index 00000000..12657b92 --- /dev/null +++ b/ChangeMasterFileNames2.patch @@ -0,0 +1,1414 @@ +From 5d8f33e4ecf3715580f1353eadbcae68d0fc65f3 Mon Sep 17 00:00:00 2001 +From: Mr-Dave +Date: Tue, 4 Feb 2025 14:57:34 -0700 +Subject: [PATCH 1/2] Rename files to prepare for merge with 5.0 branch + +--- + doc/{CHANGELOG => changelog} | 0 + doc/{CODE_STANDARD => code_standard} | 0 + src/{alg.c => alg.cpp} | 0 + src/{alg.h => alg.hpp} | 0 + src/{conf.c => conf.cpp} | 0 + src/{conf.h => conf.hpp} | 0 + src/{dbse.c => dbse.cpp} | 0 + src/{dbse.h => dbse.hpp} | 0 + src/{draw.c => draw.cpp} | 0 + src/{draw.h => draw.hpp} | 0 + src/{event.c => event.cpp} | 0 + src/{event.h => event.hpp} | 0 + src/{ffmpeg.c => ffmpeg.cpp} | 0 + src/{ffmpeg.h => ffmpeg.hpp} | 0 + src/{jpegutils.c => jpegutils.cpp} | 0 + src/{jpegutils.h => jpegutils.hpp} | 0 + src/{logger.c => logger.cpp} | 0 + src/{logger.h => logger.hpp} | 0 + src/{mmx.h => mmx.hpp} | 0 + src/{motion.c => motion.cpp} | 0 + src/{motion.h => motion.hpp} | 0 + src/{netcam.c => netcam.cpp} | 0 + src/{netcam.h => netcam.hpp} | 0 + src/{netcam_ftp.c => netcam_ftp.cpp} | 0 + src/{netcam_ftp.h => netcam_ftp.hpp} | 0 + src/{netcam_http.c => netcam_http.cpp} | 0 + src/{netcam_http.h => netcam_http.hpp} | 0 + src/{netcam_jpeg.c => netcam_jpeg.cpp} | 0 + src/{netcam_jpeg.h => netcam_jpeg.hpp} | 0 + src/{netcam_rtsp.c => netcam_rtsp.cpp} | 0 + src/{netcam_rtsp.h => netcam_rtsp.hpp} | 0 + src/{netcam_wget.c => netcam_wget.cpp} | 0 + src/{netcam_wget.h => netcam_wget.hpp} | 0 + src/{picture.c => picture.cpp} | 0 + src/{picture.h => picture.hpp} | 0 + src/{pwc-ioctl.h => pwc-ioctl.hpp} | 0 + src/{rotate.c => rotate.cpp} | 0 + src/{rotate.h => rotate.hpp} | 0 + src/{track.c => track.cpp} | 0 + src/{track.h => track.hpp} | 0 + src/{translate.c => translate.cpp} | 0 + src/{translate.h => translate.hpp} | 0 + src/{util.c => util.cpp} | 0 + src/{util.h => util.hpp} | 0 + src/{video_bktr.c => video_bktr.cpp} | 0 + src/{video_bktr.h => video_bktr.hpp} | 0 + src/{video_common.c => video_common.cpp} | 0 + src/{video_common.h => video_common.hpp} | 0 + src/{video_loopback.c => video_loopback.cpp} | 0 + src/{video_loopback.h => video_loopback.hpp} | 0 + src/{video_v4l2.c => video_v4l2.cpp} | 0 + src/{video_v4l2.h => video_v4l2.hpp} | 0 + src/{webu.c => webu.cpp} | 0 + src/{webu.h => webu.hpp} | 0 + src/{webu_html.c => webu_html.cpp} | 0 + src/{webu_html.h => webu_html.hpp} | 0 + src/{webu_status.c => webu_status.cpp} | 0 + src/{webu_status.h => webu_status.hpp} | 0 + src/{webu_stream.c => webu_stream.cpp} | 0 + src/{webu_stream.h => webu_stream.hpp} | 0 + src/{webu_text.c => webu_text.cpp} | 0 + src/{webu_text.h => webu_text.hpp} | 0 + 62 files changed, 0 insertions(+), 0 deletions(-) + rename doc/{CHANGELOG => changelog} (100%) + rename doc/{CODE_STANDARD => code_standard} (100%) + rename src/{alg.c => alg.cpp} (100%) + rename src/{alg.h => alg.hpp} (100%) + rename src/{conf.c => conf.cpp} (100%) + rename src/{conf.h => conf.hpp} (100%) + rename src/{dbse.c => dbse.cpp} (100%) + rename src/{dbse.h => dbse.hpp} (100%) + rename src/{draw.c => draw.cpp} (100%) + rename src/{draw.h => draw.hpp} (100%) + rename src/{event.c => event.cpp} (100%) + rename src/{event.h => event.hpp} (100%) + rename src/{ffmpeg.c => ffmpeg.cpp} (100%) + rename src/{ffmpeg.h => ffmpeg.hpp} (100%) + rename src/{jpegutils.c => jpegutils.cpp} (100%) + rename src/{jpegutils.h => jpegutils.hpp} (100%) + rename src/{logger.c => logger.cpp} (100%) + rename src/{logger.h => logger.hpp} (100%) + rename src/{mmx.h => mmx.hpp} (100%) + rename src/{motion.c => motion.cpp} (100%) + rename src/{motion.h => motion.hpp} (100%) + rename src/{netcam.c => netcam.cpp} (100%) + rename src/{netcam.h => netcam.hpp} (100%) + rename src/{netcam_ftp.c => netcam_ftp.cpp} (100%) + rename src/{netcam_ftp.h => netcam_ftp.hpp} (100%) + rename src/{netcam_http.c => netcam_http.cpp} (100%) + rename src/{netcam_http.h => netcam_http.hpp} (100%) + rename src/{netcam_jpeg.c => netcam_jpeg.cpp} (100%) + rename src/{netcam_jpeg.h => netcam_jpeg.hpp} (100%) + rename src/{netcam_rtsp.c => netcam_rtsp.cpp} (100%) + rename src/{netcam_rtsp.h => netcam_rtsp.hpp} (100%) + rename src/{netcam_wget.c => netcam_wget.cpp} (100%) + rename src/{netcam_wget.h => netcam_wget.hpp} (100%) + rename src/{picture.c => picture.cpp} (100%) + rename src/{picture.h => picture.hpp} (100%) + rename src/{pwc-ioctl.h => pwc-ioctl.hpp} (100%) + rename src/{rotate.c => rotate.cpp} (100%) + rename src/{rotate.h => rotate.hpp} (100%) + rename src/{track.c => track.cpp} (100%) + rename src/{track.h => track.hpp} (100%) + rename src/{translate.c => translate.cpp} (100%) + rename src/{translate.h => translate.hpp} (100%) + rename src/{util.c => util.cpp} (100%) + rename src/{util.h => util.hpp} (100%) + rename src/{video_bktr.c => video_bktr.cpp} (100%) + rename src/{video_bktr.h => video_bktr.hpp} (100%) + rename src/{video_common.c => video_common.cpp} (100%) + rename src/{video_common.h => video_common.hpp} (100%) + rename src/{video_loopback.c => video_loopback.cpp} (100%) + rename src/{video_loopback.h => video_loopback.hpp} (100%) + rename src/{video_v4l2.c => video_v4l2.cpp} (100%) + rename src/{video_v4l2.h => video_v4l2.hpp} (100%) + rename src/{webu.c => webu.cpp} (100%) + rename src/{webu.h => webu.hpp} (100%) + rename src/{webu_html.c => webu_html.cpp} (100%) + rename src/{webu_html.h => webu_html.hpp} (100%) + rename src/{webu_status.c => webu_status.cpp} (100%) + rename src/{webu_status.h => webu_status.hpp} (100%) + rename src/{webu_stream.c => webu_stream.cpp} (100%) + rename src/{webu_stream.h => webu_stream.hpp} (100%) + rename src/{webu_text.c => webu_text.cpp} (100%) + rename src/{webu_text.h => webu_text.hpp} (100%) + +diff --git a/doc/CHANGELOG b/doc/changelog +similarity index 100% +rename from doc/CHANGELOG +rename to doc/changelog +diff --git a/doc/CODE_STANDARD b/doc/code_standard +similarity index 100% +rename from doc/CODE_STANDARD +rename to doc/code_standard +diff --git a/src/alg.c b/src/alg.cpp +similarity index 100% +rename from src/alg.c +rename to src/alg.cpp +diff --git a/src/alg.h b/src/alg.hpp +similarity index 100% +rename from src/alg.h +rename to src/alg.hpp +diff --git a/src/conf.c b/src/conf.cpp +similarity index 100% +rename from src/conf.c +rename to src/conf.cpp +diff --git a/src/conf.h b/src/conf.hpp +similarity index 100% +rename from src/conf.h +rename to src/conf.hpp +diff --git a/src/dbse.c b/src/dbse.cpp +similarity index 100% +rename from src/dbse.c +rename to src/dbse.cpp +diff --git a/src/dbse.h b/src/dbse.hpp +similarity index 100% +rename from src/dbse.h +rename to src/dbse.hpp +diff --git a/src/draw.c b/src/draw.cpp +similarity index 100% +rename from src/draw.c +rename to src/draw.cpp +diff --git a/src/draw.h b/src/draw.hpp +similarity index 100% +rename from src/draw.h +rename to src/draw.hpp +diff --git a/src/event.c b/src/event.cpp +similarity index 100% +rename from src/event.c +rename to src/event.cpp +diff --git a/src/event.h b/src/event.hpp +similarity index 100% +rename from src/event.h +rename to src/event.hpp +diff --git a/src/ffmpeg.c b/src/ffmpeg.cpp +similarity index 100% +rename from src/ffmpeg.c +rename to src/ffmpeg.cpp +diff --git a/src/ffmpeg.h b/src/ffmpeg.hpp +similarity index 100% +rename from src/ffmpeg.h +rename to src/ffmpeg.hpp +diff --git a/src/jpegutils.c b/src/jpegutils.cpp +similarity index 100% +rename from src/jpegutils.c +rename to src/jpegutils.cpp +diff --git a/src/jpegutils.h b/src/jpegutils.hpp +similarity index 100% +rename from src/jpegutils.h +rename to src/jpegutils.hpp +diff --git a/src/logger.c b/src/logger.cpp +similarity index 100% +rename from src/logger.c +rename to src/logger.cpp +diff --git a/src/logger.h b/src/logger.hpp +similarity index 100% +rename from src/logger.h +rename to src/logger.hpp +diff --git a/src/mmx.h b/src/mmx.hpp +similarity index 100% +rename from src/mmx.h +rename to src/mmx.hpp +diff --git a/src/motion.c b/src/motion.cpp +similarity index 100% +rename from src/motion.c +rename to src/motion.cpp +diff --git a/src/motion.h b/src/motion.hpp +similarity index 100% +rename from src/motion.h +rename to src/motion.hpp +diff --git a/src/netcam.c b/src/netcam.cpp +similarity index 100% +rename from src/netcam.c +rename to src/netcam.cpp +diff --git a/src/netcam.h b/src/netcam.hpp +similarity index 100% +rename from src/netcam.h +rename to src/netcam.hpp +diff --git a/src/netcam_ftp.c b/src/netcam_ftp.cpp +similarity index 100% +rename from src/netcam_ftp.c +rename to src/netcam_ftp.cpp +diff --git a/src/netcam_ftp.h b/src/netcam_ftp.hpp +similarity index 100% +rename from src/netcam_ftp.h +rename to src/netcam_ftp.hpp +diff --git a/src/netcam_http.c b/src/netcam_http.cpp +similarity index 100% +rename from src/netcam_http.c +rename to src/netcam_http.cpp +diff --git a/src/netcam_http.h b/src/netcam_http.hpp +similarity index 100% +rename from src/netcam_http.h +rename to src/netcam_http.hpp +diff --git a/src/netcam_jpeg.c b/src/netcam_jpeg.cpp +similarity index 100% +rename from src/netcam_jpeg.c +rename to src/netcam_jpeg.cpp +diff --git a/src/netcam_jpeg.h b/src/netcam_jpeg.hpp +similarity index 100% +rename from src/netcam_jpeg.h +rename to src/netcam_jpeg.hpp +diff --git a/src/netcam_rtsp.c b/src/netcam_rtsp.cpp +similarity index 100% +rename from src/netcam_rtsp.c +rename to src/netcam_rtsp.cpp +diff --git a/src/netcam_rtsp.h b/src/netcam_rtsp.hpp +similarity index 100% +rename from src/netcam_rtsp.h +rename to src/netcam_rtsp.hpp +diff --git a/src/netcam_wget.c b/src/netcam_wget.cpp +similarity index 100% +rename from src/netcam_wget.c +rename to src/netcam_wget.cpp +diff --git a/src/netcam_wget.h b/src/netcam_wget.hpp +similarity index 100% +rename from src/netcam_wget.h +rename to src/netcam_wget.hpp +diff --git a/src/picture.c b/src/picture.cpp +similarity index 100% +rename from src/picture.c +rename to src/picture.cpp +diff --git a/src/picture.h b/src/picture.hpp +similarity index 100% +rename from src/picture.h +rename to src/picture.hpp +diff --git a/src/pwc-ioctl.h b/src/pwc-ioctl.hpp +similarity index 100% +rename from src/pwc-ioctl.h +rename to src/pwc-ioctl.hpp +diff --git a/src/rotate.c b/src/rotate.cpp +similarity index 100% +rename from src/rotate.c +rename to src/rotate.cpp +diff --git a/src/rotate.h b/src/rotate.hpp +similarity index 100% +rename from src/rotate.h +rename to src/rotate.hpp +diff --git a/src/track.c b/src/track.cpp +similarity index 100% +rename from src/track.c +rename to src/track.cpp +diff --git a/src/track.h b/src/track.hpp +similarity index 100% +rename from src/track.h +rename to src/track.hpp +diff --git a/src/translate.c b/src/translate.cpp +similarity index 100% +rename from src/translate.c +rename to src/translate.cpp +diff --git a/src/translate.h b/src/translate.hpp +similarity index 100% +rename from src/translate.h +rename to src/translate.hpp +diff --git a/src/util.c b/src/util.cpp +similarity index 100% +rename from src/util.c +rename to src/util.cpp +diff --git a/src/util.h b/src/util.hpp +similarity index 100% +rename from src/util.h +rename to src/util.hpp +diff --git a/src/video_bktr.c b/src/video_bktr.cpp +similarity index 100% +rename from src/video_bktr.c +rename to src/video_bktr.cpp +diff --git a/src/video_bktr.h b/src/video_bktr.hpp +similarity index 100% +rename from src/video_bktr.h +rename to src/video_bktr.hpp +diff --git a/src/video_common.c b/src/video_common.cpp +similarity index 100% +rename from src/video_common.c +rename to src/video_common.cpp +diff --git a/src/video_common.h b/src/video_common.hpp +similarity index 100% +rename from src/video_common.h +rename to src/video_common.hpp +diff --git a/src/video_loopback.c b/src/video_loopback.cpp +similarity index 100% +rename from src/video_loopback.c +rename to src/video_loopback.cpp +diff --git a/src/video_loopback.h b/src/video_loopback.hpp +similarity index 100% +rename from src/video_loopback.h +rename to src/video_loopback.hpp +diff --git a/src/video_v4l2.c b/src/video_v4l2.cpp +similarity index 100% +rename from src/video_v4l2.c +rename to src/video_v4l2.cpp +diff --git a/src/video_v4l2.h b/src/video_v4l2.hpp +similarity index 100% +rename from src/video_v4l2.h +rename to src/video_v4l2.hpp +diff --git a/src/webu.c b/src/webu.cpp +similarity index 100% +rename from src/webu.c +rename to src/webu.cpp +diff --git a/src/webu.h b/src/webu.hpp +similarity index 100% +rename from src/webu.h +rename to src/webu.hpp +diff --git a/src/webu_html.c b/src/webu_html.cpp +similarity index 100% +rename from src/webu_html.c +rename to src/webu_html.cpp +diff --git a/src/webu_html.h b/src/webu_html.hpp +similarity index 100% +rename from src/webu_html.h +rename to src/webu_html.hpp +diff --git a/src/webu_status.c b/src/webu_status.cpp +similarity index 100% +rename from src/webu_status.c +rename to src/webu_status.cpp +diff --git a/src/webu_status.h b/src/webu_status.hpp +similarity index 100% +rename from src/webu_status.h +rename to src/webu_status.hpp +diff --git a/src/webu_stream.c b/src/webu_stream.cpp +similarity index 100% +rename from src/webu_stream.c +rename to src/webu_stream.cpp +diff --git a/src/webu_stream.h b/src/webu_stream.hpp +similarity index 100% +rename from src/webu_stream.h +rename to src/webu_stream.hpp +diff --git a/src/webu_text.c b/src/webu_text.cpp +similarity index 100% +rename from src/webu_text.c +rename to src/webu_text.cpp +diff --git a/src/webu_text.h b/src/webu_text.hpp +similarity index 100% +rename from src/webu_text.h +rename to src/webu_text.hpp +-- +2.39.5 + + +From 4a5c38292082b8a2b9d43c2f12c593743ec63b30 Mon Sep 17 00:00:00 2001 +From: Mr-Dave +Date: Tue, 4 Feb 2025 15:17:33 -0700 +Subject: [PATCH 2/2] Revise file names + +--- + configure.ac | 8 +++--- + po/POTFILES.in | 58 ++++++++++++++++++++-------------------- + src/Makefile.am | 60 +++++++++++++++++++++--------------------- + src/alg.cpp | 10 +++---- + src/alg.hpp | 2 +- + src/conf.cpp | 8 +++--- + src/dbse.cpp | 10 +++---- + src/draw.cpp | 6 ++--- + src/event.cpp | 24 ++++++++--------- + src/ffmpeg.cpp | 14 +++++----- + src/ffmpeg.hpp | 2 +- + src/jpegutils.cpp | 14 +++++----- + src/logger.cpp | 4 +-- + src/logger.hpp | 2 +- + src/motion.cpp | 38 +++++++++++++------------- + src/motion.hpp | 6 ++--- + src/netcam.cpp | 14 +++++----- + src/netcam.hpp | 4 +-- + src/netcam_ftp.cpp | 12 ++++----- + src/netcam_http.cpp | 12 ++++----- + src/netcam_jpeg.cpp | 14 +++++----- + src/netcam_rtsp.cpp | 16 +++++------ + src/netcam_wget.cpp | 8 +++--- + src/netcam_wget.hpp | 2 +- + src/picture.cpp | 16 +++++------ + src/rotate.cpp | 10 +++---- + src/track.cpp | 10 +++---- + src/track.hpp | 2 +- + src/translate.cpp | 6 ++--- + src/util.cpp | 8 +++--- + src/video_bktr.cpp | 14 +++++----- + src/video_common.cpp | 20 +++++++------- + src/video_loopback.cpp | 10 +++---- + src/video_v4l2.cpp | 14 +++++----- + src/webu.cpp | 18 ++++++------- + src/webu_html.cpp | 12 ++++----- + src/webu_status.cpp | 6 ++--- + src/webu_stream.cpp | 12 ++++----- + src/webu_text.cpp | 12 ++++----- + 39 files changed, 259 insertions(+), 259 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ef7cb3e..1c41c8e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4,8 +4,8 @@ AM_MAINTAINER_MODE([enable]) + AC_PROG_CC + AC_PROG_CXX + AC_GNU_SOURCE +-AC_CONFIG_HEADERS([config.h]) +-AC_CONFIG_SRCDIR([src/motion.c]) ++AC_CONFIG_HEADERS([config.hpp]) ++AC_CONFIG_SRCDIR([src/motion.cpp]) + AC_CANONICAL_HOST + AC_CONFIG_MACRO_DIR([m4]) + +@@ -37,7 +37,7 @@ AS_IF([test "${PKGCONFIG}" = "no" ],[ + ### Check pthread + ############################################################################## + AC_CHECK_HEADERS(pthread.h,,AC_MSG_ERROR([pthread is required.])) +-TEMP_CFLAGS="-D_THREAD_SAFE" ++TEMP_CFLAGS="-x c -D_THREAD_SAFE" + LIBS="$LIBS -pthread " + + ############################################################################## +@@ -440,7 +440,7 @@ AS_IF([test "${PROTOTYPE_FLAGS}" = "yes"], [ + ] + ) + +- ++CPPFLAGS="$CPPFLAGS $TEMP_CFLAGS" + AC_SUBST(AM_CFLAGS, "$TEMP_CFLAGS") + LIBS="$LIBS $TEMP_LIBS" + AC_SUBST(AM_LDFLAGS, "$TEMP_LDFLAGS") +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 1e91632..72c7eb4 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -1,30 +1,30 @@ + # main sources +-src/alg.c +-src/conf.c +-src/dbse.c +-src/draw.c +-src/event.c +-src/ffmpeg.c +-src/jpegutils.c +-src/logger.c +-src/motion.c +-src/netcam.c +-src/netcam_ftp.c +-src/netcam_http.c +-src/netcam_jpeg.c +-src/netcam_rtsp.c +-src/netcam_wget.c +-src/picture.c +-src/rotate.c +-src/track.c +-src/translate.c +-src/util.c +-src/video_bktr.c +-src/video_common.c +-src/video_loopback.c +-src/video_v4l2.c +-src/webu.c +-src/webu_html.c +-src/webu_status.c +-src/webu_stream.c +-src/webu_text.c ++src/alg.cpp ++src/conf.cpp ++src/dbse.cpp ++src/draw.cpp ++src/event.cpp ++src/ffmpeg.cpp ++src/jpegutils.cpp ++src/logger.cpp ++src/motion.cpp ++src/netcam.cpp ++src/netcam_ftp.cpp ++src/netcam_http.cpp ++src/netcam_jpeg.cpp ++src/netcam_rtsp.cpp ++src/netcam_wget.cpp ++src/picture.cpp ++src/rotate.cpp ++src/track.cpp ++src/translate.cpp ++src/util.cpp ++src/video_bktr.cpp ++src/video_common.cpp ++src/video_loopback.cpp ++src/video_v4l2.cpp ++src/webu.cpp ++src/webu_html.cpp ++src/webu_status.cpp ++src/webu_stream.cpp ++src/webu_text.cpp +diff --git a/src/Makefile.am b/src/Makefile.am +index 827bf19..868d3b4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -4,34 +4,34 @@ LDADD = $(LIBINTL) + bin_PROGRAMS = motion + + motion_SOURCES = \ +- alg.h alg.c \ +- conf.h conf.c \ +- dbse.h dbse.c \ +- draw.h draw.c \ +- event.h event.c \ +- ffmpeg.h ffmpeg.c \ +- jpegutils.h jpegutils.c \ +- logger.h logger.c \ +- motion.h motion.c \ +- netcam.h netcam.c \ +- netcam_ftp.h netcam_ftp.c \ +- netcam_http.h netcam_http.c \ +- netcam_jpeg.h netcam_jpeg.c \ +- netcam_rtsp.h netcam_rtsp.c \ +- netcam_wget.h netcam_wget.c \ +- picture.h picture.c \ +- rotate.h rotate.c \ +- track.h track.c \ +- translate.h translate.c \ +- util.h util.c \ +- video_bktr.h video_bktr.c \ +- video_common.h video_common.c \ +- video_loopback.h video_loopback.c \ +- video_v4l2.h video_v4l2.c \ +- webu.h webu.c \ +- webu_html.h webu_html.c \ +- webu_status.h webu_status.c \ +- webu_stream.h webu_stream.c \ +- webu_text.h webu_text.c \ +- mmx.h pwc-ioctl.h ++ alg.hpp alg.cpp \ ++ conf.hpp conf.cpp \ ++ dbse.hpp dbse.cpp \ ++ draw.hpp draw.cpp \ ++ event.hpp event.cpp \ ++ ffmpeg.hpp ffmpeg.cpp \ ++ jpegutils.hpp jpegutils.cpp \ ++ logger.hpp logger.cpp \ ++ motion.hpp motion.cpp \ ++ netcam.hpp netcam.cpp \ ++ netcam_ftp.hpp netcam_ftp.cpp \ ++ netcam_http.hpp netcam_http.cpp \ ++ netcam_jpeg.hpp netcam_jpeg.cpp \ ++ netcam_rtsp.hpp netcam_rtsp.cpp \ ++ netcam_wget.hpp netcam_wget.cpp \ ++ picture.hpp picture.cpp \ ++ rotate.hpp rotate.cpp \ ++ track.hpp track.cpp \ ++ translate.hpp translate.cpp \ ++ util.hpp util.cpp \ ++ video_bktr.hpp video_bktr.cpp \ ++ video_common.hpp video_common.cpp \ ++ video_loopback.hpp video_loopback.cpp \ ++ video_v4l2.hpp video_v4l2.cpp \ ++ webu.hpp webu.cpp \ ++ webu_html.hpp webu_html.cpp \ ++ webu_status.hpp webu_status.cpp \ ++ webu_stream.hpp webu_stream.cpp \ ++ webu_text.hpp webu_text.cpp \ ++ mmx.hpp pwc-ioctl.hpp + +diff --git a/src/alg.cpp b/src/alg.cpp +index c8ca553..a87e76c 100644 +--- a/src/alg.cpp ++++ b/src/alg.cpp +@@ -21,14 +21,14 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "draw.h" +-#include "alg.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "draw.hpp" ++#include "alg.hpp" + + #ifdef __MMX__ + #define HAVE_MMX +- #include "mmx.h" ++ #include "mmx.hpp" + #endif + + #define MAX2(x, y) ((x) > (y) ? (x) : (y)) +diff --git a/src/alg.hpp b/src/alg.hpp +index 59f872c..342db09 100644 +--- a/src/alg.hpp ++++ b/src/alg.hpp +@@ -23,7 +23,7 @@ + #ifndef _INCLUDE_ALG_H + #define _INCLUDE_ALG_H + +-#include "motion.h" ++#include "motion.hpp" + + struct coord { + int x; +diff --git a/src/conf.cpp b/src/conf.cpp +index 41b8a0f..d19fde2 100644 +--- a/src/conf.cpp ++++ b/src/conf.cpp +@@ -29,10 +29,10 @@ + + #include + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #define EXTENSION ".conf" + +diff --git a/src/dbse.cpp b/src/dbse.cpp +index d4a5de6..62872f2 100644 +--- a/src/dbse.cpp ++++ b/src/dbse.cpp +@@ -21,11 +21,11 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "dbse.hpp" + + pthread_mutex_t dbse_lock; + +diff --git a/src/draw.cpp b/src/draw.cpp +index aee2224..be7fb40 100644 +--- a/src/draw.cpp ++++ b/src/draw.cpp +@@ -24,9 +24,9 @@ + */ + + #include +-#include "motion.h" +-#include "util.h" +-#include "draw.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "draw.hpp" + + /* Highest ascii value is 126 (~) */ + #define ASCII_MAX 127 +diff --git a/src/event.cpp b/src/event.cpp +index a36e249..6b05eba 100644 +--- a/src/event.cpp ++++ b/src/event.cpp +@@ -22,18 +22,18 @@ + Copyright Jeroen Vreeken, 2002 + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "picture.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "ffmpeg.h" +-#include "event.h" +-#include "video_loopback.h" +-#include "video_common.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "picture.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "ffmpeg.hpp" ++#include "event.hpp" ++#include "video_loopback.hpp" ++#include "video_common.hpp" ++#include "dbse.hpp" + + /* + * TODO Items: +diff --git a/src/ffmpeg.cpp b/src/ffmpeg.cpp +index 988d662..496d02e 100644 +--- a/src/ffmpeg.cpp ++++ b/src/ffmpeg.cpp +@@ -34,13 +34,13 @@ + * indicate libav + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "ffmpeg.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "ffmpeg.hpp" + + #ifdef HAVE_FFMPEG + +diff --git a/src/ffmpeg.hpp b/src/ffmpeg.hpp +index 2043689..b694290 100644 +--- a/src/ffmpeg.hpp ++++ b/src/ffmpeg.hpp +@@ -26,7 +26,7 @@ + #include + #include + #include +-#include "config.h" ++#include "config.hpp" + struct image_data; /* forward declare for functions */ + struct rtsp_context; + +diff --git a/src/jpegutils.cpp b/src/jpegutils.cpp +index a606f7a..099034f 100644 +--- a/src/jpegutils.cpp ++++ b/src/jpegutils.cpp +@@ -51,13 +51,13 @@ + * jpgutl_decode_jpeg + */ + +-#include "motion.h" +-#include "config.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "jpegutils.h" +-#include "picture.h" /* For the prepare_exif */ ++#include "motion.hpp" ++#include "config.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "jpegutils.hpp" ++#include "picture.hpp" /* For the prepare_exif */ + #include + + +diff --git a/src/logger.cpp b/src/logger.cpp +index d6ac5fc..3324961 100644 +--- a/src/logger.cpp ++++ b/src/logger.cpp +@@ -24,8 +24,8 @@ + * + */ + +-#include "logger.h" /* already includes motion.h */ +-#include "util.h" ++#include "logger.hpp" /* already includes motion.h */ ++#include "util.hpp" + #include + + static int log_mode = LOGMODE_SYSLOG; +diff --git a/src/logger.hpp b/src/logger.hpp +index 5e25aaf..e492ec0 100644 +--- a/src/logger.hpp ++++ b/src/logger.hpp +@@ -24,7 +24,7 @@ + #ifndef _INCLUDE_LOGGER_H_ + #define _INCLUDE_LOGGER_H_ + +-#include "motion.h" ++#include "motion.hpp" + #include + + /* Logging mode */ +diff --git a/src/motion.cpp b/src/motion.cpp +index 2d9da20..b5eb335 100644 +--- a/src/motion.cpp ++++ b/src/motion.cpp +@@ -20,25 +20,25 @@ + * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "ffmpeg.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "video_common.h" +-#include "video_v4l2.h" +-#include "video_loopback.h" +-#include "conf.h" +-#include "alg.h" +-#include "track.h" +-#include "event.h" +-#include "picture.h" +-#include "rotate.h" +-#include "webu.h" +-#include "draw.h" +-#include "dbse.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "ffmpeg.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "video_common.hpp" ++#include "video_v4l2.hpp" ++#include "video_loopback.hpp" ++#include "conf.hpp" ++#include "alg.hpp" ++#include "track.hpp" ++#include "event.hpp" ++#include "picture.hpp" ++#include "rotate.hpp" ++#include "webu.hpp" ++#include "draw.hpp" ++#include "dbse.hpp" + + + /** +diff --git a/src/motion.hpp b/src/motion.hpp +index 8563a72..d1a312d 100644 +--- a/src/motion.hpp ++++ b/src/motion.hpp +@@ -29,7 +29,7 @@ struct image_data; + struct rtsp_context; + struct ffmpeg; + +-#include "config.h" ++#include "config.hpp" + + /* Includes */ + #include +@@ -111,8 +111,8 @@ struct ffmpeg; + #endif + + /* Due to the pointer magic method of conf, the conf.h and track.h must stay in here */ +-#include "conf.h" +-#include "track.h" ++#include "conf.hpp" ++#include "track.hpp" + + + /* +diff --git a/src/netcam.cpp b/src/netcam.cpp +index 4c3a141..e929896 100644 +--- a/src/netcam.cpp ++++ b/src/netcam.cpp +@@ -21,13 +21,13 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_http.h" +-#include "netcam_ftp.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_http.hpp" ++#include "netcam_ftp.hpp" + + /* + * The following three routines (netcam_url_match, netcam_url_parse and +diff --git a/src/netcam.hpp b/src/netcam.hpp +index dea3c62..6bace9f 100644 +--- a/src/netcam.hpp ++++ b/src/netcam.hpp +@@ -55,8 +55,8 @@ + + typedef struct netcam_context *netcam_context_ptr; + +-#include "netcam_wget.h" +-#include "netcam_jpeg.h" ++#include "netcam_wget.hpp" ++#include "netcam_jpeg.hpp" + + #define NETCAM_BUFFSIZE 4096 /* Initial size reserved for a JPEG + image. If expansion is required, +diff --git a/src/netcam_ftp.cpp b/src/netcam_ftp.cpp +index b460a8c..7740d2f 100644 +--- a/src/netcam_ftp.cpp ++++ b/src/netcam_ftp.cpp +@@ -22,15 +22,15 @@ + * Copyright 2005, William M. Brack + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + #include + #include + #include +-#include "netcam.h" +-#include "netcam_ftp.h" ++#include "netcam.hpp" ++#include "netcam_ftp.hpp" + + /** + * ftp_new_context +diff --git a/src/netcam_http.cpp b/src/netcam_http.cpp +index 57262e9..c8301bd 100644 +--- a/src/netcam_http.cpp ++++ b/src/netcam_http.cpp +@@ -25,12 +25,12 @@ + * Copyright 2005, William M. Brack + ***********************************************************/ + +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "netcam.h" +-#include "netcam_http.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "netcam.hpp" ++#include "netcam_http.hpp" + + #define CONNECT_TIMEOUT 10 /* Timeout on remote connection attempt */ + #define READ_TIMEOUT 5 /* Default timeout on recv requests */ +diff --git a/src/netcam_jpeg.cpp b/src/netcam_jpeg.cpp +index 87583fd..65cf5b9 100644 +--- a/src/netcam_jpeg.cpp ++++ b/src/netcam_jpeg.cpp +@@ -26,13 +26,13 @@ + * + * Copyright 2005, William M. Brack + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "netcam.h" +-#include "netcam_jpeg.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "netcam.hpp" ++#include "netcam_jpeg.hpp" + + /* This is a workaround regarding these defines. The config.h file defines + * HAVE_STDLIB_H as 1 whereas the jpeglib.h just defines it without a value. +diff --git a/src/netcam_rtsp.cpp b/src/netcam_rtsp.cpp +index 80b643d..46c690a 100644 +--- a/src/netcam_rtsp.cpp ++++ b/src/netcam_rtsp.cpp +@@ -40,17 +40,17 @@ + ***********************************************************/ + + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" + + #ifdef HAVE_FFMPEG + +-#include "ffmpeg.h" ++#include "ffmpeg.hpp" + + static void netcam_rtsp_free_pkt(struct rtsp_context *rtsp_data) + { +diff --git a/src/netcam_wget.cpp b/src/netcam_wget.cpp +index 63e8aa4..8f44586 100644 +--- a/src/netcam_wget.cpp ++++ b/src/netcam_wget.cpp +@@ -27,10 +27,10 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "netcam.h" +-#include "netcam_wget.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "netcam.hpp" ++#include "netcam_wget.hpp" + #include + #include + #include +diff --git a/src/netcam_wget.hpp b/src/netcam_wget.hpp +index 8d2aa44..d3e2163 100644 +--- a/src/netcam_wget.hpp ++++ b/src/netcam_wget.hpp +@@ -29,7 +29,7 @@ + #ifndef NETCAM_WGET_H + #define NETCAM_WGET_H + +-#include "netcam.h" ++#include "netcam.hpp" + + /* Retrieval stream */ + struct rbuf +diff --git a/src/picture.cpp b/src/picture.cpp +index 53d9439..7611899 100644 +--- a/src/picture.cpp ++++ b/src/picture.cpp +@@ -22,14 +22,14 @@ + * Portions of this file are Copyright 2010 by Wim Lewis (wiml@hhhh.org) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "picture.h" +-#include "jpegutils.h" +-#include "event.h" +-#include "netcam.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "picture.hpp" ++#include "jpegutils.hpp" ++#include "event.hpp" ++#include "netcam.hpp" + + #include + +diff --git a/src/rotate.cpp b/src/rotate.cpp +index 9078628..43fd9b6 100644 +--- a/src/rotate.cpp ++++ b/src/rotate.cpp +@@ -42,11 +42,11 @@ + * - speed optimization, including bswap + * v1 (28-Aug-2004) - initial version + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" + #include + #if defined(__APPLE__) + #include +diff --git a/src/track.cpp b/src/track.cpp +index a5b67ef..8104222 100644 +--- a/src/track.cpp ++++ b/src/track.cpp +@@ -21,10 +21,10 @@ + * Copyright 2000, Jeroen Vreeken + */ + #include +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #ifdef HAVE_V4L2 + #if defined(HAVE_LINUX_VIDEODEV2_H) +@@ -32,7 +32,7 @@ + #else + #include + #endif +- #include "pwc-ioctl.h" ++ #include "pwc-ioctl.hpp" + #endif + + +diff --git a/src/track.hpp b/src/track.hpp +index f5e0a41..33936e7 100644 +--- a/src/track.hpp ++++ b/src/track.hpp +@@ -23,7 +23,7 @@ + #ifndef _INCLUDE_TRACK_H + #define _INCLUDE_TRACK_H + +-#include "alg.h" ++#include "alg.hpp" + #include + + struct trackoptions { +diff --git a/src/translate.cpp b/src/translate.cpp +index 870d84b..f482504 100644 +--- a/src/translate.cpp ++++ b/src/translate.cpp +@@ -21,9 +21,9 @@ + */ + + #include +-#include "motion.h" +-#include "logger.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "logger.hpp" ++#include "translate.hpp" + + int nls_enabled; + +diff --git a/src/util.cpp b/src/util.cpp +index cc3d28b..4f55e3a 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -21,10 +21,10 @@ + * + */ + +-#include "motion.h" +-#include "translate.h" +-#include "logger.h" +-#include "util.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "logger.hpp" ++#include "util.hpp" + + #ifdef HAVE_FFMPEG + +diff --git a/src/video_bktr.cpp b/src/video_bktr.cpp +index 7c5185c..d960d9a 100644 +--- a/src/video_bktr.cpp ++++ b/src/video_bktr.cpp +@@ -22,13 +22,13 @@ + */ + + /* For rotation */ +-#include "motion.h" +-#include "util.h" +-#include "translate.h" +-#include "logger.h" +-#include "rotate.h" +-#include "video_common.h" +-#include "video_bktr.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "translate.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "video_common.hpp" ++#include "video_bktr.hpp" + + #ifdef HAVE_BKTR + +diff --git a/src/video_common.cpp b/src/video_common.cpp +index 13ee5d0..e7f96b0 100644 +--- a/src/video_common.cpp ++++ b/src/video_common.cpp +@@ -22,16 +22,16 @@ + * 2007 by Angel Carpintero (motiondevelop@gmail.com) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "video_common.h" +-#include "netcam.h" +-#include "netcam_rtsp.h" +-#include "video_v4l2.h" +-#include "video_bktr.h" +-#include "jpegutils.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "video_common.hpp" ++#include "netcam.hpp" ++#include "netcam_rtsp.hpp" ++#include "video_v4l2.hpp" ++#include "video_bktr.hpp" ++#include "jpegutils.hpp" + + typedef unsigned char uint8_t; + typedef unsigned short int uint16_t; +diff --git a/src/video_loopback.cpp b/src/video_loopback.cpp +index 9c68ec3..191924c 100644 +--- a/src/video_loopback.cpp ++++ b/src/video_loopback.cpp +@@ -22,14 +22,14 @@ + * Copyright 2008 by Angel Carpintero (motiondevelop@gmail.com) + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" + + #if (defined(HAVE_V4L2)) && (!defined(BSD)) + +-#include "video_loopback.h" ++#include "video_loopback.hpp" + #include + #include + #include +diff --git a/src/video_v4l2.cpp b/src/video_v4l2.cpp +index 662bc66..3011bfa 100644 +--- a/src/video_v4l2.cpp ++++ b/src/video_v4l2.cpp +@@ -23,13 +23,13 @@ + * Refactor/rewrite code: 2018 MrDave + * + */ +-#include "motion.h" +-#include "translate.h" +-#include "util.h" +-#include "logger.h" +-#include "rotate.h" +-#include "video_common.h" +-#include "video_v4l2.h" ++#include "motion.hpp" ++#include "translate.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "rotate.hpp" ++#include "video_common.hpp" ++#include "video_v4l2.hpp" + #include + + +diff --git a/src/webu.cpp b/src/webu.cpp +index 02866e2..3eca379 100644 +--- a/src/webu.cpp ++++ b/src/webu.cpp +@@ -45,15 +45,15 @@ + #include + #include + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_html.h" +-#include "webu_text.h" +-#include "webu_stream.h" +-#include "webu_status.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_html.hpp" ++#include "webu_text.hpp" ++#include "webu_stream.hpp" ++#include "webu_status.hpp" ++#include "translate.hpp" + + static mymhd_retcd webu_mhd_send(struct webui_ctx *webui, int ctrl); + +diff --git a/src/webu_html.cpp b/src/webu_html.cpp +index 2c444c6..4e01b3f 100644 +--- a/src/webu_html.cpp ++++ b/src/webu_html.cpp +@@ -46,12 +46,12 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_html.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_html.hpp" ++#include "translate.hpp" + + /* struct to save information regarding the links to include in html page */ + struct strminfo_ctx { +diff --git a/src/webu_status.cpp b/src/webu_status.cpp +index ade6d7d..8594019 100644 +--- a/src/webu_status.cpp ++++ b/src/webu_status.cpp +@@ -24,9 +24,9 @@ + #include + #include + +-#include "motion.h" +-#include "webu.h" +-#include "webu_status.h" ++#include "motion.hpp" ++#include "webu.hpp" ++#include "webu_status.hpp" + + /* Conservatively encode characters in an array as a JSON string */ + static void webu_json_write_string(struct webui_ctx *webui, const char *str) +diff --git a/src/webu_stream.cpp b/src/webu_stream.cpp +index cc72ae9..b1874f3 100644 +--- a/src/webu_stream.cpp ++++ b/src/webu_stream.cpp +@@ -26,12 +26,12 @@ + * webu_stream_checks - Edit/validate request from user + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_stream.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_stream.hpp" ++#include "translate.hpp" + + void webu_stream_deinit(struct webui_ctx *webui, struct stream_data *stream) + { +diff --git a/src/webu_text.cpp b/src/webu_text.cpp +index 10a7b0b..c24a374 100644 +--- a/src/webu_text.cpp ++++ b/src/webu_text.cpp +@@ -32,12 +32,12 @@ + * + */ + +-#include "motion.h" +-#include "util.h" +-#include "logger.h" +-#include "webu.h" +-#include "webu_text.h" +-#include "translate.h" ++#include "motion.hpp" ++#include "util.hpp" ++#include "logger.hpp" ++#include "webu.hpp" ++#include "webu_text.hpp" ++#include "translate.hpp" + + static void webu_text_seteol(struct webui_ctx *webui) + { +-- +2.39.5 + diff --git a/Makefile.am b/Makefile.am index 23f49e8f..1ea3302a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,18 +1,18 @@ #/* -# * This file is part of MotionPlus. +# * This file is part of Motion. # * -# * MotionPlus is free software: you can redistribute it and/or modify +# * Motion is free software: you can redistribute it and/or modify # * it under the terms of the GNU General Public License as published by # * the Free Software Foundation, either version 3 of the License, or # * (at your option) any later version. # * -# * MotionPlus is distributed in the hope that it will be useful, +# * Motion is distributed in the hope that it will be useful, # * but WITHOUT ANY WARRANTY; without even the implied warranty of # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # * GNU General Public License for more details. # * # * You should have received a copy of the GNU General Public License -# * along with MotionPlus. If not, see . +# * along with Motion. If not, see . # * # */ @@ -25,26 +25,26 @@ pkgsysconfdir = $(sysconfdir)/@PACKAGE@ libstatedir = @localstatedir@/lib/@PACKAGE@ dist_libstate_DATA = \ - data/motionplus-dist.conf \ + data/motion-dist.conf \ data/camera1-dist.conf \ data/camera2-dist.conf \ data/camera3-dist.conf \ data/sound1-dist.conf -dist_man_MANS = man/motionplus.1 +dist_man_MANS = man/motion.1 dist_doc_DATA = \ - doc/motionplus_guide.html \ - doc/motionplus_stylesheet.css \ - doc/motionplus_build.html \ - doc/motionplus_config.html + doc/motion_guide.html \ + doc/motion_stylesheet.css \ + doc/motion_build.html \ + doc/motion_config.html ################################################################### ## Clean tilde crumbs and add prefix in config file. ################################################################### all-local: @rm -f po/*.po\~ - @sed -e 's|$${prefix}|$(prefix)|' data/motionplus-dist.conf > data/motionplus-dist.conf.tmp && mv -f data/motionplus-dist.conf.tmp data/motionplus-dist.conf + @sed -e 's|$${prefix}|$(prefix)|' data/motion-dist.conf > data/motion-dist.conf.tmp && mv -f data/motion-dist.conf.tmp data/motion-dist.conf ################################################################### ## Create pristine directories to match exactly distributed files @@ -55,9 +55,9 @@ cleanall: distclean @rm -f compile config.guess config.rpath configure depcomp install-sh @rm -f po/en@boldquot.header po/en@quot.header po/insert-header.sin @rm -f po/Makevars.template po/quot.sed po/remove-potcdate.sin - @rm -f po/Rules-quot po/stamp-po po/*.gmo po/motionplus.pot po/boldquot.sed + @rm -f po/Rules-quot po/stamp-po po/*.gmo po/motion.pot po/boldquot.sed @rm -f Makefile.in src/Makefile.in po/Makefile.in.in man/Makefile.in - @rm -f data/motionplus-dist.service data/motionplus-dist.conf + @rm -f data/motion-dist.service data/motion-dist.conf @rm -f data/camera1-dist.conf data/camera2-dist.conf @rm -f data/camera3-dist.conf data/sound1-dist.conf diff --git a/README.md b/README.md index 5618f18e..748d8992 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ -MotionPlus +Motion ============= ## Description -MotionPlus is a break from Motion version 4.2.2 to provide an application for enhancements. MotionPlus removes some of the outdated processes, cleans up the code base and introduces new functionality. +Motion is a program that monitors the signal from video cameras +and detects changes in the images. Version 5.0 and later versions +remove some of the outdated processes, cleans up the code base and +introduces new functionality. -The following are some of the things that are different from Motion. +The following are some of the things that are different from earlier +version of Motion (versions 4.7 and lower). - Secondary detection method via OpenCV - HOG (Histogram of Oriented Gradients) - Haar cascade classifiers @@ -16,11 +20,11 @@ The following are some of the things that are different from Motion. - Sound recording from network camera sources - ROI pictures for output or secondary detection - Enhanced web contorl - - Only needs a single port for all camera video streams and controls + - Single port for all camera video streams and controls - Consolidated stream(a single image) showing all cameras - List/download movies - Add/delete cameras - - Live view of the Motionplus log output + - Live view of the Motion log output - Video streams via MPEGTS format - Change/update configuration parameters - Permits a user created web page @@ -29,6 +33,6 @@ The following are some of the things that are different from Motion. ## License -MotionPlus is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) version 3 or later. +Motion version 5.0 and later is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) version 3 or later. diff --git a/configure.ac b/configure.ac index 7623e386..a85095e4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,10 @@ -AC_INIT(motionplus, esyscmd(['./scripts/version.sh'])) +AC_INIT(motion, esyscmd(['./scripts/version.sh'])) AM_INIT_AUTOMAKE([subdir-objects foreign]) CXXFLAGS="$CXXFLAGS -std=c++17" AC_PROG_CC AC_PROG_CXX AC_CONFIG_HEADERS([config.hpp]) -AC_CONFIG_SRCDIR([src/motionplus.cpp]) +AC_CONFIG_SRCDIR([src/motion.cpp]) AC_CANONICAL_HOST AC_CONFIG_MACRO_DIR([m4]) @@ -28,7 +28,7 @@ AC_CHECK_HEADERS(stdio.h stdlib.h sys/time.h sys/wait.h \ ############################################################################## AC_CHECK_PROG([PKGCONFIG],[pkgconf],[yes],[no]) AS_IF([test "${PKGCONFIG}" = "no" ],[ - AC_MSG_ERROR([Required package 'pkgconf' not found, please check motionplus_guide.html and install necessary dependencies.]) + AC_MSG_ERROR([Required package 'pkgconf' not found, please check motion_guide.html and install necessary dependencies.]) ] ) @@ -55,7 +55,7 @@ AC_CHECK_HEADERS(setjmp.h jerror.h jpeglib.h,[JPGS="yes"],[JPGS="no"]) AC_MSG_CHECKING(jpg libraries) AC_MSG_RESULT($JPGS) AS_IF([test "${JPGS}" != "yes" ], [ - AC_MSG_ERROR([Required jpeg headers not found, please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required jpeg headers not found, please check motion_guide.html and install necessary dependencies]) ] ) CPPFLAGS="$HOLD_CPPFLAGS" @@ -67,7 +67,7 @@ AS_IF([pkgconf libmicrohttpd ], [ TEMP_CPPFLAGS="$TEMP_CPPFLAGS "`pkgconf --cflags libmicrohttpd` TEMP_LIBS="$TEMP_LIBS "`pkgconf --libs libmicrohttpd` ],[ - AC_MSG_ERROR([Required package libmicrohttpd-dev not found, please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required package libmicrohttpd-dev not found, please check motion_guide.html and install necessary dependencies]) ] ) HOLD_CPPFLAGS="$CPPFLAGS" @@ -76,7 +76,7 @@ AC_CHECK_HEADERS(microhttpd.h,[MHTTP="yes"],[MHTTP="no"]) AC_MSG_CHECKING(libmicrohttpd libraries) AC_MSG_RESULT($MHTTP) AS_IF([test "${MHTTP}" != "yes" ], [ - AC_MSG_ERROR([Required package libmicrohttpd-dev not found, please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required package libmicrohttpd-dev not found, please check motion_guide.html and install necessary dependencies]) ] ) CPPFLAGS="$HOLD_CPPFLAGS" @@ -88,7 +88,7 @@ AS_IF([pkgconf zlib ], [ TEMP_CPPFLAGS="$TEMP_CPPFLAGS "`pkgconf --cflags zlib` TEMP_LIBS="$TEMP_LIBS "`pkgconf --libs zlib` ],[ - AC_MSG_ERROR([Required package zlib not found, please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required package zlib not found, please check motion_guide.html and install necessary dependencies]) ] ) HOLD_CPPFLAGS="$CPPFLAGS" @@ -97,7 +97,7 @@ AC_CHECK_HEADERS(zlib.h,[ZLIB="yes"],[ZLIB="no"]) AC_MSG_CHECKING(zlib libraries) AC_MSG_RESULT($ZLIB) AS_IF([test "${ZLIB}" != "yes" ], [ - AC_MSG_ERROR([Required package zlib not found, please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required package zlib not found, please check motion_guide.html and install necessary dependencies]) ] ) CPPFLAGS="$HOLD_CPPFLAGS" @@ -275,7 +275,7 @@ AS_IF([test "${FFMPEG}" = "no"], [ AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) - AC_MSG_ERROR([Required ffmpeg packages 'libavutil-dev libavformat-dev libavcodec-dev libswscale-dev libavdevice-dev' were not found. Please check motionplus_guide.html and install necessary dependencies]) + AC_MSG_ERROR([Required ffmpeg packages 'libavutil-dev libavformat-dev libavcodec-dev libswscale-dev libavdevice-dev' were not found. Please check motion_guide.html and install necessary dependencies]) ] ) PKG_CONFIG_PATH=$TEMP_PATH @@ -660,8 +660,8 @@ AC_CONFIG_FILES([ data/camera2-dist.conf data/camera3-dist.conf data/sound1-dist.conf - data/motionplus-dist.conf - data/motionplus-dist.service + data/motion-dist.conf + data/motion-dist.service ]) AC_OUTPUT diff --git a/data/camera1-dist.conf.in b/data/camera1-dist.conf.in index b22ce865..b781aa22 100644 --- a/data/camera1-dist.conf.in +++ b/data/camera1-dist.conf.in @@ -1,4 +1,4 @@ -; @prefix@/etc/motionplus/camera1.conf +; @prefix@/etc/motion/camera1.conf ; ; This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ diff --git a/data/camera2-dist.conf.in b/data/camera2-dist.conf.in index 5bf2cdb2..3f694ab8 100644 --- a/data/camera2-dist.conf.in +++ b/data/camera2-dist.conf.in @@ -1,4 +1,4 @@ -; @prefix@/etc/motionplus/camera2.conf +; @prefix@/etc/motion/camera2.conf ; ; This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ diff --git a/data/camera3-dist.conf.in b/data/camera3-dist.conf.in index f6de2068..d730d792 100644 --- a/data/camera3-dist.conf.in +++ b/data/camera3-dist.conf.in @@ -1,4 +1,4 @@ -; @prefix@/etc/motionplus/camera3.conf +; @prefix@/etc/motion/camera3.conf ; ; This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ diff --git a/data/camera4-dist.conf b/data/camera4-dist.conf new file mode 100644 index 00000000..efb5cb5a --- /dev/null +++ b/data/camera4-dist.conf @@ -0,0 +1,30 @@ +# /home/dave/source/build/etc/motion/camera4.conf +# +# This config file was generated by motion 4.7.0+dirty20240909-8d69cbf + +########################################################### +# Configuration options specific to camera 4 +############################################################ +# User defined name for the camera. +camera_name Server room + +# Numeric identifier for the camera. +camera_id 104 + +# Video device (e.g. /dev/video0) to be used for capturing. +video_device /dev/video0 + +# Image width in pixels. +width 640 + +# Image height in pixels. +height 480 + +# Text to be overlayed in the lower left corner of images +text_left + +# Text to be overlayed in the lower right corner of images. +text_right Camera4\n%Y-%m-%d\n%T-%q + +# File name(without extension) for movies relative to target directory +movie_filename CAM04_%t-%v-%Y%m%d%H%M%S diff --git a/data/motionplus-dist.conf.in b/data/motion-dist.conf.in similarity index 97% rename from data/motionplus-dist.conf.in rename to data/motion-dist.conf.in index 3afe39c7..86a67f8c 100644 --- a/data/motionplus-dist.conf.in +++ b/data/motion-dist.conf.in @@ -1,5 +1,5 @@ ; This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ -; Documentation: @prefix@/share/doc/motionplus/motionplus_guide.html +; Documentation: @prefix@/share/doc/motion/motion_guide.html ; ; This file contains only the basic configuration options to get a ; system working. There are many more options available. Please diff --git a/data/motionplus-dist.service.in b/data/motion-dist.service.in similarity index 69% rename from data/motionplus-dist.service.in rename to data/motion-dist.service.in index bb4e8a9b..37ca9ec4 100644 --- a/data/motionplus-dist.service.in +++ b/data/motion-dist.service.in @@ -1,54 +1,54 @@ # -# This file is part of MotionPlus. +# This file is part of Motion. # # MotionPLus is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# MotionPlus is distributed in the hope that it will be useful, +# Motion is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with MotionPlus. If not, see . +# along with Motion. If not, see . # # [Unit] -Description=MotionPlus - Enhanced security camera monitoring software. -Documentation=man:motionplus(1) +Description=Motion - Enhanced security camera monitoring software. +Documentation=man:motion(1) After=local-fs.target network.target [Service] User=motion UMask=002 -ExecStart=@BIN_PATH@/motionplus +ExecStart=@BIN_PATH@/motion Type=simple -# Set StandardError=journal to use journald to log messages from motionplus. -# See also the "log_file" config file option in motionplus(1) and systemd.service(5). +# Set StandardError=journal to use journald to log messages from motion. +# See also the "log_file" config file option in motion(1) and systemd.service(5). StandardError=null ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=5 -ExecStartPre=!/bin/mkdir -p /var/log/motionplus -ExecStartPre=!/bin/chown motion:adm /var/log/motionplus +ExecStartPre=!/bin/mkdir -p /var/log/motion +ExecStartPre=!/bin/chown motion:adm /var/log/motion # Don't restart if unconfigured / misconfigured e.g. daemon disabled # in defaults file. See also /usr/include/sysexits.h or sysexits(3) RestartPreventExitStatus=78 # To tune restart behaviour, see systemd.unit(5) and use -# "systemctl edit motionplus" to change the following settings: +# "systemctl edit motion" to change the following settings: #StartLimitBurst= #StartLimitIntervalSec= #StartLimitAction= #FailureAction= # The following can be used to increase the security of the -# installation, by mitigating risk from attacks on motionplus and the +# installation, by mitigating risk from attacks on motion and the # binaries, libraries and scripts which it relies on. They are disabled # by default in case they break existing installations, e.g. those which # call site-local scripts which would inherit the same restrictions. @@ -57,7 +57,7 @@ RestartPreventExitStatus=78 # http://0pointer.net/public/systemd-nluug-2014.pdf for more details # of these and other related options. # -# Use "systemctl edit motionplus" to change these settings. +# Use "systemctl edit motion" to change these settings. #PrivateTmp=true #NoNewPrivileges=yes #PrivateNetwork=yes diff --git a/data/motion.service b/data/motion.service new file mode 100644 index 00000000..a3582839 --- /dev/null +++ b/data/motion.service @@ -0,0 +1,69 @@ +# +# This systemd unit file is part of the motion project: +# +# https://motion-project.github.io/ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program. If not, see +# +# + +[Unit] +Description=Motion - monitor live video, trigger responses, record video/stills. +Documentation=man:motion(1) +After=local-fs.target network.target + +[Service] +User=motion +EnvironmentFile=-/etc/default/motion +# The the sleep on the following line is needed with systemd version +# 232, otherwise the error message that we echo doesn't hit 'systemctl +# status'. +ExecStart=/bin/sh -c '([ -r "/etc/default/motion" ] && [ "x$start_motion_daemon" != "xyes" ]) && echo "Not starting motion because start_motion_daemon=$start_motion_daemon - check /etc/default/motion" && sleep 1 && exit 78 ; exec @BIN_PATH@/motion -n' +Type=simple +# Set StandardError=journal to use journald to log messages from motion. +# See also the "log_file" config file option in motion(1) and +# systemd.service(5). +StandardError=null +ExecReload=/usr/bin/kill -HUP $MAINPID +Restart=on-failure +RestartSec=5 +# Don't restart if unconfigured / misconfigured e.g. daemon disabled +# in defaults file. See also /usr/include/sysexits.h or sysexits(3) +RestartPreventExitStatus=78 +# To tune restart behaviour, see systemd.unit(5) and use +# "systemctl edit motion" to change the following settings: +#StartLimitBurst= +#StartLimitIntervalSec= +#StartLimitAction= +#FailureAction= +# The following can be used to increase the security of the +# installation, by mitigating risk from attacks on motion and the +# binaries, libraries and scripts which it relies on. They are disabled +# by default in case they break existing installations, e.g. those which +# call site-local scripts which would inherit the same restrictions. +# +# See systemd.exec(5) and +# http://0pointer.net/public/systemd-nluug-2014.pdf for more details +# of these and other related options. +# +# Use "systemctl edit motion" to change these settings. +#PrivateTmp=true +#NoNewPrivileges=yes +#PrivateNetwork=yes +#ProtectHome=yes +#DeviceAllow=/dev/video0 +#MountFlags=slave +#SystemCallFilter= + +[Install] +WantedBy=multi-user.target diff --git a/data/sound1-dist.conf.in b/data/sound1-dist.conf.in index 0177e72e..9295465b 100644 --- a/data/sound1-dist.conf.in +++ b/data/sound1-dist.conf.in @@ -1,4 +1,4 @@ -; @prefix@/etc/motionplus/sound1.conf +; @prefix@/etc/motion/sound1.conf ; ; This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ diff --git a/doc/INSTALL b/doc/INSTALL index 822f555d..d04a43b3 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -1,7 +1,7 @@ The following is a brief overview of the building and installing instructions for Debian / Ubuntu. -For full instructions on how to build and install MotionPlus, see the motionplus_build.html that is -distributed with this source code. +For full instructions on how to build and install Motion, see the motion_build.html that is +distributed with this source code. The packages and library names change frequently and vary across base operating systems. Adjust the following lines as required by the base operating system. @@ -18,5 +18,5 @@ Once required packages are installed, execute: make install Sample custom configuration options: - --prefix : Specify the install location for the motionplus package + --prefix : Specify the install location for the motion package --with-ffmpeg=[dir] : Specify the location in which ffmpeg/libav is installed. diff --git a/doc/changelog b/doc/changelog index b82c569e..8c8b9066 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,92 +1,2772 @@ -Summary of changes for version 0.2.0 are below - * Revise copyright year - * Revise module documentation header - * Add PTZ examples - * Fix timelapse - * Remove unused variables - * Update default port for https cameras. Closes #114 - * Updated file for shots revision - * Fix frame counter specifier. Closes #116 - * Revise for possible null current_image - * Use time from current_image for format - * Eliminate sqltype as separate parameter - * Add mypicname function - * Remove event fname - * Move extpipe to movie module - * Revise imageext - * Revise event fileclose - * Additional revisions for ftype - * Separate on_picture_save vs on_movie_start - * Revise event use of ftype - * Revise movie_init parameters - * Remove unused motion_event parameter - * Consolidate draw_locate - * Revise to use cam->current_image - * Revise event to use time from image - * Revise required libcam version number - * Revise to use orientation. Closes #115 - * Implements remaining libcamera control parameters. - * Add placeholders for missing libcamera parameters - * Add diagnostic push/pop on ffmpeg includes - * Revise doc for libcamera - * Escape backslash in parameters - * Adjust vaapi decoding - * Remove SceneFlicker. Closes #103 - * Revise to use interleaved_write - * Add mov container - * Additional log messages - * Fix update of movies web page - * Revise container option from vp8 to webm - * Update example for mariadb packages - * Fix movies.json for all cameras. Closes #96 - * Update flip_axis documentation. Closes #95 - * Add option for non TLS webcontrol port - * Revise headers for mpegts - * Initialize av dictionary variable - * Remove startup fps adjustment - * Add urls providing mpeg transport streams - * Fix extpipe examples and processing - * Fix SIGHUP reload process - * Revise log level for message - * Do not translate ignore message - * Add cuda and drm hw decoding - * Allow for bad packet on files - * Revise log messages - * Revise message log - * Remove defunct process. Closes #77 Closes #78 - * Close extpipe on movie end. Closes #87 - * Use device_id of zero to indicate process all cameras - * Revise webu threadnbr to camindx - * Fix process for invalid cam ids. Closes #85 - * Update sample web page - * Fix static image refresh - * Resolve compiler warnings - * Documentation update for packages - * Fix log message - * Adjust example for proper display - * Revise logger messages - * Create example for fail2ban - * Add webcontrol_lock_script paramater - * Move av init functions to motionplus module - * Revise defaults in config file - * Remove encoding via OMX - * Remove unused function for nv21 - * Fix v4l2m2m codec - * Revert libcam AfWindows - * Fix reload all parms signal. Closes #60 - * Add libcam ScalerCrop and AfWindows controls. Closes #68 - * Revise libcam log messages - * Remove failed movie files. Closes #61 - * Fix snapshot when using netcam_high_url - * Allow tabs in config file. Closes #75 - * Fix webp libs. Closes #74 - * Update makefile - * Revise threshold - * Assign extpipe to NULL upon close - * Allow for database being down when MotionPlus starts - * Commit mariadb transactions -Summary of changes for version 0.1.1 are below - * Fix picture parameters - * Fix parsing for incorrect parameters -Initial release of version 0.1.0 +Summary of changes for version 4.7.0 are below + * Documentation updates + * Remove outdated MMAL camera source. + * Fix reaping of zombie processes from Motion. + * Allow for network cameras that are not completely standards compliant + * Fix v4l2M2M encoding. + * Fix fps conversion specifier. + * Allow for large date time and event numbers. +Summary of changes for version 4.6.0 are below + * Documentation updates + * Fix segfault on vaapi decoding + * Add support for DRM HW decode + * Remove default for allowed_media_types + * Fix libweb includes + * Fix autotools and translation files + * Update documentation on libcamerify + * Fix movie_extpipe + * Fix threshold_tune + * Add pragma for mmal code + * Update year in copyright notice + * Revise issue template + * Allow for bad packets when processing file + * Implement consistent time values + * Implement consistent calculation for pixel difference + * Fix compiler warnings + * Revise ioctl for devices to use long variable + * Print log message of signals +Summary of changes for version 4.5.1 are below + * Improve closing of v4l2 devices + * Fix creation of pid_file + * Add header check for mmal + * Fix pause when used as command line option + * Fix json pages when multiple cameras used + * Fix codec for movie_codec for mpeg4 + * Fix rotation for v4l2 devices +Summary of changes for version 4.5.0 are below + * Do not translate the ignoring IP alert message + * Fix processing for native_language config option + * Add additional sleep time for images to web stream + * Revise log level for some messages + * Update translations + * Update for new MariaDB pkg-config name + * Fix cleanup when v4l2 open fails + * Remove unused include module. + * Remove unused H264 palette code + * Fix sending of stale images to stream + * Revise path when checking headers + * Fix double free when using extpipe. + * Revise issue template + * Eliminate shared handle for sqlite3 + * Fix setting of controls for v4l2 devices + * Fix processing for v4l2 devices when stride is not width + * Replace dbeventid with eventid + * Fix parsing of PGM files + * Fix scale of text when in debug mode + * Fix processing when camera is not initially available + * Fix double free when camera is lost frequently. + * Fix close on exec methods + * Fix processing for preferred codec with new ffmpeg versions + * Fix snapshots when using netcam high + * Enhance netcam processing for single jpg pages + * Update instructions on using libcamerify for pi camera + * Update instructions on maximum number of cameras shown on web control page. + * Expand buffer for log messages + * Update japanese translations. + * Fix extra event triggered upon quit +Summary of changes for version 4.4.0 are below + * Add limit on attempts to get image from camera + * Add limit on failed authentication attempts + * Adjust copyright to 2021 + * Fix for urls provided without port number + * Fix the workaround for the exif creation. + * Add parameter to start camera paused + * Fix to avoid potential deadlocks + * Update permissions assigned for created directories + * Update parameter in the sample configuration files + * Remove restrictions on network camera protocols + * Change default for http processing to ffmpeg. + * Update build documents for MacOSX + * Update documents on PGM requirements + * Fix for latest version of FFMPEG + * Fix for movie_max_time + * Fix processing for gray scale network cameras + * Add dbeventid for PostgreSQL + * Add GPL license file. + * Add json pages + * Update for new MHD return codes + * Simplify image ring processing + * Update travis testing file. + * Use high resolution for snapshots if available. + * Add grey picture output option. + * Fix web stream content size + * Update documentation + * Enhance the processing for the params + * Change automake check to maintainer-check + * Add new modules for dbse and util + * Remove use of ATTRIBUTE_UNUSED + * Adjust module headers comments + * Implement mystr functions + * Adjust default capture_rate + * Use new params for the bktr and video + * Implement consistent use of braces {} + * Add support for cuda HW decoding of network cameras + * Remove MD5 module since no longer used. + * Implement consistent indentations + * Implement MYFFVER for easier condition testing + * Add netcam_params to specify items for network camera + * Revise parameter names + * Use MHD function for url decoding + * Fix scaling text calculations + * Fix end events criteria + * Add param for netcam rate high + * Remove old stream module. + * Add vaapi decoding for network cameras + * Allow lightswitch value of 1 percent + * Add parameter for network capture rate + * Fix the content-type header + * Update copyright to 2020 + * Guide update + * Fix MySQL/MariaDB init/definitions + * Fix CFLAGS/LDFLAGS + * Fix build for gcc 10 +Summary of changes for version 4.3.2 are below + * Revise to use MHD function for url decode + * Update travis distribution testing + * Eliminate compiler warnings on unsigned comparisons + * Eliminate compiler warnings on MHD return codes +Summary of changes for version 4.3.1 are below + * Compiler errors with GCC 10 + * Overrides to CFLAGS + * Add maintainer mode + * Segfault when invalid camera directory specified + * MariaDB initializations + * Updated guide +Summary of changes for version 4.3.0 are below + * Implement default for non ascii characters + * Removed poll requirement for MHD + * Updated translations + * Revise directory structure, autotools, makefile + * Revised tesing for travis + * Updated MMAL camera + * Optional processing for OMX + * Fix movie start times + * Optional h264_v4l2m2m + * set fps on v4l2 devices. + * Option for videoio.h + * JPEG code clean up + * Fix substrem processing for non modulo 16 + * Ignore invalid data sent from cameras. + * Adjust the netcam handler wait and processing + * Answer incorrect web requests. + * Implement delay upon reconnect + * Fix filetype specified for snapshots + * Enhancements the service file. + * Output to log the ext pipe command + * Documentation fix for minimum_frame_time + * Documentation clarification for lightswitch + * Documentation fix for colon versus semi-colon + * Fix vbr calculations for high frame rates +Summary of changes for version 4.2.2 are below + * Update version number to 4.2.2/Changelog + * Resolve compile problem for OpenBSD + * Resolve compiler warnings for 18.10 + * Guide/Manual updates + * Add the quit/end webcontrol actions to interface 0 + * Set the stream index on passthrough + * Revise the webcontrol stream rate + * Answer webcontrol stream only after completing first loop + * Save the preview images when triggering emulate + * Fix startup problem when using track_type 4 + * Fix hostname for webcontrol when using IPV6 +Summary of changes for version 4.2.1 are below + * Update version number to 4.2.1 / Changelog + * Report to log options included in build + * Add log messages on database actions(tosiara) + * Revise log messages of port used for stream + * Revise log messages when using v4l2 via netcam + * Fix null terminator on EXIF of jpgs(tosiara) + * Fix build with static libs for webp(Fabrice) + * Guide update for initial setup. + * Prevent webcontrol update of movie_passthrough + * Remove confusing log message + * Fix motion detection when using privacy mask + * Correct thread locking for movie_passthrough + * Revise guide for better mobile viewing + * Revise additional stream timing + * Fix stream timing(adameat) + * Remove obsolete function reference + * Change version number to 4.2+git +Summary of Changes for version 4.2 are below + * html fixes for legacy interface + * Fix typo in guide + * Workaround compiler warnings on system header HAVE_STDLIB_H + * Update motion guide + * Revise timing and multiple threads for streams + * Update translations + * Add debian for travis tests + * Regression for configuration write + * Add threshold_maximum configuration option + * Add legacy webcontrol interface + * Remove legacy substream option + * Revert mjpg and static jpg as sources + * Fix boundary string placement in the streams + * Eliminate log message on invalid frame type with movies + * Add event_start, event_end as webcontrol actions. + * Correct message on failed camera connection retry + * Allow conversion specifiers for track_generic + * Add wait for netcam handler loop + * Maintain history of generic tracking moves for 'center' requests + * Resolve sqlite3 = NULL after Watchdog timeout + * Add additional stream preview options to web interface + * Regression fix for mmal camera framerate + * Add static movie file processing via netcam_url + * Depreciate mjpg format for netcam_url + * Revise configuration option names and which are included in templates. + * Fix corrupted images for ppm output formats (tosiara) + * Edit and validate height/width provided from config parameters. + * Whitespace revisions. + * Implement libmicrohttpd to provide streams and webcontrol + * Additional fix for 422p format conversion.(tosiara) + * Image conversion from 422p format + * Fix preferred codec selection in ffmpeg. + * Check for invalid camera dimensions + * Revision to handle ffmpeg version 4.0 + * Revise packet locking for ffmpeg passthrough + * Guide update for default on output_pictures(Perelandric) + * Fix webcontrol for single camera via motion.conf (Matt Schatz) + * Add error return when msgfmt fails. + * Fix translation error (Perelandric) + * Fix logging messages (Perelandric) + * Add some french translations.(Sébastien VACHER) + * Fix the regex for v4l2 via netcam. + * Add config option for stream_grey + * Refactor main() to call functions instead and watchdog the netcam threads + * Update travis testing for 18.04 + * Add native_language option and additional languages + * Add close on exec for files(tosiara) + * Revise status and get webcontrol for text interface. + * ffmpeg 4.0 depreciation warnings. + * Webcontrol edit checks on thread number (Matt Schatz) + * Update german translations.(Uatschitchun) + * Fix memory leak when using camera_dir(genius3000) + * Report to log a warning when using high framerates with mmal + * Revise the webcontrol interface fonts. + * Add config options for lightswitch_frames (genius3000) + * Use a #DEFINE for specifying sizes of memory of webcontrol variables + * Initiate translations + * Implement translations via gettext + * Relocate the preview_save to the event module + * Add sql_query_stop configuration option. (sander1234567890) + * Corrections to webcontrol html interface (genius3000) + * Corrections to the contributing templates (genius3000) + * Revise watchdog and time function in netcam_rtsp.c + * Additional code comments for webu.c (tosiara) + * Updated lithuanian translations(tosiara) + * Add swedish translations.(Jony) + * Replace webhttpd module with new webcontrol interface and modules + * Fix build errors with ffmpeg 4.0 (James Cowgill) + * Remove checks in code for v4l1 pixel format. + * Revise output_picture best for high resolution + * Validate text_scale is a valid value + * Depreciate macro for assigning pthread name + * Regression fix for long jump in jpegutils.c (void-user) + * Fix parameter criteria for autobrightness + * Regression fixes for vid_control_params (genius3000) + * Add config option for user to provide CORS header for streams.(jackxbritton) + * Add text_scale option (jackxbritton) + * Add track_generic_move for track_generic option (christophe-lohr) + * Copy depreciated parameters for v4l2 devices + * Revise webhttpd html header(Andrea Cioni) + * Updated build instructions for MacOSX (Alistair McMillan) + * Resolve segfault with netcam_highres startup. + * Update guide with correct conversion specifiers. + * Refactor video_v4l2/bktr and add config option vid_control_params + * Remove 17.04 from travis tests + * Manual update for typo (Christian G. Warden) + * Update documentation for %{ver} and %{host} specifier + * Revise %{host} and add %{ver} (tosiara) + * Update for passthrough processing of cameras + * Updated motion_guide.html + * Revise webcontrol page to indicate the webcontrol_parms selection + * Validate v4l2 parms when using v4l2 via netcam + * Capture images at start to prevent immediate events + * Initialize thread number to eliminate inaccurate log notice. + * Allow URLS with underscores + * Fix message when selecting UDP transport + * Add passthrough recording for rtsp cameras. + * Remove default SQL (which was specific to Maria) + * Default webp image type to be included in builds. + * Include EXIF for webp images. + * Report to log when user specifies invalid URL. + * Update guide that is installed locally. + * Updated version script to include date and dirty vs clean. +Version 4.1.1 Changes Below + * Fix file name for debug movies + * Fix image saving when using highres option + * Add error checking of jpeg decompression. + * Fix version script for old distributions. + * Fix building on musl based systems. +Version 4.1 Changes Below + * Add flip_axis option + * Add mask_privacy option + * Add netcam_highres option + * Add on_camera_found option + * Add substream_port option + * Add webcontrol_parms option + * Rename ffmpeg_timelapse to timelapse_interval + * Rename ffmpeg_timelapse_mode to timelapse_mode + * Add timelapse_fps option + * Add timelapse_codec option + * Remove sdl_threadnr option + * Remove v4l1 functionality + * Add support for RTMP and additional v4l2 palette options + * Add support for network cameras on macOSX + * Add additional conversion specifiers + * Add flood control for Motion log + * Demote the ffmpeg log messages to INF level. + * Additional reporting of configuration parms at the INF log level. + * Remove debug messages at every frame + * Report to log the IP of failed authentication attempts + * Add option for output of images in WEBP format(via build option) + * Added webcam on FreeBSD functionality/instructions. + * Added functionality for v4l2 devices via the netcam modules + * Refactoring of code for v4l2, netcam_rtsp, motion_loop, ffmpeg, configure.ac to assist future development. + * Fix movie playback issues with timestamps. + * Updated motion_guide.html, motion.1 documentation +Version 4.0 Changes Below + * PI Cam Support + * Web Interface fixes for preview, IPV6, HTML + * Allow for resize of mask file to match image + * FFMPEG Revisions (3.0, reporting of messages, FPS, timelapse) + * Fix image corruptions across threads + * Documentation updates to guide, manual, reference images. + * Add camera_name, camera_id, camera_dir options + * Configuration fixes (Pi3, JPeg Turbo, SDL, Fedora, BSD, systemd) + * travis build testing + * remove unused files(pwc-ioctl****.h, README.Axis) + * ffmpeg_variable_bitrate to values of 0-100 and ffmpeg fixes + * Better messages for pkg-config + * Fix timelapse crash when selecting mpeg4 +Version 3.4.1 Changes Below + * Added suggestion for including pkgconf as part of build requirements + * Swap sequence of user ffmpeg path and PKG_CONFIG_PATH + * Allow : in non standard locations of netcam_url path. + * Eliminated the use of coded_frame (Was a redundant assignment) + * Revise HEVC to use H264 for older ffmpeg + * Add HEVC codec option for newer ffmpeg (momo-i) + * Makefile changes to align with Debian package and fixes from previous changes + * Revise description for netcam_url in configuration file. + * Change default for ffmpeg in configure.ac (Issue 795002,82) + To compile without ffmpeg now requires --without-ffmpeg option + * Change prefix to use sysconfdir instead. Install threadX.conf files to threadx-dist.conf + * Revise configure.ac to use pkg-config for ffmpeg(Rex Feany) + * Revise PIX_FMT to be able to use older ffmpeg versions. + * Revise PIX_FMT for newer ffmpeg(Rex Feany) + * Add patch for ports on proxy netcams from GVautier (issue 144906) + * Add patch from JonGuess(issue 151452) for treatment of partial netcam images. + * Consolidate the Sqlite3 options into the code standard. + * Draft revised motion_guide.html with new options. + * Revise manual to have current options. + * Tab/Space cleanup and validation security issue addressed. (issue 071831) + * Add preview to webcontrol page(issue 172526) + * Additional container fixes(requests/bugs 201900,110304,001656,050731) + * Remove depreciated deinterlace option + * Remove avformat_network_init call. Call was not needed and was leaking memory + * Add extra container options for ffmpeg videos + * Remove extra bytes before SOI marker on netcam images. + * Updated handling of lastsnap to permit subdirectory specification. + * Handle MJPEG streams from some Logitech webcams which send AVI1 instead of JFIF. + * Fix missing header for some builds(Jim Dodgen) + * Sqlite3 revisions (Jim Dodgen) + * Add new config options to the motion-dist.conf + * Allow text format specifiers to take a width like printf would. (David Fries) + * Allow text format specifiers to take a width like printf would. (David Fries) + * Add power_line_frequency configuration item to improve image quality. (David Fries) + * Fix webhttpd race condition crash with SIGHUP, add it to running thread counter (David Fries) + * Fix the GOP size for the created videos + * Fix netcam ftp functionality + * Fix Typo on the log level + * Fixed the network ftp image option. + * Lock thread on ffmpeg/libav init and open_codec + * Revise version number generated by script to indicate Unofficial-Git-'hash' + * Revised Changelog description for version 3.4 + * Merge OpenBSD fixes from sthen pull request + * Revised picture.c to allow for modulo 8 pictures and adjusted netcam modules accordingly as well.(closes 135313) + * Changes to ffmpeg.h/ffmpeg.c to allow for compiling without ffmpeg/libav or with older versions. + * Merge mymalloc, free and casting changes from Alfred Klomp + * Merge bug fix for sizeof from Alfred Klomp + * Rewrote timelapse so that it works(closes 180501) + * Merge tosiara changes for version number + * Add copyright file for features added since 3.2.12 + * Cleanup ffmpeg.c and plug memory leak + * Add support for latest version of ffmpeg/libav + * Tidy up packaging changes + * Add packaging fixes (infinity0) + * Revise version.sh to put out the git commit. + * Rollback revision to allow for a formal pull request. + * Reimplement changes not to be included in pull request from tosiara commit 9ebee031 + * Implement requirement of modulo 16 to avoid seg fault when opening stream + * Add debian build files from trusty(14.04) + * Revise default values for motion.conf + * Revise CHANGELOG to conform with debian format + * Revised debian packaging files + * Implement new sequence for this file (CHANGELOG) newest to oldest. + +Summary of Changes that were proposed to maintainer for a version 3.4 + +Features + * Insert Blanking frames http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x12x16x132522 (Dag Erlandsson) + * IPV6 for http-control and webcam stream not netcam yet http://www.lavrsen.dk/twiki/bin/view/Motion/IPv6 + (Jeroen Massar & Angel Carpintero) + * Experimental approach for MJPEG streams (Motion JPEG) for network cameras + http://www.lavrsen.dk/twiki/bin/view/Motion/LinksysWVC200SupportPatch ( ... ) + * Add draw a RED box around the movement as default (Joerg Weber) + * Add write/read nonblock functions in webhttpd( timeout on read/write). (Angel Carpintero) + * More changes in option names from http://www.lavrsen.dk/twiki/bin/view/Motion/IntuitiveOptionNamesDiscussion + (Angel Carpintero) + * motion_locate new parameter names : red , center , redcross instead of only on, off. (Angel Carpintero) + * External pipe to allow external video encoders + http://www.lavrsen.dk/twiki/bin/view/Motion/DarkwindHackeronMotionPatching (Bill Payne, Angel Carpintero) + * Split locate_motion into separate 'mode' and 'style' option to allow all + possible combinations. (Joerg Weber) + * Implement 'gapless' event mode to allow for recording of movies without 'holes'. (Joerg Weber) + * Limit detection rate to 3fps at framerates above 5fps, to reduce CPU load. (Joerg Weber) + * Fix warning for syslog() , Added support for some new bayer palettes introduced in kernel 2.6.27. + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2008x10x15x130110 + Increased buffer in ffmpeg to allow encoding at 1600x1200 (Angel Carpintero) + * Sqlite3 support http://www.lavrsen.dk/twiki/bin/view/Motion/SQLite3Patch (Giacomo Graziosi) + * New RPM SPEC file and startup scripts compliant with Fedora 10 guidelines and above (Steven Moix) + * Increase write buffer size for writing image files and ffmpegs + http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionWriteBuffersPatch (Craig West) + * Fixed mask overlay in setup mode is now green instead of white (Joerg Weber) + * Add new config option 'ipv6_enabled' to enable/disable IPV6 (Angel Carpintero) + * Remove VIDIOC_S_JPEGCOMP support is deprecated. (Angel Carpintero) + * Use static memory allocation in ffmpeg_deinterlace() (Peter Holik) + http://www.lavrsen.dk/foswiki/bin/view/Motion/FfmpegDeinterlaceStatic + * Atom optimizacion in configure.in (Peter Holik) + http://www.lavrsen.dk/foswiki/bin/view/Motion/AtomOptimizations + * Allow to change Standard method ( PAL / NECAM / SECAM ) (Angel Carpintero) + * Add authentication methods 'Basic Authentication' and 'Digest Authentication' + to the "Live Stream Server". (Michael Finsterbusch) + http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionStreamAuthPatch + * Implemented new logging system + http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionLog (Angel Carpintero) + * Added a macro MOTION_LOG , no need to add __FUNCTION__ anymore. (Angel Carpintero) + * Added EXIF feature for jpeg images , http://www.lavrsen.dk/foswiki/bin/view/Motion/ExifTaggingPatch (Wim Lewis) + * Improve detection of av_register_protocol() for ffmpeg (Angel Carpintero). + * Added support for libjpeg-turbo + http://www.lavrsen.dk/foswiki/bin/view/Motion/FeatureRequest2010x04x14x082244 (Angel Carpintero) + * Added new log type COR , to filter messages from CORE. (Angel Carpintero) + * Added a new starting option -m to disable motion detection. (Angel Carpintero) + * Allow image dimension not 4:3 changing a check of modulo 16 by modulo 8. (Jeroen Massar) + * Added codec Ogg/Theora as new output format for regular movies. + http://www.lavrsen.dk/foswiki/bin/view/Motion/OggTimelapse (Michael Luich) + * Added support for ffmpeg 0.11 new API. + * Added RSTP support for netcam ( merge https://github.com/hyperbolic2346/motion ) + * Merge tosiara/rtsp branch (commit 46cfcf31d, 2014/05/21) (Mr-Dave) + * 3fps bugfix from SVN rev559 (tosiara, Joerg Weber) + * Buffer overflow vulnerabilities (hyperbolic2346) + * Redundand -- boundary prefix (torao) + * Removed compiler warnings: (Mr-Dave) + logger.c,jpegutils.c,netcam_ftp.c,track.c, + picture.c,webhttpd.c,stream.c,ffmpeg.c + * Bug fix as part of warnings in webhttpd.c fixed(Mr-Dave) + * Removed compiler warning regarding ffmpeg being newer than 0.4 version(Mr-Dave) + * New configure script and identification of ffmpeg version and additional libs. (Mr-Dave) + * Resolve additional compiler warnings in ffmpeg (Mr-Dave) + * Revised INSTALL with samples(Mr-Dave) + * Revisions for RTSP and code standard.(Mr-Dave) + * Plugged most memory leaks in RTSP. (Mr-Dave) + * Undo changes caused by code editor and other unnecessary changes (Mr-Dave) + * Moved call to netcam_shutdown_rtsp into netcam_cleanup where it belongs. (Mr-Dave) + * Regession fix for memory leaks and reconnection (Mr-Dave) + * Eliminated requirement to manually build FFMPEG for RTSP support. (Mr-Dave) + * Revised RTSP to support version 53 of libavformat (Mr-Dave) + * Revised FFMPEG.c to eliminate warnings and functions no longer supported by Libav/FFMPEG(Mr-Dave) + * Revised INSTALL to have sample PI configure option.(Mr-Dave) + * Revised configure.ac to generate compiler flag AVFMT_V53.(Mr-Dave) + * Revised INSTALL to indicate standard APT packages for RTSP (Mr-Dave) + * Revised configure.ac to recognize libavformat version 54 RTSP (Mr-Dave) + * Clean up the messaging for RTSP. + * Additional validations for RTSP connection and corrected free sequences + * Removed seg fault on failure to open first image, comments, isolation of RTSP + * Add AC_GNU_SOURCE macro to check for GNU C Library, fix compile when no FFMpeg. + * Implement inits of AV functions from bcl fork + * Add gray image upon disconnection + * Added tcp/udp transport config option from hyperbolic2346(commit 423ef7bb3) + * Revised comments to be in line with application standard. + * Restructure rtsp to handle rescaling and non YUV420 format, rotate, MJPEG input format + +Bugfixes + * Avoid segfault detecting strerror_r() version GNU or SUSv3. (Angel Carpintero) + * Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) (Peter Holik) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603 + * Allow compile with NetBSD and make LP64 compliant video_freebsd.c (Andreas Wrede) + * Avoid compile vloopback in BSD (Angel Carpintero) + * V4L2 fourcc GRBG not supported, updated default value for v4l2_palette 17. (Isaac Richter) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x10x29x222753 + * Exit when image dimension are not modulo 16. (Angel Carpintero) + * Avoid logs flooding using some options of netcam_keepalive and try to discard images with + weird header Content-Lenght 0. (Angel Carpintero) + * Only use post capture when we setup to record videos with external pipe or ffmpeg. (Angel Carpintero) + * Fix introduced bug for Content-Lenght = 0 in svn r476. (Angel Carpintero) + * Avoid segfault when motion cannot create a logfile. (Angel Carpintero) + * No mysql_close + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x11x22x033859 + * No PQfinish() (Angel Carpintero) + * Input for webcams has to be set to -1 + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x01x21x162309 + * Added a conditional check for avformat_alloc_context , av_avformat_alloc_context to fix + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x10x05x071936 (Angel Carpintero) + * Fix issue with JPEG , adding dinfo.do_fancy_upsampling = FALSE; + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x08x20x194659 + * Made micro-lightswitch optional (see lightwitch option in motion.conf) + * Fixed help text for options event_gap and area_detect + * Fixed motion.conf-dist , adding text according with config options. + * Fixed a bug in post_capture. It was missed under certain conditions. + * Fixed configure for SDL. + * Replace malloc() by calloc(). (Jeroen Massar) + * Free file descriptor buffers on exit. + * Avoid segfault when text_left or text_right uses non supported chars. + * Fixed leak in vloopback. + * Fixed a build of motion for some kernel version with not good videodev.h + * Netcam Modulo 8 + +3.2.12 Summary of Changes + +Bugfixes + * Fixed name space clash with libjpeg8 (Kenneth Lavrsen) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x01x22x084753 + * Fixed FFV1 codec encode with ffmpeg (Angel Carpintero) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x13x032553 + * Fix conv_uyvyto420p segfault ( William M Brack ) + * Enhancing the palette selection ( William M Brack ) + * Fix zombies on OpenBSD. (Mark Feenstra) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x28x054348 + + +3.2.11.1 Summary of Changes + +Bugfixes + * Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) (Peter Holik) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603 + * Fix fd leaks in external pipe. (Angel Carpintero) + * Avoid possible stack smashing in v4l_open_vidpipe(). (Angel Carpintero) + * Allow compile with OpenSuse ffmpeg package (15594svn-20081010) + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x10x25x070400 (Angel Carpintero) + * Fix warning for syslog(). (Angel Carpintero) + * Better detection of ffmpeg + http://www.lavrsen.dk/foswiki/pub/Motion/ReleaseNoteMotion3x2x11/ffmpeg-detection.diff.gz + (Angel Carpintero) + * Fix warning for __USE_GNU redefined (Peter Holik) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x122137 (Peter Holik) + * Allow compile with NetBSD and make LP64 compliant video_freebsd.c (Andreas Wrede) + * Fix segfault for new libjpeg v7. (Angel Carpintero) + +3.2.11 Summary of Changes + +Features + * Added support for ffmpeg-2008-04-09 port version of FreeBSD. + * Remove mjpegtools dependencies and integrate only needed functions from library. (Angel Carpintero) + * Allow change/setup framerate in FreeBSD using pwcbsd. (Angel Carpintero) + * Get rid of ffmpeg-config in configure.in for debian. (Angel Carpintero) + + +Bugfixes + * Fix Problem Encoding 1280x1024 resolution videos + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x06x11x183727 (Angel Carpintero) + * Add a new parameter netcam_tolerant_check, to be less strict with some buggy network cameras firmwares. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x06x19x123218 (Angel Carpintero) + * Fix round robin in BSD switching to METEOR_CAP_SINGLE. (Angel Carpintero) + * Fix rotate for v4l2 devices using JPEG / MJPEG palettes. (Angel Carpintero) + * Fix v4l2_palette http://www.lavrsen.dk/twiki/bin/view/Motion/UvcvideoMjpegPatch (Gerrit Hannaert) + * Fix warning for x86_64 in conf.c using pointers LP64 compliant ( Angel Carpintero ). + * Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) ( Peter Holik ) + http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603 + + +3.2.10.1 Summary of Changes + +Bugfixes + * Fix a security issue in web control interface http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484572 + (Angel Carpintero) + +3.2.10 Summary of Changes + +Features + * Added the pre_capture buffer redesign to throttle load and enhance pre_capture feature. + http://www.lavrsen.dk/twiki/bin/view/Motion/PreCaptureRedesign (Dag Erlandsson). + * Added preview center feature. + http://www.lavrsen.dk/twiki/bin/view/Motion/PreviewCenter (Dag Erlandsson). + * Removed low_cpu feature, as it is not really compatible with pre_capture and a lot of other + features rely on the pre_capture buffer behind the scenes. (Joerg Weber) + * Removed night_compensate feature. This functionality is covered by noise_tune. (Joerg Weber) + * Implemented a new reference frame algorithm to improve object recognition and location. (Joerg Weber) + * Improved smartmask feature: real moving objects don't trigger the mask anymore. (Joerg Weber) + * Added area_detect feature. New config options: area_detect, on_area_detected. (Joerg Weber) + * Added help in http control + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x181541 (Angel Carpintero) + * Added Choose V4L2 palette http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x032318 + (Angel Carpintero) + * Improved http control ( 'back' link, select box, show current values when are going to be changed ). + (Angel Carpintero) + * Improved thread handling, single threads can be stopped/restarted (Dag Erlandsson) + * Watchdog, restart hang threads (Dag Erlandsson) + * Added ON_CAMERA_LOST event (Dag Erlandsson) + * Motion start if a camera isn't there at start, retries to connect if lost (Dag Erlandsson) + * Netcam Keepalive and HTTP/1.1 http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x01x22x231542 + (Simon Walls) + * Added mov , Quicktime file format (Andrew Hamilton). + * Added to configure.in --with-pwcbsd to allow compile motion in freebsd with webcam support instead of bktr + (Angel Carpintero) + +Bugfixes + * Fixed a problem with locate and fixed mask overlay (Dag Erlandsson). + * Preview pictures get the timestamp of moment they were captured (Dag Erlandsson). + * Fixed http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x23x093651 (Angel Carpintero) + * Fix process_id_file when is passed from command line (Angel Carpintero) + * Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x27x150419 (Angel Carpintero) + * Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x25x102808 (Angel Carpintero) + * Avoid random errors , initialising some structs for V4L1 + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x26x010755 (Jason Sharpee & Angel Carpintero) + * Fix motion segfault because ffmpeg API change + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2007x12x29x175530 (Angel Carpintero) + * Little fix in ffmpeg.c comparing version of LIBAVFORMAT_BUILD, since ffmpeg svn -r4486 LIBAVFORMAT_BUILD and + LIBAVCODEC_BUILD uses LIBAVFORMAT_VERSION_INT ((49<<16)+(0<<8)+0) and LIBAVCODEC_VERSION_INT ((49<<16)+(0<<8)+0) + (Angel Carpintero) + * Fix choose v4l2 palette , http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x01x21x043812 (Onakra) + * Get current directory to allow write motion.conf properly + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x013419 (John Bray) + * Fix broken PostgreSQL detection for custom location, + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x025134 ( Angel Carpintero ) + * Fixed stepper when is used track_auto on ( Angel Carpintero ). + * Better debug in netcam for "Error reading image header" + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x27x092849 (Simon Walls) + + +3.2.9 Formal Release - Summary of Changes + +Features + * Removed debian ( to avoid conflicts with debian package) and FreeBSD + ( no needed to deploy BSD port here ) directories. ( Angel Carpintero ) + * Added --chuid motion to debian init.d script. ( Angel Carpintero ) + * Added Flash video format (FLV) to ffmpeg. + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x07x19x131921 (Timo Taskinen). + * Added FFV1 ( FF video codec 1 ) codec , Lossless encoding + http://www.lavrsen.dk/twiki/bin/view/Motion/LosslessEncoding (Andrew Hamilton). + + +Bugfixes + * Fix segfault in webhttpd.c on motion restart (Angel Carpintero) + * Fix segfault in debian http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x09x24x175945 + (Angel Carpintero) + * Fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=391055 , change + motion man page , -d requires level. (Angel Carpintero) + * Handle mjpeg decoding and fix colour issue adding mjpegtools dependency + http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue + http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegToYUV420pPatch + (Marius Rieder, Angel Carpintero). + * Add debug level > 5 to get logs from v4l2_select_input, v4l2_set_control and v4l2_set_input. + (Angel Carpintero) + + +3.2.8 Formal Release - Summary of Changes + +Features + * Added connection status for all devices available from http web interface. + (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x11x09x050638 + * Improved deb packaging, install the init.d script. (Angel Carpintero). + * Added swf codec to video creation (Bowser Pete, Andy Brown). + http://www.lavrsen.dk/twiki/bin/view/Motion/FFmpegSWFcreation + * Added V4L2 support (Krzysztof Blaszkowski, Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/VideoForLinuxTwoDiscussion, + * Added support for V4L2_PIX_FMT_SBGGR8 ( bayer ), V4L2_PIX_FMT_SN9C10X, + V4L2_PIX_FMT_MJPEG and V4L2_PIX_FMT_UYVY (Angel Carpintero). + * ucvideo track pan/tilt support ( Michal Licko ,Dirk Wesenberg and + Angel Carpintero ) + http://www.lavrsen.dk/twiki/bin/view/Motion/LinuxUvcTrackingPatch + * Added a FreeBSD directory to allow people from BSD to get a daily version + and create a port. (Angel Carpintero). + * Removed mysql dependency from debian package and added a note to setup + motion to run as daemon to create the pid file. (Angel Carpintero). + * Changed the way configure search mysql headers and libs, added 3 parameters + to configure --without-mysql to disable support, --with-mysql-include + directory of mysql.h and --with-mysql-lib directory of libmysqlclient.a or + libmysqlclient.so (Angel Carpintero). + * Added MYSQL_OPT_RECONNECT flag for mysql connection (MYSQL 5.x only) and + changed default value for mysql_host (Angel Carpintero). + +Bugfixes + * Removed a duplicate call to jpeg_destroy_decompress already is called from + netcam_image_conv (Krzysztof Blaszkowski). + * Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x10x10x081903, + reconnect to mysql if connection dropped (Angel Carpintero). + * Fix memory management in ffmpeg.c (Rafis Khayrullin). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x19x062432 + * Fix of ffmpeg_avcodec_log code (Alain Guidez). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x03x25x074612 + * Fix a segfault adding correct size to be used for bayer2rgb24() + (Damian Wrobel) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x03x30x175913 + * Fix an error in FreeBSD, the use of capture even fields depends on height + value. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x03x073610 + * Fixed autodetection for VIA cpu, no needed to use --without-optimizecpu. + Added many others (Angel Carpintero) + * Fix, don't remove pid file when motion reload config file( HUP signal ) + (Angel Carpintero). + * Fix compilation broken by uvc track type. (Angel Carpintero). + * Fixed the thread number assignment which could goof up if netcams started + very quickly before all thread were created at startup. (Kenneth Lavrsen) + * Fix RoundRobin v4l2 buffers in driver when switching input, + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x07x07x182605 + (Dag Erlandsson and Angel Carpintero). + * Check EIO for VIDIOC_DQBUF to workaround saa7134 problem. + (Dag Erlandsson and Angel Carpintero). + * Change bayer2rgb24() to fix a problem with sn9c102 driver + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x06x05x012249 + (Jared D and Angel Carpintero). + +3.2.7 Formal Release - Summary of Changes + +Features + * Removed the minimum_gap feature which was utterly useless (Kenneth Lavrsen) + * Added new feature: minimum_frame_time which enables capturing at a lower rate + than 2 frames per second (Kenneth Lavrsen and Angel Carpintero) + * Made the creation of reference frame and the decay mechanism depending + on how much motion was detected relative to threshold setting (Joerg Weber) + http://www.lavrsen.dk/twiki/bin/view/Motion/ReferenceFramePatch + * Added process_id_file feature (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x06x06x123003 + +Bugfixes + * Fixed problem related to fetching images from Network camera and error + handling when it fails. Motion would end in infinite loops (Bill Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x03x10x000151 + * Improved reporting of thread numbers during startup in setup mode. + (Peter Smith and Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/SlightlyImprovedThreadCreationLogging + * Ffmpeg code mutex locking fix (Peter Smith) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x04x07x164654 + * Ffmpeg avicodec logging improved (Peter Smith and Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegAvicodecLogging + * Improved upon a few ambiguous log messages which may be emitted by the Event + handling code with regards to Ffmpeg (Peter Smith) + http://www.lavrsen.dk/twiki/bin/view/Motion/LoggingEventFix + * Implemented a fix for the rare problem where some experienced that the + move file names would only consist of the extension .mpg or .avi with no + name in front. The root cause was the use of sprintf for appending to + strings. (Mike Kenney and Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2005x09x05x133031 + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x06x19x174238 + * Altered the risky use of sprintf to snprintf in all places related to + use with config strings that can become very long (Kenneth Lavrsen) + * Removed annoying debug messages (v4l_set_input really needed ?) in the FreeBSD + version (Angel Carpintero) + * Fixed the check for ffmpeg version. In rev 5503 of ffmpeg the FFMPEG_VERSION_INT + was removed from libavcodec/avcodec.h. Instead we now use the equivalent + LIBAVFORMAT_BUILD >= 4616 which is the 0.4.9pre1 version of ffmpeg. + (Kenneth Lavrsen) + * Fixed segfault when netcam_url has no service ( http , ftp ) (Angel Carpintero) + * Fixed interlace issue with METEOR_GEO_EVEN_ONLY in FreeBSD (Angel Carpintero) + * Fixed possible syntax error in configure related to MySQL (Angel Carpintero) + * Avoid open file descriptor when connecting to network cameras fails (Peter Holik) + http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidOpenfiledescriptors + * Fixed http pause feature so that pausing thread 0 now pauses all threads. + (GunnarSkjold) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x10x111239 + * Put a new global mutex around avcodec_close to avoid problems with not thread + safe functions in ffmpeg (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x04x07x164654 + * On FreeBSD configure defines a redundant freebsd for motion. Fixed by replacing + -D__freebsd_ by BSD macro included in sys/param.h for BSD platforms. + (JukkaUkkonen and Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x070417 + * For BSD platforms changed to using native pthreads as default and adding + linuxthreads as a optional parameter from configure. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x071646 + * Smartmask overlay feature did not set intensity correctly. (Kenneth Lavrsen) + + +3.2.6 Formal Bugfix Release. + * Fixed bug where variables time_last_frame and time_current_frame had been + extended to also be used for snapshot feature but declaration was hidden + between #ifdef HAVE_FFMPEG. (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x03x09x012244 + * Fixed a bug that only allowed remote control of max 9 cameras. Now + Motion can present up to 99 cameras in its http remote control interface + (Angel Carpintero based on idea by Chuck Sheehan) + http://www.lavrsen.dk/twiki/bin/view/Motion/WebHttpManyThreads + * text_changes now shows a '-' when motion detection is paused instead of + just showing 0 (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x03x16x095713 + +3.2.5.1 Doc and man page correction + * ffmpeg_filename has changed name to movie_filename to prepare for + alternative movie encoding to the current ffmpeg based implementation + and ffmpeg_filename will then be a bad name (Kenneth Lavrsen) + * Man page corrected. + +3.2.5 Formal Release. Summary of changes + + * Fixed misc problems in FreeBSD. (Angel Carpintero) + * Update README.FreeBSD + * Fix problems with tuner_device and frequency, now by default is not + defined to allow use any input without problem. + * Replace strndup() by memcpy() in netcam.c + * Merged configure.in.freebsd with configure.in (configure.in.freebsd + deleted) + * Remove a warning when used --without-bktr + * Remove cpu optimization (is broken) + * Fixed memory leak in ffmpeg code. (Andrew Hamilton) + * Fixed http control of pan and tilt (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x12x22x122649 + * Fixed netcamera bug related to separating frames in an mjpeg stream. + (Peter Holik). From mailing list 23 Dec 2005. + * Fix related to connecting to the netcam (William Black) + From mailing list 23 Dec 2005. + * Changed CHANGELOG to same bullet format as used by TWiki to make it easier + to write release notes (Kenneth Lavrsen) + * Changed CREDITS to same bullet format as CHANGELOG (Kenneth Lavrsen) + * Fixed sql_mask not initialised correctly (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x09x175603 + * Fixed the management of strings from http remote control , setting to NULL + when they are set to "blank" and fixes a problem with despeckle , that didn't + allow to remove labeling action from http remote control. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/FixStringsAndDisableLabeling + * Fix many typos in comments ( i ran aspell against the code ). Also there's a + fix to free cnt->eventtime_tm when motion exits. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/FixTypoInComments + * Fix the problem that happens in FreeBSD and Debian Sarge because + version of ffmpeg is LIBAVFORMAT_BUILD < 4629. ( Pete Shipley and Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x12x120335 + * Updated motion.spec. Changing D_FORTIFY_SOURCE=2 by D_FORTIFY_SOURCE=1 to fix + problem related to building with ffmpeg. (Angel Carpintero) + * Implemented fix for missed snapshots with slow network cameras (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x02x07x162149 + * Added some constants in video.c function v4l_picture_controls() which can help + people hack an optimal set of values for controlling auto brightness for their + particular camera. For now I am do not want to add all of these to the already + too large number of motion config options. Maybe based on feedback we can + permanently change the constants and add an additional auto brightness option. + Or maybe a combined option that sets more constant based on an algorithm. + (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x02x07x212816 + * Fixed a syntax error in picture.c get_pgm() which caused the program to segfault + when a mask file size did not match the picture size. Now the program + correctly gives an error message and continues without the mask. (Kenneth + Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x10x08x150720 + * Added Tilt support to stepper track. ( Angel Carpintero ). + * CPU VIA Ezra C3 autodetection support added. (James Van Vleet) + http://www.lavrsen.dk/twiki/bin/view/Motion/VIAEzraC3Patch + * Fixed mysql configure auto-detection for x64 systems. ( Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x03x02x152208 + * Added the ffmpeg_deinterlace feature (Andrew Hamilton) + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionffmpegDeinterlace + +3.2.4 Formal Release. Summary of changes + +Features + * New text option text_event and new conversion specifier %C. Option + text_event defines the value %C which then can be used in filenames and + text_right/text_left. The text_event/%C uses the time stamp for the first + image detected in a new event. Default value is %Y%m%d%H%M%S. %C is an empty + string when no event is in progress (gap period expired). Pre_captured + and minimum_motion_frames images are time stamped before the event happens + so %C in text_left/right does not have any effect on those images. + * Added new option track_auto which is a boolean option (on or off) + with default value off. This enables people to start Motion with auto + tracking enabled. Changing the config value for track_auto and + enabling the auto tracking via the httpd track/auto has the exact same + effect. + * Added 3 new tracking options: track_step_angle_x, track_step_angle_y, + and track_move_wait. The options track_step_angle control the movement + during auto tracking and are currently only active for the pwc type + tracking. The idea is that they can later also be used for the generic + tracking as it evolves. The track_move_wait controls the number of frames + after the camera has moved (auto or manual) during which motion detection + is disabled. This option should be set so low that the motion detection + is re-enabled the minute the camera is standing still again. + * Added new sql_query option. This in combination with convertion + specifiers incl the two new %f and %n enables the user to use any database + structure they please. Adding fields is now a simple matter of modifying + the sql query. + * Added the %t conversion specifier which is the thread (camera) number. + * Added two new conversion specifiers: %f which is filename (full path) + and %n which is filetype (sqltype) valid in on_picture_save, on_movie_start, + on_movie_end and sql_query. This also means that filename is no longer + appended at the end of the 3 on_xxxx commands. + * http control had a number of small improvements. + * Added the debian sub directory so that people can build the deb package. + * Enhanced netcam compatibility with Lumenera and Pixord Cameras. + * Netcam feature now supports both http and ftp. + * Added an infinite retry scheme for netcams that are not available + when Motion is started. Instead of just dying, Motion now retries every + 10 seconds until the netcam is available. Until the netcam is available + Motion enters a mode showing a grey image with a text information which + is fed to webcam, timelapse, snapshots, vloopback etc. If the actual + height and width of the netcam does not match the dimensions in the + config file Motion will perform a quick restart. + * Added a better error handling of a netcam that changes dimensions + while Motion is running. Instead of just writing error messages Motion + restarts quickly to recover from this change. + * FreeBSD Code improvements including set/get hue, saturation, contrast + and brightness, support large resolutions. + * RPM specs file changed as suggested for use in the Livna repository. + * Changed the sequence of events connected with creating files. Data is + now written to the databases (if used) before an external comments is + on (on_xxxx options) allowing the external program to use the new data + in the database. + * Motion is now also works on MaxOSX with similar feature set as FreeBSD. + +Bugfixes + * netcam code now waits for the next frame to arrive for a limited period + in order to avoid too many duplicate images. + * Motion loop resets its frame timer when the image received is from a netcam. + This lowers the actual framerate of Motion to the rate the netcam can actually + keep up with. + * Removed all warnings when running ./configure --with-developer-flags. + * Fixed error message with unknown config option. + * Fixed small mistake in allocating memory for cnt->imgs.common_buffer. + * Implemented a speed-up patch of the draw text feature. + * Introduced check for device image size being a multiple of 16. + * Switchfilter feature repaired. + * Fixed small bug where motion was detected when using a tracking camera and + the camera moved to center position when gap period expires. + * Implemented fix to configure so that LDFLAGS from the environment are used + when making the Makefile. + * Changed configure so that --with-jpeg-mmx is default off as a reaction to + known problems seen when using the jpeg-mmx library. + * The lightswitch and switchfilter features have changed to ensure that both + algorithms work on raw unfiltered motion pixels which they both were designed + for. + * Fixed bug related to init of mutex in netcam code. + * Fixed small bug where the displayed time in the grey error image + shown during start with unavailable netcam could show a garbage value + under rare circumstances. + * Restored the function sigchild_handler so it contains the same code + as before motion-3.2.1_snap9. They is done in an attempt to fix an old + problem with zombie child processes that has shown up again. + * Added a work-around so people in FreeBSD that uses a capture card + where input 1 is not tuner can use motion if frequency is set -1 in + motion.conf or thread#.conf + + +3.2.4 Detailed changes for 3.2.4 +snap1 + * Removed all warnings originating from the motion sources when running + ./configure --with-developer-flags. + The modifications were done by the following people: Peter Holik, Bill Brack, + Angel Carpintero and Kenneth Lavrsen. + We now encourage developers to ensure that new code is checked with + --with-developer-flags and code made so that no new warnings shows originating + from the motion sources. + http://www.lavrsen.dk/twiki/bin/view/Motion/ReduceWarningsPatch + * Fixed error message with unknown config option (Bill Brack) + * Fixed small mistake in allocating memory for cnt->imgs.common_buffer + (Angel Carpintero). + * Implemented a speed-up patch of the draw text feature (Peter Holik). + http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextspeedup + * http control updated: (null) messages replaced by "disabled", last parameter + in conf/list are displayed correctly and only in Main thread. When motion runs + with only one thread, it displays "No threads". (Angel Carpintero) + * Enhanced compatibility with Lumenera (Bill Brack) + * http control: selectbox instead of a textfield for changing boolean configs + (Peter Holik and Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/WebhttpEnhancements. + * Introduced check for device image size being a multiple of 16 (Peter Holik). + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamModulo16Patch + * Added the debian sub directory so that people can build the deb package + (Angel Carpintero). + * Sync configure.in.freebsd (adding support for jpeg-mmx, developer-flags and + some cosmetic changes ) (Angel Carpintero) + * Implemented --with-developer-flags fixes in FreeBSD code (Angel Carpintero). + * Implemented Threadnr in TLS (thread-local storage)patch. It puts the thread + number into TLS and modifies motion_log() so that we do not have to drag the + cnt struct around just to be able to print the thread number in the log and + on the console. (Per Jönsson with additional removal of unused cnt by + Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadNrTlsPatch + * Moved the motion_loop initialization into a new function motion_init + (Bill Brack). + * Removed old unused code related to read mode (not mmap) from V4L devices + (Kenneth Lavrsen). + * In v4l_start change map from unsigned char * to void * to be ANSI C compliant + with mmap (Angel Carpintero) + * http control: Changed disabled to (not defined) when displaying option list + (Angel Carpintero) + * netcam code now waits for the next frame to arrive for a limited period + in order to avoid too many duplicate images (Bill Brack). + * Motion loop resets its frame timer when the image received is from a netcam. + This lowers the actual framerate of Motion to the rate the netcam can actually + keep up with. (Kenneth Lavrsen) + * Last --with-developer-flags warnings eliminated simply by swapping the + order of the #include statements in the sources (Bill Brack and Kenneth Lavrsen). + * FreeBSD Code improvements by Angel Carpintero + * Implemented set/get hue , saturation , contrast and brightness. + * Better support to capture with big resolution ( 640x480 , 768x576 ). + * Update Readme adding information about "how to configure a capture + card and settings" , update packages dependencies . + * Remove support for libjpeg-mmx , motion segfault ( future fix ). + * Cosmetics changes in configure.in.freebsd ( replace --without-v4l by + without-bktr ). + * Cleanup code and fix warnings. + +snap2 + * Simplified rotation code based on the fact that images must have dimensions + that are a multiple of 16 (Per Jönsson) + http://www.lavrsen.dk/twiki/bin/view/Motion/RotateSimplificationPatch + * Switchfilter feature repaired. It was called inside motion_detected() + after overlays on cnt->img.out were added which meant that the feature also + detected all the overlays, smartmasks, fixed mask and text. It is now moved + to the motion_loop right after the lightswitch feature and before any + overlays are added (Kenneth Lavrsen). + * Fixed small bug where motion was detected when using a tracking camera and + the camera moved to center position when gap period expires. The fix includes + gathering the updating of reference frame in one place only in the motion_loop + (Kenneth Lavrsen). + * Implemented the new text option text_event and new conversion specifier %C. + Option text_event defines the value %C which then can be used in filenames + and text_right/text_left. The text_event/%C uses the time stamp for the first + image detected in a new event. Default value is %Y%m%d%H%M%S. %C is an empty + string when no event is in progress (gap period expired). Pre_captured + and minimum_motion_frames images are time stamped before the event happens + so %C in text_left/right does not have any effect on those images (Kenneth + Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/EventConvertionSpecifierDiscussion + * Renamed some variables related to time to be better descriptive of function + and type (Kenneth Lavrsen). + * Added new option 'sql_user_text'. This can be defined with the same + conversion specifiers as text_xxx, on_xxxx and filenames. The SQL field + text_left has been removed and replaced by a field user_text which is + used for storing the interpreted value of sql_user_text (Kenneth Lavrsen) + * Added new SQL field event_time_stamp of the type TIMESTAMP + (Kenneth Lavrsen). + +snap3 + * Enhancement to Netcam Code for Connection to Pixord Cameras (Bill Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFixPixordBug + * Implemented fix to configure so that LDFLAGS from the environment are used + when making the Makefile (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x09x15x185558 + * Changed configure so that --with-jpeg-mmx is default off as a reaction to + known problems seen when using the jpeg-mmx library (Angel Carpintero). + * RPM specs file changed as suggested for use in the Livna repository. + (Kenneth Lavrsen) + * The lightswitch and switchfilter features have been moved up before the + despeckle features are run. This should ensure that both algorithms work on + raw unfiltered motion pixels which they both were designed for. (Kenneth + Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x10x05x212444 + +snap4 + * Integrated NetcamWithFtp patch. To use ftp simply use a URL starting with + ftp:// (Bill Brack). Code was additionally cleaned up by Kenneth Lavrsen. + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamWithFTP + * Changed error handling in vid_start so that failing to open the video + device no longer causes an exit but a return with error code -1. (Kenneth + Lavrsen) + * Added the %t conversion specifier to show the thread number. (Angel + Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadConversionSpecifierPatch + * Added help texts in conf.c and motion-dist.conf describing the %t + specifier. Added a good example of use in motion-dist.conf. (Kenneth + Lavrsen). + * Fixed bug related to init of mutex in netcam code (Angel Carpintero). + * Improved fix for netcam mutex init (Bill Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFixPthreadInit + * Netcam_ftp code fixes (Angel Carpintero and Asbjørn Pettersen) + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamWithFtpEnhancements + * Enhanced ffmpeg detection (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/BetterFFmpegDetection + * Added two new conversion specifiers: %f which is filename (full path) + and %n which is filetype (sqltype) valid in on_picture_save, on_movie_start, + on_movie_end and sql_query. This also means that filename is no longer + appended at the end of the 3 on_xxxx commands. (Kenneth Lavrsen) + * Removed the sql_user_text option that was added in snap 2 (Kenneth + Lavrsen) + * Added new sql_query option. This in combination with convertion + specifiers incl the two new %f and %n enables the user to use any database + structure they please. Added fields is now a simple matter of modifying + the sql query. The default is the same as the default in snap1. + (Kenneth Lavrsen). + * Changed the sequence of events connected with creating files. Data is + now written to the databases (if used) before an external comments is + on (on_xxxx options) allowing the external program to use the new data + in the database (Kenneth Lavrsen). + * Added an infinite retry scheme for netcams that are not available + when Motion is started. Instead of just dying, Motion now retries every + 10 seconds until the netcam is available. Until the netcam is available + Motion enters the normal flow with the same grey image with a text + information being fed to webcam, timelapse, snapshots, vloopback etc. + Motion uses the width and height from the config file for this. It is + a good idea to setup width and height so it is the same as the netcam. + If the dimensions are the same Motion will switch over to the netcam + seemlessly. If the dimensions are different Motion will perform a quick + restart so all the many internal buffers can be initialized properly + (Kenneth Lavrsen). + * Added a better error handling of a netcam that changes dimensions + while Motion is running. Instead of just writing error messages Motion + restarts quickly to recover from this change. Note the now more well + defined error coding for vid_next for both netcams and V4L cams. + (Kenneth Lavrsen) + +snap5 + * Fixed small bug where the displayed time in the grey error image + shown during start with unavailable netcam could show a garbage value + under rare circumstances. (Kenneth Lavrsen). + * Restored the function sigchild_handler so it contains the same code + as before motion-3.2.1_snap9. They is done in an attempt to fix an old + problem with zombie child processes that has shown up again. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x11x13x115016 + (Kenneth Lavrsen). + * Move the declaration of sig_handler_action and sigchild_action from + the setup_signals function where they are local and will be destroyed + and out in main just before setup_signals is called. Changed the + function setup_signals so the two structs are passed as pointers. + (Kenneth Lavrsen) + +Release + * Added new option track_auto which is a boolean option (on or off) + with default value off. This enable people to start Motion with auto + tracking enabled. Changing the config value for track_auto and + enabling the auto tracking via the httpd track/auto has the exact same + effect. (Kenneth Lavrsen) + * Added 3 new tracking options: track_step_angle_x, track_step_angle_y, + and track_move_wait. The options track_step_angle control the movement + during auto tracking and are currently only active for the pwc type + tracking. The idea is that they can later also be used for the generic + tracking as it evolves. The track_move_wait controls the number of frames + after the camera has moved (auto or manual) during which motion detection + is disabled. This option should be set so low that the motion detection + is re-enabled the minute the camera is standing still again. Feature + originally made by Moshe Van Der Sterre. Kenneth Lavrsen extended it to + be more generic. + http://www.lavrsen.dk/twiki/bin/view/Motion/PwcConfiguration + * New Feature: Motion is now also supported on MaxOSX with similar + feature set as for Free BSD. See README.MacOSX for details how to install + it. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/MacOSXPatch + * Added a work-around so people in FreeBSD that uses a capture card + where input 1 is not tuner can use motion if frequency is set -1 in + motion.conf or thread#.conf (Angel Carpintero). + + +3.2.3 Detailed changes for 3.2.3 + Bugfix release only. No new features. + * Fixed a bug in the http control code that failed to accept a client + connecting in some systems (Peter Holik). + * Fixed a series of bugs where several feature were using the image buffer + after text was added for noise tuning, auto_brightness, reference frame + update when tracking etc. When a netcam failed to produce an image the + text added to the previous image became motion detected also. The code is + not changed so that the ring buffer is used for timestamped images + and the image used for detection is in a buffer cnt->imgs.image_virgin. + (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x15x140701 + * Auto brightness used the first image in ring buffer instead of the + latest image and it used an image with time stamping. It now uses the new + cnt->imgs.image_virgin buffer. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x15x160208 + * Cleaned out unused code from httpd control (Angel Carpintero). + * Option switch_filter used print_int instead of print_bool when motion.conf + was saved (Kenneth Lavrsen). + + +3.2.2 Formal Release. Summary of changes + +Features + * New completely rewritten netcam code. + * Proxy servers are again supported by netcam feature + * New conversion specifier %o for threshold + * New convertion specifier %Q for number of labels + * Drawing of mask and smartmask in setup mode improved + * Compilation of motion on 64 bit machines improved + * RPMs can now be built by non-root user + * Improved the labelling algorithm so that locate feature and tracking features + includes all labelled areas above threshold + * Motion now supports the mjpeg webcam stream while saving PPM images. + * New improved webcam feature. When you set webcam_motion on Motion will now + stream at 1 fps instead of none. When motion is detected the webcam stream + increases to the limit set in the config file. This change makes the + webcam_motion much more interesting. The previous function always ended up + with clients timing out. + * Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg + can increase performance. Especially for machines with very little CPU power. + It only modifies the configure script. If you do not have the libjpeg-mmx + the configure script with ignore this and use the standard libjpeg. + Note that RPMS will be built without this + * Improved descriptions in motion.conf + * Many small code speed optimizations. + * Added new feature: Double size text. A new config option 'text_double' can + be set 'on' and this scales the text to double size. Default is off. + * Improved error handling of missing picture frames from camera. Especially + network cameras will often not be able to provide a picture frame from time + to time. Motion would retry before and eventually and rather quickly exit + the camera thread and maybe completely exit. The improved handling now + makes a copy of the previous frame for 30 seconds (longer if cpu_low is + activated because the implementation is 30 X framerate frames) and then + show a grey image with a message saying the connection is lost and an ISO + format time stamp of first poor connection. + * Added a configure option --with-developer-flags which enables many compiler + warnings that can be used by developers to make code more robust. Not + for normal users building Motion. + * Included a CODE_STANDARD text file to help new developers make patches + that are easier to integrate without too much manual editing. + +Bug Fixes + * Fixed a bug in the autobrightness algorithm + * Fixed bug reporting errors when creating symlink to last snap + * Improved code so that Motion no longer uses the tmpfile() function for + buffering the frames of the mjpeg stream. + * Implemented a fix/work around to a bug related to building and installing + RPMs on Suse. + * Improved signal handler + * Code commented much more. + * Many bugfixes to get Motion more stable (less segfaults) + * Code improved to remove all warnings when compiled with gcc 4.0 + * Better FreeBSD support + * Replace functions not threadsafe with threadsafe functions. + * Implemented a much easier to use motion_log function which replaces the + calls to printf and syslog. This code change as no impact to the user. + * Fixed a bug in video.c so that VIDEO_PALETTE_GREY cameras now actually work. + * Updated the ffmpeg.c code so that Motion can now be built with ffmpeg CVS + release from the June/July 2005 timeframe. + + + +3.2.2 Detailed changes for 3.2.2 +snap1 + * Pthread deadlock in motion 3.2.1 fixed (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x26x125712 + * http lockup bugfixes and ConvertSignalToSigaction only for webhttpd + (Angel Carpintero) + * alg_draw_location: Use temporary variables to store the values used in + for() loops instead of compute them in each loop (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/ImproveAlgDrawLocation + * Small speed boost to the function draw_textn (Andrew Hamilton and + Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextnImprovement + * Added two new convertion specifiers: %o for threshold and %Q for number + of labels. (Kenneth Lavrsen) + * Improved the config file description for pre_capture to get people to + use small values (Kenneth Lavrsen). + +snap2 + * Avoid Cleanup Segfault. Avoid Cleanup Segfault. Allocates filepath using + strdup to avoid segfault is target_dir parameter is not supplied in + motion.conf. Moves out from signal handler the cleanup for pipe and mpipe. + (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidCleanupSegfault + * Major code cleanup concerning signedness of chars all over the code to + allow compilation with gcc4.0 (like in Fedora Core 4) without any + errors or warnings. This will probably require that some of the not yet + included patches will have to be fixed because it it code all over the + place that has been changed. (Kenneth Lavrsen) + +snap3 + * Changed the order of drawing the red mask in setup mode so that the + smartmask is drawn after the fixed mask (Joerg Weber). + * Changed the configure script so that /usr/lib64 is also searched for + the presence of ffmpeg (should fix the problem with 64 bit machines) + (Kenneth Lavrsen). + * Changed the configure script so that rpms can be made by normal non-root + users (Angel Carpintero, Kenneth Lavrsen). + +snap4 + * Fixed the ffmpeg code so that Motion also compiles against libavcodec + build 4754 or later. (Per Jönsson) + * Above change in configure script for 64 bit ffmpeg support also implemented + in the freeBSD configure (Angel Carpintero) + * Webhttp control interface fixed so it also works in FreeBSD (Angel + Carpintero) + * Improved the display of fixed mask. It is now shown as grey instead of + red. This makes it easier to see the smart mask working when you also have + a fixed mask (Joerg Weber). + * Netcam First Header patch. If an error with jpeg decompression occurred at + connecting to a mjpeg streaming webcam, this patch skips this jpeg and tries + to decompress next jpeg up to MAX_HEADER_RETRIES (20) (Peter Holik). + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFirstHeader + +snap5 + * Small improvement in framerate accuracy (Peter Holik). + http://www.lavrsen.dk/twiki/bin/view/Motion/FramerateAdjust + * Fixed a bug in the autobrightness algorithm (Per Johnsson) + * Fixed a bug in the webhttpd code related to pan/tilt. Bug was introduced in + snap4 (Angel Carpintero, Kenneth Lavrsen). + * Improved the labelling algorithm so that locate feature and tracking features + includes all labelled areas above threshold (Joerg Weber). + http://www.lavrsen.dk/twiki/bin/view/Motion/ImprovedLabellingPatch + * Fixed bug reporting errors when creating symlink to last snap (Bill Maidment) + * Changed all use of localtime to localtime_r which is threadsafe + (Kenneth Lavrsen). + * Implemented a modified version of the WebcamCompressInMemory so that Motion + no longer uses the tmpfile() function for buffering the frames of the mjpeg + stream (Peter Holik). + http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamCompressInMemory + * Modified the WebcamCompressInMemory patch so that Motion now supports the + mjpeg webcam stream while being setup for saving PPM images (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamCompressInMemory + * Major clean-up of code in picture.c and webcam.c so that function names and + variable names are less confusing. Also added many comments in picture.c. + (Kenneth Lavrsen). + +snap6 + * Webcam code commented more (Kenneth Lavrsen) + * New improved webcam feature. When you set webcam_motion on Motion will now + stream at 1 fps instead of none. When motion is detected the webcam stream + increases to the limit set in the config file. This change makes the + webcam_motion much more interesting. The previous function always ended up + with clients timing out. (Kenneth Lavrsen). + +snap7 + * Implemented WebcamShortWriteHandling patch (Bill Brack) + http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamShortWriteHandlingPatch + * Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg + can increase performance. Especially for machines with very little CPU power. + It only modifies the configure script. If you do not have the libjpeg-mmx + the configure script with ignore this and use the standard libjpeg. + Note that RPMS will be built without this (Peter Holik and Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/LibJpegMmx + +snap8 + * Small code cleanup in webcam.c and picture.c and .h for the webcam code + (Peter Holik and Kenneth Lavrsen) + * Small code cleanup in motion.c for the variable holding the number of + microseconds since epoch. The old code worked fine but relied on an integer + overflow every 71 minutes. (Bill Brack and Kenneth Lavrsen) + * Implemented a fix/work around to a bug related to building and installing + RPMs on Suse. (Paul Beltrani) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x07x14x212356 + * Small speed optimization in the creation of reference frame (Peter Holik). + * Complete rewrite of the Netcam code. Should fix many of the reported and + still open netcam bugs. This is first release in a snapshot. Expect to find + bugs. Testing is important. If you have a netcam please test this and report + bugs. + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamCodeRewritePatch + +snap9 + * Fixed bug related to disabled webcam or duplicate webcam port. Error log + accept(): Socket operation on non-socket continuously written to syslog. + (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x01x150922 + * Fixed memory leak in webhttpd related to use of strdup (Angel Carpintero). + * Improved the error reporting in the Netcam code and did a few minor + corrections and code cleanups (Bill Brack). + * Implemented a much easier to use motion_log function which replaces the + calls to printf and syslog. The implementation to actually use this has been + implemented in video.c and the Netcam code files. Rest will be in next snap. + This code change as no impact to the user (Bill Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch + * Fixed a bug in video.c so that VIDEO_PALETTE_GREY cameras now actually work + (Bill Brack). + * Implemented the conversion of signal to sigaction which should be more + thread safe. Hopefully this still keeps Motion from making Zombies. + (Christophe Grenier). + http://www.lavrsen.dk/twiki/bin/view/Motion/ConvertSignalToSigaction + * Added new feature: Double size text. A new config option 'text_double' can + be set 'on' and this scales the text to double size. Default is off. + (Andrew Hamilton). + http://www.lavrsen.dk/twiki/bin/view/Motion/TextScalingPatch + +snap10 + * Error Logging Enhancement Patch v 1.3 (Angel Carpintero) including: + http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch + * Populate the motion_log to the whole motion source code. + * Fixed FreeBSD compilation. + * Added the possibility to pass NULL as struct context * + * Removed unused errno variables. + * Fixed errno in rotate.c , set to 0. + * Fixed some errno flags in webhttpd.c and motion.c + * Fixed a bug when not motion.conf is found + * Removed printf from all files + * Fixed the conf_list[] index in motion.c + * RotateBswapFix Patch v 2 (Per Jönsson) including: + * cleanup in code comments + * fix for __bswap_32 macro collision + * fixed bug where initialization would be incomplete for invalid degrees + of rotation + * now uses motion_log for error reporting + http://www.lavrsen.dk/twiki/bin/view/Motion/RotateBswapFix + * Re-mplementation of optional Proxy Server for Network Cameras (Bill Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamProxyServerPatch + * Included a CODE_STANDARD text file to help new developers make patches + that are easier to integrate without too much manual editing. (Kenneth + Lavrsen) + * Added the missing rotate feature in the new netcam code (Bill Brack) + +snap11 + * Updated the ffmpeg.c code so that Motion can now be built with ffmpeg CVS + release from the June/July 2005 timeframe (Per Jönsson). + http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegCodecPatch + * Improved error handling of missing picture frames from camera. Especially + network cameras will often not be able to provide a picture frame from time + to time. Motion would retry before and eventually and rather quickly exit + the camera thread and maybe completely exit. The improved handling now + makes a copy of the previous frame for 5 seconds (longer if cpu_low is + activated because the implementation is 5 X framerate frames) and then + show a grey image with a message saying the connection is lost and an ISO + format time stamp of first poor connection. (Kenneth Lavrsen). + * Implemented version 2 of the NetcamErrorImprovementPatch which should + work with the improved error handler. Changes include: + * Changes handling of non-streaming camera to include a separate thread. + * Changes the value returned from netcam_next to the motion main loop to + indicate the status of the image returned. + * Many changes to the comments, and some enhancement to the logic, to begin + the implementation of points agreed on the NetcamRetryErrorDiscussion page. + * Implements the triple-buffering scheme proposed by PeterHolik (but not the + "Without Locking" portion of his proposal). + Version 2 however does not seems to recover when an mjpeg stream resumes + after a period of not being available. (Bill Brack) + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamErrorImprovementPatch + * Note: Snap11 release as a developer sync release. Bug reports welcome. + FreeBSD code changes not tested yet. + +Release + * Netcam error handling improvements and cleanup from Valgrind analysis + (Bill Brack). + * Added a configure option --with-developer-flags which enables many compiler + warnings that can be used by developers to make code more robust. Not + for normal users building Motion (Bill Brack) + * http-control: Fixed segfault when motion is restarted from command line + ( kill -s 1 pid_motion ). Improved control code so Motion can Restart and + Finish 'smoothly'. (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl + * Changed the 5 second missed camera signal timeout to 30 seconds. (Kenneth + Lavrsen) + * Fixed bug where an extra jpeg is saved if you have output_normal=best + and you stop motion after an event has ended. (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x05x173526 + + + +3.2.1 Detailed changes for 3.2.1 since 3.1.19_snap3 +snap1 + * Major new feature. XMLRPC is replaced by a simpler http remote control + interface (implemented by Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl + +snap2 + * Fixed netcam->userpass problem (Angel Carpintero) + * Added support in configure for athlon64 from + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x190907 + (Angel Carpintero and William M Brack) + * Fixed some gcc warnings (William M Brack) + * Code cleanup from a valgrind analysis (William M. Brack). + +snap3 + * Added Best Preview Patch (Joerg Weber) + http://www.lavrsen.dk/twiki/bin/view/Motion/BestPreviewShot + +snap4 + * Fix for tracking control with http control (Angel Carpintero) + * Added the new feature Setup Mode (Joerg Weber). This also enables + much more error messages given to the console when in non-daemon mode + while still preserving the messages in syslog which are important + for daemon mode debugging. + The patch is still being worked on and is not finished. + Changes in the FreeBSD code are not yet tested. + http://www.lavrsen.dk/twiki/bin/view/Motion/SetupModePatch + Remove most command line options and replace them by an option to specify + location to motion.conf and a few options related to setting up motion. + (Joerg Weber). This is also included in SetupModePatch. + * Small improvement of the http control interface (link to setting itself + on the html response when setting parameter) (Kenneth Lavrsen) + +snap5 + * Fixed a bug in noise tune which was most visible at very low light. + (Joerg Weber and Kenneth Lavrsen) + * Further improvement in the setup mode. Messages are now prefixed by + the thread number in [brackets]. Moved 2 functions from motion.c to + picture.c. The setup mode patch is now considered finished. (Joerg Weber) + +snap6 + * Netcam fixes and debug code by Christopher Price + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch + snap5_post1_video.c and snap5-post1 patches + * Fixed netcam startup race condition. + * Refactored image handling back to single unified function + * Refactored reconnection algorithm + * Jpeg only based connections should now use less cpu time + * Temporarily removed support for devices that do not support content-length + (in progress) + * Synced syslog/printf style to new motion standard + * Added developer debug trace defines/code + * Defines now used for many constants + +snap7 + * Improved console output in setup mode. Now also outputs threshold. + (Joerg Weber) + * Added some additional text to the motion http messages to the terminal + so that you know where the messages come from. (Kenneth Lavrsen) + Netcam Stability Patch version snap6-post1 (Christopher Price) + * Added support for netcams without content-length header (streaming only) + * Remove memmem from netcam_wget.[c|h] (no longer used) + * Several miscellaneous code cosmetic changes + * TODO: remove tests for memmem from configure + +snap8 + * Added support for non-streaming (image based) netcams without content-length + header. (3.2.1-snap7-post1 version of the Netcam Stability Patch by Christopher + Price). + * Improvement in the noise-tune algorithm (Joerg Weber) + * Re-arranged many of the const char declarations so that they are always + before any statements within a block { }. This is to avoid compiler errors + with older but still used gcc versions such as 2.95. (Kenneth Lavrsen) + * Changed the use of %zd to %llu in printf statements of size_t types. + This is done to avoid compiler errors with older but still used gcc versions + such as 2.95. (Kenneth Lavrsen) + +snap9 + * Fixed even more gcc 2.95 compiler errors (declarations not at beginning + of block) (Kenneth Lavrsen). + * Removed a gcc 2.95 compiler warning (netcam.c:1036: warning: variable `pic' + might be clobbered by `longjmp' or `vfork') (Kenneth Lavrsen) + * The values for cnt->locate and cnt->new_img are now #defines in motion.h + to enhance code readability (Kenneth Lavrsen). + * The setting of sql_mask is now only done once per second to save CPU power + (Kenneth Lavrsen) + * Adding checking for conflict between control port and webcam port. Webcam + port for a thread is disabled if it is set to the same value as the control + port (Kenneth Lavrsen). + * Fixed some file descriptor leaks in webcam.c and netcam.c (Christophe + Grenier) + * Added "motion-http:" prefix to error messages from the http control thread. + (Kenneth Lavrsen) + * Added additional error information when connection to MySQL fails (Kenneth + Lavrsen) + * Initiate cnt->event_nr to 1 to avoid code related to end of events and long + mpeg films to be run during startup of Motion. (Kenneth Lavrsen) + * Added new function in event.c close_anything_open() which is called from + send_sms, send_mail and exec_command in order to prevent file descriptor and + open sockets to be inherited by the shell causing freezing and instability. + Code contributed by Christophe Grenier, Christopher Price and Kenneth Lavrsen. + * Added new context global cnt_list.control_socket_server set by the httpd + thread so that the above mentioned close_anything_open() can close open + control sockets (Kenneth Lavrsen). + * Renamed the top level global context structure to cnt_list so it can be + reached from child threads and by above mentioned close_anything_open() + (Christophe Grenier). + +snap10 + * Fixed a problem when compiling with --without-v4l configuration. + (Philip Marien) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x27x112843 + * Threw away the file descriptor leak fix from snap 9 because it caused + more trouble than it fixed. Removed the close_anything_open() and the + cnt_list.control_socket_server field. Replaced it all with a simple + piece of code that all server daemons call when started: setsid() followed + by for (i=getdtablesize(); i>2; --i) close(i). Dirty and simple. + (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x21x070534 + * Fixed a bug where rate of fetching picture frames was disturned by + the signal SIG_CHLD from exec_command programs terminating. The symptom + was that the number of post_capture frames became inaccurate and motion + in mpegs did not have constant time between frames. (Kenneth Lavrsen) + * Fixed a bug where motion did not work with gap=1 (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x073616 + * Added the feature gap=0 which now also works. It disables gap completely + so that one single mpeg file is created. You can end the event from the + remote control interface make movie feature using for example cron. + This makes Motion close the mpeg and make a new with event number increased + by one. (Kenneth Lavrsen) + * Improved the http remote control action features so that makemovie + and snapshot for thread 0 (all) works on all threads instead of being + ignored (Kenneth Lavrsen). + * Moved some code in the beginning of the motion_loop to a position later + to improve the accuracy of time calculations for the framerate (Kenneth + Lavrsen) + * Updated code so Motion again runs on FreeBSD (Angel Carpintero). + * Removed check for memmem from configure (Angel Carpintero). + * Updated http control interface so that an additional check is done + before saving config files (Angel Carpintero). + * Fixed a problem with URLs http://192.168.1.3:8080/0 which did not + work without a trailing space (Angel Carpintero). + +snap11 + * Implemented new Generic onxxxx features. + Function --- Old Option --- New Option + Start of event (first motion) --- execute --- on_event_start + End of event (no motion for gap seconds) --- New! --- on_event_end + Picture saved (jpg or ppm) --- onsave --- on_picture_save + Movie starts (mpeg file opened) --- onmpeg --- on_movie_start + Movie ends (mpeg file closed) --- onffmpegclose --- on_movie_end + Motion detected --- New! --- on_motion_detected + http://www.lavrsen.dk/twiki/bin/view/Motion/OnXxxCommandsPatch and + http://www.lavrsen.dk/twiki/bin/view/Motion/OnXxxxFeatureDiscussion + (Joerg Weber) + * More Netcam Stability Fixes (snap10-post1-6) (Christopher Price) + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch + * Destroy mutexes in netcam_cleanup(). + * Add reconnection for netcam_start() - this may block other cameras + from starting up!. + * Added additional defines for reconnect retries. + * Change reconnection timeouts to 60 seconds. + * Reworked close(sock) in netcam_connect, to insure future changes + won't forget to close the socket. + * Reworked reconnection for netcam_start() - disabled by default, see + source for INIT_RECONNECT_RETRIES. + * Break some long lines in code. + * Replaced sleep with nanosleep per suggestion by Kenneth Lavrsen. + * Added additional header validation check. + * Changed a couple fd references to use RBUF_FD. + * Added error message if jpeglib error occurs. + * Removed additional header validation check. + * Limited times headers will be checked. + * Removed mutex lock around netcam_start() in video.c, hopefully race + conditions are fixed. + * Added additional headers in http request. + * Added back header validation (should fix netcam_read_header lockups). + * Detect when there is no data on socket in netcam_read_ functions + (should fix netcam_read_image_contentlength() and + netcam_read_image_no_contentlength() lockups). + * Rearranged timeout assignments for pthread_cond_timedwait() calls. + * Adjusted TIMEOUT_COND_WHICH to 4 seconds. + * Improvements of motion.conf help comments including improvements in new + onxxxx options. (Kenneth Lavrsen) + +snap12 + * Fixed a bug in the rgb2yuv420p function. (Daniel Ladd) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x30x011107 + * Fixed a bug of locate feature for movement images combined with the + new output_normal best feature (Joerg Weber) + * More Netcam Stability Fixes (snap11-post1-4) (Christopher Price) + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch + * Reworked thread signal/wait conditions, should fix some race conditions. + * Use gettimeofday() to determine thread timeouts, results in better accuracy. + * Adjusted condition timeouts to smaller values due to usage of gettimeofday() + and rework of thread signal/wait conditions. + * Adjusted reconnection retries to 60 (every minute for an hour). + * Fix bug where motion will not quit if requested when reconnecting. + * Cruft, feature creep and redundant code removed. + * Consolidated reconnection capability to unified netcam_reconnect function. + * Rework netcam_start logic, minimize startup variables. + * Rework netcam_stream_read and netcam_single_read logic. + * Minor changes to netcam_next logic. + * Fix bug in streaming camera without content-length, recent mod broke. + * Fix bug in startup of single image reads without content-length. + * Motion Guide refactored completely for 3.2.1 with better web navigation and + auto generation of pages. Makefile updated so that the Motion TWiki topic + MotionGuideOneLargeDocument is fetched when updating the guide and making + releases. (Kenneth Lavrsen). + +snap13 + * Removed the debug_parameter option which had no use. Programmers can still + use it because the code is only commented out. This change required a small + update in the code that rewrites motion.conf so that a remote control command + to write the config files still adds a text header for the thread section at + the end of motion.conf (Kenneth Lavrsen). + * Changed the default values for a few options: quiet on, webcam_maxrate 1, + threshold_tune off, webcam_quality 50 (Kenneth Lavrsen). + * Changed some cosmetics in the way motion.conf is written (space after #) + (Kenneth Lavrsen). + * Updated the motion-dist.conf to use default values unless there is a reason + not to (Kenneth Lavrsen). + * Fix the compile issue with official ffmpeg packages from debian (Angel + Carpintero). + * More Netcam Stability Fixes (snap12-post1) (Christopher Price) + * Newrote url parser, better syntax checking and error handling of urls. + * Userpass now allowed in url (http://user:pass@example.com/). + Netcam_userpass has precedence, it will override a userpass embedded in + the url. + http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch + +snap14 + * Added basic authentication to the http control interface introducing new + config option control_authentication. (Angel Carpintero) + * Fixed memory leak when restarting Motion from http control (Angel + Carpintero). + * Small improvement in configure script for Debian (Angel Carpintero) + * Added the ability to clear an option to off (bool), 0 (int) or undefined + (string) by submitting blank entry field in the http control interface. + (Angel Carpintero). + +snap15 + * Added new feature which shows the fixed mask (in addition to the smart mask) + in bright red on the Motion type images (Joerg Weber). + http://www.lavrsen.dk/twiki/bin/view/Motion/FixedMaskFileOnMotionImagesPatch + * Added new feature. When you specify a mask file in the config file and start + Motion, and the mask file does not exist, Motion will create a new clear + (white) mask file for you in the right size. Then it is easy to simply + open the file in your favourite paint program and add the masking in black + (Joerg Weber). + http://www.lavrsen.dk/twiki/bin/view/Motion/FixedMaskFileOnMotionImagesPatch + * Fixed a bug in the low_cpu feature where cpu load increased instead of + decreasing because the framerate calculations were completely wrong. This was + an old bug introduced in 3.0.1 (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x04x24x205933 + * Improved the auto-brightness algorithm. When auto-brightness is enabled + the brightness option becomes a target value for the brightness level. + This should also close a bug report (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x26x195358 + * http interface small fixes (motion-3.2.1_snap14-small-fixes 1.1) incl + Add 'back' link to response_client errors (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl + * Started adding tuner_number as option. This is not fully implemented. First + code is added and rest will be done in next snap. (Kenneth Lavrsen) + +snap16 + * Made the http control interface more RFC compliant (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x180550 + * Made the http control HTML responses nicer to look at as sources and + therefore easier to debug errors (Kenneth Lavrsen). + * Code style cleanup of webhttpd.c (Kenneth Lavrsen). + * Fixed compatibility problem with Palantir. Fixed by making output more + compatible with RFC (\r\n). Original fixes by Roberto Spadim and Angel + Carpintero. However this fix made Firefox flicker even more than it normally + does. Final fix which works in both Palantir client, Firefox and Cambozola + was made by Kenneth Lavrsen. This closes the following bugs: + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x205307, + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x07x042849 + +snap17 + * Fixed small bug when pre_capture buffer is resized during operation. + (Joerg Weber). + * In httpd control code: Fixed RAW syntax following API specs. (Angel + Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl + * Added new conversion specifiers: %D (diffs), (noise) %K (motion center x), + %L (motion center y), %i (locate width x) and %J (locate width y). These + changes also required a refactoring of the alg_locate code. This change + is part of the implementation of a generic tracking feature and it enables + implementing external programs that can perform simple prediction features. + (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/ExtendReplaceConversionSpecifiersDiscussion + http://www.lavrsen.dk/twiki/bin/view/Motion/GenericTrackingPatch + * Fixed a bug in switchfilter which caused motion detection to not work + when the feature was enabled (Kenneth Lavrsen). + +Release + * Change the working directory to / in daemon mode. This way you don't have + to kill motion to umount the partition from where you start it. (Christophe + Grenier) + http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch + * In netcam-wget header_get() didn't always in add a \0 string terminator. + This was fixed by Christophe Grenier + http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch + * Fix for Unknown content type with lumenera cameras (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x06x174416 + * MotionHttpControl Patch motion-3.2.1_snap18-pre1 v,1.0 19 May 2005. + Fixed some HTTP response codes and added header copyrights. (Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl + * Implemented pthread fix by Christophe Grenier. + http://www.lavrsen.dk/twiki/bin/view/Motion/PthreadFixPatch + * Fixed problem compiling "ffmpeg reports only YUV420 is supported" when + ffmpeg is a recent CVS version. (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x22x213229 + * Man page updated. It is now semi-autogenerated in the Motion TWiki + (Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionOptionsAlphabeticalManpage + * Bug fix in netcam code: Sometimes motion try to free an invalid memory area + (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x21x105335 + * Small configure fix related to --without-v4l (Angel Carpintero) + * Fixes for http control HTML code (Angel Carpintero) + * Added init script to RPM (Angel Carpintero) + + +3.1.19 Detailed changes for 3.1.19 snapshot releases since 3.1.18 +snap1 + * Fixed bug which caused Motion 3.1.18 fail to save timelapse mpegs when + setting ffmpeg_timelapse = 1 (fixed by Michael Reuschling) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x31x211756 + * Fixed several bugs in new netcam code introduced in 3.1.18 + (Angel Carpintero) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x16x030209 + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x01x071546 + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x03x035918 + * Added patch that enables Motion to work with vloopback version 0.94 + and kernel 2.6.10+. (patch by William M Brack). + http://www.lavrsen.dk/twiki/bin/view/Motion/MotionAndVloopbackVideoDotCPatch + +snap2 + * Following bugfixes all by Angel Carpintero + * Netcam code: Change printf() to fprintf(). + * Netcam code: Cleanup memory netcam (netcam.c , motion.c ). + * Netcam code: Redesign of reconnection feature. + * Configure: Added debug , conditional compile of xmlrpc-c + * Fix a non allocated pointer to be freed. + * Added fix to BugReport2005x02x11x170019 + * Added fix to BugReport2005x02x11x150802 + +snap3 + * Bugfixes by Angel Carpintero + * fix motion.spec, motion.spec.in + * typo in configure.in , configure.in.freebsd + * fix version number + + +3.1.18 Formal Release - Summary of changes since 3.1.17. + * Removed the Berkeley mpeg feature + * New brightness, contrast, hue and saturation options. + * Makefile with automatic check of dependencies and nicer user output. + * Improvement of the rotate feature. + * Added the new smart mask feature. + * Added a new config option --without-optimizecpu which disables CPU + specific compiler optimizations. + * Configure help texts improved. + * Added the pwc-10.0.5 version of pwc-ioctl.h. Also good for pwc 10.0.6. + * Changing rotate, height and width via xmlrpc no longer affects the + running program. This change is done because many internal data structures + and memory allocations cannot handle change of image dimensions/size. + * Enabled use of leading spaces when changing text_left and text_right via + xmlrpc by using quotation marks if the value starts with a leading space. + * Speed optimizations for dilate and labelling code. + * Significant speed improvement in the motion detection algorithm. + * Motion images are now gray scale instead of green. Smartmask is shown + in red. + * Implemented FreeBSD auto-detection CPU/ARCH fix. + * Removed the never finished prediction feature. + * Implemented a major improvement of noise_tune. + * Implemented ffmpeg-0.4.9 support. + * Default for option 'ffmpeg_video_codec' is now mpeg4. mpeg1 is now only + supported with the old ffmpeg-0.4.8. + * Option 'output_normal' value set to 'first' makes Motion only save a + jpeg from the first motion detected picture frame in an event. + * Implemented Streaming Netcam Without Curl which enables connecting to + network cameras both with single jpeg frame mode and streaming mjpeg + mode. This enables much higher framerates with Netcams. + * Corrected a small error in the usage help text + * Improved the help and doc texts for config option night_compensate. + * Improved the signal handling of ctrl-C and kill. + * Implemented a POSIX compliant SIGCHLD signal handler to avoid floods of + warnings and script zombies in some RedHat versions. + * Reporting of the changes of noise detection level is now only displayed + in the console (daemon off) when the always_changes option is enabled. + * Made the code in xmlrpc more correct and robust (handling of select()). + * Fixed several bugs in the timelapse feature. + + +Detailed changes for all 3.1.18 snapshot releases since 3.1.17 +snap1 + * Removed the Berkeley mpeg feature (code commented out) + * Implemented a bugfixed version of + http://www.lavrsen.dk/twiki/bin/view/Motion/BrightnessContrastPatch + Released as snapshot for developers to merge other patches. + The snap1 is not recommended for normal use. + +snap2 + * Improved the Makefile with automatic check of dependencies and + nicer output for the user. + http://www.lavrsen.dk/twiki/bin/view/Motion/MakefileWithAutoDependencies + * Implemented first phase of the rotate patch. Need to fix the storage + method for image height and width + http://www.lavrsen.dk/twiki/bin/view/Motion/RotatePatch + +snap3 + * Implemented phase 2 of the rotate patch + * Added brightness patch options to motion-dist.conf + +snap4 + * Added the new smart mask feature. It is working but it is still under + development. It currently outputs an extra smart mask timelapse movie + when the normal timelapse is enabled. This will be removed in the final + version. http://www.lavrsen.dk/twiki/bin/view/Motion/PatchSmartMask + * Added a new config option --without-optimizecpu which disables the + CPU specific compiler optimizations introduced with the rotate phase 2 + patch. The purpose of the new option is to enable a packager to build + an RPM or deb package which is not tied to a specific CPU type. + * Man page updated with the new brightness and smart mask options. + * Configure help texts improved. + * Added the pwc-10.0.5 version of pwc-ioctl.h. + * Changing rotate, height and width via xmlrpc no longer affects the + running program. The user can change the options and write them to the + config files and then restart motion. This change is done because many + internal data structures and memory allocations cannot handle change + of image dimensions/size. + * Fixed the problem with leading spaces of text_left and text_right + getting lost when saving with xmlrpc. For text_left and text_right + Motion now puts the string in quotation marks if the value starts with + a leading space. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x24x135840 + +snap5 + * Implemented the November 10 update for smartmask + * Started resolving some of the signed vs unsigned char problems. There + is still much to do here. snap5 is released to make the developers up2date. + +snap6 + * Merged in the DilateNineSpeedPatch + http://www.lavrsen.dk/twiki/bin/view/Motion/DilateNineSpeedPatch + * Changed a few image char definitions to unsigned char. Still many to fix. + +snap7 + * Implemented the 15-Nov-2004 Smartmask patch which removed the smartmask + debugging timelapse code and instead adds the smartmask info to the + motion images and jpegs as red areas. Normal motion is shown in black + and white (greytones). This concludes Joerg Webers smartmask feature. + The patch is now in ReleasedScheduled state for 3.1.18. + * Implemented Angel Carpintero's FreeBSD auto-detection CPU/ARCH fix. + * Merged in Per Johnsson's DilateFiveSpeedPatch + http://www.lavrsen.dk/twiki/bin/view/Motion/DilateFiveSpeedPatch + * Removed the prediction feature from the code (commented out for now). + * Included fix by Jan X. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x11x13x202132 + +snap8 + * Implemented an improvement of Smartmask so that the mask is cleared when + the smart_mask_speed is set from a non-zero to zero (by Joerg Weber) + * Implemented an improvement of noise_tune with smart mask (and probably + also in general) (by Joerg Weber) + * Improved the picture control function so that cameras are only probed + when needed to avoid USB errors. (Kenneth Lavrsen) + * Implemented new ffmpeg patch (Per Jönsson) + http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegPatch049 + * Implemented new preview patch (Joerg Weber) + http://www.lavrsen.dk/twiki/bin/view/Motion/PreviewShotsPatch + * Removed commented code from obsolete Berkeley and Prediction features + * Implemented labelling speed patch (Per Jönsson) + http://www.lavrsen.dk/twiki/bin/view/Motion/LabelingSpeedPatch + +snap9 + * Implemented Streaming Netcam Without Curl which enables connecting to + network cameras both with single jpeg frame mode and streaming mjpeg + mode. This enables much higher framerates with Netcams. (by Christopher + Price and Angel Carpintero). + http://www.lavrsen.dk/twiki/bin/view/Motion/StreamingNetcamWithoutCurl + * Implemented a significant speed improvement in the motion detection + algorithm (by Per Jönsson). + http://www.lavrsen.dk/twiki/bin/view/Motion/AlgDiffStandardMmxPatch + * Fixed a small bug which caused in jumpy mpeg1 videos with ffmpeg 0.4.8. + +snap10 + * Corrected a small error in the usage help text + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x05x174139 + * Improved the help text for config option night_compensate in docs, + conf.c, motion man pages and config file. + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x103939 + * Improved the Netcam patch (Angel Carpintero) + http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/ + (pre2 patch fixes problem with not detecting Content-length and segfaults + in netcam) + * Improved the signal handling of ctrl-C as suggested by Per Jonsson + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x181426 + * Implemented a POSIX compliant SIGCHLD signal handler as replacement for + the traditional signal(SIGCHLD, SIG_IGN) which can cause floods of + warnings in some RedHat versions. (Angel Carpintero and Kenneth Lavrsen) + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x26x134906 + * Changed the reporting of the changes of noise detection level so that + it is only displayed in the console (daemon off) when the always_changes + option is enabled. (Kenneth Lavrsen) + * Changed the ffmpeg>0.4.8 = no mpeg1 gcc warning message so that it is + clear to people that it is information and not an error message. + +snap11 + * Changed allocation of despeckle buffer to avoid a segfault when using + a netcam where the image is wider than defined in motion.conf width. + * The noise tune value displayed in the upper left corner along with + number of changed pixels is no longer displayed (was there for debugging). + * Improved the Netcam patch (Angel Carpintero) + http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/ + (pre3 reconnection feature added) + * Changed the SIGCHLD handler introduced in snap10 so that it is a shorter + and faster function. Disabled this handler in the xmlrpc thread as this + caused unnecessary loops of cpu cycles. Additionally made the code in + xmlrpc more correct and robust (handling of select()) (Kenneth Lavrsen) + * Fixed a bug in the timelapse feature. Both the rollover events of the + timelapse video and timelapse shots could be missed if the CPU load was + very high or the time was changes by ntp. Motion will now catch up a few + seconds later if this happens. Also fixed the code for monthly rollover + (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x23x133554 + +Release + * Fixed a bug in the timelapse feature. Both the rollover events of the + timelapse video and timelapse shots could be missed if the CPU load was + very high or the time was changes by ntp. Motion will now catch up a few + seconds later if this happens. Also fixed the code for monthly rollover + (Kenneth Lavrsen). + http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x23x133554 + * Small improvement in timelapse feature so that an image is added when + the new mpeg is created and not waiting till the following timelapse + (Kenneth Lavrsen). + * Small improvement so that the timelapse rollover happens on the hour + and not one timelapse past the hour (Kenneth Lavrsen). + +3.1.17 Bugfix release +snap1 + * Removed annoying debug syslog message (input: #) + * Implemented Peter Ilin's patch for handling vloopback pipes better + when Motion receives SIGTERM or SIGHUB. + * Implemented fix for compiling errors when building the FreeBSD version + without bktr support. + (http://www.lavrsen.dk/twiki/bin/view/Motion/FreeBSDFixCompile) + * Commented out many unnecessary syslog debug only messages. The commented + out code was first patched by Mike Lees patch related to syslog causing + instability and hanging motion processes. + (http://www.lavrsen.dk/twiki/bin/view/Motion/SyslogEventPatch). + * Included Kalle Andersson's patch that ensures that Motion detaches from + the stdin and stout devices so that a secure shell that was used to start + Motion in daemon mode does not hang when you exit the shell. + (http://www.lavrsen.dk/twiki/bin/view/Motion/DaemonDetachFromSTDIO) + +snap2 + * Implemented a new lightswitch feature so that is now triggers lightswitch + detected based on the percentage of pixels set by the lightswitch option which + is now an integer instead of a boolean. When lightswitch is detected motion + skips 5 frames to allow camera to settle. + * Fixed a bug in the autobrightness function. + * Fixed a bug in netcam_start() - wrong imgs.size calculation + +Release + * Swapped width and height parameters in some functions. This has no influence + on program execution. Just a cosmetic change. + + +3.1.16 Bugfix release +snap1 + * Fixed a configure error related to xmlrpc. + * Fixed a bug in the SQL code related to file type. + +Release + * Fixed a segfault problem in alg.c related to the locate feature. + * Made motion more robust to whitespace in its config files. It now + accepts CR LF (DOS/Windows) and whitespace only lines no longer + gives warning messages in syslog. Also cleaned up the conf.c + function structure a little bit. + + +3.1.15 Summary of changes from 3.1.14 to 3.1.15. +New features: + * ffmpeg now supports mpeg4 and msmpeg4 in addition to mpeg1. Timelapse + mpegs are always made with mpeg1 because this allows appending to + existing mpeg when motion or timelapse is restarted. This also meant + a change of the configure option --with-libavcodec to --with-ffmpeg + which now needs to point to the parent directory that holds libraries. + * configure has been significantly improved so that most people can + simply run ./configure, make and make install with no parameters and + all libraries should be detected automatically if they are installed + like in most distributions. + * rotation feature added which allows the camera to be mounted upside + down or in portrait. + * SQL (Postgres and MySQL) table format has been changed. The time + related fields such as minute, hour, day, month and year has been + replaced by a timestamp field called 'time_stamp'. Additionally a + field called 'frame' has been added so that each file can be correctly + sorted based on time_stamp and frame (picture frame number within one + second). An additional field called 'text_left' stores the displayed + text given by config option 'text_left'. And a field 'camera' has been + added which stores the thread number. + * The %v (event) prefix has been removed from the default filename + for timelapse mpegs. It makes little sense to have the current event + number as part of the timelapse filename as default. + * A new feature called 'labeling' was added which is a great enhancement + to the motion detection algorithm. It ensures that only the largest + area of movement is included in the detection and it prevents noise + and wind from making false detection. It should also make tracking + work better. + * Angel Carpintero ported motion and it's main features to freeBSD. + The freeBSD is still very much beta and because of limited access to + hardware we need more people to test the various features. + * Motion is now also released as an RPM with both mysql, postgres, + libcurl and ffmpeg support. + +Bugfixes: + * Fixed the problem with default strings being written to thread + config files when using the XMLRPC command motion.conf.write. + * Implemented improvement of vid_putpipe so that Motion does not spend + time writing to a vloopback device which is not there. + * Introduced reporting to syslog of writing to vloopback fails. + * Memory clean-up improvements when Motion exits normally. + * Fixed a small bug related to the filename given for onffmpegclose. + * Provided more improvements of error handling. + * Added additional error reporting to console. + +3.1.15 Snapshot releases +snap1 + * Fixed the problem with default strings being written to thread + config files when using the XMLRPC command motion.conf.write. + +snap2 + * Implemented Ryan Ayers improvement of vid_putpipe so that Motion + does not spend time writing to a vloopback device which is not there. + Also introduced reporting to syslog of writing to vloopback fails. + * Ryan Ayers improved configure's ability to find custom installations + of ffmpeg. + * Ryan Ayers provided misc. cosmetic changes in the code. + * Ryan Ayers rewrote the ffmpeg functions completely added support for + new codecs/formats mpeg4 and msmpeg4. mpeg1 was improved also. + +snap3 + * Implemented Ryan Ayers simplified ffmpeg patch where 10 ffmpeg + functions are reduced to 5. The memory leak related to an unused + filehandle has been resolved. + * Kenneth Lavrsen solved the timelapse related .mpeg.mpeg filename + error. + * Kenneth Lavrsen removed the memory leak in ffmpeg.c related to the + use of strdup without a free. + +snap4 + * Implemented Ryan Ayers snap3 based ffmpeg patch that cleans up the + code significantly, forces timelapse. The list of improvements: + * Forces timelapse to mpeg1 for the time being. + * Removes FILE* f declaration in ffmpeg.h since we no longer need it. + * Removes all picture_buf references. This was carried over from + output_example.c in ffmpeg-0.4.8. However, we don't need it. + That is allocating space for picture->data, but motion already + takes care of this for us with the newimg variable. + * Removed some old commented code ... tmpfilename, picture_buf stuff. + * Included Angel Carpintero's memory clean-up improvements when Motion + exits normally. + +snap5 + * Added Per Jönsson's rotate feature. When set to non-zero some extra + CPU time is used for the rotation. + * Kenneth Lavrsen changed the ffmpeg code so that mpeg1 files are + created using the libavcodec method and mpeg4 and msmpeg4 are created + using the new libavframe method in ffmpeg. + * Kenneth Lavrsen added seconds and frame fields to the database feature. + This means that users must add these two fields to the table "security" + in existing databases when upgrading to 3.1.15. + * Kenneth Lavrsen removed the %v (event) prefix from the default filename + for timelapse mpegs. It makes little sense to have the current event + number as part of the timelapse filename as default. + +snap6 + * Kenneth Lavrsen fixed a small bug related to the filename given for + onffmpegclose. + * Joerg Webers added the new labeling motion detection feature. + * Angel Carpintero provided more improvements of error handling. + +snap7 + * Kenneth Lavrsen changed the configure option --with-libavcodec to + * --with-ffmpeg and updated Guide and man pages and text in code and + config file to match the new shared library way of using ffmpeg + * Angel Carpintero ported motion and it's main features to freeBSD. + The freeBSD is still very much beta and because of limited access to + hardware we need more people to test the various features. + * Angel Carpintero created an updated specs file that enables Kenneth + to build RPMs of Motion. + +snap8 + * Kenneth Lavrsen added the new fields to the SQL security table + camera (thread number), text (text_left) and time (timestamp). + * Angel Carpintero improved error handling for the webcam functions. + +Release + * Kenneth Lavrsen simplified the sql functions (1 instead of 3) + and ensured that the text field is not assigned when text_left is + an empty string. This allows for the field to be auto defaulted. + * Added additional error reporting to console. + + + +3.1.14 2004 May 31 + * Included Ian McConnell's fix for snapshots when using the + "lastsnap" filename. + * Fixed the bug in advanced filename and text feature when event + numbers go higher than 99. + * Included Angel Carpintero's improvement of configure reporting of + missing shared libraries (Kenneth Lavrsen improved it a little + further). + * Included Ian McConnell's timelapse close mpeg file when set to zero + patch. + * Changed motion-control to make a proper output from motion.conf.list. + * Renamed ffmpeg_timelaps to ffmpeg_timelapse (we change now or never) + * Corrected man page (\n). + * Added setting access rights to 644 (755 for configure) when doing + make dist. + * Small improvement on xmlrpc-api.html document. + * Included Angel Carpintero's fix for building motion without ffmpeg + (missing #ifdef round newly added ffmpeg timelapse code) + * Fixed missing init of viddev.frequency causing VIDIOCGCHAN errors. + * Included Angel Carpintero's snap2 based patch for improving configure. + XML-RPC changes of threshold and noise_level are now being used as + long as threshold_tune and noise_level are not enabled. + * Enabled the round robin feature to also work by changing frequency on + the same device and same input. + * Fixed the pre_capture feature so that it also stores the jpegs properly. + * Fixed the ffmpeg_timelapse feature so that the calculated time is + correct and the current image is used instead of an old image from + position 0 in the pre_capture ring buffer. + * Fixed ffmpeg routines so that also graytone images can be + pre_captured and used with ffmpeg_timelapse. + * Fixed the position of the incrementing of shots in the motion_loop + so that it is correct before any functions use it. + * Added quite many comments to the code to make it easier to maintain + (more comments will be added). + * Removed some old debugging printf's that were displayed in non-quiet + mode. + * Changed to snapshot feature from being alarm driven to being timer + driven. This means that each thread can have its own interval + value. The XML-RPC motion.action.snapshot still works. The SIGALRM + method has been changed so that all thread that have the + snapshot_interval non zero will take a snapshot when being signaled + with SIGALRM. A negative value for snapshot_interval will activate + the SIGALRM trigger but not the timing interval. + * Implemented ffmpeg_timelapse_mode feature by James A. Russo. + * Implemented RH (sysV) and Debian type control scripts for /etc/init.d + by Angel Carpintero. + * Implemented enhanced SQL features by James A. Russo. This adds logging + of mpeg and prediction events to MySQL/PostgreSQL. + James patch also replaced the mime file types by a more refined + filetype scheme that allows more refined control for SQL and other + future control. + * Kenneth Lavrsen changed the enhanced SQL config from single sql_mask + option to 5 sql_log_ options for more user friendly control. + * Implemented Daniel Sterlings minimum_motion_frames feature. + * Plugged a memory leak in the pre_capture feature. + * Changed the behaviour of onsave back to original mode where also + snapshots causes onsave command to be run. + * Fixed a bug in frequency setting of V4L device. + * Renamed snapshots_interval and snapshots_filename to snapshot_interval + and snapshot_filename. + * Changed the webcam_port value to 0 in motion-dist.conf to avoid that + people get segmentation faults when having 2 or more cameras and + * webcam_port not set in the thread config files. + * Implemented Daniel Sterlings improved handling of config strings. This + plugs the memory leak when changing string type options via XML-RPC. + * It also makes the memory handling more elegant/optimal and finally + it now allows strings to be as long as allowed by the environment + variable PATH_MAX. + * Kenneth and Daniel added many comments to motion.c and conf.c. + * Daniel Sterling made the XMLRPC able to handle errors without crashing. + * Daniel Sterling and Kenneth Lavrsen added a feature that checks for + two threads having the same webcam_port. If this is the case the last + thread gets its webcam disabled and a warning message is written + to console and syslog. + * Implemented Daniel Sterling's fix for a small calculation error in + alg_diff_fast(). + * Small improvements in messages sent to console and syslog during + startup of Motion. + +3.1.13 + * Included Ian McConnell's despeckle feature (including extra + improvement of the original patch). + * Changed the name of motion.conf to motion-dist.conf to avoid + make install overwrites your perfectly OK working motion.conf + file when you re-install. + * Updated the motion.spec.in. Not tested yet. + * Included Matthias Kilian configure patch which enables configure + to find and use a dynamic library of ffmpegs libavcodec.so . + * Included Steffen Haas improved on screen display patch + (plus some extra characters including a real space). + * Changed the parsing of the motion.conf and thread.conf files so + that spaces are now allowed. This also enables using a space in + the user text. For XML-RPC you put text in "" if you need spaces. + * Changed the XML-RPC function motion.conf.write so that undefined + config options gets written into the main motion.conf file with + the help line and the option prefixed by a '#'. Example + # netcam_url value. + * Added Mike Lees onffmpegclose feature which enabled a command to + be executed each time a file generated by ffmpeg is closed. + * Added Daniel Sterlings night compensate fix. + * Added Angel Carpintero's improved configure process which + automatically detects presence of xmlrpc-c and ffmpeg and makes + the Makefile accordingly. + * Included Ian McConnell's flexible on screen display feature and + flexible strftime based path names. + * Changed conf.c so that xml-rpc command motion.conf.write creates + a much more user friendly motion.conf file. + * Modified Ian's on screen display putting back the config parameter + (draw)text_changes. If enabled the number of changed pixes are shown + in the upper right corner of the image. + * Removed the snap_override feature and reduced the oldlayout to an + Berkeley mpeg_encode feature only renaming it to + berkeley_single_directory. Instead the flexible filename + feature now has oldlayout as default and the "new" directory layout + specified in the motion.conf file. + * Motion.conf sequency re-arranged so the important things comes first. + * Changed names of many options to be more user friendly. + * Renamed the options for displayed text to text_right, text_left and + text_changes. + * Change the parsing of config files so that the argument can be in + quotation marks (" or ') allowing leading spaces for the text_left + and text_right options. This means that you can place the text + anywhere on the picture by using spaces and new lines \n. + + +3.1.12 + * Removed vid_keepalive + * Added reentrant warning to codestyle answer in FAQ. + * Rewrite of PWC tracking code. + * Tracking is inactive by default. + * Motion-control action.quit fix. + * Netcam with mask fixed. + * Added tracking options to xmlrpc interface. + * Ignore SIGPIPE (crashes webcam code). + * Changed fast algorithm to imgs.size/10000 steps. + * Renamed prerecord to pre_capture to be more consistent with + post_capture. + * Redone pre_capture completely. + +3.1.12 +rc1 + * added pre-record. with configparameter n_prerecord one can set + the number of frames that should be recorded *before* the + motion starts. for this feature to work, you need to set + post capture to at the value given for n_prerecord! also: + n_prerecord must be at least 1 + +3.1.11 + * found 2 memory-leaks (two 'FILE *' were not closed) in the + webcam-interface + * started working on support for logitech sphere/orbit tracking + fixed bug in tracking routines (would sometimes use garbage + coordinates) + * added max-number-of-frames-limit to the webcaminterface (patch + by Jeroen Vreeken) + +3.1.10 + * added Kenneth's fixes for ffmpeg instability and the problem + with the "ioctl(VIDIOCGCHAN): Invalid argument" error + * small optimisation of rgb24toyuv420p (about 6% faster) so + for certain video-devices things might be a little faster + * optimized alg_diff_fast: about 50% faster + made it compile again with 2.6.0-test9 + * noise tuning is now only done when there's no motion! + * noise is resetted to the median of the tuned value and the + configured value as soon as no motion is detected + * fixed includes for mysql/psql (thanks Felix Finch!) + +3.1.9 + * motion now logs to syslog instead of stderr, that way it is + still possible to see what is going wrong when motion runs + as a daemon process. + * motion will now exit nicely when memory allocation fails + instead of segfaulting + * low_cpu now takes the number of frames per second to process + when no motion is detected instead of on/off + * "quick motion detection" is now only performed when motion + is in "idle" mode. + * added Kenneth's patch: motion with ffmpeg-0.4.8 now compiles + again! + * small optimisation: if a file is created, the path is now + only recreated when it did not already exist. + + +3.1.8 is the last version release by Jeroen Vreeken. +New maintainers are: Kenneth Lavrsen (http://www.lavrsen.dk/) and Folkert +van Heusden (http://www.vanheusden.com/). + + +3.1.8 Froze 3.1.8 + Can't use the same variable name twice in ppm code... + +3.1.7 Froze 3.1.7 + Added codingstyle answer to faq + yuv to rgb conversion for ppm images. + Webcam close and denial of service fixes. + Renamed roundrobing to roundrobin. + Don't try to compile in xml-rpc support when not defined. + +3.1.6 Froze 3.1.6 + Added output_all option for continuous file saving. + Fixed picture saving on rgb files. + Fixed off-by-one error in framerate calculation. + +3.1.5 Froze 3.1.5 + Added motion.action.quit to xml-rpc api. + Changed v4l code to convert rgb to yuv420p and + removed support for rgb24 from all other files. + Removed read() support from v4l code. + Changed netcam code to output yuv420p images. + Fixed libavcodec.h include in ffmpeg.h + +3.1.4 Froze 3.1.4 + Fixed ffmpeg segfault. + Removed motion.conf* from install section in Makefile + Fixed mail option. + Fixed conf list hang. + +3.1.3 Froze 3.1.3 + Made timelaps interval variable. + Added motion.conf.write to xmlrpc API + Motion can write its own config file. + Changed xmlrpc API to use strings for all option types. + Added comment fields for config options. + Added additional settings for ffmpeg. + +3.1.2 Froze 3.1.2 + Use SO_REUSEADDR on http listen sockets. + Added control_localhost and webcam_localhost options for + binding servers to the loopback interface (default=on). + xmlrpc-httpd now uses nonblocking io allowing for multiple + connections to be handled at the same time. + Set default for 'threshold_tune' and 'noise_tune' to yes. + Added threshold_tune config option. + +3.1.1 Froze 3.1.1 + Sync with 3.0.4 + Added xmlrpc motion-control. + Changed description output to match input format. + Added Server and Connection fields to the webcam code. + Added threshold_tune????? for autotuning the max_changes level. + Added noise_tune option for autotuning the noise level. + Sync with 3.0.3 + +3.1.0 Froze 3.1.0 + Added predict evaluation. + Added predict_description config option. + Started with predict functions. + Forked from 3.0.2 + +3.0.2 Froze 3.0.2 + Changed strtok() call for argument in conf.c arguments with + '=' in them are now allowed. + +3.0.1 Froze 3.0.1 + Added 'dist' and 'updateguide' options to Makefile. + Added motion_guide.html to documentation. + Fixed mpeg names when using oldlayout. + Updated manpage. + Added check to low_cpu frame_delay calculation for a maximum + of 1 second. + +3.0.0 Froze 3.0.0 + Added string.h to ffmpeg.c + +2.9.12 Froze 2.9.12 + Added ffmpeg_bps option. + Fixed devpipe instead of devmpipe in motion.c + +2.9.11 Froze 2.9.11 + Added all config files to examples in Makefile + Fixed YUV422 converter for real :) + Use 2 as minimum fps for ffmpeg (less produces a floating point + exception) + +2.9.10 Froze 2.9.10 + Fixed YUV422 to YUV420 converter. + Fixed oldlayout for ffmpeg files. + Added -lz for mysql. + Removed TODO from makefile. + +2.9.9 Froze 2.9.9 + Fixed leaks in webcam.c + Fixed mask image use (imgs.motionsize instead of imgs.size) + Don't try to detect motion with threshold set to 0. + +2.9.8 Froze 2.9.8 + Always try to remove snapshot link. + Cleaned up config file. + Cleaned up ppm code, now loads pgm greyscale files. + Fixed max_mpeg_time segfault in ffmpeg close event. + Added -lm for libavcodec. + Updated FAQ. + Added timelaps option. + Fixed SIGHUP handling. + Added /usr/local/mysql/include and /usr/local/mysql/lib to + configure script and fixed bogus error message. + Fixed snapshot location (missing filepath) + +2.9.7 Froze 2.9.7 + Fixed some more #endif statements + Use cnt->lastrate for ffmpeg framerate. + Fixed ffmpeg code for RGB and GREY images. + Added YUV422 support (converted to YUV420P) + Added roundrobing on frequency. + +2.9.6 Froze 2.9.6 + Tweaked autobrightness mode. + Added webcam_maxrate option. + Reversed image and boundary in webcam code. + Added framerate control. + Added webcam_motion config option. + New frame_limit code. + Fixed include files for ffmpeg.h + Code cleanup. + Removed SIGHUP handler. + Removed draw on motion images. + Added speed and stepsize options to tracking code. + Reversed the night compensation. + Removed ffmpeg error in max mpegtime code. + Fixed #endif statements in header files. + Changed 'deamon' to 'daemon' + +2.9.5 Froze 2.9.5 + Added missing time.h define in webcam.c + Added 'frequency' option for v4l tuners. + Fixed max mpeg time with ffmpeg encoding + Added path for mpeg_encode (problems with PATH variable) + Fixed deamon mode. + Changed overlay to white on black (more readable). + +2.9.4 Froze 2.9.4 + Added webcam option. + Moved reference image update before draw() + Added fclose() to put_picture() + +2.9.3 Froze 2.9.3 + Added GNU license to all file headers. + New netcam code + Fixed snapshot filenames + Use correct image sizes (no more width*height*3) + +2.9.2 Froze 2.9.2 + Added ffmpeg code (from monitor) for realtime mpeg encoding. + Moved image creation to event.c + Moved put_picture functions to picture.c + Added support for Y plane images (YUV420P and GREYSCALE) + Set default jpeg quality from 50 to 75 + PostgreSQL support + Moved event handlers from motion.c to event.c + Introduced new event() functions. + Updated xml-rpc rmon code. + +2.9.1 Froze 2.9.1 + Fixed lastsnap symlink for new layout. + switchfilter added + post_capture option added + Round robbing_skip added + Added roundrobing_frames option. + +2.9.0 Froze 2.9.0 + Shuffled everything around and added 'struct context', this + should make motion ready for some serious threading. + Added xml-rpc remote monitoring. + Higher quality settings for mpeg. + Added missing w to getopt in conf.c + Removed c++ style '//' comments, they're EVIL. + Removed some old outcommented code. + +2.6.3 froze 2.6.3 + Fixed removal of directories after mpeg creation. + Added new netcam code. + +2.6.2 froze 2.6.2 + Added support for YUV420P palette to video.c, this should fix + problems with the Philips webcams. + +2.6.1 froze 2.6.1 + Changed system() calls into remove() and symlink(). + oldlayout option now also affects snapshots. + Fixed snapshot link name (ppm vs jpg). + Added new snapshot_overwrite option. + Changed directory permissions to 0755 instead of 0750. + Made timestamp overlay better readable, it is now black + or white depending on the back colour. + +2.6.0 froze 2.6.0 + Updated manpage. + Added iomojo Smilecam support. + Added uninstall option to Makefile + Added config file location to the FAQ. + Made timestamp overlay inverse of original pixel instead of + white. + Created 'struct images' to minimize the passing of arguments + between functions. + Move contents of various header files around to make things + more sane. + Made locate box inverse off original pixel instead of white. + Created alg.c and alg.h, they contain all functions that + have something to do with the motion detection algorithms. + Renamed video.c functions to vid_xxxxx. + Created video.h + Improved stepper tracking code. + Tracking code cleanup, multiple tracking interfaces are now + possible. + Added diff_hybrid, a combination of diff_fast and diff_standard + Introduced some pointer magic in the locate functions. + Added experimental diff_fast. + Fixed SIGHUP handling and blocking. + Added auto_bright option. + +2.5.0 froze 2.5.0 + Updated documentation, config files, man page. + Freeing 'line' in decompress_jpeg, this fixes a memory leak + when using Axis cameras. + Implemented SIGHUP handler for reloading config files. + Added realconfig option for starting multiple motion processes + or loading alternative config files. + Added 'jpg_cleanup' to the manpage. + Made 'low_cpu' lower on cpu. + Fixed mpeg creation for old layout. + Moved mpeg movies into year/month/day dir. + Remove empty directories when doing jpg_cleanup. + +2.4.2 froze 2.4.2 + Fixed low_cpu option to be actually low on the cpu. + Fixed missing case for '-w' in conf.c. + +2.4.1 froze 2.4.1 + New version numbering: ala linux kernel + Fixed includes for track.c + +2.4 froze 2.4 + Complete rewrite of the tracking stuff... it now uses a serial + stepper motor interface (and actually works!) + Fixed division by zero in adjust_rate code + Added 'low_cpu' option for minimizing the cpu load while not + detecting any motion. + Added 'oldlayout' option for using the old style filenames. + Added automatic location of vloopback inputs by using + /proc/video/vloopback/vloopbacks. + Fixed '-l' option + Uploaded motion to the sourceforge CVS + Alphabetized CREDITS file. + Added 'pal-nc' norm. + +2.3 froze 2.3 + Started faq. + Included fix for bad 'strtok' in glibc with RH 7.0 + Added \t as a delimiter for config files. + Made mpeg creation checks more sane. + +2.2 froze 2.2 + Fixed segfault bug with filebase creation. + Added creation of mpegs when killed or when getting SIGUSR1 + or when max_mpeg_time has been reached. + +2.1 froze 2.1 + Only create directories if they are going to be used. + Changed SYNC ioctl argument to int in video.c + Added realmotion option + Default config changed: + -gap is now 60 instead of 300 seconds. + -locate is on by default (-l function now works reversed) + -night_compensate is on by default + Added mpeg framerate adjustment. + Added night_compensate for dark pictures. + +2.0 froze 2.0 + Integrated motion tracking. + Improved lightswitch detection. + Added clipcount in video.c, quickcam should work good now. + +1.99 froze 1.99 + Fixed memory leak in mpeg creation. + Created put_picture for saving images. + Moved lightswitch code out of main loop. + Merged exec_externcommand, exec_onsavecommand and + exec_onmpegcommand into exec_command + Added onmpeg command. + +1.81 froze 1.81 + Fixed segfault bug in 'mysql_password' option. + +1.8 froze 1.8 + Added video loopback for motion pictures. + Location box is now only enlarged for heads, not for feet. + Merged in Axis 2100 camera support. + conf.c now also looks for '~/.motion/motion.conf'. + Moved filebase creation to mkfilebase + Minor improvements. + Loopback feed during lightswitch. + +1.7 froze 1.7 + Little bit of code cleanup + Splitted motion.c in motion.c and video.c + Changed config.in to correctly detect the mysql libraries and + include files. + +1.6 froze 1.6 + Motion now has its own mailinglist: motion@frogtown.com + Added MySQL support + Added creation of symbolic link to snapshots + Changed file names of snapshots + +1.5 froze 1.5 + Added video loopback support for realtime viewing. + Fixed division by zero bug. + Added install option to Makefile. + Fixed bug that prevented external commands, mail and sms from + being called at the first event. + +1.4 froze 1.4 + Added lightswitch filter + Updated manpage + +1.3 froze 1.3 + Added minimum gap option. + Changed /007 to /a, not a real change but more sane. + Added mask option. + Added get_ppm for reading ppm files + Optimized greyscale blowup code. + Added 'FORCE_ENCODE_LAST_FRAME' to mpeg params file. + Experimental tracking routines for mini ssc library + +1.2 froze 1.2 + Fixed some exit(-1) to exit(1) + Updated manpage with the new options. + Added adjustable noise level. + Snapshots can be made in ppm format to. + Fixed signal blocking code (this time right?) + +1.1 froze 1.1 + Motion now has it own logos!!!! + Added timestamp to picture. + Added ppm output format. + Rewrote locate function, small things (like fish :) don't + disturb the locate option anymore. + Added break for -B option + +1.0 froze 1.0 + Went back to alarm for automated snapshots + (signals should work with bttv now) + Moved usage to conf.c + Finished manpage + Added check for existing target dir. + Moved diff calculation and image_out generation out of main + loop, adding other methods is easier this way. + Removed sanity check for output formats since someone might + want no pictures at all but only warning messages. + Make snapshots separately from other pictures. + New snapshot names: YYYYMMDDHHMMSS-snapshot + Motion images are encoded to mpeg movies to. + Made movie file names and counter sane. + +0.99-2 froze 0.99-2 + Added signal blocking during ioctls, bttv should now continue + to work when receiving signals. + Snapshots with no movement don't go to the movies ;) + Also flush buffers when making snapshots. + Fixed for segfault when there is no config file. + (Second time, remember to fix the current version next time) + +0.99 Last beta before 1.0 + mpeg movies get timestamp in filename + mpeg_encode is now called from within motion + added chdir, filename generation is now much easier + Added check for complete frames with read + +0.8 froze 0.8 + Added script for mpeg_encode + Moved getopt stuff to conf.c + Added conf.h and conf.c for config file parsing + Added -f option for frame rate limit + Fixed frame nr count (starts at 0 again instead of 1 in v0.7) + +0.7 froze 0.7 + Added event nr to the filename, settable with -g (gap). + Added genhtml.sh (for creating a static version of show.cgi) + New show.cgi + Option for saving both motion and normal images. + Moved image_ref update into diff for loop. + *a option does not use alarm anymore, bttv card users can use + it to (they just miss the SIGALRM option...) + Added picture size settings for read. + Moved read back in, after mmap failure motion we fall back + to normal reads. + Greyscale camera fix + Added check for capture failure + +0.6 froze 0.6 + Fixed stupid typo for execute option (forgot the shift) + Added -l option for locating and marking movement + Added buffer flush to keep log files up to date + +0.5 froze 0.5 + Added contrib dir with infra red script + Option to always output changes between images + Output of motion images + configure script + +0.4 froze 0.4 + Gave the help text a new look. + Overall cleanup (moving defines to motion.h) + Added -E option for executing external commands + +0.3 froze 0.3 + New homepage: http://motion.technolust.cx + Fixed -t option (target path) + Changed from read to mmap for bttv cards + Added input and norm selection + Added alarm signal handler and snapshot (-a) option + (does not work with bttv....) + +0.2 froze 0.2 + Updated README and TODO + Added SMS and mail alert messages + Changed file name format to YYYYMMDDHHMMSS-fn.jpg + (fn=framenumber) + Added deamonize option + Cleaned up includes + Decaying reference picture added + Renamed image1 and image2 to image_ref and image_new + +0.1 Initial release diff --git a/doc/code_standard b/doc/code_standard index 1302a749..d8beb247 100644 --- a/doc/code_standard +++ b/doc/code_standard @@ -1,4 +1,4 @@ -Formatting for MotionPlus. +Formatting for Motion. -------------------- RULE 1 @@ -14,12 +14,12 @@ the corresponding code above. Use common sense to enhance readability. -------------------- RULE 3 Never use TABS to align anything. A tab may be 4 positions in one editor -and 8 in another. A space is always a space. +and 8 in another. A space is always a space. -------------------- RULE 4 If blocks always use braces and follow K&R. Braces are free and do not cost money, -use them to clarify what you are doing. +use them to clarify what you are doing. -------------------- RULE 5 @@ -44,11 +44,11 @@ Use // style comments for something you add temporarily while testing. -------------------- RULE 7 Use variable names that say what the variable is used for. -Variable and function names are in lower case. +Variable and function names are in lower case. Use '_' to separate words. MACROS are in uppercase. Follow the naming scheme for functions - - + + diff --git a/doc/motion.gif b/doc/motion.gif new file mode 100755 index 00000000..284eaa63 Binary files /dev/null and b/doc/motion.gif differ diff --git a/doc/motionplus_build.html b/doc/motion_build.html similarity index 95% rename from doc/motionplus_build.html rename to doc/motion_build.html index 3de66620..c5903579 100644 --- a/doc/motionplus_build.html +++ b/doc/motion_build.html @@ -2,10 +2,10 @@ - - MotionPlus + + Motion - +