zoneminder/README.html

4001 lines
202 KiB
HTML
Raw Blame History

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./README_files/filelist.xml">
<title>ZoneMinder v0.9.14</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Philip Coombes</o:Author>
<o:LastAuthor>Philip Coombes</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>1</o:TotalTime>
<o:Created>2003-07-08T08:38:00Z</o:Created>
<o:LastSaved>2003-07-08T08:38:00Z</o:LastSaved>
<o:Pages>31</o:Pages>
<o:Words>14155</o:Words>
<o:Characters>80688</o:Characters>
<o:Company>Triornis</o:Company>
<o:Lines>672</o:Lines>
<o:Paragraphs>161</o:Paragraphs>
<o:CharactersWithSpaces>99090</o:CharactersWithSpaces>
<o:Version>9.2720</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:DoNotHyphenateCaps/>
<w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
<w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
<w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
<w:UseMarginsForDrawingGridOrigin/>
<w:Compatibility>
<w:UsePrinterMetrics/>
<w:WW6BorderRules/>
<w:FootnoteLayoutLikeWW8/>
<w:ShapeLayoutLikeWW8/>
<w:AlignTablesRowByRow/>
<w:ForgetLastTabAlignment/>
<w:LayoutRawTableWidth/>
<w:LayoutTableRowsApart/>
</w:Compatibility>
<w:DocumentVariables>
<w:dgnword-docGUID>\'5c'5c'5c'5c'7bEE1F7E29-843F-4EEE-90F5-BC0B80599480\'5c'5c'5c'5c'7d</w:dgnword-docGUID>
<w:dgnword-eventsink>29938712</w:dgnword-eventsink>
</w:DocumentVariables>
</w:WordDocument>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0mm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:12.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB;}
h1
{mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0mm;
margin-bottom:12.0pt;
margin-left:22.7pt;
text-indent:-22.7pt;
page-break-before:always;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
mso-list:l0 level1 lfo1;
tab-stops:22.7pt;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:14.0pt;
mso-bidi-font-size:10.0pt;
font-family:Arial;
mso-font-kerning:16.0pt;
mso-ansi-language:EN-GB;
mso-bidi-font-weight:normal;
text-decoration:underline;
text-underline:thick;}
h2
{mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0mm;
margin-bottom:6.0pt;
margin-left:21.75pt;
text-indent:-21.6pt;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:2;
mso-list:l0 level2 lfo1;
tab-stops:36.15pt;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:12.0pt;
mso-bidi-font-size:10.0pt;
font-family:Arial;
mso-ansi-language:EN-GB;
mso-bidi-font-weight:normal;
text-decoration:underline;
text-underline:single;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{margin:0mm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 207.65pt right 415.3pt;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:12.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{margin:0mm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 207.65pt right 415.3pt;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:12.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{margin-top:12.0pt;
margin-right:0mm;
margin-bottom:3.0pt;
margin-left:0mm;
text-align:center;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:16.0pt;
mso-bidi-font-size:10.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:14.0pt;
mso-ansi-language:EN-GB;
font-weight:bold;
mso-bidi-font-weight:normal;
text-decoration:underline;
text-underline:double;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
strong
{mso-bidi-font-weight:normal;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{margin-top:0mm;
margin-right:0mm;
margin-bottom:9.0pt;
margin-left:0mm;
text-align:justify;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:10.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB;}
pre
{margin:0mm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
mso-layout-grid-align:none;
punctuation-wrap:simple;
text-autospace:none;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
color:black;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 57.6pt 72.0pt 57.6pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-footer:url("./README_files/header.htm") f1;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:-5;
mso-list-template-ids:-677636838;}
@list l0:level1
{mso-level-style-link:"Heading 1";
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:22.7pt;
mso-level-legacy-space:6.0pt;
margin-left:22.7pt;
text-indent:-22.7pt;}
@list l0:level2
{mso-level-style-link:"Heading 2";
mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:21.6pt;
mso-level-legacy-space:6.0pt;
margin-left:21.75pt;
text-indent:-21.6pt;}
@list l0:level3
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level4
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level5
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level6
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level7
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level8
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l0:level9
{mso-level-start-at:0;
mso-level-number-format:none;
mso-level-text:"";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0mm;
text-indent:0mm;}
@list l1
{mso-list-id:17706862;
mso-list-template-ids:1917612118;}
@list l1:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:240068950;
mso-list-template-ids:1917612118;}
@list l2:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3
{mso-list-id:248122421;
mso-list-template-ids:1917612118;}
@list l3:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4
{mso-list-id:361324527;
mso-list-template-ids:1917612118;}
@list l4:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5
{mso-list-id:383331947;
mso-list-template-ids:1917612118;}
@list l5:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6
{mso-list-id:596598494;
mso-list-template-ids:1917612118;}
@list l6:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7
{mso-list-id:899369431;
mso-list-template-ids:1917612118;}
@list l7:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l7:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l7:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l8
{mso-list-id:1257321193;
mso-list-type:simple;
mso-list-template-ids:134807553;}
@list l8:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:18.0pt;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l9
{mso-list-id:1743017800;
mso-list-template-ids:1917612118;}
@list l9:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l9:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l9:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l9:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l9:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l10
{mso-list-id:1771969322;
mso-list-template-ids:1917612118;}
@list l10:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l10:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l10:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l10:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l10:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l10:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l10:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l10:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l10:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l11
{mso-list-id:1802454071;
mso-list-template-ids:1917612118;}
@list l11:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l11:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l11:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l11:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l11:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12
{mso-list-id:1822043875;
mso-list-template-ids:1917612118;}
@list l12:level1
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level2
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:36.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level3
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12:level4
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:72.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l12:level5
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level6
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:108.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12:level7
{mso-level-number-format:none;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l12:level8
{mso-level-number-format:none;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:144.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level9
{mso-level-number-format:none;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
mso-level-legacy:yes;
mso-level-legacy-indent:18.0pt;
mso-level-legacy-space:6.0pt;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0mm;}
ul
{margin-bottom:0mm;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="3074"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:36.0pt'>
<div class=Section1>
<p class=MsoTitle><u><span lang=EN-GB>ZoneMinder v0.9.14<o:p></o:p></span></u></p>
<h1 style='page-break-before:auto'><![if !supportLists]><span lang=EN-GB
style='text-decoration:none;text-underline:none'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Introduction<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>Welcome to ZoneMinder, the new
all-in-one Linux GPL'd security camera solution. A few months back my garage
was burgled and all my wine and power tools were nicked! I realised shortly
after that if I'd just had a camera overlooking the door then at least I'd have
know exactly when and who did the dirty deed. And so ZoneMinder was born. It's
still a baby but hopefully it can grow up to be something that can be genuinely
useful and maybe one day either prevent similar incidents or perhaps bring some
perpetrators to justice.</span></p>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder is designed around a series
of independent components that only function when necessary limiting any wasted
resource and maximising the efficiency of your machine. A fairly ancient
Pentium II PC should be able to track one camera per device at up to 25 frames
per second with this dropping by half approximately for each additional camera
on the same device, additional cameras on other devices do not interact so can
maintain this frame rate. Even monitoring several cameras still will not
overload the CPU as frame processing is designed to synchronise with capture
and not stall it.</span></p>
<p class=MsoPlainText><span lang=EN-GB>As well as being fast ZoneMinder is
designed to be friendly and even more than that, actually useful. As well as
the fast video interface core it also comes with a user friendly and
comprehensive PHP based web interface allowing you to control and monitor your
cameras from home or even at work or on the road. It supports variable web
capabilities based on available bandwidth. The web interface also allows you to
view events that your cameras have captured and archive them or review them
time and again, or delete the ones you no longer wish to keep. The web pages
directly interact with the core daemons ensuring full co-operation at all
times. ZoneMinder can even be installed as a system service ensuring it is
right there if your computer has to reboot for any reason.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The core of ZoneMinder is the capture
and analysis of images and there is a highly configurable set of parameters that
allow you to ensure that you can eliminate false positives whilst ensuring that
anything you don't want to miss will be captured and saved. ZoneMinder allows
you to define a set of 'zones' for each camera of varying sensitivity and
functionality. This allows you to eliminate regions that you don't wish to
track or define areas that will alarm if various thresholds are exceeded in
conjunction with other zones.</span></p>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder is fresh off the keyboard and
so comes with no warranty whatsoever, please try it, send your feedback and if
you get anything useful out of it please let me know.</span></p>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder is free but if you do get a
ZoneMinder up and running and find it useful then please feel free to visit <a
href="http://www.zoneminder.com/donate.html">http://www.zoneminder.com/donate.html</a>
where any donations will be appreciated and will help to fund future
improvements of ZoneMinder.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Requirements<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder needs a couple of things to
work.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Firstly, it uses MySQL so you'll need
that. In order to compile you need to make sure you have a development
installation and not just a runtime, this is because it needs to use the MySQL
header files.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Next it does things with JPEGs so you'll
need at least libjpeg.a which I think come as standard nowadays with most
distributions. It also uses the netpbm utilities in a very limited way to
generate thumbnails under certain circumstances though this can be modified.</span></p>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder can generate MPEG videos if
necessary, for this you'll need either ffmpeg (recommended) or the Berkeley MPEG
encoder. If you don't have either don't worry, as the options will be hidden
and you'll not miss much really. The web interface uses PHP and so you need
that in your apache or other web server as well, make sure MySQL support is
available either statically or as a module. There are also various perl modules
that you may need that vary depending on which options you choose on
installation, for more details see later in this document.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Finally, there is quite a bit of image
streaming in the package. So if you don't have Netscape or another browser that
supports image streaming natively I recommend you get the excellent Cambozola
java applet from <span class=MsoHyperlink><span style='color:blue'>http://www.charliemouse.com/code/cambozola/</span></span>
which will let you view the image stream in Internet Explorer and others.
Otherwise you're limited to just refreshing still images.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Hardware-wise, ZoneMinder has been used
with various video and USB cameras with the V4L interface. I don't have a lot
of cameras myself so I've not had change to test it with a huge ranger personally
however there is a list of devices that are definitely known to work on the web
site. Please let me know if your camera is not listed. You do need to have
Video 4 Linux installed. I've not got too many machines so I've only really
used it on RedHat, which does have everything there by default I think.
SlackWare does need a bit more tinkering than other distributions; there is a
document on the web site describing what users have had to do to get it
working. Please give me feedback on other distributions not listed on the site.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Building<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>The first thing you need to do is run
the included configure script to define some initial configuration, just type</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>./configure
--with-mysql=&lt;your MySQL root&gt; --with-webdir=&lt;your web directory&gt;
--with-cgidir=&lt;your cgi directory&gt;<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>where --with-mysql identifies where you
have installed MySQL (usually /usr), --with-webdir is the directory to which
you want to install the PHP files, and --with-cgidir is the directory to which
you want to install CGI files. These directories could be /var/www/html/zm and
/var/www/cgi-bin for example. There are also two further arguments you can add
if your web user and group are not both 'apache'. These are --with-webuser and
--with-webgroup. Type</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>./configure
<EFBFBD>help<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>for details.</span></p>
<p class=MsoPlainText><span lang=EN-GB>That's the build configuration sorted
out. The next thing you have to do is do a little more runtime specific
configuration. ZoneMinder config is scattered around various files in the
distribution so to make things easier for you there is a ZoneMinder
configuration utility included. Type</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>perl
./zmconfig.pl<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>to get it started. It is an interactive
utility and will prompt you by asking you various questions. For most questions
typing '?' will give you additional help if you need it. Once you've answered
all the questions it will write out a configuration file called 'zmconfig.txt'
and then process various files to substitute the information in them. If you
run it again it will remember your answers from before by reading
'zmconfig.txt' before it starts. You can also edit this file directly to change
values. If you do you can run zmconfig.pl in non-interactive mode by typing</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>perl
./zmconfig.pl -noi<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>which will just read your file and do
the substations with no questions asked. Also if you are upgrading from version
0.9.7 (or later) you can copy your old zmconfig.txt file into the current build
directory before you run zmconfig.pl and it will use your preferences as a
basis for generating the new ones. There are two classes of options, <20>core<72>
options which much be specified with zmconfig which detail things such as
database passwords which are compiled into ZoneMinder and other options with
are stored in the database and which can be modified dynamically via the
<EFBFBD>options<EFBFBD> section of the web interface. Only the first set need to be completed
with zmconfig at this stage.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Among the first questions zmconfig.pl
asks you are to do with the database and the next thing you should do is create
it and the associated database users. You may notice that there are two sets of
users and passwords. This is because the streaming server and utility binaries
require only read access to the database so you may wish to create both a full
access user and a limited access user. You can of course set both to the full
access user. The included schema (zmschema.sql) can be used to actually create
the tables required. The database is usually called just 'zm'.</span></p>
<p class=MsoPlainText><span lang=EN-GB>If you are upgrading from a previous
version you can use zmalter-x.y.z.sql to upgrade your database and make the
necessary changes where x.y.z identifies the version of ZoneMinder you had
installed previously. So if you are going from version 0.9.7 to version 0.9.11
you would run the scripts for all intervening versions to get to the current
one, i.e. zmalter-0.9.7.sql, zmalter-0.9.8.sql, zmalter-0.9.9.sql and
zmalter0.9.10.sql. For a new installation the simplest way to create your
database and users is as follows,</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>mysql
mysql &lt; zmschema.sql<o:p></o:p></span></i></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>mysql
mysql<o:p></o:p></span></i></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>grant
select,insert,update,delete on &lt;your database name&gt;.* to '&lt;your first
username&gt;'@localhost identified by '&lt;your first password&gt;';<o:p></o:p></span></i></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>grant
select on &lt;your database name&gt;.* to '&lt;your second
username&gt;'@localhost identified by '&lt;your second password&gt;'<o:p></o:p></span></i></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>quit<o:p></o:p></span></i></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>mysqladmin
reload<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>You may need to supply a username and
password to the mysql commands in the first place to give yourself sufficient
privileges to perform the required commands. If you want to host your database
on a different machine than that which ZoneMinder is running on then use the
hostname of the remote machine instead of localhost.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Then just type <i style='mso-bidi-font-style:
normal'>'make'</i> and off you go.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Installation<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>Once the build has completed you should
have several shiny new binaries. I will now briefly describe what each of them
does.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmc</span></b><span lang=EN-GB> - This is the
ZoneMinder Capture daemon. This binary's job is to sit on a video device and such
frames off it as fast as possible, this should run<span style="mso-spacerun:
yes"><EFBFBD> </span>at more or less constant speed.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zma</span></b><span lang=EN-GB> - This is the
ZoneMinder Analysis daemon. This is the component that goes through the
captured frames and checks them for alarming events. It generally keeps up with
the zmc but if very busy may skip some frames to prevent it falling behind.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmf</span></b><span lang=EN-GB> - This is the
ZoneMinder Frame daemon. This is an optional daemon that can run in concert
with the Analysis daemon and whose function it is to actually write captured
frames to disk. This frees up the analysis to do more analysis (!) and so keep
up with the capture daemon better. If it isn<73>t running or dies then the
Analysis daemon just writes them itself.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zms</span></b><span lang=EN-GB> - This is the
ZoneMinder Streaming server. The web interface connects with this to get
real-time or historical streamed images.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmu</span></b><span lang=EN-GB> - This is the
ZoneMinder Utility. It's basically a handy command line interface to several
useful functions. It<49>s not really meant to be used by anyone except the web
page (there's only limited 'help' in it so far) but can be if necessary,
especially for debugging video problems.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmfix</span></b><span lang=EN-GB> - This is a small
binary that exists only to ensure that the video device files can be read by
the main capture daemons. It is often the case that these device files are set
to be accessible by root only on boot. This binary runs setuid and ensures that
they have appropriate permissions. This is not a daemon and runs only on system
start and then exits.</span></p>
<p class=MsoPlainText><span lang=EN-GB>As well as this there are the web PHP
files in the web directory and some perl scripts in the scripts directory, only
one of which may actually be used in a minimal installation. These scripts all
have some configuration at the top of the files which should be viewed and
amended if necessary and are as follows.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmpkg.pl</span></b><span lang=EN-GB> - This is the
ZoneMinder Package Control script. This is used by the web interface and
service scripts to control the execution of the system as a whole.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmdc.pl</span></b><span lang=EN-GB> - This is the
ZoneMinder Daemon Control script. This is used by the web interface and the
zmpkg.pl script to control and maintain the execution of the capture and
analysis daemons, amongst others. You should not need to run this script
yourself.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmfilter.pl</span></b><span lang=EN-GB> - This script
controls the execution of saved filters and will be started and stopped by the
web interface based on whether there are filters that have been defined to be
autonomous. This script is also responsible for the automatic uploading of
events to a 3rd party server.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmaudit.pl</span></b><span lang=EN-GB> - This script
is used to check the consistency of the event file system and database. It can
delete orphaned events, i.e. ones that appear in one location and not the other
as well as checking that all the various event related tables are in line. It
can be run interactively or in batch mode either from the command line or a
cron job or similar. In the zmconfig.pl there is an option to specify fast
event deletes where the web interface only deletes the event entry from the
database itself. If this is set then it is this script that tidies up the rest.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmx10.pl</span></b><span lang=EN-GB> - This is an
optional script that can be used to initiate and monitor X10 Home Automation
style events and interface with an alarm system either by the generation of X10
signals on ZoneMinder events or by initiating ZoneMinder monitoring and capture
on receipt of X10 signals from elsewhere, for instance the triggering of an X10
PIR. For example I have several cameras that don<6F>t do motion detection until I
arm my alarm system whereupon they switch to active mode when an X10 signal is
generated by the alarm system and received by ZoneMinder.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zmwatch.pl</span></b><span lang=EN-GB> - This is a
simple script purely designed to keep an eye on the capture daemons and restart
them if they lockup. It has been known for sync problems in the video drivers
to cause this so this script makes sure that nothing important gets missed.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>zm</span></b><span lang=EN-GB> - This is the
(optional) ZoneMinder init script, see below for details.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Finally, check zm_config.php in the web
directory and amend any configuration necessary in there. Most will have
already been done by the configuration utilities.</span></p>
<p class=MsoPlainText><span lang=EN-GB>At this stage typing 'make install' will
install everything to the desired locations, you may wish to su to root first
though. The installation routine will copy the binaries and scripts to your
chosen install location, usually /usr/local/bin and then move zms to your
cgi-bin area. It will then copy the web files to your chosen directory and
ensure they have the right permissions. Finally it tries to link zm.php to
index.php but will not overwrite an existing file if it exists.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The 'zm' script does not get installed
automatically as it is not necessary for the operation of the ZoneMinder setup
per se. However if you want to ensure that the ZoneMinder daemons are started
on reboot etc copy it to your init.d directory, usually something like /etc/rc.d/init.d
and then add it by doing</span></p>
<p class=MsoPlainText><i style='mso-bidi-font-style:normal'><span lang=EN-GB>/sbin/chkconfig
--add zm<o:p></o:p></span></i></p>
<p class=MsoPlainText><span lang=EN-GB>or similar command for your
distribution. ZoneMinder will then start up when your machine reboots and can
be controlled (by the root user) by doing <i style='mso-bidi-font-style:normal'>'service
zm start'</i> or <i style='mso-bidi-font-style:normal'>'service zm stop'</i> etc.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Now start your web browser and point it
at your zm.php and off you go.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Tutorial<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>What you see now (and subsequently)
depends on whether you chose to run ZoneMinder in authenticated mode or not.
This is an option that lets you specify whether anyone that goes to the
ZoneMinder web pages must authenticate themself in order to be given
permissions to perform certain tasks. If you chose this mode then you will need
to log in here. By default a fully privileged user <20>admin<69> has been created
with a password also of <20>admin<69>. You should change this password as soon as
possible.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Once you<6F>ve logged in, or if you are
running in un-authenticated mode, you will now see the ZoneMinder Console
window. This will resize itself to avoid being too intrusive on your desktop. Along
the top there are several informational entries like the time of the last
update and the current server load. There will also be a <20>start<72> or <20>stop<6F> link
depending on the current state. Below that are various other links including
one detailing the current user (in authenticated mode only) and one allowing
you to configure your bandwidth. This last one enables you to optimise your
settings depending on where you are, the actual values relating to this are
defined in the options. If you are using a browser on the same machine or
network then choose high, over a cable or DSL link maybe choose medium and over
a dialup choose low. You can experiment to see which is best. This setting is
retained on a per machine basis with a persistent cookie. Also on this line are
a number of other links that will be covered below.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Please bear in mind that from here on
the descriptions of the web pages are based on what you will see if you are
running as a fully authenticated user. If you are running in un-authenticated
mode or as a less privileged user then some elements may not be shown or will
be disabled.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Defining Monitors</span></h2>
<p class=MsoPlainText><span lang=EN-GB>To use ZoneMinder properly you need to
define at least one Monitor. Essentially, a monitor is associated with a camera
and will continually check it for motion detection and such like. So, next
click 'Add New Monitor' to bring up the dialog. You will see a bunch of things
you have to fill in.</span></p>
<p class=MsoPlainText><span lang=EN-GB>To help you get started on the video
configuration the best thing is to us a tool like 'xawtv' to get a picture
you're happy with, and to check your camera works. Then run 'zmu -d
&lt;device_no&gt; -q -v' to get a dump of the settings (note, you will have to
additionally supply a username and password to zmu if you are running in
authenticated mode). You can then enter these values into the video related
options of the monitor configuration panel. The 'device_no' referred to here is
a number corresponding to the digit at the end of your device file, so
/dev/video0 has a 'device_no' of 0 etc. If 'zmu' gives you an error related to
permissions run 'zmfix -a' to make sure you can access all the video devices.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The options explained in a little more
detail are as follows,</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Name</span></b><span lang=EN-GB> - First choose a name
for it, anything you like. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Function</span></b><span lang=EN-GB> - This
essentially defines what the monitor is doing. This can be 'None' meaning the
monitor is currently disabled, 'Passive' meaning you can watch the streams
coming from the camera but no alarms or events will be generated, or 'Active'
meaning all the images will be analysed as well as the stream being available
to watch. If you have specified X10 support then X10 is also available as an
option, which means that the monitor is generally passive but may switch to or
from active mode on receipt of X10 commands (see below). Generally you'll want
'Active' but for now leave this at 'None'. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Source Type</span></b><span lang=EN-GB> <20> This
determines whether the camera is a local one attached to a physical video or
USB port on your machine or a remote network camera or similar. Choosing one or
the other affects which set of three options are shown next.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Device Number/Channel</span></b><span lang=EN-GB> <20>
For a local camera enter the device number that your camera is attached to. If
it is /dev/video0 enter '0' etc. Some video devices, e.g. BTTV cards support
multiple cameras so in the Channel box choose the appropriate channel, or leave
it at zero if you're using a USB camera or one without channels. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Device Format</span></b><span lang=EN-GB> <20> For a
local camera enter the video format of the video stream. This is defined in
various system files (e.g. /usr/include/linux/videodev.h) but the two most
common are 0 for PAL and 1 for NTSC.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Remote Host/Port/Path</span></b><span lang=EN-GB> <20>
For remote cameras use these fields to enter the full URL of the camera.
Basically if your camera is at <span class=MsoHyperlink><span style='color:
blue'>http://camserver.home.net:8192/cameras/camera1.jpg</span></span> then
these fields will be camserver.home.net, 8192 and /cameras/camera1.jopg
respectively. Leave the port at 80 if there is no special port required. If you
require authentication to access your camera then add this onto the host name
in the form &lt;username&gt;:&lt;password&gt;@&lt;hostname&gt;.com.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Orientation</span></b><span lang=EN-GB> <20> If your
camera is mounted upside down or at right angles you can use this field to
specify a rotation that is applied to the image as it is captured. This incurs
an additional processing overhead so if possible it is better to mount your
camera the right way round if you can. If not set the orientation here. If you
choose one of the rotation options remember to switch the height and width
fields so that they apply, e.g. if your camera captures at 352x288 and you
choose <20>Rotate Right<68> here then set the height to be 352 and width to be 288.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Capture Width/Height</span></b><span lang=EN-GB> - The
dimensions of the video stream your camera will supply. If your camera supports
several just enter the one you'll want to use for this application, you can
always change it later. However I would recommend starting with no larger than
352x288 and then perhaps increasing and seeing how performance is affected.
This size should be adequate in most cases.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Capture Palette</span></b><span lang=EN-GB> - Finally
for the video part of the configuration enter the colour depth. ZoneMinder
supports a handful of the most common palettes, so choose one here. If in doubt
try grey scale first, and then 24 bit colour. If neither of these work very
well then YUV420P probably will.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Timestamp Label Format</span></b><span lang=EN-GB> -
This relates to the timestamp that is applied to each frame. It is a sprintf
style string. It is actually passed through sprintf and then through printf to
add the monitor name so a format of '%%s - %y/%m/%d %H:%M:%S' would be
recommended though you can modify it if necessary. If you don<6F>t want a
timestamp or have a camera that puts one on itself then leave this field blank.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Timestamp Label X/Y</span></b><span lang=EN-GB> - The
X and Y values determine where to put the timestamp. A value of 0 for the X
value will put it on the left side of the image and a Y value of 0 will place
it at the top of the image. A Y value of the height you supplied earlier minus
8 will place it on the bottom of the image.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Image Buffer Size</span></b><span lang=EN-GB> - This
option determines how many frames are held in the ring buffer at any one time.
The ring buffer is the storage space where the last <20>n<EFBFBD> images are kept, ready
to be resurrected on an alarm or just kept waiting to be analysed. It can be
any value you like with a couple of provisos, (see next options). However it is
stored in shared memory and making it too large especially for large images
with a high colour depth can use a lot of memory. A value of no more than 100
is usually ok.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Warm-up Frames </span></b><span lang=EN-GB>- This
specifies how many frames the analysis daemon should process but not examine
when it starts. This allows it to generate an accurate reference image from a
series of images before looking too carefully for any changes. I use a value of
25 here, too high and it will take a long time to start, too low and you will
get false alarms when the analysis daemon starts up.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Pre/Post Event Image Buffer</span></b><span
lang=EN-GB> - These options determine how many frames from before and after an
event should be preserved with it. This allows you to view what happened
immediately prior and subsequent to the event. A value of 10 for both of these
will get you started but if you get a lot of short events and would prefer them
to run together to form fewer longer ones then increase the Post Event buffer
size. Both of these values added together should not exceed the ring buffer
size. You should also bear in mind the frame rate of the camera when choosing
this value. For instance a network camera capturing at 1FPS will give you 10
seconds before and after each event if you chose 10 here. This may well be too
much and pad out events more than necessary. However a fast video card may well
capture at 25FPS and you will want to ensure that this setting enables you to
view a reasonable time frame pre and post event.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Maximum FPS</span></b><span lang=EN-GB> <20> On some
occasions you may have one or more cameras capable of high capture rates but
find that you generally do not require this performance at all times and would
prefer to lighten the load on your server. This option permits you to limit the
maximum capture rate to a specified value. This may allow you to have more
cameras supported on your system by reducing the CPU load or to allocate video
bandwidth unevenly between cameras sharing the same video device. This value is
only a rough guide and the lower the value you set the less close the actual
FPS may approach it especially on shared devices where it is difficult to
synchronise two different capture rates precisely. There is a global
configuration option that allows you to turn this limiting off in the event of
an alarm.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>FPS Report Interval</span></b><span lang=EN-GB> - How
often the current performance in terms of Frames Per Second is output to the
system log. Not used in any functional way so set it to maybe 1000 for now. If
you watch /var/log/messages (normally) you will see this value being emitted at
the frequency you specify both for video capture and processing.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Reference Image Blend %ge</span></b><span lang=EN-GB>
- Each analysed image in ZoneMinder is a composite of previous images and is
formed by applying the current image as a certain percentage of the previous
reference image. Thus, if we entered the recommended value of 10 here, each
images part in the reference image will diminish by a factor of 0.9 each time
round. So a typical reference image will be 10% the previous image, 9% the one
before that and then 8.1%, 7.2%, 6.5% and so on of the rest of the way. An
image will effectively vanish around 25 images later than when it was added.
This blend value is what is specified here and if higher will make slower
progressing events less detectable as the reference image would change more
quickly. Similarly events will be deemed to be over much sooner as the
reference image adapts to the new images more quickly. In signal processing
terms the higher this value the steeper the event attack and decay of the
signal. It depends on your particular requirements what the appropriate value
would be for you but start with 10 here and adjust it later if necessary.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>X10 Activation String</span></b><span lang=EN-GB> -
This option is only available if you have specified X10 support in the
configuration. If you have then this contents of this field determine when a
monitor starts and stops being Active if its function is set to X10. Basically
what this means is that a monitor with a Function of X10 normally acts as it is
Passive, i.e. you can watch the video stream but no analysis is done. On
receipt of the appropriate X10 signal however it effectively changes to Active
mode and starts to analyse images until an X10 signal (or elapsed time) changes
it back to Passive again. The format of this string is as follows,</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>n</span></u><span
lang=EN-GB> : If you simply enter a number then the monitor will be activated
when an X10 ON signal for that unit code is detected and will be deactivated
when an OFF signal is detected.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>!n</span></u><span
lang=EN-GB> : This inverts the previous mode, e.g. !5 means that the monitor is
activated when an OFF signal for unit code 5 is detected and deactivated by an
ON.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>n+</span></u><span
lang=EN-GB> : Entering a unit code followed by + means that the monitor is
activated on receipt of a ON signal for that unit code but will ignore the OFF
signal and as such will not be deactivated by this instruction. If you prepend
a '!' as per the previous definition it similarly inverts the mode, i.e. the ON
signal deactivates the monitor.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>n+&lt;seconds&gt;</span></u><span
lang=EN-GB> : As per the previous mode except that the monitor will deactivate
itself after the given number of seconds.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>n-</span></u><span
lang=EN-GB> : Entering a unit code followed by - means that the monitor is
deactivated on receipt of a OFF signal for that unit code but will ignore the
ON signal and as such will not be activated by this instruction. If you prepend
a '!' as per the previous definition it similarly inverts the mode, i.e. the
OFF signal activates the monitor.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>n-&lt;seconds&gt;</span></u><span
lang=EN-GB> : As per the previous mode except that the monitor will activate
itself after the given number of seconds.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><span lang=EN-GB>You can also
combine several of these expressions to by separating them with a comma to
create multiple circumstances of activation. However for now leave this blank.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>X10 Input Alarm String</span></b><span lang=EN-GB> -
This has the same format as the previous field but instead of activating the
monitor with will cause a forced alarm to be generated and an event recorded if
the monitor is Active. The same definition as above apply except that for
activated read alarmed and for deactivated read unalarmed(!). Again leave this
blank for now.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>X10 Output Alarm String</span></b><span lang=EN-GB> -
This X10 string also has the same format as the two above options. However it
works in a slightly different way. Instead of ZoneMinder reacting to X10 events
this option controls how ZoneMinder emits X10 signals when the current monitor
goes into or comes out of the alarm state. Thus just entering a number will
cause the ON signal for that unit code to be sent when going into alarm state
and the OFF signal when coming out of alarm state. Similarly 7+30 will send the
unit code 7 ON signal when going into alarm state and the OFF signal 30 seconds
later regardless of state. The combination of the X10 instruction allows
ZoneMinder to react intelligently to, and also assume control of, other devices
when necessary. However the indiscriminate use of the Input Alarm and Output
Alarm signals can cause some horrendous race conditions such as a light going
on in response to an alarm which then causes an alarm itself and so on. Thus
some circumspection is required here. Leave this blank for now anyway.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Finally, click 'Save' to add your
monitor.</span></p>
<p class=MsoPlainText><span lang=EN-GB>On the main console listing you will now
see your monitor and some of its vital statistics. Each column is also a link
and you get to other functions of ZoneMinder by choosing the appropriate one.
Describing them left to right, they are as follows.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The first column is the Id, clicking on
this gives you the opportunity to edit any of the settings you have just
defined your monitor to have.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The next column is the Name column,
clicking on this will give you the watch window where you can view a live feed
from your camera. This is described more fully below.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Following that are the Function and
Source columns, which may be represented in various colours. Initially both
will be showing red. This means that that monitor is not configured for any
function and as a consequence has no zmc (capture) daemon running on it. If it
were orange it would mean that a zmc daemon was running but no zma (analysis)
daemon and green means both are running. In our case it is red because we
defined the Monitor to have a Function of None so no daemons are required. To
get the daemons up and running you can either click on the source listed in the
Source column and edit the monitor properties or click on the Function listed
and change it to <20>Passive<76> or 'Active', which will ensure that one or more
appropriate daemons are started automatically.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Having a device status of red or orange
does not necessarily constitute an error if you have deliberately disabled a
monitor or have just put it into Passive mode.</span></p>
<p class=MsoPlainText><span lang=EN-GB>If you have several cameras (and thus
monitors) on a device the device status colour reflects all of them for the
capture daemon. So if just one monitor is active then the daemon is active for
both even if all the other monitors are switched off.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Once you have changed the function of
your monitor, the main console window will be updated to reflect this change.
If your device status does not go green then check your system and web server
logs to see if it's something obvious.</span></p>
<p class=MsoPlainText><span lang=EN-GB>You can now add further monitors if you
have cameras set up to support them. Once you have one or more monitors you may
notice the '&lt;n&gt; Monitors' title becomes a link which allows you to cycle
through a shot from each of your monitors (unless they are switched off) and
get a streamed or still image from each in turn. There may also be a link
titled <20>Montage<67> which allows you view all your enabled cameras simultaneously.
Be aware however that this can consume large amounts of bandwidth and CPU so
should not be used continuously unless you have resource to burn. </span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Defining Zones</span></h2>
<p class=MsoPlainText><span lang=EN-GB>The next important thing to do with a
new monitor is set up Zones for it to use. By default you'll already have one
created for you when you created your monitor but you might want to modify it
or add others. Click on the Zones column for your monitor and you should see a
small popup window appear which contains an image from your camera overlain
with a stippled pattern representing your zone. In the default case this will
cover the whole image and will be red. Beneath that will be a table containing
a listing of your zones. Clicking on either the relevant bit of the image or on
the Id or Name in the table will bring up another window where you can edit the
particulars for your Zones. As you can see there are quite a few, so now is a
good time to go through them. The options are as follows.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Name</span></b><span lang=EN-GB> <20> This is just a
label to identify the zone by. You can change this to be more representative if
you like, though it isn't used much except for logging and debugging.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Type</span></b><span lang=EN-GB> - This is one of the
more important concepts in ZoneMinder and there are five to choose from.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>Active</span></u><span
lang=EN-GB> : This is the zone type you'll use most often, and which will be
set for your default zone. This means that this zone will trigger an alarm on
any events that occur within it that meet the selection criteria. </span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>Inclusive</span></u><span
lang=EN-GB> : This zone type can be used for any zones that you want to trigger
an alarm only if at least one other Active zone has already triggered one. This
might be for example to cover an area of the image like a plant or tree which
moves a lot and which would trigger lots of alarms. Perhaps this is behind an
area you'd like to monitor though, in this case you'd create an active zone
covering the non-moving parts and an inclusive zone covering the tree perhaps
with less sensitive detection settings also. If something triggered an alarm in
the Active zone and also in the Inclusive zone they would both be registered
and the resulting alarm would be that much bigger than if you had blanked it
out altogether.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>Exclusive</span></u><span
lang=EN-GB> : The next zone Type is Exclusive. This means that alarms will only
be triggered in this zone if no alarms have already been triggered in Active
zones. This is the most specialised of the zone types and you may never use it
but in its place it is very useful. For instance in the camera covering my
garden I keep watch for a hedgehog that visits most nights and scoffs the food
out of my cats bowls. By creating a sensitive Exclusive zone in that area I can
ensure that a hedgehog alarm will only trigger if there is activity in that
small area. If something much bigger occurs, like someone walking by it will
trigger a regular alarm and not one from the Exclusive zone. Thus I can ensure
I get alarms for big events and also special small events but not the noise in
between.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>Preclusive</span></u><span
lang=EN-GB> : This zone type is relatively recent. It is called a Preclusive
zone because if it is triggered it actually precludes an alarm being generated
for that image frame. So motion or other changes that occur in a Preclusive
zone will have the effect of ensuring that no alarm occurs at all. The application
for this zone type is primarily as a shortcut for detecting general large-scale
lighting or other changes. Generally this may be achieved by limiting the
maximum number of alarm pixels or other measure in an Active zone. However in
some cases that zone may cover an area where the area of variable illumination
occurs in different places as the sun and/or shadows move and it thus may be
difficult to come up with general values. Additionally, if the sun comes out
rapidly then although the initial change may be ignored in this way as the
reference image catches up an alarm may ultimately be triggered as the image
becomes less different. Using one or more Preclusive zones offers a different
approach. Preclusive zones are designed to be fairly small, even just a few
pixels across, with quite low alarm thresholds. They should be situated in
areas of the image that are less likely to have motion occur such as high on a
wall or in a corner. Should a general illumination change occur they would be
triggered at least as early as any Active zones and prevent any other zones
from generating an alarm. Obviously careful placement is required to ensure
that they do not cancel any genuine alarms or that they are not so close
together that any motion just hops from one Preclusive zone to another. As
always, the best way is to experiment a little and see what works for you.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><u><span lang=EN-GB>Inactive </span></u><span
lang=EN-GB>: This final zone type is the opposite of Active. In this zone type
no alarms will ever be reported. You can create an Inactive zone to cover any
areas in which nothing notable will ever happen or where you get constant false
alarms that don't relate to what you are trying to monitor. An Inactive zone
can overlay other zone types and will be processed first.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><span lang=EN-GB>I mentioned
above that Inactive zones may be overlaid on other zones to blank out areas
however as a general principle you should try and make zones abut each other as
much as possible and not overlap. This helps avoid repeated duplicate
processing of the same area. For instance an Inclusive zone overlaying an
Active zone when all other settings are the same will always trigger when the
Active zone does which somewhat defeats the object of the exercise. One
exception to this is Preclusive zones. These may be situated within Active
areas are they are processed first and if small may actually save processing
time by preventing full analysis of the image.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Units</span></b><span lang=EN-GB> - This setting which
details whether certain of the following settings are in Pixels or Percent of
the frame. In general pixels is more precise whereas percentages are easier to
use to start with. If you change this setting all appropriate values below are
redisplayed in the correct context. A good tip would be to initially enter the
settings in Percent and then change to Pixels and refine any gaps. Repeated
flipping between the settings will cause rounding errors, as ZoneMinder in
general is not at home to Mr Floating Point for reasons of performance. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Min/Maximum X/Y</span></b><span lang=EN-GB> -
Following the units the next four settings define the bounds of the Zone in the
monitor frame and are self-explanatory with the exception of the fact that the
minima are at the top left of the frame and the maxima are at the bottom right
rather than in a Cartesian style.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Alarm Colour </span></b><span lang=EN-GB>- The option
after that allows you to specify what colour you'd like any alarms this zone
generates to be highlighted on images, pick anything you like that will show up
against your normal image background. This option is irrelevant for Preclusive
and Inactive zones and will be disabled For Inactive zones all subsequent
options are likewise disabled.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Alarm Threshold</span></b><span lang=EN-GB> - This
represents the difference in value between a pixel and its predecessor in the
reference image. For greyscale images this is simple but for colour images the
colours are averaged first, originally this used an RMS (root mean squared)
algorithm but calculating square roots mugs performance and does not seem to
improve detection. Using an average does means that subtle colour changes
without any brightness change may go undetected but this is not the normal
circumstance. There is also the option to use a more sophisticated integer
algorithm to calculate a Y (or brightness) value from the colours themselves.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Min/Maximum Alarmed Area</span></b><span lang=EN-GB> -
The following two settings define the minimum and maximum number of pixels that
exceed this threshold that would cause an alarm. If the units are Percent this
(and following options) refers to the percentage of the frame and not the zone,
this is so these values can be related between zones. The minimum value must be
matched or exceeded for an alarm to be generated whereas the maximum must not
be exceeded or the alarm will be cancelled. This is to allow for sudden changes
such as lights coming on etc, which you may wish to disregard. In general a
value of zero for any of these settings causes that value to be ignored, so you
can safely set a maximum to zero and it will not be used. The use of just a
number of pixels is however a very brute force method of detection as many
small events dispersed widely are not distinguished from a compact one.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Filter Width/Height</span></b><span lang=EN-GB> <20> To
improve detection of valid event ZoneMinder applies several other functions to
the data to improve its ability to distinguish interesting signals from
uninteresting noise. The first of these is a filter that removes any pixels
that do not participate in a contiguous block of pixels above a certain size.
These options are always pixels and should be fairly small, and an odd number.
Application of this filter removes any tiny or discontinuous pixels that don't
form part of a discrete block. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Min/Maximum Filtered Area</span></b><span lang=EN-GB>
<EFBFBD> These are two additional bounds that specify the limits of pixels that would
cause an alarm after this filtering process. As the filtering process can only
remove alarmed pixels it makes no sense for the Minimum and Maximum Filtered
Area to be larger than the equivalent Alarmed Area and in general they should
be smaller or the same.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Min/Maximum Blob Area</span></b><span lang=EN-GB> -
The next step in the analysis phase is the collation of any remaining alarmed
areas into contiguous blobs. This process parses the image and forms any pixels
that adjoin other alarmed pixels into one or more larger blobs. These blobs may
be any shape and can be as large as the zone itself or as small as the filtered
size. The Minimum and Maximum Blob Size settings allow you to define limits
within which an alarm will be generated. Of these only the Minimum is likely to
be very useful.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB>Min/Maximum Blobs </span></b><span lang=EN-GB>-
Finally the Minimum and Maximum Blobs settings specify the limits of the actual
number of blobs detected. If an image change satisfies all these requirements
it becomes an alarm event.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Viewing Monitors</span></h2>
<p class=MsoPlainText><span lang=EN-GB>As this point you should have one or
more Monitors running with one or more Zones each. Returning to the main
Console window you will see your monitors listed once more. The columns not
explored so far are the Monitor name, and various event totals for certain
periods of time. Clicking on any of the event totals will bring up a variation
on the same window but click on the Monitor name for now. On doing so up will
pop another window which should be scaled to contain a heading, an image from
your monitor, a status and a list of events if any have been generated.
Depending on whether you are able to view a streamed image or not the image
frame will either be this stream or a series of stills. You have the option to
change from one to the other (if available) at the centre of the top heading.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The image should be self-explanatory but
if it looks like garbage it is possible that the video configuration is wrong
so look in your system error log and check for or report anything unusual. The
centre of the window will have a tiny frame that just contains a status; this
will be 'Idle', 'Alarm' or 'Alert' depending on the function of the Monitor and
what's going on in the field of view. Idle means nothing is happening, Alarm
means there is an alarm in progress and Alert means that an alarm has happened
and the monitor is cooling down, if another alarm is generated in this time it
will just become part of the same event. These indicators are colour coded in
green, red and amber.</span></p>
<p class=MsoPlainText><span lang=EN-GB>By default if you have minimised this
window or opened other windows in front it will pop up to the front if it goes
to Alarm state. This behaviour can be turned off in configuration if required.
You can also specify a sound file in the configuration, which will be played
when an alarm occurs to alert you to the fact if you are not in front of your
computer. This should be a short sound of only a couple of seconds ideally.
Note that as the status is refreshed every few seconds it is possible for this
not to alert you to every event that takes place, so you shouldn't rely on it
for this purpose if you expect very brief events. Alternatively you can
decrease the refresh interval for this window in the configuration though
having too frequently refreshing may impact on performance.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Below the status is a list of recent
events that have occurred, by default this<span style="mso-spacerun: yes"><EFBFBD>
</span>is a listing of just the last 10 but clicking on 'All' will give you a
full list<span style="mso-spacerun: yes"><EFBFBD> </span>and 'Archive' will take you
to the event archive for this monitor, more on this<span style="mso-spacerun:
yes"><EFBFBD> </span>later. Clicking on any of the column headings will sort the
events appropriately.</span></p>
<p class=MsoPlainText><span lang=EN-GB>From here you can also delete events if
you wish. The events themselves are listed with the event id, and event name
(which you can change), the time that the event occurred, the length of the
event including any preamble and postamble frames, the number of frames
comprising the event with the number that actually contain an alarm in brackets
and finally a score. This column lists the average score per alarm frame as
well as the maximum score that any alarm frame had.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The score is an arbitrary value that
essentially represents the percentage of pixels in the zone that are in blobs
divided by the square root of the number of blobs and then divided by the size
of the zone. This gives a nominal maximum of 100 for a zone and the totals for
each zone are added together, Active zones scores are added unchanged,
Inclusive zones are halved first and Exclusive zones are doubled. In reality
values are likely to be much less than 100 but it does give a simple indication
of how major the event was.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Filtering Events</span></h2>
<p class=MsoPlainText><span lang=EN-GB>The other columns on the main console
window contain various event totals for your monitor over the last hour, day,
week and month as well as a grand total and a total for events that you may
have archived for safekeeping. Clicking on one of these totals or on the 'All'
or 'Archive' links from the monitor window described above will present you with
a new display. This is the full event window and contains a list of events
selected according to a filter which will also pop up in its own window. Thus
if you clicked on a 'day' total the filter will indicate that this is the
period for which events are being filtered. The event listing window contains a
similar listing to the recent events in the monitor window. The primary
differences are that the frames and alarm frames and the score and maximum
score are now broken out into their own columns, all of which can be sorted by
clicking on the heading. Also this window will not refresh automatically,
rather only on request. Other than that, you can choose to view events here or
delete them as before.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The other window that appeared is a
filter window. You can use this window to create your own filters or to modify
existing ones. You can even save your favourite filters to re-use at a future
date. Filtering itself is fairly simple; you first choose how many expressions
you'd like your filter to contain. Changing this value will cause the window to
redraw with a corresponding row for each expression. You then select what you
want to filter on and how the expressions relate by choosing whether they are
'and' or 'or' relationships. For filters comprised of many expressions you will
also get the option to bracket parts of the filter to ensure you can express it
as desired.</span></p>
<p class=MsoPlainText><span lang=EN-GB>There are several different elements to
an event that you can filter on, some of which require further explanation.
These are as follows, 'Date/Time' which must evaluate to a date and a time
together, 'Date' and 'Time' which are variants which may only contain the
relevant subsets of this, 'Weekday' which as expected is a day of the week. All
of the preceding elements take a very flexible free format of dates and time
based on the PHP strtotime function
(http://www.zend.com/manual/function.strtotime.php). This allows values such as
'last Wednesday' etc to be entered. I recommend acquainting yourself with this
function to see what the allowed formats are.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The other elements you can filter on are
all fairly self explanatory except perhaps for 'Archived' which you can use to
include or exclude Archived events. In general you'll probably do most
filtering on un-archived events. Once your filter is specified, clicking
'submit' will filter the events according to your specification. If you have
created a filter you want to keep, you can name it and save it by clicking
'Save'.</span></p>
<p class=MsoPlainText><span lang=EN-GB>If you do this then the subsequent
dialog will also allow you specify whether you want this filter automatically
applied in order to delete events or upload events via ftp to another server
and mail notifications of events to one or more email accounts. In most cases
you can specify your preferences for upload formats and email content during
configuration time (make sure you type '?' to get help on options). Emails and
messages (essentially small emails intended for mobile phones or pagers) have a
variety of tokens that can be substituted for various details of the event that
caused them. This includes links to the event view or the filter as well as the
option of attaching images or videos to the email itself. See the included
templates zmconfig_eml.txt and zmconfig_msg.txt for a fuller explanation of the
availability and meaning of these tokens.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Filtering is a powerful mechanism you
can use to eliminate events that fit a certain pattern however in many cases
modifying the zone settings will better address this. Where it really comes
into its own is generally in applying time filters, so for instance events that
happen during weekdays or at certain times of the day are highlighted, uploaded
or deleted.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Viewing Events</span></h2>
<p class=MsoPlainText><span lang=EN-GB>From the monitor or filtered events
listing you can now click on an event to view it in more detail. If you have
streaming capability you will see a series of images that make up the event.
You will also see a link to allow you to view the still images themselves. If
you don't have streaming then you will be taken directly to this page. The
images themselves are thumbnail size and depending on the configuration and
bandwidth you have chosen will either be the full images scaled in your browser
of actual scaled images. If it is the latter, if you have low bandwidth for
example, it may take a few seconds to generate the images. If thumbnail images
are required to be generated, they will be kept and not re-generated in future.
Once the images appear you can mouse over them to get the image sequence number
and the image score.</span></p>
<p class=MsoPlainText><span lang=EN-GB>You will notice for the first time that
alarm images now contain an overlay outlining the blobs that represent the
alarmed area. This outline is in the colour defined for that zone and lets you
see what it was that caused the alarm. Clicking on one of the thumbnails will
take you to a full size window where you can see the image in all its detail
and scroll through the various images that make up the event. If you have the
ZM_RECORD_EVENT_STATS option on, you will be able to click the 'Stats' link
here and get some analysis of the cause of the event. Should you determine that
you don't wish to keep the event, clicking on Delete will erase it from the
database and file system. Returning to the event window, other options here are
renaming the event to something more meaningful, refreshing the window to
replay the event stream, deleting the event, switching between streamed and
still versions of the event (if supported) and generating an MPEG video of the
event (if supported).</span></p>
<p class=MsoPlainText><span lang=EN-GB>These last two options require further
explanation. Archiving an event means that it is kept to one side and not
displayed in the normal event listings unless you specifically ask to view the
archived events. This is useful for keeping events that you think may be
important or just wish to protect. Once an event is archived it can be deleted
or unarchived but you cannot accidentally delete it when viewing normal
unarchived events.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The final option of generating an MPEG
video is still somewhat experimental and it's usefulness may vary. It can use
either the Berkeley MPEG encoder or the faster and new ffmpeg encoder. Either
of these will generate a short video, which will be downloaded to your browsing
machine to view. Due to the relatively slow frame rate that ZoneMinder will
capture at and the high minimum frame rate that the Berkeley encoder uses
videos created by this method will be very quick. However when using the ffmpeg
encoder, ZoneMinder will attempt to match the duration of the video with the
duration of the event. This has the useful effect of making the video watchable
and not too quick while having the unfortunate side effect of increasing file
size and generation time. Ffmpeg in particular has a particularly rich set of
options and you can specify during configuration which additional options you
may wish to include to suit your preferences.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Building an MPEG video, especially for a
large event, can take some time and should not be undertaken lightly as the
effect on your host box of many CPU intensive encoders will not be good.
However once a video has been created for an event it will be kept so
subsequent viewing will not incur the generation overhead. I will be the first
to admit that this area of the package is not particularly well implemented and
needs work, and probably a better encoder. Videos can also be included in
notification emails however care should be taken when using this option as for
many frequent events the penalty in CPU and disk space can quickly mount up.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>5.6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Options and Users</span></h2>
<p class=MsoPlainText><span lang=EN-GB>The final area covered by the tutorial
is the options and user section. If you are running in authenticated mode and
don<EFBFBD>t have system privileges then you will not see this section at all and if
you are running in un-authenticated mode then no user section will be
displayed.</span></p>
<p class=MsoPlainText><span lang=EN-GB>The various options you can specify are
displayed in a tabbed dialog with each group of options displayed under a
different heading. Each option is displayed with its name, a short description
and the current value. You can also click on the <20>?<3F> link following each
description to get a fuller explanation about each option. This is the same as
you would get from zmconfig.pl. A number of option groups have a master option
near the top which enables or disables the whole group so you should be aware
of the state of this before modifying options and expecting them to make any
difference.</span></p>
<p class=MsoPlainText><span lang=EN-GB>If you have changed the value of an
option you should then <20>save<76> it. A number of the option groups will then
prompt you to let you know that the option(s) you have changed will require a
system restart. This is not done automatically in case you will be changing
many values in the same session, however once you have made all of your changes
you should restart ZoneMinder as soon as possible. The reason for this is that
web and some scripts will pick up the new changes immediately but some of the
daemons will still be using the old values and this can lead to data
inconsistency or loss.</span></p>
<p class=MsoPlainText><span lang=EN-GB>As mentioned above, you may also see a
<EFBFBD>users<EFBFBD> tab. In this section you will see a list of the current users defined
on the system. You can also add or delete users from here. It is recommended
you do not delete the admin user unless you have created another fully
privileged user to take over the same role. Each user is defined with a name
and password (which is hidden) as well as an enabled setting which you can use
to temporarily enable or disable users, for example a guest user for limited
time access.</span></p>
<p class=MsoPlainText><span lang=EN-GB>There are also four values that define
the user permissions, these are <20>stream<61>, <20>events<74>, <20>monitors<72> and <20>system<65>
Each can have values of <20>none<6E>, <20>view<65> or <20>edit<69> apart from <20>stream<61> which has
no <20>edit<69> setting. These values cover access to the following areas; <20>stream<61>
defines whether a user is allowed to view the <20>live<76> video feeds coming from
the cameras. You may wish to allow a user to view historical events only in which
case this setting should be <20>none<6E>. The <20>events<74> setting determines whether a
user can view and modify or delete any retained historical events. The
<EFBFBD>monitors<EFBFBD> setting specifies whether a user can see the current monitor
settings and change them. Finally the <20>system<65> setting determines whether a
user can view or modify the system settings as a whole, such as options and
users or controlling the running of the system as a whole. As well as these
settings there is also a monitor ids setting that can be used for non-<2D>system<65>
users to restrict them to only being able to access streams, events or monitors
for the given monitors ids as a comma separated list with no spaces. If a user
with <20>monitors<72> edit privileges is limited to specific monitors here they will
not be able to add or delete monitors but only change the details of those they
have access to. If a user has <20>system<65> privileges then the monitors ids setting
is ignored and has no effect.</span></p>
<p class=MsoPlainText><span lang=EN-GB>That<EFBFBD>s pretty much is it for the tour.
You should experiment with the various setting to get the results you think are
right for your. Naturally, letting thousands of events build up is not good for
the database or your file system so you should endeavour to either prevent
spurious events from being generated in the first place or ensure that you
housekeep them strictly.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Have fun, please report any bugs or
features you'd like to see and hopefully ZoneMinder can be your camera
monitoring friend!</span></p>
<p class=MsoPlainText><span lang=EN-GB>Philip Coombes
(philip.coombes@zoneminder.com) - July 2003</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Troubleshooting<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>Life eh? Nothing ever works first time
does it? In case you are having problems here are some things to try. If these
don't work then feel free to get in touch and I'll see if I can suggest
something else. The best places to look for errors are in your system error log
(normally /var/log/messages on RedHat) and your web server log
(/var/log/httpd/error_log unless otherwise defined). There should be something
in one of those that gives you some kind of tip off.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Some things to check.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Device configuration. If you can't get
your cameras to work in ZoneMinder, firstly make sure that you have the correct
settings. Use xawtv or something like that to check for settings that work and
then run zmu -d &lt;device_no&gt; -q -v to get the settings. If you can't get
them to work with that then the likelihood is they won't work with ZoneMinder.
Also check the system logs (usually /var/log/messages) for any video
configuration errors. If you get some and you're sure they're not a problem
then switch off ZM_STRICT_VIDEO_CONFIG in zmconfig.pl and recompile and
reinstall.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Start simple. Begin with a single
monitor and single zone. You can run the zmc capture daemon from the command
line as 'zmc --device 0' (or whatever your video device is). If it returns
immediately there's a problem so check the logs, if it stays up then your video
configuration is probably ok. To get more information out of it use debug as
specified below. Also check that the shared memory segment has been created by
doing 'ipcs -m'. Finally, beware of doing tests as root and then trying to run
as another user as some files may not be accessible. If you're checking things
as root make sure that you clean up afterwards!</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Web server. Ensure that your web
server can serve PHP files. It's also possible that your php.ini file may have
some settings which break ZoneMinder, I'm not a PHP guru but setting safe mode
may prevent your PHP files from running certain programs. You may have to set
configuration to allow this. Also since the daemons are started by your web
server, if it dies or is shut down then the daemons may disappear. In this
version the daemons are run under the control of a script which should trap
expected signals but it is possible this doesn't cover all circumstances.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>One of the more common errors you can
see in the log files is of the form 'Can't shmget: Invalid argument'. Generally
speaking this is caused by an attempt to allocate an amount of shared memory
greater than your system can handle. The size it requests is base on the
following formula, ring buffer size x image width x image height x 3 (for 24
bits images) + a bit of overhead. So if for instance you were using 24bit
640x480 then this would come to about 92Mb if you are using the default buffer
size of 100. If this is too large then you can either reduce the image or
buffer sizes or increase the maximum amount of shared memory available. If you
are using RedHat then you can get details on how to change these settings at
http://www.redhat.com/docs/manuals/database/RHDB-2.1-Manual/admin_user/kernel-resources.html</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>You should be able to use a similar
process with other distributions to modify the shared memory pool without
kernel recompilations though in some cases this may be necessary. Note, this
error also sometime occurs if you have an old shared memory segment lying
around from a previous run that is too small. Use the ipcs and ipcrm commands
to check and remove it if necessary.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>If you get odd javascript errors and
your web console or other screens come up with bits missing then it's possible
that there is a problem with the PHP configuration. Since version 0.9.8
ZoneMinder has used short PHP open tags to output information, so instead of
something like this '&lt;?php echo $value ?&gt;', it will be something like
this '&lt;?= $value ?&gt;' which is easier and quicker to write as well as
being neater. More information about this directive can be seen at the
following location, <span class=MsoHyperlink><span style='color:blue'>http://www.php.<a
name="_Hlt42867874">n</a>et/manual/en/configuration.directives.php#ini.short-open-tag</span></span>.
However although by default most PHP installations support this form, some will
need to have it switched on explicitly. To do this you will first need to find
your php.ini file (do a 'locate php.ini' or 'find / -name php.ini'. Be aware
however that sometimes you might find more than one, so ensure you identify the
one that is actually being used. You will then need to find the line that
starts 'short_open_tag = ' and change the Off value to On. This wil correct the
problem. However in some cases you may have explicitly switched it off, so that
XML compliant documents can be more easily served, or you may even not have
permission to edit the file. In this case you can go into the web directory of
ZoneMinder and run 'sh retag.sh' which will replace all the short open tags in
the files themselves with the longer variant. You will obviously have to
remember to do this for each subsequent version of ZoneMinder that you install
as well.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Use debug. ZoneMinder has various
debug in it that by default will go into your system log (via syslog). These
will be of the form of</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;mso-list:skip'><span
lang=EN-GB>&quot;Sep 14 14:50:11 localhost zma-0[1975]: INF [Front: 221000 -
Processing at 4.26 fps ]&quot;</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;mso-list:skip'><span
lang=EN-GB>where the zma-0 part identifies the daemon and the device it is
running on. Entries with INF in are informational and not an error, if you see
ERR then it is one, though not all are fatal. You can prevent this information
from being emitted by setting the ZM_DBG_LEVEL_zmc environment variable to -1
or less once things are working. If you want to run any of the daemons from the
command line to test, setting ZM_DBG_PRINT to 1 will output the debug on the
console. You can also use the USR1 and USR2 signals to increase or decrease the
amount of debug being emitted.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Paths. I admit it, the various paths
in ZoneMinder are a bit of a nightmare. Make sure that they are all correct and
that permissions are such that the various parts of ZoneMinder can actually
run.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l9 level1 lfo2;tab-stops:36.0pt'><![if !supportLists]><i style='mso-bidi-font-style:
normal'><span lang=EN-GB style='font-family:"Courier New"'>o<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></i><![endif]><span lang=EN-GB>Missing perl modules. There are
various perl modules used by the various scripts. If you get errors about
missing ones, the easiest way to install them is to type the following (you will
probably need to be root),<i style='mso-bidi-font-style:normal'><o:p></o:p></i></span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><i style='mso-bidi-font-style:
normal'><span lang=EN-GB>perl -MCPAN -eshell<o:p></o:p></span></i></p>
<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-GB>this will
then (eventually, after some configuration if it<69>s your first time) present you
with a prompt. From there you can type install module, e.g. Archive::Zip and
the rest should be more or less automatic as it will chase any dependencies for
you. There may be some initial configuration questions it might ask you on
startup if you've never run it before and to speed things up I would not
install a new Bundle at this point (it can end up building you a whole new perl
if you<6F>re not careful) if it asks you but everything else should be quite
straightforward.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l2 level1 lfo3;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Unsupported palettes. ZoneMinder
currently is designed to use the simple palettes of greyscale and 24 bit as
well as now the YUV420P palette. This should cover most cameras but it's
possible that there are ones out there that might want to use more esoteric
formats that ZoneMinder doesn<73>t support. This will often show up as the capture
daemon being unable to set picture attributes. If this occurs try using
different palettes starting with greyscale and if you can't get anything to
work let me know and I'll try and add it.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l2 level1 lfo3;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>USB bus problems. If you have multiple
USB cameras on one bus then it can appear as if ZoneMinder is causing your
cameras to fail. This is because the bandwidth available to cameras is limited
by the fairly low USB speed. In order to use more than one USB camera with
ZoneMinder (or any application) you will need to inform the driver that there
are other cameras requiring bandwidth. This is usually done with a simple
module option. Examples are usb_alt=&lt;n&gt; for the OV511 driver and
cams=&lt;n&gt; for CPIA etc. Check your driver documentation for more details.
Be aware however that sharing cameras in this way on one bus will also limit
the capture rate due to the reduced bandwidth.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l2 level1 lfo3;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Incorrect libjpeg.a detection. It
seems to be the case that in some cases the library file libjpeg.a is reported
as missing even when apparently present. This appears to actually be down to
the g++ compiler not being installed on the host system. Since ZoneMinder
contains both C++ and C files you need to be able to compile both of these file
types and so usually need to ensure you have gcc and g++ installed (though they
are often the same binary).</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l2 level1 lfo3;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Httpd and zms memory leaks. It has
been reported by some users with RedHat 9 that the zms process fails to
terminate correctly when the controlled window is killed and also that it, and
it<EFBFBD>s associated httpd process, continue to grow in memory size until they kill
the system. This appears to be a bug in either the compiler or apache on RH9.
On other systems it may appear that zms is leaking and growing. However what
grows is the total and shared memory size while the non-shared memory size
stays constant. It's a little odd but I think what it happening is that as zms
picks images out of the shared memory ring buffer to display, as each slot is
read the size of that bit of memory is added to the shared memory total for the
process. As streamed images are not read consecutively it's a semi-random
process so initially most of the buffer slots are new and the shared memory
size grows then as time goes on the remaining unaccessed slots reduce until
once all have been read the shared memory use caps out at the same size as the
actual segment. This is what I would have expected it to be in the first place,
but it seems to do it incrementally. Then once this total is hit it grows no
further. As it's shared memory anyway and already in use this apparent leak is
not consuming any more memory than when it started.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l2 level1 lfo3;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Cambozola. There appears to be an
issue with recent versions of Cambozola that causes image corruption in the
stream. If you are getting this then I suggest you stick with version 0.22
which is available from the Downloads section of www.zoneminder.com.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Also, if you are using IE under Windows
and get lots of annoying clicks when various windows refresh then you'll need
to edit your registry and remove the value for
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer\Navigating\.current or
download the registry script to do it for you from
http://www.zoneminder.com/downloads/noIEClick.reg</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Change Log <o:p></o:p></span></u></h1>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.14</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Major new feature and important
bug-fixes.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Web configuration. Following many
requests and to make ZoneMinder easier to administer the configuration system
has been changed slightly. You should now still run zmconfig.pl to specify an
initial configuration but you now only need to answer the first few questions
to give a core set of options including the database options. The remainder of
configuration options can then be ignored to start with and all but the core
options will be written to the database. You can then view and modify these
options from the web interface and apply then without recompilation, which is
now only necessary if you change the core configuration.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Following a number of requests the
.sock file directory is now configurable in zmconfig.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Y channel bug. When using colour
cameras a motion detection problem was present if fast RGB images deltas
(ZM_FAST_RGB_DIFFS) was off. This was an overflow error in the calculation of
the Y channel and caused excessive image differences to be calculated. This has
now been fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>The use of the Term::Readkey perl
module in zmaudit.pl has been removed. This module had been removed from
zmconfig.pl previously but had lingered in this script.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>A bug was found in zmx10.pl causing a
crash if time delayed X10 events were used. This has now been fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Removed use of <20>zmu<6D> binary from
zmwatch.pl and zmx10.pl. Previously these scripts had used zmu to determine
last image time and alarm state information. The use of this script was a bit
overkill and the introduction of user permissions complicated matter slightly
so these scripts now access the shared memory directly.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Shared memory permissions. Following
introduction of a user permissions system the previous 777 mode for shared
memory was deemed insecure. Consequently from now on shared memory is only
accessible from the owner. This means that zmu will only work when run as root
or the web user unless you set it setuid where it should still be secure as it
will require authentication.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>All SQL buffers in the C++ code have
been enlarged. There was previously an issue with a buffer overflow on certain
occasions.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.13</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Beta version of several features and
fixes, never generally released.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Following a number of requests the
.sock file directory is now configurable in zmconfig.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Changed some of the core video calls
to be V4L2 compatible. This primarily involved opening the video devices and
memory maps as read/write and not just readonly.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Shared memory has now been
rationalised to prevent some common problems. Remember to shutdown the whole ZM
package before installing, from this version on it will remove all old shared
memory segments.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed not numeric comparison in
zmwatch which was causing, or appeared to be causing, some errors.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed zone image map bug for
percentage zones. When you had defined a zone in percentage terms, the imagemap
used to select it for editing was broken. This is now fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>New contrast/brightness etc
adjustments feature. This accessible from the Settings link on the monitor
window. It's fairly basic at present but should work for most types of cameras.
If you have any device or driver specific auto-brightness, auto-contrast etc
enabled the changes you make may appear to work but may be overridden by the
auto feature immediately so check for that if your changes do not appear to be
having an effect. Also if you have a number of cameras being multiplexed onto
one device then any changes here will probably affect all your cameras.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Some redundant window scrollbars
removed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added user and access control. If
enabled in config (ZM_OPT_USE_AUTH) then you will need to define and login as
ZM users. There will be one users already defined, with username 'admin' and
password 'admin'. This user is defined will full permissions and clicking on
the 'Options' link from the main console window will allow you to modify and
create users with various permission sets which hopefully will satisfy most
requirements. These users (except any defined with 'system' edit capability)
can be restricted to certain cameras by adding the monitor ids as a
comma-separated list (no spaces) to the appropriate field. Users limited to
specific monitors may not create or delete monitors even if defined with
monitor edit permissions.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Some windows now (optionally) use a
JavaScript timeout to refresh themselves rather than a refresh header. Since
refresh headers were interrupted if a link of the page was linked there were
previously various forced refreshes from child windows to restart the refresh
process. By using JS refresh timers which are not interrupted these extraneous
refreshes have been mostly eliminated.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.12</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Mostly bug-fixes with a couple of minor features.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Double first images. Fixed a problem
where the first image of an event was being recorded twice. I don<6F>t think this
was at the cost of any of the other images but one copy was an extra.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Made zmdc connect more intelligent. On
the suggestion of a couple of people I have made the zmdc.pl server spawning
and waiting a bit more intelligent. Rather than waiting a fixed (short) amount
of time, it now polls every second for a while, stopping if the connection is
made. Thanks to Todd McAnally for the initial suggestion.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added image view to events lists.
Again a partial implementation of a suggested feature. If you click on the
score column you will now get a snapshot of the event frame with the highest
score. This is to enable you to quickly see what the event was about without
having to watch the stream or view all the static images.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Make delta times variable precision. A
couple of problems had been reported where long events got negative durations.
This was due to an overflow in a time difference routine. This had been
operating on fixed precision allowing high precision for short deltas. This
routine has been changed to allow variable precision and events will now have
to be several days long to wrap in this way.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed round detection problem.
Although the existence or otherwise of the <20>round<6E> function is correctly
detected, the appropriate header file with the results of this test was not
included which was not helpful. This has been corrected. </span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed monitor rename bug. Renaming a
monitor did not correctly modify the events directory to reflect this. This has
now been fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>OPT_MPEG bug. A bug was reported (by
Fernando Diaz) where the results of the ZM_OPT_MPEG configuration variable was
not correctly imported into the scripts. This now happens as intended.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed zmvideo.pl event length bug. The
zmvideo.pl script which is used to generate video MPEG files tries to calculate
the correct frame rate based on the length of the event and the number of
frames it contains. Previously it did not take account of the pre and post
event frames and so passed a much shorter value to the mpeg encoder than it
should. This will only have affected short events encoded with ffmpeg but will
have resulted in much faster frame rates than necessary. This has now been
corrected to take the whole event length into account.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed remote camera memory leak. A
memory leak was reported when capturing with remote cameras, this is now fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Orientation. Added option to rotate or
invert captured images for cameras mounted at unusual angles.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed filter bug. A bug in the
zmfilter.pl script was detected and reported by Ernst Lehmann. This bug
basically meant that events were not checked as often as they should have been
and many may have been left out for filters that had no time component. The
script has now been updated to reflect Ernst<73>s suggested changes.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Stylesheet change. Previously the
stylesheet didn<64>t really work very well on Mozilla, Netscape and browsers other
than IE. This turned out to be because I was using HTML style comments in there
instead of C style ones. This has now been corrected so you should see the
correct styles. </span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Zmconfig.pl ReadKey. Thanks to a
ridiculously sensible suggestion from Carlton Thomas this module has been
removed from zmconfig.pl. Originally Term::ReadKey was in there for funky
single character unbuffered input but that has long since disappeared so just
regular perl input methods are used now. This removes one of the most
irritating features about ZoneMinder installs.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Delete monitor confirm. Due to some
unfortunate accidents by users, attempts to delete monitors will now require
confirmation.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l4 level1 lfo4;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Detect linmysqlclient.a. Added better
detection script into <20>configure<72> top spot when libmysqlclient.a is missing.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.11</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Various new features and fixes.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added stats view <20> If you have the
RECORD_EVENT_STATS directive set and are viewing a still image from an event
you can now view the statistics recorded for that frame. This tells you why
that frame triggered or participated in an alarm. This can be useful in tuning
the various motion detection parameters and seeing why events occurred.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Tabulated events <20> The main events
view is now tabulated to look a bit nicer.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>New video palette support <20> As well as
the existing greyscale and 24 bit RGB palettes, you can now choose YUV420P and
RGB565. Rewrote the palette/colours area a bit to enable support for other
palettes in the future if requested. Bear in mind though that YUV palettes are
converted into RGB internally so if you have the choice RGB24 may be faster as
it's the 'native' format used within. </span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added preclusive zones <20> Added a new
zone type, the preclusive zone. For full details see the relevant section above
but in brief this is a zone type that if alarmed will actually prevent an
alarm. This completes the pantheon of zone types I think.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed Mozilla JavaScript <20> Various
JavaScript functionality did not function on Mozilla, Netscape and other
browsers. This is now (hopefully) fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Allow image and mpegs to be attached
to emails <20> Added new tokens (%EI1%, %EIM% and %EV%) to the filter emails. This
allows the first alarm image, most highly scored alarm image and an alarm MPEG
to be attached to alarm notification emails. Use %EV% especially with care!</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed possible motion detection bug <20>
I found a few double declared local variables left over from the rewrite. This
may have affected the motion detection algorithm. Fixed now anyway.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Modified scoring <20> Alarm scoring has
been modified to give more granularity for smaller events. This will have the
effect of raising the scores for small events while large ones will still be
about the same.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed /cgi-bin path problem <20>
Previously you could specify the real path to you cgi-bin directory if you have
one but not the web path. You can now do both.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Improved video handling in browser <20>
The MPEG/video area of the web GUI had been a bit neglected and looked somewhat
ugly. This has now been improved to a degree and looks a bit nicer.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added ffmpeg support <20> Historically
ZoneMinder has only supported the Berkeley mpeg encoder which was slow and
rather limited. ZoneMinder now supports the ffmpeg encoder as well which is
much much faster and makes generation of MPEG videos at realistic frame rates
more of a reality. As ffmpeg has so many options and everyone will probably
want a different emphasis you can now also specify additional ffmpeg options
via zmconfig.pl.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Colourise greyscale image files <20> In
past versions, captured greyscale images were stored as JPEG files with a
corresponding greyscale colourspace. This saved a small amount of space but
meant that mpeg_encode had to do a conversion to encode them, and ffmpeg just
fell in a heap. Now you can optionally opt to have greyscale images saved as
full 24 bit colourspace images (they still look the same) at the price of a
small penalty in CPU and disk but allowing you to easily and quickly create
MPEG files. This option is one by default but can be switched off if you do not
require any MPEG encoding.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fast RGB diffs <20> Previously ZoneMinder
used quite a loose method for calculating the differences between two colour
images. This was basically averaging the differences between each of the RGB
components to get an overall difference. This is still the default but by
setting ZM_FAST_RGB_DIFFS to 'no' you can now make it calculate the Y (or
brightness value) of the pixels and use the difference between those instead.
This will be more accurate and responsive to changes but is may be slower
especially on old machines. There is a slight double whammy here if you have a
YUV palette for capture and set this option off as the image will be converted
to RGB and then partially converted back to get the Y value. This is currently
very inefficient and needs to be optimised.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed STRICT_VIDEO_CONFIG <20> Previously
this actually behaved the opposite of what it was supposed to, ie. if you
wanted it strict it wasn't and vice versa. Thanks to Dan Merillat for pointing
this one out.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l11 level1 lfo5;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Web colour change <20> I thought the old
red, green and amber text colours were just a bit too gaudy so I've toned them
down a bit. Hope you like them!</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.10</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Many bug-fixes and major feature
enhancements.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Configure <20>round<6E> bug - Fixed a
problem with the configure script that didn't<span style="mso-spacerun: yes"><EFBFBD>
</span>detect if the 'round' function was already declared before try to do it
itself.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Low event id bug - Fixed bug where
events with an id of &lt; 1000 were being cleaned up by zmaudit.pl by mistake.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Source file restructuring - The source
files have been broken up and renamed extensively to support the first stage of
the code being straightened out. Likewise the class structure has been
rationalised somewhat. The php file names have also changed in some cases so it
might be best to delete all your php and css files from the zone minder install
directory first as the old ones won't be overwritten and will be left behind.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Streamed cycle view -<span
style="mso-spacerun: yes"><EFBFBD> </span>The monitor cycle view (the one where each
monitor is displayed sequentially) now supports streams as well as stills.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>New <20>montage<67> view - Added a montage
view showing all your cameras simultaneously either streaming or stills. The
width of this window (in terms of number of monitors) is a configuration
option.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Network camera support - A major
change in this version is support for remote or network cameras. This is
currently implemented as series of http grabs of stills rather than being able
to break up motion jpeg streams. However frame rates of from 2-10 should be
achievable depending on your network proximity to the cameras.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Option BGR-&gt;RGB swap - Added the
option to switch on or off the inversion of RGB to BGR for local cameras. It is
on by default to maintain compatibility with previous releases.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>zmu suspend alarm option - Added new
-n option to zmu to effectively suspend alarm detection for a monitor. This is
intended for short term use and to support PTZ cameras where alarm detection is
desired to be suspended while the camera changes orientation or zoom level.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>FPS limiting - Added a new option to
monitors to add a maximum capture rate. This allows you to limit the amount of
hits a network camera gets or to reduce the system load with many cameras. It
also works with multi-port cards and limiting the capture rate on one camera
allows the spare FPS to be allocated to other devices. For instance with two
cameras and no throttle, I get about 4FPS each. Throttling one to 2FPS allows
the other to operate at 6FPS so you can allocate your capture resources
accordingly. This limiting can be disabled while alarms are occurring as a
global option in zmconfig.pl.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Alarm reference update - Added option
to not blend alarmed images into the reference image. See the help in
zmconfig.pl for caveats.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Disappearing monitors - Fixed the
disappearing monitor problem in the console view where monitors with no events
were randomly not being shown.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Clean and tidy - Cleaned up a load of
compiler warnings and miscellanea to ensure a cleaner happier build.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Streamed image headers - Made all
headers in streamed images have full CRLF termination which will hopefully now
prevent the problems with broken streams that had existed mostly with Mozilla (and
hopefully won't break anything else).</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Expire streams - Added expiry headers
to streamed images so they will always display fully.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Event navigation - Added next, prev,
delete &amp; next, delete &amp; prev navigation to events to allow you to
quickly review events in sequence as had been requested by a number of people.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>USR blocking <20> The debug USR signals
were not being blocked properly leading to nasty effects in zmc mostly.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>zmfilter execution <20> Previously
zmfilter execution was not synchronised with the monitor state or the analysis
daemon leading to it sometimes being run unnecessarily. From now on the
zmfilter process will only run when a monitor is active and so actually
potentially generating alarms.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>zmdc short statuses <20> Removed the
logging of the short status values that zmdc.pl returns to it<69>s clients which
had been clogging up the log file.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l6 level1 lfo6;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Bugs and pieces - Fixed various
bug(ettes) that I came across that that I don't think had been reported or
noticed so I don<6F>t think we need to talk about them here do we.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.9</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Mainly bug-fixes and minor feature
enhancements.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added zmu -q/--query option - There is
now a new query option for zmu. When combined with -d it gives the config of
the device and when used with -m it dumps the current settings for the monitor
and zones. Mostly useful for bug reporting. The previous version of zmu used
with just -d gave this information for a video device by default. This now
requires the -q option also to bring into line with it's -m equivalent.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added creation of events directory -
Previously the 'events' directory was not created on install, this has been
fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Can now retag PHP files if necessary -
Version 0.9.8 was the first version to use short_open_tags in the PHP files.
This caused grief to some people so this script will put them back to the long
verion.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Frame and event lengths fractional - A
new field has been added to the Frames table. This is 'Delta' and is a
fractional number of seconds relative to the event start time. This is intended
to support the real-time playback of events rather than just 'as fast as
possible' or with a configured delay as at present. The event length is now
also fractional.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Corrected extraneous Width to be
Height - The last version of zmu included a Width comment which should have
been height.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Changed colour depth to bits - Having
colour depths expressed in bytes has caused no end of problems. This is now
changed to be bits and can be changed via a dropdown to limit what can be
entered. Don't forget to run the zmalter script to update your DB.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Renamed terminate to zm_terminate -
The use of 'terminate' in zmc.cpp caused a conflict on some systems so renamed
it to something more specific.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Zone deletion problem - A problem was
found such that when deleting zones the appropriate daemons were not being
asked to restart daemons correctly.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Console changes - The current version
number is now displayed in the console. A refresh button has also been added
along with a minor reorg.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added delete button enable to checkAll
- Using the 'Check All' button in the main monitor window previously did not
enable the delete button. This is now fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l5 level1 lfo7;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Reload on click - In previous versions
the console window would reload if a monitor window for example was clicked.
Thsi was removed in the last version which meant that sometimes the console
never go refreshed as it's timing loop was broken. This functionality has now
been reinstated.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.7.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.8</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Several new features and bug-fixes</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Upgrade note - If you have installed
0.9.7 and wish to save your configuration then copy your existing zmconfig.txt
file over to your 0.9.8 directory and before running zmconfig.pl.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added multiple options to zmu - You
can now give multiple options to zmu and get all the responses at once. However
this is currently in a deterministic order and not related to the order you
give them.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added -v/--verbose option to zmu - Zmu
has been made more human friendly though it still remains primarily for daemon
use. Giving the -v or --verbose option prints out a bit more as a response to
each command.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Add -d/--device to zmu - This option
is designed to allow you to get your video device working with another
application such as xawtv and then use zmu -d to print out the settings it<69>s
using</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>(especially with the -v option). These
options can then be used as a starting point for your ZoneMinder configuration.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added FPS in status field - The status
field in the web monitor views now contains an FPS setting as well as the
status.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Zmconfig changes - zmconfig handles
missing options better and rewrites config file even in non-interactive mode.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed config problems in zmcfg.h -
Some config was not being set up correctly in zmcfg.h.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Zmwatch now works on image delay and
not fps - Previously the zmwatch daemon detected capture daemon failure by
trying to use the FPS setting. This was imprecise and prone to false readings.
It now uses the time delay since the last captured image.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added zmpkg.pl and zm scripts - There
are now two new scripts. zmpkg.pl is in charge of starting and stopping
ZoneMinder as a whole package and zm is designed to be (optionally) installed
into your init.d directory to use ZoneMinder as a service.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed bug in Scan mode - The monitor
cycle or scan mode had stopped working properly due to images not being
generated. This is now fixed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Revamped the console window slightly -
The console window has now been reformatted slightly to give more and better
information including server load.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added email and messaging to filters -
Filters now allow you to send emails or messages (basically just short emails
intended for mobile devices) on alarms. The format and possible content for
these emails is in zmconfig_eml.txt and zmconfig_msg.txt.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Made zmdc more aggresive in killing
old processes - The zmdc.pl daeamon will now kill any ZoneMinder processes it
finds on startup or shutdown to prevent orphans from being left around.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Configuration changes - Previously
there were a lot of files generated by configure. Now only zmconfig.pl is
generated this way and all the other configuration files are created by
zmconfig.pl (from .z files) to centralise configuration more.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed cambolzola opt bug - There was a
bug in the Cambozola options, I can't remember what it was but it's fixed!</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Retaint arguments in zmdc.pl - In some
installations zmdc was complaining about tainted arguments from the socket.
These are now detainted prior to sending and after receiving.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Forced alarms - You can now force
alarms when looking at the monitor window should anything catch your attention.
You have to remember to switch them off as well though.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Looser video configuration - Some
video configuration errors can now be ignored via the STRICT_VIDEO_CONFIG
option.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l12 level1 lfo8;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Monitor window refresh on alarm - When
the monitor window is active and an alarm has occurred the most recent alarms
list is immediately refreshed to show it.</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.9.7</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Yes, a big jump in release number but a
lot of changes too. Now somewhat more mature, not really an alpha any more, and
a lot of bugs fixed too. </span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added zmconfig.pl script to help with
configuration.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Revamped to work better with configure
scripts</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Monitors now have more configuration
options, including some that were statically defined before such as location
and format of the image timestamps.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Removed Alarms table from schema as
not required, never was actually...</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added a number of new scripts, see the
scripts directory</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added Fast delete to PHP files. This
allows the web interface to only delete the event entries themselves for speed
and then have the zmaudit script periodically tidy up the rest.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added event filter to enable bulk
viewing, upload or deletion of events according to various attributes. Filter
can be saved and edited.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added last event id to shared memory
for auto-filtering etc.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Changed zmu -i option to write to
monitor named image file.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Made shared memory management somewhat
more sensible.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Now stores DB times as localtime
rather than UTC avoiding daylight saving related bugs.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed bug with inactive zones and
added more debug.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Changed main functions to return int.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added help and usage to zmu.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed browser acceptance problem, more
easily defaults to HTML.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Split out the PHP files into a bunch
with specific functions rather than one monolithic one.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed NetPBM paths and changed _SERVER
to HTTP_SERVER_VARS.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added HUP signal on zone deletion.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added NETPBM_DIR and conditional
netpbm stuff.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Removed hard coded window sizes, all
popup window dimensions can be specified in zmconfig.php</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Changed form methods to 'get' from
'post' to avoid resubmit warnings all the time.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Added conditional sound to alarm on
web interface.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Fixed syntax error when adding default
monitor.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Some of the web views have changed
slightly to accommodate the separate events view.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l7 level1 lfo9;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>And much much more, probably...</span></p>
<h2><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>7.9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Release 0.0.1</span></h2>
<p class=MsoPlainText><span lang=EN-GB>Initial release, therefore nothing new.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>8.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>To Do<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>Seeing as ZoneMinder is so young and has
kind of evolved rather than being planned there are a bunch of improvements and
enhancements still to do, here is just a sample.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Perhaps split out devices - I think
devices should probably be a separate table and class from monitors. Not
critical but would represent a better model.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Comments - Needs many more, but that's
just me I'm hopeless at commenting things out. I'll get round to it soon though
honest! You're lucky to even get this document.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Optimised zones - The zones could do
with being sorted out a bit to optimise the processing of overlapping ones, at
the moment you can waste resource unless your zones are kept very tidy.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Create zones using server side image
maps - This would make it easier to precisely define and see where your zone is
going to go. Not critical but handy but a bugger to do.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Zone Definitions - Allow zones to be
defined according to a colour coded bitmap or as polygons. Currently all zones
are rectangular this would add a bit of flexibility. Would need a bit of a
rewrite though. This will incur a slight penalty on startup and a very slight
one on processing for all reasonably shaped zones.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Security - I think I need to give the
php file a bit of a good going over as I'm sure it's not done in the most
secure way regarding passing things onto command line, exposing file paths and
other stuff. I'm a bit of a PHP novice, as I'm sure you can tell so might need
help here. I should have done it in perl!</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Mouseover help - A bit more help
popping up when you mouseover things would be handy. A bit more help full stop
actually.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>WAP interface - A bit of a crusade of
mine I'm afraid. I'd like to put a WML interface on to allow you to view event
listing and perhaps the most significant image from each event on your phone.
Also simple management. From version 0.9.7 there is a very basic crude initial
version that probably won't work with your phone but its there as a testbed.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Automatic device configuration - Video
4 Linux supports various device queries, it should be possible to get most of
the device capability information from the device itself. The zmu utility does
this now but it's not yet integrated into the web pages.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Extend the API. Well ok it's not
really got an API yet but the image data is held in shared memory in a very
simple format. In theory you could use the capture daemon to gab the images and
other things could read them from memory or the analysis daemon could read
images from elsewhere. Either way this should be done through an API, and would
need a library I think. Also the zmu utility could probably do a whole lot more
to enable other things to manage when the daemons become active etc.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Access control should probably be
built in rather than relying on .htaccess etc. This is a frequently requested
feature (FRF) and must be done soon.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Create .rpm packages (as there can be
several dependencies) and maybe other types of packages also, e.g. for Debian
distributions.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Allow ZoneMinder to 'train' itself by
allowing the user to select events that are considered important and to discard
those that should be ignored. ZoneMinder will interpolate, add a bit of magic,
and recommend settings that will support this selection automatically
thereafter. The hooks for this are already in to some extent.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Add quotes to all PHP array
references. I should have done it in the first place but I'm a perl person
really and it kind of bugs me that you have to.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l3 level1 lfo10;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Add sound support to allow a captured
audio channel to be associated with a video device.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>9.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Bugs<o:p></o:p></span></u></h1>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l10 level1 lfo11;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>I'm not sure if this is a bug or by
design but the timestamp is added to the image by the capture daemon. I _think_
this isn't necessary as it may contribute to alarms, plus the time is
associated with the image anyway. So I think this should be moved to the
analysis daemon.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l10 level1 lfo11;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>I suspect there may be a bug in
zmaudit.pl if your monitor names have spaces in them. I've not been able to
reproduce it but to be on the safe side don't put spaces in your Monitor names.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l10 level1 lfo11;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>When opening a link to an event etc
from a notification email the window that is opened is just a regular browser
window and not in the context of a proper ZoneMinder web interface. Thus it
comes up too big usually (not a major issue) and also things like 'Delete'
don't work as it wants to do things to its parent (which is more of a major
issue).</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l10 level1 lfo11;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>The .sock files used by the *nix
sockets I suspect may have the odd permission issue now and again. I think
everything recovers from it but it needs checking out.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Probably bucket loads more, just fire
them at me.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>10.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>Non-Bugs<o:p></o:p></span></u></h1>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l1 level1 lfo12;tab-stops:36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span lang=EN-GB>Yes, those are tabs in the indents; I
like tabs so don't go changing them to spaces or else. Also yes I also like my
opening braces on their own line most of the time, what's the point of brackets
that don't line up?</span></p>
<p class=MsoPlainText><span lang=EN-GB>Everything else that isn't definitely
broken is probably deliberate, or was once anyway.</span></p>
<h1><![if !supportLists]><span lang=EN-GB style='text-decoration:none;
text-underline:none'>11.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><![endif]><u><span lang=EN-GB>License<o:p></o:p></span></u></h1>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder is released under the GPL,
see below.</span></p>
<p class=MsoPlainText><span lang=EN-GB><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
<p class=MsoPlainText><span lang=EN-GB>ZoneMinder README, $Date: 2003/06/12
14:50:31 $, $Revision$</span></p>
<p class=MsoPlainText><span lang=EN-GB>Copyright (C) 2003<span
style="mso-spacerun: yes"><EFBFBD> </span>Philip Coombes</span></p>
<p class=MsoPlainText><span lang=EN-GB>This program 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 2 of the
License, or (at your option) any later version.</span></p>
<p class=MsoPlainText><span lang=EN-GB>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.<span
style="mso-spacerun: yes"><EFBFBD> </span>See the GNU General Public License for more
details.</span></p>
<p class=MsoPlainText><span lang=EN-GB>You should have received a copy of the
GNU General Public License along with this program; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA<span
style="mso-spacerun: yes"><EFBFBD> </span>02111-1307, USA.</span></p>
</div>
</body>
</html>