zoneminder/README.html

4108 lines
189 KiB
HTML
Raw Normal View History

<html 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.11</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>490</o:TotalTime>
<o:Created>2003-04-23T12:47:00Z</o:Created>
<o:LastSaved>2003-04-23T12:47:00Z</o:LastSaved>
<o:Pages>26</o:Pages>
<o:Words>11646</o:Words>
<o:Characters>-32766</o:Characters>
<o:Company>Triornis</o:Company>
<o:Version>9.2720</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>90</w:Zoom>
<w:DoNotHyphenateCaps/>
<w:PunctuationKerning/>
<w:DocumentVariables>
<w:dgnword-docGUID>{EE1F7E29-843F-4EEE-90F5-BC0B80599480}</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;
font-size:12.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;
mso-fareast-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:l16 level1 lfo8;
tab-stops:list 22.7pt;
font-size:14.0pt;
font-family:Arial;
mso-font-kerning:16.0pt;
mso-ansi-language:EN-GB;
mso-fareast-language:EN-GB;
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:l16 level2 lfo8;
tab-stops:list 36.15pt;
font-size:12.0pt;
font-family:Arial;
mso-ansi-language:EN-GB;
mso-fareast-language:EN-GB;
text-decoration:underline;
text-underline:single;}
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-outline-level:1;
font-size:16.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;
mso-fareast-language:EN-GB;
font-weight:bold;
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;}
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;
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;
mso-fareast-language:EN-GB;}
pre
{margin:0mm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
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-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:33651922;
mso-list-type:hybrid;
mso-list-template-ids:1386529980 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:38554491;
mso-list-type:hybrid;
mso-list-template-ids:16669238 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:213347980;
mso-list-type:hybrid;
mso-list-template-ids:-1589062752 278397530 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
{mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:108.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:216.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:324.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l3
{mso-list-id:244655531;
mso-list-type:hybrid;
mso-list-template-ids:1982658052 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4
{mso-list-id:284505362;
mso-list-type:hybrid;
mso-list-template-ids:777000994 -1343301464 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l4:level1
{mso-level-start-at:17;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";}
@list l4:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l4:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l4:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l4:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5
{mso-list-id:362874733;
mso-list-type:hybrid;
mso-list-template-ids:1821699786 -1422092430 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l5:level1
{mso-level-start-at:17;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";}
@list l5:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l5:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l5:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l5:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6
{mso-list-id:369378158;
mso-list-type:hybrid;
mso-list-template-ids:2126906364 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l6:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l6:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7
{mso-list-id:542638787;
mso-list-type:hybrid;
mso-list-template-ids:1239064078 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l7:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l7:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l7:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l7:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l8
{mso-list-id:593510658;
mso-list-type:hybrid;
mso-list-template-ids:1841981750 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l8:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l8:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l8:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l8:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l8:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l8:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l8:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l8:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l8:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l9
{mso-list-id:648556373;
mso-list-type:hybrid;
mso-list-template-ids:1087674314 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l9:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l9:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l9:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l9:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l9:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l9:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l9:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l10
{mso-list-id:728111319;
mso-list-type:hybrid;
mso-list-template-ids:1497161928 921070896 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l10:level1
{mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:108.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l10:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:216.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l10:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l10:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:324.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l11
{mso-list-id:821702224;
mso-list-type:hybrid;
mso-list-template-ids:-239544898 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l11:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l11:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l11:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l11:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l11:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l11:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12
{mso-list-id:833178757;
mso-list-type:hybrid;
mso-list-template-ids:-687046962 -1932634610 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l12:level1
{mso-level-start-at:17;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";}
@list l12:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l12:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l12:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l12:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l12:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l13
{mso-list-id:939720998;
mso-list-type:hybrid;
mso-list-template-ids:2041722336 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l13:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l13:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l13:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l13:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l13:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l13:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l13:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l13:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l13:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l14
{mso-list-id:947156927;
mso-list-type:hybrid;
mso-list-template-ids:1386529980 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l14:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l14:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l14:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l14:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l14:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l15
{mso-list-id:1018462143;
mso-list-type:hybrid;
mso-list-template-ids:-1750326926 -1230595170 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l15:level1
{mso-level-tab-stop:51.75pt;
mso-level-number-position:left;
margin-left:51.75pt;
text-indent:-33.75pt;}
@list l15:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:108.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l15:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:216.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l15:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:324.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l16
{mso-list-id:1049647595;
mso-list-template-ids:96079340;}
@list l16:level1
{mso-level-style-link:"Heading 1";
mso-level-tab-stop:22.7pt;
mso-level-number-position:left;
margin-left:22.7pt;
text-indent:-22.7pt;}
@list l16:level2
{mso-level-style-link:"Heading 2";
mso-level-text:"%1\.%2\.";
mso-level-tab-stop:36.15pt;
mso-level-number-position:left;
margin-left:21.75pt;
text-indent:-21.6pt;}
@list l16:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:54.15pt;
mso-level-number-position:left;
margin-left:43.35pt;
text-indent:-25.2pt;}
@list l16:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:90.15pt;
mso-level-number-position:left;
margin-left:68.55pt;
text-indent:-32.4pt;}
@list l16:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:126.15pt;
mso-level-number-position:left;
margin-left:93.75pt;
text-indent:-39.6pt;}
@list l16:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:144.15pt;
mso-level-number-position:left;
margin-left:118.95pt;
text-indent:-46.8pt;}
@list l16:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:180.15pt;
mso-level-number-position:left;
margin-left:144.15pt;
text-indent:-54.0pt;}
@list l16:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:216.15pt;
mso-level-number-position:left;
margin-left:169.35pt;
text-indent:-61.2pt;}
@list l16:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:234.15pt;
mso-level-number-position:left;
margin-left:198.15pt;
text-indent:-72.0pt;}
@list l17
{mso-list-id:1250654822;
mso-list-type:hybrid;
mso-list-template-ids:1578805184 -724901632 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l17:level1
{mso-level-start-at:17;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";}
@list l17:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l17:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l17:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l17:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l17:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l17:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l17:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l17:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l18
{mso-list-id:1319650511;
mso-list-type:hybrid;
mso-list-template-ids:1386529980 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l18:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l18:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l18:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l19
{mso-list-id:1384870598;
mso-list-type:hybrid;
mso-list-template-ids:1902658530 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l19:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l19:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l19:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l19:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l19:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l19:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l19:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l19:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l19:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l20
{mso-list-id:1457866578;
mso-list-type:hybrid;
mso-list-template-ids:2056436186 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l20:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l20:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l20:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l20:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l20:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l20:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l20:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l20:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l20:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l21
{mso-list-id:1500653936;
mso-list-type:hybrid;
mso-list-template-ids:-961795120 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l21:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l21:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l21:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l21:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l21:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l21:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l21:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l21:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l21:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l22
{mso-list-id:1549877389;
mso-list-type:hybrid;
mso-list-template-ids:1810383004 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l22:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l22:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l22:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l22:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l22:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l22:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l22:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l22:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l22:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l23
{mso-list-id:1645697949;
mso-list-type:hybrid;
mso-list-template-ids:-164224078 -1302528992 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l23:level1
{mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:108.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l23:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:216.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l23:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:324.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l24
{mso-list-id:1783259188;
mso-list-type:hybrid;
mso-list-template-ids:155197542 -1491403064 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l24:level1
{mso-level-start-at:17;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Arial;
mso-fareast-font-family:"Times New Roman";}
@list l24:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l24:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l24:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l24:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l24:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l24:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l24:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l24:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l25
{mso-list-id:1837912042;
mso-list-type:hybrid;
mso-list-template-ids:-910136818 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l25:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l25:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l25:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l25:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l25:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l25:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l26
{mso-list-id:1854879109;
mso-list-type:hybrid;
mso-list-template-ids:-1128526326 67698691 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l26:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l26:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l26:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l26:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l26:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l26:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l26:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l26:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l26:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l27
{mso-list-id:1927223204;
mso-list-type:hybrid;
mso-list-template-ids:261902230 1284394224 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l27:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l27:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l27:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l27:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l27:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l27:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l27:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l27:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l27:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l28
{mso-list-id:2123767725;
mso-list-type:hybrid;
mso-list-template-ids:728815586 1653494972 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l28:level1
{mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:108.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l28:level4
{mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:216.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l28:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l28:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:324.0pt;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0mm;}
ul
{margin-bottom:0mm;}
-->
</style>
</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.11<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 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
he 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>
<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 the Berkeley MPEG encoder, if you don't have it
don't worry 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. There are also various perl modules that you may need that vary depending
on which options you choose on installation.</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 other browser that
supports image streaming natively I recommend you get the excellent Cambozola
java applet from <span class=MsoHyperlink>http://www.charliemouse.com/code/cambozola/</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 BTTV cards 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 much. There will soon be a
list of devices that are definitely known to work on the web site. Please let
me know if your camera works or not. You do need to have Video 4 Linux
installed. I've not got 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 will be document on the web site
describing what users have had to do to get it working with very soon, though I
can email additional information if requested. Please give me feedback on other
distributions.</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><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><span lang=EN-GB>./configure <20>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><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><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 files into the current
build directory before you run zmconfig.pl and it will use your preferences as
a basis for generating the new ones.</span></p>
<p class=MsoPlainText><span lang=EN-GB>If you get errors such as 'Can't locate
Term::ReadKey.pm' when trying to run zmconfig.pl then this module is missing
from your system. See the troubleshooting section for details of how to install
it.</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. For a new installation the simplest way to create your database and users
is as follows,</span></p>
<p class=MsoPlainText><i><span lang=EN-GB>mysql mysql &lt; zmschema.sql<o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>mysql mysql<o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>grant select,insert,update,delete on
&lt;your database name&gt;.* to '&lt;your first <o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>username&gt;' identified by '&lt;your
first password&gt;';<o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>grant select on &lt;your database
name&gt;.* to '&lt;your second username&gt;' identified by <o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>'&lt;your second password&gt;'<o:p></o:p></span></i></p>
<p class=MsoPlainText><i><span lang=EN-GB>quit<o:p></o:p></span></i></p>
<p class=MsoPlainText><i><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.</span></p>
<p class=MsoPlainText><span lang=EN-GB>Then just type <i>'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><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><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><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><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. 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><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><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><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><span lang=EN-GB>zmfilter.pl</span></b><span
lang=EN-GB> - This script controsl the execution of saved filters and will
be<span style="mso-spacerun: yes"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>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><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><span lang=EN-GB>zmx10.pl</span></b><span
lang=EN-GB> - This is an option 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.</span></p>
<p class=MsoPlainText style='margin-left:18.0pt'><b><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><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 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><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. ZoneMinder will then
start up when your machine reboots and can be controlled (by the root user) by
doing <i>'service zm start'</i> or <i>'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>To start with you should 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
<EFBFBD>start<EFBFBD> or <20>stop<6F> link depending on the current state. Below that are various
other links including a set allowing you to configure your bandwidth. This
enables you to optimise your settings depending on where you are, the actual
values relating to this are defined at the op of the zm_config.php file. 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 is a <20>Report Bug<75> email link
which you can use to easily report any problems (or successes!) and a couple of
other links to the left which will be covered below.</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;&nbsp;&nbsp;&nbsp;&nbsp;&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 and then run 'zmu -d
&lt;device_no&gt; -q -v' to get a dump of the settings. You can then enter
these values into the video related options of the monitor configuration panel.
Note that 'device_no' 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><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><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 go active on receipt of X10 commands. Generally you'll want 'Active'
but for now leave this at 'None'. </span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b><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 show next.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b><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><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><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 <a
href="http://camserver.home.net:8192/cameras/camera1.jpg">http://camserver.home.net:8192/cameras/camera1.jpg</a>
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.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b><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><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><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 print 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><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><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><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><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.</span></p>
<p class=MsoPlainText style='margin-left:27.0pt'><b><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 option in zmconfig.pl 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><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><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><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 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><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><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;&nbsp;&nbsp;&nbsp;&nbsp;&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><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><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><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><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><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><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><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><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><span lang=EN-GB>Min/Maximum
Filtered Area</span></b><span lang=EN-GB> <20> 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><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><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;&nbsp;&nbsp;&nbsp;&nbsp;&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"><3E> </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;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&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>
<p class=MsoPlainText><span lang=EN-GB>That 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)
- April 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 (probably
/var/log/messages on RedHat) and your web server log
(/var/log/httpd/error_log). 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:
l8 level1 lfo27;tab-stops:list 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:
l8 level1 lfo27;tab-stops:list 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:
l8 level1 lfo27;tab-stops:list 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:
l8 level1 lfo27;tab-stops:list 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</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l8 level1 lfo27;tab-stops:list 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>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:
l8 level1 lfo27;tab-stops:list 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:
l8 level1 lfo27;tab-stops:list 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, <a
href="http://www.php.net/manual/en/configuration.directives.php#ini.short-open-tag">http://www.php.net/manual/en/configuration.directives.php#ini.short-open-tag</a>.
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:
l8 level1 lfo27;tab-stops:list 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'><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'><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 DLVL_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 DBG_PRINT to 1 will output the debug on the console and setting
DLVL_zmc (or DLVL_zma etc) to a number between 0 and 9 will emit progressively
more debug though there's not a lot in there at present.</span></p>
<p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
l8 level1 lfo27;tab-stops:list 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>6. 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:
l8 level1 lfo27;tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-GB
style='font-family:"Courier New";mso-bidi-font-style:italic'>o<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![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><o:p></o:p></i></span></p>
<p class=MsoPlainText style='margin-left:36.0pt'><i><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. Term::ReadKey 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:
l21 level1 lfo29;tab-stops:list 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:
l21 level1 lfo29;tab-stops:list 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><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;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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:
l7 level1 lfo25;tab-stops:list 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.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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"><3E> </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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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:
l13 level1 lfo23;tab-stops:list 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.3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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:
l26 level1 lfo21;tab-stops:list 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.4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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:
l3 level1 lfo19;tab-stops:list 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.5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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:
l1 level1 lfo17;tab-stops:list 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.6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l11 level1 lfo15;tab-stops:list 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:
l22 level1 lfo13;tab-stops:list 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:
l22 level1 lfo13;tab-stops:list 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:
l22 level1 lfo13;tab-stops:list 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:
l22 level1 lfo13;tab-stops:list 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; </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:
l0 level1 lfo12;tab-stops:list 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; </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/03/11 16:04:54
$, $Revision$</span></p>
<p class=MsoPlainText><span lang=EN-GB>Copyright (C) 2003<span
style="mso-spacerun: yes"><3E> </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"><3E> </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"><3E> </span>02111-1307, USA.</span></p>
</div>
</body>
</html>