add feature to extend preclusive zone alarm state by x frames

This commit is contained in:
m-bene 2014-03-09 17:05:39 +01:00
parent 16c59f7cb0
commit 26777487dc
26 changed files with 109 additions and 13 deletions

View File

@ -15,3 +15,6 @@ ALTER TABLE Monitors modify column Type enum('Local','Remote','File','Ffmpeg','L
--
ALTER TABLE `Monitors` ADD `User` VARCHAR(32) NOT NULL AFTER `SubPath`;
ALTER TABLE `Monitors` ADD `Pass` VARCHAR(32) NOT NULL AFTER `User`;
-- Add extend alarm frame count to zone definition
ALTER TABLE `Zones` ADD `ExtendAlarmFrames` smallint(5) unsigned not null default 0 AFTER `OverloadFrames`;

View File

@ -1,3 +1,9 @@
zoneminder (1.27.0-1) precise; urgency=high
* Add preclusive Zone Alarm extension feature
-- Martin Bene <hub@bene.priv.at> Sun, 09 Mar 2014 17:00:12 -0200
zoneminder (1.26.5-1) precise; urgency=high
* improvements to zmupdate.pl, cleanups

View File

@ -3131,7 +3131,9 @@ unsigned int Monitor::DetectMotion( const Image &comp_image, Event::StringSet &z
for ( int n_zone = 0; n_zone < n_zones; n_zone++ )
{
Zone *zone = zones[n_zone];
zone->ClearAlarm();
// need previous alarmed state for preclusive zone, so don't clear just yet
if (!zone->IsPreclusive())
zone->ClearAlarm();
if ( !zone->IsInactive() )
{
continue;
@ -3148,14 +3150,31 @@ unsigned int Monitor::DetectMotion( const Image &comp_image, Event::StringSet &z
{
continue;
}
Debug( 3, "Checking preclusive zone %s", zone->Label() );
int old_zone_score = zone->Score();
bool old_zone_alarmed = zone->Alarmed();
Debug( 3, "Checking preclusive zone %s - old score: %d, state: %s", zone->Label(),old_zone_score, zone->Alarmed()?"alarmed":"quiet" );
if ( zone->CheckAlarms( &delta_image ) )
{
alarm = true;
score += zone->Score();
zone->SetAlarm();
Debug( 3, "Zone is alarmed, zone score = %d", zone->Score() );
zoneSet.insert( zone->Label() );
//zone->ResetStats();
} else {
// check if end of alarm
if (old_zone_alarmed) {
Debug(3, "Preclusive Zone %s alarm Ends. Prevíous score: %d", zone->Label(), old_zone_score);
if (old_zone_score > 0) {
zone->SetExtendAlarmCount(zone->GetExtendAlarmFrames());
}
if (zone->CheckExtendAlarmCount()) {
alarm=true;
zone->SetAlarm();
} else {
zone->ClearAlarm();
}
}
}
}
@ -3173,7 +3192,7 @@ unsigned int Monitor::DetectMotion( const Image &comp_image, Event::StringSet &z
for ( int n_zone = 0; n_zone < n_zones; n_zone++ )
{
Zone *zone = zones[n_zone];
if ( !zone->IsActive() )
if ( !zone->IsActive() || zone->IsPreclusive())
{
continue;
}

View File

@ -23,7 +23,7 @@
#include "zm_image.h"
#include "zm_monitor.h"
void Zone::Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold, int p_max_pixel_threshold, int p_min_alarm_pixels, int p_max_alarm_pixels, const Coord &p_filter_box, int p_min_filter_pixels, int p_max_filter_pixels, int p_min_blob_pixels, int p_max_blob_pixels, int p_min_blobs, int p_max_blobs, int p_overload_frames )
void Zone::Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold, int p_max_pixel_threshold, int p_min_alarm_pixels, int p_max_alarm_pixels, const Coord &p_filter_box, int p_min_filter_pixels, int p_max_filter_pixels, int p_min_blob_pixels, int p_max_blob_pixels, int p_min_blobs, int p_max_blobs, int p_overload_frames, int p_extend_alarm_frames )
{
monitor = p_monitor;
@ -46,8 +46,9 @@ void Zone::Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_
min_blobs = p_min_blobs;
max_blobs = p_max_blobs;
overload_frames = p_overload_frames;
extend_alarm_frames = p_extend_alarm_frames;
Debug( 1, "Initialised zone %d/%s - %d - %dx%d - Rgb:%06x, CM:%d, MnAT:%d, MxAT:%d, MnAP:%d, MxAP:%d, FB:%dx%d, MnFP:%d, MxFP:%d, MnBS:%d, MxBS:%d, MnB:%d, MxB:%d, OF: %d", id, label, type, polygon.Width(), polygon.Height(), alarm_rgb, check_method, min_pixel_threshold, max_pixel_threshold, min_alarm_pixels, max_alarm_pixels, filter_box.X(), filter_box.Y(), min_filter_pixels, max_filter_pixels, min_blob_pixels, max_blob_pixels, min_blobs, max_blobs, overload_frames );
Debug( 1, "Initialised zone %d/%s - %d - %dx%d - Rgb:%06x, CM:%d, MnAT:%d, MxAT:%d, MnAP:%d, MxAP:%d, FB:%dx%d, MnFP:%d, MxFP:%d, MnBS:%d, MxBS:%d, MnB:%d, MxB:%d, OF: %d, AF: %d", id, label, type, polygon.Width(), polygon.Height(), alarm_rgb, check_method, min_pixel_threshold, max_pixel_threshold, min_alarm_pixels, max_alarm_pixels, filter_box.X(), filter_box.Y(), min_filter_pixels, max_filter_pixels, min_blob_pixels, max_blob_pixels, min_blobs, max_blobs, overload_frames, extend_alarm_frames );
alarmed = false;
pixel_diff = 0;
@ -61,6 +62,7 @@ void Zone::Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_
score = 0;
overload_count = 0;
extend_alarm_count = 0;
pg_image = new Image( monitor->Width(), monitor->Height(), 1, ZM_SUBPIX_ORDER_NONE);
pg_image->Clear();
@ -161,6 +163,35 @@ int Zone::GetOverloadFrames()
{
return overload_frames;
}
int Zone::GetExtendAlarmCount()
{
return extend_alarm_count;
}
void Zone::SetExtendAlarmCount(int nExtendAlarmCount)
{
extend_alarm_count = nExtendAlarmCount;
}
int Zone::GetExtendAlarmFrames()
{
return extend_alarm_frames;
}
bool Zone::CheckExtendAlarmCount()
{
Info("ExtendAlarm count: %d, ExtendAlarm frames: %d", extend_alarm_count, extend_alarm_frames);
if ( extend_alarm_count )
{
Debug( 3, "In extend mode, %d frames of %d remaining", extend_alarm_count, extend_alarm_frames );
extend_alarm_count--;
return( true );
}
return false;
}
//===========================================================================
@ -909,7 +940,7 @@ bool Zone::ParseZoneString( const char *zone_string, int &zone_id, int &colour,
int Zone::Load( Monitor *monitor, Zone **&zones )
{
static char sql[ZM_SQL_MED_BUFSIZ];
snprintf( sql, sizeof(sql), "select Id,Name,Type+0,Units,Coords,AlarmRGB,CheckMethod+0,MinPixelThreshold,MaxPixelThreshold,MinAlarmPixels,MaxAlarmPixels,FilterX,FilterY,MinFilterPixels,MaxFilterPixels,MinBlobPixels,MaxBlobPixels,MinBlobs,MaxBlobs,OverloadFrames from Zones where MonitorId = %d order by Type, Id", monitor->Id() );
snprintf( sql, sizeof(sql), "select Id,Name,Type+0,Units,Coords,AlarmRGB,CheckMethod+0,MinPixelThreshold,MaxPixelThreshold,MinAlarmPixels,MaxAlarmPixels,FilterX,FilterY,MinFilterPixels,MaxFilterPixels,MinBlobPixels,MaxBlobPixels,MinBlobs,MaxBlobs,OverloadFrames,ExtendAlarmFrames from Zones where MonitorId = %d order by Type, Id", monitor->Id() );
if ( mysql_query( &dbconn, sql ) )
{
Error( "Can't run query: %s", mysql_error( &dbconn ) );
@ -950,6 +981,7 @@ int Zone::Load( Monitor *monitor, Zone **&zones )
int MinBlobs = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxBlobs = dbrow[col]?atoi(dbrow[col]):0; col++;
int OverloadFrames = dbrow[col]?atoi(dbrow[col]):0; col++;
int ExtendAlarmFrames = dbrow[col]?atoi(dbrow[col]):0; col++;
/* HTML colour code is actually BGR in memory, we want RGB */
AlarmRGB = rgb_convert(AlarmRGB, ZM_SUBPIX_ORDER_BGR);
@ -983,7 +1015,7 @@ int Zone::Load( Monitor *monitor, Zone **&zones )
}
else
{
zones[i] = new Zone( monitor, Id, Name, (Zone::ZoneType)Type, polygon, AlarmRGB, (Zone::CheckMethod)CheckMethod, MinPixelThreshold, MaxPixelThreshold, MinAlarmPixels, MaxAlarmPixels, Coord( FilterX, FilterY ), MinFilterPixels, MaxFilterPixels, MinBlobPixels, MaxBlobPixels, MinBlobs, MaxBlobs, OverloadFrames );
zones[i] = new Zone( monitor, Id, Name, (Zone::ZoneType)Type, polygon, AlarmRGB, (Zone::CheckMethod)CheckMethod, MinPixelThreshold, MaxPixelThreshold, MinAlarmPixels, MaxAlarmPixels, Coord( FilterX, FilterY ), MinFilterPixels, MaxFilterPixels, MinBlobPixels, MaxBlobPixels, MinBlobs, MaxBlobs, OverloadFrames, ExtendAlarmFrames );
}
}
if ( mysql_errno( &dbconn ) )

View File

@ -73,6 +73,7 @@ protected:
int max_blobs;
int overload_frames;
int extend_alarm_frames;
// Outputs/Statistics
bool alarmed;
@ -91,23 +92,24 @@ protected:
Image *image;
int overload_count;
int extend_alarm_count;
protected:
void Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold, int p_max_pixel_threshold, int p_min_alarm_pixels, int p_max_alarm_pixels, const Coord &p_filter_box, int p_min_filter_pixels, int p_max_filter_pixels, int p_min_blob_pixels, int p_max_blob_pixels, int p_min_blobs, int p_max_blobs, int p_overload_frames );
void Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold, int p_max_pixel_threshold, int p_min_alarm_pixels, int p_max_alarm_pixels, const Coord &p_filter_box, int p_min_filter_pixels, int p_max_filter_pixels, int p_min_blob_pixels, int p_max_blob_pixels, int p_min_blobs, int p_max_blobs, int p_overload_frames, int p_extend_alarm_frames );
void std_alarmedpixels(Image* pdiff_image, const Image* ppoly_image, unsigned int* pixel_count, unsigned int* pixel_sum);
public:
Zone( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold=15, int p_max_pixel_threshold=0, int p_min_alarm_pixels=50, int p_max_alarm_pixels=75000, const Coord &p_filter_box=Coord( 3, 3 ), int p_min_filter_pixels=50, int p_max_filter_pixels=50000, int p_min_blob_pixels=10, int p_max_blob_pixels=0, int p_min_blobs=0, int p_max_blobs=0, int p_overload_frames=0 )
Zone( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_type, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold=15, int p_max_pixel_threshold=0, int p_min_alarm_pixels=50, int p_max_alarm_pixels=75000, const Coord &p_filter_box=Coord( 3, 3 ), int p_min_filter_pixels=50, int p_max_filter_pixels=50000, int p_min_blob_pixels=10, int p_max_blob_pixels=0, int p_min_blobs=0, int p_max_blobs=0, int p_overload_frames=0, int p_extend_alarm_frames=0 )
{
Setup( p_monitor, p_id, p_label, p_type, p_polygon, p_alarm_rgb, p_check_method, p_min_pixel_threshold, p_max_pixel_threshold, p_min_alarm_pixels, p_max_alarm_pixels, p_filter_box, p_min_filter_pixels, p_max_filter_pixels, p_min_blob_pixels, p_max_blob_pixels, p_min_blobs, p_max_blobs, p_overload_frames );
Setup( p_monitor, p_id, p_label, p_type, p_polygon, p_alarm_rgb, p_check_method, p_min_pixel_threshold, p_max_pixel_threshold, p_min_alarm_pixels, p_max_alarm_pixels, p_filter_box, p_min_filter_pixels, p_max_filter_pixels, p_min_blob_pixels, p_max_blob_pixels, p_min_blobs, p_max_blobs, p_overload_frames, p_extend_alarm_frames );
}
Zone( Monitor *p_monitor, int p_id, const char *p_label, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold=15, int p_max_pixel_threshold=0, int p_min_alarm_pixels=50, int p_max_alarm_pixels=75000, const Coord &p_filter_box=Coord( 3, 3 ), int p_min_filter_pixels=50, int p_max_filter_pixels=50000, int p_min_blob_pixels=10, int p_max_blob_pixels=0, int p_min_blobs=0, int p_max_blobs=0, int p_overload_frames=0 )
Zone( Monitor *p_monitor, int p_id, const char *p_label, const Polygon &p_polygon, const Rgb p_alarm_rgb, CheckMethod p_check_method, int p_min_pixel_threshold=15, int p_max_pixel_threshold=0, int p_min_alarm_pixels=50, int p_max_alarm_pixels=75000, const Coord &p_filter_box=Coord( 3, 3 ), int p_min_filter_pixels=50, int p_max_filter_pixels=50000, int p_min_blob_pixels=10, int p_max_blob_pixels=0, int p_min_blobs=0, int p_max_blobs=0, int p_overload_frames=0, int p_extend_alarm_frames=0)
{
Setup( p_monitor, p_id, p_label, Zone::ACTIVE, p_polygon, p_alarm_rgb, p_check_method, p_min_pixel_threshold, p_max_pixel_threshold, p_min_alarm_pixels, p_max_alarm_pixels, p_filter_box, p_min_filter_pixels, p_max_filter_pixels, p_min_blob_pixels, p_max_blob_pixels, p_min_blobs, p_max_blobs, p_overload_frames );
Setup( p_monitor, p_id, p_label, Zone::ACTIVE, p_polygon, p_alarm_rgb, p_check_method, p_min_pixel_threshold, p_max_pixel_threshold, p_min_alarm_pixels, p_max_alarm_pixels, p_filter_box, p_min_filter_pixels, p_max_filter_pixels, p_min_blob_pixels, p_max_blob_pixels, p_min_blobs, p_max_blobs, p_overload_frames, p_extend_alarm_frames );
}
Zone( Monitor *p_monitor, int p_id, const char *p_label, const Polygon &p_polygon )
{
Setup( p_monitor, p_id, p_label, Zone::INACTIVE, p_polygon, RGB_BLACK, (Zone::CheckMethod)0, 0, 0, 0, 0, Coord( 0, 0 ), 0, 0, 0, 0, 0, 0, 0 );
Setup( p_monitor, p_id, p_label, Zone::INACTIVE, p_polygon, RGB_BLACK, (Zone::CheckMethod)0, 0, 0, 0, 0, Coord( 0, 0 ), 0, 0, 0, 0, 0, 0, 0, 0 );
}
public:
@ -153,6 +155,11 @@ public:
int GetOverloadCount();
void SetOverloadCount(int nOverCount);
int GetOverloadFrames();
//=================================================
bool CheckExtendAlarmCount();
int GetExtendAlarmCount();
void SetExtendAlarmCount(int nOverCount);
int GetExtendAlarmFrames();
void SetScore(unsigned int nScore);
void SetAlarmImage(const Image* srcImage);

View File

@ -712,6 +712,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => '監視區',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In', // Added - 2009-02-08

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => '最小/最大像素阈值(0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => '忽略过载帪数',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => '区域',
'Zoom' => '缩放',
'ZoomIn' => '放大',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zóny',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zvìt¹it',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min./max. Pixelschwellwert',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Bildauslassrate bei System&uuml;berlastung',
'ZoneExtendAlarmFrames' => 'Alarmstatus nach Ende f&uuml;r Frames aufrechterhalten',
'Zones' => 'Zonen',
'Zoom' => 'Zoom',
'ZoomIn' => 'Hineinzoomen',

View File

@ -709,6 +709,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zoner',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -709,6 +709,7 @@ $SLANG = array(
'ZoneMinMaxFiltArea' => 'Min/Max Filtered Area',
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zones',
'Zone' => 'Zone',
'ZoomIn' => 'Zoom In',

View File

@ -659,6 +659,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zonas',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -702,6 +702,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Tsoone',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zones',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'àæåøéí',
'Zoom' => 'æåí',
'ZoomIn' => 'æåí ôðéîä',

View File

@ -715,6 +715,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max képpont változási<br>küszöb (0-255)',
'ZoneMinderLog' => 'ZoneMinder Napló',
'ZoneOverloadFrames' => 'Túlterhelés esetén<br>ennyi képkocka hagyható ki',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zónák',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom be',

View File

@ -713,6 +713,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Soglia Pixel (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zone',
'Zoom' => 'Zoom',
'ZoomIn' => 'Ingrandisci',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => '¿Þ°Ý',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -702,6 +702,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame negeer aantal',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zones',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Strefy',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -648,6 +648,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zonas',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -679,6 +679,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zona',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -708,6 +708,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max Pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'úÏÎÙ',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',

View File

@ -709,6 +709,7 @@ $SLANG = array(
'ZoneMinMaxPixelThres' => 'Min/Max pixel Threshold (0-255)',
'ZoneMinderLog' => 'ZoneMinder Log', // Added - 2011-06-17
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Zoner',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zooma in',

View File

@ -96,6 +96,7 @@ if ( !isset($newZone) )
'MinBlobs' => '',
'MaxBlobs' => '',
'OverloadFrames' => '',
'ExtendAlarmFrames' => '',
);
}
$zone['Points'] = coordsToPoints( $zone['Coords'] );
@ -207,6 +208,10 @@ xhtmlHeaders(__FILE__, $SLANG['Zone'] );
<th scope="row"><?= $SLANG['ZoneOverloadFrames'] ?></th>
<td colspan="2"><input type="text" name="newZone[OverloadFrames]" value="<?= $newZone['OverloadFrames'] ?>" size="4"/></td>
</tr>
<tr>
<th scope="row"><?= $SLANG['ZoneExtendAlarmFrames'] ?></th>
<td colspan="2"><input type="text" name="newZone[ExtendAlarmFrames]" value="<?= $newZone['ExtendAlarmFrames'] ?>" size="4"/></td>
</tr>
</tbody>
</table>
</div>

View File

@ -96,6 +96,7 @@ if ( !isset($newZone) )
'MinBlobs' => '',
'MaxBlobs' => '',
'OverloadFrames' => '',
'ExtendAlarmFrames' => '',
);
}
$zone['Points'] = coordsToPoints( $zone['Coords'] );
@ -207,6 +208,10 @@ xhtmlHeaders(__FILE__, $SLANG['Zone'] );
<th scope="row"><?= $SLANG['ZoneOverloadFrames'] ?></th>
<td colspan="2"><input type="text" name="newZone[OverloadFrames]" value="<?= $newZone['OverloadFrames'] ?>" size="4"/></td>
</tr>
<tr>
<th scope="row"><?= $SLANG['ZoneExtendAlarmFrames'] ?></th>
<td colspan="2"><input type="text" name="newZone[ExtendAlarmFrames]" value="<?= $newZone['ExtendAlarmFrames'] ?>" size="4"/></td>
</tr>
</tbody>
</table>
</div>