mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-05-18 19:46:12 -04:00
Bug 471 - Compiler warnings, sorted out types and general format tidying
git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@2357 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
AM_CPPFLAGS = @MYSQL_CFLAGS@ @FFMPEG_CFLAGS@
|
||||
AM_CPPFLAGS = @MYSQL_CFLAGS@ @FFMPEG_CFLAGS@ -Wall -Wno-sign-compare
|
||||
|
||||
# This should be set to your CGI directory
|
||||
cgidir = @CGI_PREFIX@
|
||||
|
||||
@@ -20,7 +20,16 @@
|
||||
#include "zm.h"
|
||||
#include "zm_camera.h"
|
||||
|
||||
Camera::Camera( SourceType p_type, int p_width, int p_height, int p_palette, int p_brightness, int p_contrast, int p_hue, int p_colour, bool p_capture ) : type( p_type ), width( p_width), height( p_height ), palette( p_palette ), brightness( p_brightness ), contrast( p_contrast ), hue( p_hue ), colour( p_colour ), capture( p_capture )
|
||||
Camera::Camera( SourceType p_type, int p_width, int p_height, int p_palette, int p_brightness, int p_contrast, int p_hue, int p_colour, bool p_capture ) :
|
||||
type( p_type ),
|
||||
width( p_width),
|
||||
height( p_height ),
|
||||
palette( p_palette ),
|
||||
brightness( p_brightness ),
|
||||
hue( p_hue ),
|
||||
colour( p_colour ),
|
||||
contrast( p_contrast ),
|
||||
capture( p_capture )
|
||||
{
|
||||
colours = (palette==VIDEO_PALETTE_GREY?1:3);
|
||||
size = width * height * colours;
|
||||
|
||||
@@ -31,7 +31,6 @@ void zmLoadConfig()
|
||||
FILE *cfg;
|
||||
char line[512];
|
||||
char *val;
|
||||
int r;
|
||||
if ( (cfg = fopen( ZM_CONFIG, "r")) == NULL )
|
||||
{
|
||||
Fatal(("Can't open %s: %s", ZM_CONFIG, strerror(errno) ));
|
||||
|
||||
@@ -196,6 +196,7 @@ int zmDebugPrepareLog()
|
||||
Error(("fopen() for %s, error = %s",zm_dbg_log,strerror(errno)));
|
||||
return( -1 );
|
||||
}
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int zmDebugInitialise( const char *name, const char *id, int level )
|
||||
@@ -236,7 +237,7 @@ int zmDebugInitialise( const char *name, const char *id, int level )
|
||||
Info(( "Debug Level = %d, Debug Log = %s", zm_dbg_level,zm_dbg_log[0]?zm_dbg_log:"<none>" ));
|
||||
|
||||
{
|
||||
struct sigaction action, old_action;
|
||||
struct sigaction action;
|
||||
memset( &action, 0, sizeof(action) );
|
||||
action.sa_handler = zmUsrHandler;
|
||||
action.sa_flags = SA_RESTART;
|
||||
|
||||
@@ -42,7 +42,7 @@ char Event::analyse_file_format[PATH_MAX];
|
||||
char Event::general_file_format[PATH_MAX];
|
||||
|
||||
int Event::pre_alarm_count = 0;
|
||||
Event::PreAlarmData Event::pre_alarm_data[MAX_PRE_ALARM_FRAMES] = { 0 };
|
||||
Event::PreAlarmData Event::pre_alarm_data[MAX_PRE_ALARM_FRAMES] = { { 0 } };
|
||||
|
||||
Event::Event( Monitor *p_monitor, struct timeval p_start_time, const char *p_cause, const char *p_text ) : monitor( p_monitor ), start_time( p_start_time )
|
||||
{
|
||||
@@ -151,7 +151,7 @@ Event::~Event()
|
||||
|
||||
Debug( 1, ( "Adding closing frame %d to DB", frames ));
|
||||
static char sql[BUFSIZ];
|
||||
snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %d ), %s%ld.%02ld )", id, frames, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
|
||||
snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %ld ), %s%ld.%02ld )", id, frames, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
|
||||
if ( mysql_query( &dbconn, sql ) )
|
||||
{
|
||||
Error(( "Can't insert frame: %s", mysql_error( &dbconn ) ));
|
||||
@@ -351,7 +351,7 @@ void Event::AddFrames( int n_frames, Image **images, struct timeval **timestamps
|
||||
DELTA_TIMEVAL( delta_time, *(timestamps[i]), start_time, DT_PREC_2 );
|
||||
|
||||
int sql_len = strlen(sql);
|
||||
snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%d), %s%ld.%02ld ), ", id, frames, timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
|
||||
snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%ld), %s%ld.%02ld ), ", id, frames, timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
|
||||
}
|
||||
|
||||
Debug( 1, ( "Adding %d frames to DB", n_frames ));
|
||||
@@ -386,7 +386,7 @@ void Event::AddFrame( Image *image, struct timeval timestamp, int score, Image *
|
||||
|
||||
Debug( 1, ( "Adding frame %d to DB", frames ));
|
||||
static char sql[BUFSIZ];
|
||||
snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %d ), %s%ld.%02ld, %d )", id, frames, frame_type, timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
|
||||
snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type, timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
|
||||
if ( mysql_query( &dbconn, sql ) )
|
||||
{
|
||||
Error(( "Can't insert frame: %s", mysql_error( &dbconn ) ));
|
||||
@@ -471,7 +471,7 @@ bool EventStream::loadInitialEventData( int monitor_id, time_t event_time )
|
||||
{
|
||||
static char sql[BUFSIZ];
|
||||
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %d order by Id asc limit 1", monitor_id, event_time );
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %ld order by Id asc limit 1", monitor_id, event_time );
|
||||
|
||||
if ( mysql_query( &dbconn, sql ) )
|
||||
{
|
||||
@@ -505,7 +505,6 @@ bool EventStream::loadInitialEventData( int monitor_id, time_t event_time )
|
||||
curr_frame_id = 1;
|
||||
if ( event_time >= event_data->start_time )
|
||||
{
|
||||
double total_delta = 0.0;
|
||||
for ( int i = 0; i < event_data->frame_count; i++ )
|
||||
{
|
||||
//Info(( "eft %d > et %d", event_data->frames[i].timestamp, event_time ));
|
||||
@@ -517,7 +516,7 @@ bool EventStream::loadInitialEventData( int monitor_id, time_t event_time )
|
||||
break;
|
||||
}
|
||||
}
|
||||
Debug( 3, ( "Skipping %d frames", event_data->frame_count ));
|
||||
Debug( 3, ( "Skipping %ld frames", event_data->frame_count ));
|
||||
}
|
||||
}
|
||||
return( true );
|
||||
@@ -580,11 +579,11 @@ bool EventStream::loadEventData( int event_id )
|
||||
if ( config.use_deep_storage )
|
||||
{
|
||||
struct tm *event_time = localtime( &event_data->start_time );
|
||||
snprintf( event_data->path, sizeof(event_data->path), "%s/%s/%d/%02d/%02d/%02d/%02d/%02d/%02d", ZM_PATH_WEB, config.dir_events, event_data->monitor_id, event_time->tm_year-100, event_time->tm_mon+1, event_time->tm_mday, event_time->tm_hour, event_time->tm_min, event_time->tm_sec );
|
||||
snprintf( event_data->path, sizeof(event_data->path), "%s/%s/%ld/%02d/%02d/%02d/%02d/%02d/%02d", ZM_PATH_WEB, config.dir_events, event_data->monitor_id, event_time->tm_year-100, event_time->tm_mon+1, event_time->tm_mday, event_time->tm_hour, event_time->tm_min, event_time->tm_sec );
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf( event_data->path, sizeof(event_data->path), "%s/%s/%d/%d", ZM_PATH_WEB, config.dir_events, event_data->monitor_id, event_data->event_id );
|
||||
snprintf( event_data->path, sizeof(event_data->path), "%s/%s/%ld/%ld", ZM_PATH_WEB, config.dir_events, event_data->monitor_id, event_data->event_id );
|
||||
}
|
||||
event_data->frame_count = atoi(dbrow[2]);
|
||||
event_data->duration = atof(dbrow[4]);
|
||||
@@ -612,8 +611,8 @@ bool EventStream::loadEventData( int event_id )
|
||||
event_data->frames = new FrameData[event_data->frame_count];
|
||||
int id, last_id = 0;
|
||||
time_t timestamp, last_timestamp = event_data->start_time;
|
||||
double delta, first_delta, last_delta = 0.0;
|
||||
while ( dbrow = mysql_fetch_row( result ) )
|
||||
double delta, last_delta = 0.0;
|
||||
while ( ( dbrow = mysql_fetch_row( result ) ) )
|
||||
{
|
||||
id = atoi(dbrow[0]);
|
||||
timestamp = atoi(dbrow[1]);
|
||||
@@ -658,14 +657,14 @@ bool EventStream::loadEventData( int event_id )
|
||||
else
|
||||
curr_stream_time = event_data->frames[event_data->frame_count-1].timestamp;
|
||||
}
|
||||
Debug( 2, ( "Event:%d, Frames:%d, Duration: %.2f", event_data->event_id, event_data->frame_count, event_data->duration ));
|
||||
Debug( 2, ( "Event:%ld, Frames:%ld, Duration: %.2f", event_data->event_id, event_data->frame_count, event_data->duration ));
|
||||
|
||||
return( true );
|
||||
}
|
||||
|
||||
void EventStream::processCommand( const CmdMsg *msg )
|
||||
{
|
||||
Debug( 2, ( "Got message, type %d, msg %d", msg->msg_type, msg->msg_data[0] ))
|
||||
Debug( 2, ( "Got message, type %ld, msg %d", msg->msg_type, msg->msg_data[0] ))
|
||||
// Check for incoming command
|
||||
switch( (MsgCommand)msg->msg_data[0] )
|
||||
{
|
||||
@@ -873,6 +872,10 @@ void EventStream::processCommand( const CmdMsg *msg )
|
||||
Debug( 1, ( "Got QUERY command, sending STATUS" ));
|
||||
break;
|
||||
}
|
||||
default :
|
||||
{
|
||||
// Do nothing, for now
|
||||
}
|
||||
}
|
||||
struct {
|
||||
int event;
|
||||
@@ -887,7 +890,7 @@ void EventStream::processCommand( const CmdMsg *msg )
|
||||
status_data.progress = event_data->frames[curr_frame_id-1].offset;
|
||||
status_data.rate = replay_rate;
|
||||
status_data.zoom = zoom;
|
||||
Debug( 2, ( "E:%d, P:%d, p:%d R:%d, Z:%d",
|
||||
Debug( 2, ( "E:%d, P:%d, p:%ld R:%d, Z:%d",
|
||||
status_data.event,
|
||||
status_data.paused,
|
||||
status_data.progress,
|
||||
@@ -957,12 +960,12 @@ mysql_free_result( $result );
|
||||
#endif
|
||||
if ( curr_frame_id <= 0 )
|
||||
{
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and Id < %d order by Id desc limit 1", event_data->monitor_id, event_data->event_id );
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %ld and Id < %ld order by Id desc limit 1", event_data->monitor_id, event_data->event_id );
|
||||
reload_event = true;
|
||||
}
|
||||
else if ( curr_frame_id > event_data->frame_count )
|
||||
{
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and Id > %d order by Id asc limit 1", event_data->monitor_id, event_data->event_id );
|
||||
snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %ld and Id > %ld order by Id asc limit 1", event_data->monitor_id, event_data->event_id );
|
||||
reload_event = true;
|
||||
}
|
||||
|
||||
@@ -1046,7 +1049,7 @@ void EventStream::sendFrame( int delta_us )
|
||||
fprintf( stdout, "Content-type: %s\r\n\r\n", vid_stream->MimeType() );
|
||||
vid_stream->OpenStream();
|
||||
}
|
||||
double pts = vid_stream->EncodeFrame( send_image->Buffer(), send_image->Size(), config.mpeg_timed_frames, delta_us*1000 );
|
||||
/* double pts = */ vid_stream->EncodeFrame( send_image->Buffer(), send_image->Size(), config.mpeg_timed_frames, delta_us*1000 );
|
||||
}
|
||||
else
|
||||
#endif // HAVE_LIBAVCODEC
|
||||
@@ -1096,6 +1099,9 @@ void EventStream::sendFrame( int delta_us )
|
||||
send_image->Zip( img_buffer, &zip_buffer_size );
|
||||
img_buffer_size = zip_buffer_size;
|
||||
break;
|
||||
default:
|
||||
Fatal(( "Unexpected frame type %d", type ));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1110,6 +1116,9 @@ void EventStream::sendFrame( int delta_us )
|
||||
case STREAM_ZIP :
|
||||
fprintf( stdout, "Content-Type: image/x-rgbz\r\n" );
|
||||
break;
|
||||
default :
|
||||
Fatal(( "Unexpected frame type %d", type ));
|
||||
break;
|
||||
}
|
||||
fprintf( stdout, "Content-Length: %d\r\n\r\n", img_buffer_size );
|
||||
fwrite( img_buffer, img_buffer_size, 1, stdout );
|
||||
@@ -1141,7 +1150,7 @@ void EventStream::runStream()
|
||||
unsigned int delta_us = 0;
|
||||
while( !zm_terminate )
|
||||
{
|
||||
gettimeofday( &now, &dummy_tz );
|
||||
gettimeofday( &now, NULL );
|
||||
|
||||
checkCommandQueue();
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ protected:
|
||||
static PreAlarmData pre_alarm_data[MAX_PRE_ALARM_FRAMES];
|
||||
|
||||
protected:
|
||||
int id;
|
||||
unsigned int id;
|
||||
Monitor *monitor;
|
||||
struct timeval start_time;
|
||||
struct timeval end_time;
|
||||
|
||||
@@ -270,7 +270,7 @@ bool Image::ReadRaw( const char *filename )
|
||||
|
||||
if ( statbuf.st_size != size )
|
||||
{
|
||||
Error(( "Raw file size mismatch, expected %d bytes, found %d", size, statbuf.st_size ));
|
||||
Error(( "Raw file size mismatch, expected %d bytes, found %ld", size, statbuf.st_size ));
|
||||
return( false );
|
||||
}
|
||||
|
||||
@@ -557,7 +557,7 @@ bool Image::Unzip( const Bytef *inbuffer, unsigned long inbuffer_size )
|
||||
}
|
||||
if ( zip_size != size )
|
||||
{
|
||||
Error(( "Unzip failed, size mismatch, expected %d bytes, got %d", size, zip_size ));
|
||||
Error(( "Unzip failed, size mismatch, expected %d bytes, got %ld", size, zip_size ));
|
||||
return( false );
|
||||
}
|
||||
return( true );
|
||||
@@ -1686,7 +1686,6 @@ void Image::Scale( unsigned int factor )
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int inv_factor = (ZM_SCALE_BASE*ZM_SCALE_BASE)/factor;
|
||||
unsigned char *pd = scale_buffer;
|
||||
unsigned int wc = width*colours;
|
||||
unsigned int xstart = factor/2;
|
||||
|
||||
264
src/zm_jpeg.c
264
src/zm_jpeg.c
@@ -27,6 +27,7 @@
|
||||
#define MAX_JPEG_ERRS 25
|
||||
|
||||
static int jpeg_err_count = 0;
|
||||
|
||||
void zm_jpeg_error_exit( j_common_ptr cinfo )
|
||||
{
|
||||
static char buffer[JMSG_LENGTH_MAX];
|
||||
@@ -76,19 +77,19 @@ void zm_jpeg_emit_message( j_common_ptr cinfo, int msg_level )
|
||||
|
||||
/* Expanded data destination object for memory */
|
||||
|
||||
typedef struct {
|
||||
struct jpeg_destination_mgr pub; /* public fields */
|
||||
typedef struct
|
||||
{
|
||||
struct jpeg_destination_mgr pub; /* public fields */
|
||||
|
||||
JOCTET *outbuffer; /* target buffer */
|
||||
int *outbuffer_size;
|
||||
JOCTET *buffer; /* start of buffer */
|
||||
JOCTET *outbuffer; /* target buffer */
|
||||
int *outbuffer_size;
|
||||
JOCTET *buffer; /* start of buffer */
|
||||
} mem_destination_mgr;
|
||||
|
||||
typedef mem_destination_mgr * mem_dest_ptr;
|
||||
|
||||
#define OUTPUT_BUF_SIZE 4096 /* choose an efficiently fwrite'able size */
|
||||
|
||||
|
||||
/*
|
||||
* Initialize destination --- called by jpeg_start_compress
|
||||
* before any data is actually written.
|
||||
@@ -96,17 +97,15 @@ typedef mem_destination_mgr * mem_dest_ptr;
|
||||
|
||||
static void init_destination (j_compress_ptr cinfo)
|
||||
{
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
|
||||
/* Allocate the output buffer --- it will be released when done with image */
|
||||
dest->buffer = (JOCTET *)
|
||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||
OUTPUT_BUF_SIZE * SIZEOF(JOCTET));
|
||||
/* Allocate the output buffer --- it will be released when done with image */
|
||||
dest->buffer = (JOCTET *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, OUTPUT_BUF_SIZE * SIZEOF(JOCTET));
|
||||
|
||||
dest->pub.next_output_byte = dest->buffer;
|
||||
dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
|
||||
dest->pub.next_output_byte = dest->buffer;
|
||||
dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
|
||||
|
||||
*(dest->outbuffer_size) = 0;
|
||||
*(dest->outbuffer_size) = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -135,18 +134,17 @@ static void init_destination (j_compress_ptr cinfo)
|
||||
|
||||
static boolean empty_output_buffer (j_compress_ptr cinfo)
|
||||
{
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
|
||||
memcpy( dest->outbuffer+*(dest->outbuffer_size), dest->buffer, OUTPUT_BUF_SIZE );
|
||||
*(dest->outbuffer_size) += OUTPUT_BUF_SIZE;
|
||||
memcpy( dest->outbuffer+*(dest->outbuffer_size), dest->buffer, OUTPUT_BUF_SIZE );
|
||||
*(dest->outbuffer_size) += OUTPUT_BUF_SIZE;
|
||||
|
||||
dest->pub.next_output_byte = dest->buffer;
|
||||
dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
|
||||
dest->pub.next_output_byte = dest->buffer;
|
||||
dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
|
||||
|
||||
return TRUE;
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Terminate destination --- called by jpeg_finish_compress
|
||||
* after all data has been written. Usually needs to flush buffer.
|
||||
@@ -158,13 +156,14 @@ static boolean empty_output_buffer (j_compress_ptr cinfo)
|
||||
|
||||
static void term_destination (j_compress_ptr cinfo)
|
||||
{
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;
|
||||
mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
|
||||
size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;
|
||||
|
||||
if (datacount > 0) {
|
||||
memcpy( dest->outbuffer+*(dest->outbuffer_size), dest->buffer, datacount );
|
||||
*(dest->outbuffer_size) += datacount;
|
||||
}
|
||||
if ( datacount > 0 )
|
||||
{
|
||||
memcpy( dest->outbuffer+*(dest->outbuffer_size), dest->buffer, datacount );
|
||||
*(dest->outbuffer_size) += datacount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,46 +175,46 @@ static void term_destination (j_compress_ptr cinfo)
|
||||
|
||||
void jpeg_mem_dest (j_compress_ptr cinfo, JOCTET *outbuffer, int *outbuffer_size )
|
||||
{
|
||||
mem_dest_ptr dest;
|
||||
mem_dest_ptr dest;
|
||||
|
||||
/* The destination object is made permanent so that multiple JPEG images
|
||||
* can be written to the same file without re-executing jpeg_stdio_dest.
|
||||
* This makes it dangerous to use this manager and a different destination
|
||||
* manager serially with the same JPEG object, because their private object
|
||||
* sizes may be different. Caveat programmer.
|
||||
*/
|
||||
if (cinfo->dest == NULL) { /* first time for this JPEG object? */
|
||||
cinfo->dest = (struct jpeg_destination_mgr *)
|
||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
|
||||
SIZEOF(mem_destination_mgr));
|
||||
}
|
||||
/* The destination object is made permanent so that multiple JPEG images
|
||||
* can be written to the same file without re-executing jpeg_stdio_dest.
|
||||
* This makes it dangerous to use this manager and a different destination
|
||||
* manager serially with the same JPEG object, because their private object
|
||||
* sizes may be different. Caveat programmer.
|
||||
*/
|
||||
if ( cinfo->dest == NULL )
|
||||
{
|
||||
/* first time for this JPEG object? */
|
||||
cinfo->dest = (struct jpeg_destination_mgr *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, SIZEOF(mem_destination_mgr));
|
||||
}
|
||||
|
||||
dest = (mem_dest_ptr) cinfo->dest;
|
||||
dest->pub.init_destination = init_destination;
|
||||
dest->pub.empty_output_buffer = empty_output_buffer;
|
||||
dest->pub.term_destination = term_destination;
|
||||
dest->outbuffer = outbuffer;
|
||||
dest->outbuffer_size = outbuffer_size;
|
||||
dest = (mem_dest_ptr) cinfo->dest;
|
||||
dest->pub.init_destination = init_destination;
|
||||
dest->pub.empty_output_buffer = empty_output_buffer;
|
||||
dest->pub.term_destination = term_destination;
|
||||
dest->outbuffer = outbuffer;
|
||||
dest->outbuffer_size = outbuffer_size;
|
||||
}
|
||||
|
||||
/* Expanded data source object for memory input */
|
||||
|
||||
typedef struct {
|
||||
struct jpeg_source_mgr pub; /* public fields */
|
||||
typedef struct
|
||||
{
|
||||
struct jpeg_source_mgr pub; /* public fields */
|
||||
|
||||
JOCTET * inbuffer; /* source stream */
|
||||
int inbuffer_size;
|
||||
int inbuffer_size_hwm; /* High water mark */
|
||||
JOCTET * inbuffer; /* source stream */
|
||||
int inbuffer_size;
|
||||
int inbuffer_size_hwm; /* High water mark */
|
||||
|
||||
JOCTET * buffer; /* start of buffer */
|
||||
boolean start_of_data; /* have we gotten any data yet? */
|
||||
JOCTET * buffer; /* start of buffer */
|
||||
boolean start_of_data; /* have we gotten any data yet? */
|
||||
} mem_source_mgr;
|
||||
|
||||
typedef mem_source_mgr * mem_src_ptr;
|
||||
|
||||
#define INPUT_BUF_SIZE 4096 /* choose an efficiently fread'able size */
|
||||
|
||||
|
||||
/*
|
||||
* Initialize source --- called by jpeg_read_header
|
||||
* before any data is actually read.
|
||||
@@ -223,14 +222,14 @@ typedef mem_source_mgr * mem_src_ptr;
|
||||
|
||||
static void init_source (j_decompress_ptr cinfo)
|
||||
{
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
|
||||
/* We reset the empty-input-file flag for each image,
|
||||
* but we don't clear the input buffer.
|
||||
* This is correct behavior for reading a series of images from one source.
|
||||
*/
|
||||
src->start_of_data = TRUE;
|
||||
src->pub.bytes_in_buffer = 0;
|
||||
/* We reset the empty-input-file flag for each image,
|
||||
* but we don't clear the input buffer.
|
||||
* This is correct behavior for reading a series of images from one source.
|
||||
*/
|
||||
src->start_of_data = TRUE;
|
||||
src->pub.bytes_in_buffer = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -269,27 +268,28 @@ static void init_source (j_decompress_ptr cinfo)
|
||||
|
||||
static boolean fill_input_buffer (j_decompress_ptr cinfo)
|
||||
{
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
size_t nbytes;
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
size_t nbytes;
|
||||
|
||||
memcpy( src->buffer, src->inbuffer, (size_t) src->inbuffer_size );
|
||||
nbytes = src->inbuffer_size;
|
||||
memcpy( src->buffer, src->inbuffer, (size_t) src->inbuffer_size );
|
||||
nbytes = src->inbuffer_size;
|
||||
|
||||
if (nbytes <= 0) {
|
||||
if (src->start_of_data) /* Treat empty input file as fatal error */
|
||||
ERREXIT(cinfo, JERR_INPUT_EMPTY);
|
||||
WARNMS(cinfo, JWRN_JPEG_EOF);
|
||||
/* Insert a fake EOI marker */
|
||||
src->buffer[0] = (JOCTET) 0xFF;
|
||||
src->buffer[1] = (JOCTET) JPEG_EOI;
|
||||
nbytes = 2;
|
||||
}
|
||||
if ( nbytes <= 0 )
|
||||
{
|
||||
if ( src->start_of_data ) /* Treat empty input file as fatal error */
|
||||
ERREXIT(cinfo, JERR_INPUT_EMPTY);
|
||||
WARNMS(cinfo, JWRN_JPEG_EOF);
|
||||
/* Insert a fake EOI marker */
|
||||
src->buffer[0] = (JOCTET) 0xFF;
|
||||
src->buffer[1] = (JOCTET) JPEG_EOI;
|
||||
nbytes = 2;
|
||||
}
|
||||
|
||||
src->pub.next_input_byte = src->buffer;
|
||||
src->pub.bytes_in_buffer = nbytes;
|
||||
src->start_of_data = FALSE;
|
||||
src->pub.next_input_byte = src->buffer;
|
||||
src->pub.bytes_in_buffer = nbytes;
|
||||
src->start_of_data = FALSE;
|
||||
|
||||
return TRUE;
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
|
||||
@@ -307,23 +307,25 @@ static boolean fill_input_buffer (j_decompress_ptr cinfo)
|
||||
|
||||
static void skip_input_data (j_decompress_ptr cinfo, long num_bytes)
|
||||
{
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
mem_src_ptr src = (mem_src_ptr) cinfo->src;
|
||||
|
||||
/* Just a dumb implementation for now. Could use fseek() except
|
||||
* it doesn't work on pipes. Not clear that being smart is worth
|
||||
* any trouble anyway --- large skips are infrequent.
|
||||
*/
|
||||
if (num_bytes > 0) {
|
||||
while (num_bytes > (long) src->pub.bytes_in_buffer) {
|
||||
num_bytes -= (long) src->pub.bytes_in_buffer;
|
||||
(void) fill_input_buffer(cinfo);
|
||||
/* note we assume that fill_input_buffer will never return FALSE,
|
||||
* so suspension need not be handled.
|
||||
*/
|
||||
/* Just a dumb implementation for now. Could use fseek() except
|
||||
* it doesn't work on pipes. Not clear that being smart is worth
|
||||
* any trouble anyway --- large skips are infrequent.
|
||||
*/
|
||||
if ( num_bytes > 0 )
|
||||
{
|
||||
while ( num_bytes > (long) src->pub.bytes_in_buffer )
|
||||
{
|
||||
num_bytes -= (long) src->pub.bytes_in_buffer;
|
||||
(void) fill_input_buffer(cinfo);
|
||||
/* note we assume that fill_input_buffer will never return FALSE,
|
||||
* so suspension need not be handled.
|
||||
*/
|
||||
}
|
||||
src->pub.next_input_byte += (size_t) num_bytes;
|
||||
src->pub.bytes_in_buffer -= (size_t) num_bytes;
|
||||
}
|
||||
src->pub.next_input_byte += (size_t) num_bytes;
|
||||
src->pub.bytes_in_buffer -= (size_t) num_bytes;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -338,7 +340,7 @@ static void skip_input_data (j_decompress_ptr cinfo, long num_bytes)
|
||||
|
||||
static void term_source (j_decompress_ptr cinfo)
|
||||
{
|
||||
/* no work necessary here */
|
||||
/* no work necessary here */
|
||||
}
|
||||
|
||||
|
||||
@@ -350,47 +352,41 @@ static void term_source (j_decompress_ptr cinfo)
|
||||
|
||||
void jpeg_mem_src( j_decompress_ptr cinfo, const JOCTET *inbuffer, int inbuffer_size )
|
||||
{
|
||||
mem_src_ptr src;
|
||||
mem_src_ptr src;
|
||||
|
||||
/* The source object and input buffer are made permanent so that a series
|
||||
* of JPEG images can be read from the same file by calling jpeg_mem_src
|
||||
* only before the first one. (If we discarded the buffer at the end of
|
||||
* one image, we'd likely lose the start of the next one.)
|
||||
* This makes it unsafe to use this manager and a different source
|
||||
* manager serially with the same JPEG object. Caveat programmer.
|
||||
*/
|
||||
if (cinfo->src == NULL)
|
||||
{
|
||||
/* first time for this JPEG object? */
|
||||
cinfo->src = (struct jpeg_source_mgr *)
|
||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
|
||||
SIZEOF(mem_source_mgr));
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
src->buffer = (JOCTET *)
|
||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
|
||||
inbuffer_size * SIZEOF(JOCTET));
|
||||
src->inbuffer_size_hwm = inbuffer_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
if ( src->inbuffer_size_hwm < inbuffer_size )
|
||||
{
|
||||
src->buffer = (JOCTET *)
|
||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
|
||||
inbuffer_size * SIZEOF(JOCTET));
|
||||
src->inbuffer_size_hwm = inbuffer_size;
|
||||
}
|
||||
}
|
||||
/* The source object and input buffer are made permanent so that a series
|
||||
* of JPEG images can be read from the same file by calling jpeg_mem_src
|
||||
* only before the first one. (If we discarded the buffer at the end of
|
||||
* one image, we'd likely lose the start of the next one.)
|
||||
* This makes it unsafe to use this manager and a different source
|
||||
* manager serially with the same JPEG object. Caveat programmer.
|
||||
*/
|
||||
if ( cinfo->src == NULL )
|
||||
{
|
||||
/* first time for this JPEG object? */
|
||||
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, SIZEOF(mem_source_mgr));
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
src->buffer = (JOCTET *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, inbuffer_size * SIZEOF(JOCTET));
|
||||
src->inbuffer_size_hwm = inbuffer_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
if ( src->inbuffer_size_hwm < inbuffer_size )
|
||||
{
|
||||
src->buffer = (JOCTET *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, inbuffer_size * SIZEOF(JOCTET));
|
||||
src->inbuffer_size_hwm = inbuffer_size;
|
||||
}
|
||||
}
|
||||
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
src->pub.init_source = init_source;
|
||||
src->pub.fill_input_buffer = fill_input_buffer;
|
||||
src->pub.skip_input_data = skip_input_data;
|
||||
src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
|
||||
src->pub.term_source = term_source;
|
||||
src->inbuffer = inbuffer;
|
||||
src->inbuffer_size = inbuffer_size;
|
||||
src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
|
||||
src->pub.next_input_byte = NULL; /* until buffer loaded */
|
||||
src = (mem_src_ptr) cinfo->src;
|
||||
src->pub.init_source = init_source;
|
||||
src->pub.fill_input_buffer = fill_input_buffer;
|
||||
src->pub.skip_input_data = skip_input_data;
|
||||
src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
|
||||
src->pub.term_source = term_source;
|
||||
src->inbuffer = (JOCTET *)inbuffer;
|
||||
src->inbuffer_size = inbuffer_size;
|
||||
src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
|
||||
src->pub.next_input_byte = NULL; /* until buffer loaded */
|
||||
}
|
||||
|
||||
@@ -193,21 +193,20 @@ Monitor::Monitor(
|
||||
) : id( p_id ),
|
||||
function( (Function)p_function ),
|
||||
enabled( p_enabled ),
|
||||
camera( p_camera ),
|
||||
orientation( (Orientation)p_orientation ),
|
||||
width( (p_orientation==ROTATE_90||p_orientation==ROTATE_270)?p_camera->Height():p_camera->Width() ),
|
||||
height( (p_orientation==ROTATE_90||p_orientation==ROTATE_270)?p_camera->Width():p_camera->Height() ),
|
||||
orientation( (Orientation)p_orientation ),
|
||||
label_coord( p_label_coord ),
|
||||
image_buffer_count( p_image_buffer_count ),
|
||||
warmup_count( p_warmup_count ),
|
||||
pre_event_count( p_pre_event_count ),
|
||||
post_event_count( p_post_event_count ),
|
||||
stream_replay_buffer( p_stream_replay_buffer ),
|
||||
alarm_frame_count( p_alarm_frame_count ),
|
||||
section_length( p_section_length ),
|
||||
frame_skip( p_frame_skip ),
|
||||
capture_delay( p_capture_delay ),
|
||||
alarm_capture_delay( p_alarm_capture_delay ),
|
||||
alarm_frame_count( p_alarm_frame_count ),
|
||||
fps_report_interval( p_fps_report_interval ),
|
||||
ref_blend_perc( p_ref_blend_perc ),
|
||||
track_motion( p_track_motion ),
|
||||
@@ -215,6 +214,7 @@ Monitor::Monitor(
|
||||
image( width, height, p_camera->Colours() ),
|
||||
ref_image( width, height, p_camera->Colours() ),
|
||||
purpose( p_purpose ),
|
||||
camera( p_camera ),
|
||||
n_zones( p_n_zones ),
|
||||
zones( p_zones )
|
||||
{
|
||||
@@ -226,7 +226,7 @@ Monitor::Monitor(
|
||||
// Change \n to actual line feeds
|
||||
char *token_ptr = label_format;
|
||||
const char *token_string = "\n";
|
||||
while( token_ptr = strstr( token_ptr, token_string ) )
|
||||
while( ( token_ptr = strstr( token_ptr, token_string ) ) )
|
||||
{
|
||||
if ( *(token_ptr+1) )
|
||||
{
|
||||
@@ -899,7 +899,7 @@ bool Monitor::Analyse()
|
||||
}
|
||||
|
||||
struct timeval now;
|
||||
gettimeofday( &now, &dummy_tz );
|
||||
gettimeofday( &now, NULL );
|
||||
|
||||
if ( image_count && !(image_count%fps_report_interval) )
|
||||
{
|
||||
@@ -2127,6 +2127,11 @@ int Monitor::PostCapture()
|
||||
{
|
||||
switch ( orientation )
|
||||
{
|
||||
case ROTATE_0 :
|
||||
{
|
||||
// No action required
|
||||
break;
|
||||
}
|
||||
case ROTATE_90 :
|
||||
case ROTATE_180 :
|
||||
case ROTATE_270 :
|
||||
@@ -2156,7 +2161,7 @@ int Monitor::PostCapture()
|
||||
Warning(( "Buffer overrun at index %d, slow down capture, speed up analysis or increase ring buffer size", index ));
|
||||
}
|
||||
|
||||
gettimeofday( image_buffer[index].timestamp, &dummy_tz );
|
||||
gettimeofday( image_buffer[index].timestamp, NULL );
|
||||
if ( config.timestamp_on_capture )
|
||||
{
|
||||
TimestampImage( &image, image_buffer[index].timestamp );
|
||||
@@ -2210,7 +2215,6 @@ void Monitor::TimestampImage( Image *ts_image, const struct timeval *ts_time ) c
|
||||
strftime( label_time_text, sizeof(label_time_text), label_format, localtime( &ts_time->tv_sec ) );
|
||||
|
||||
char label_text[1024];
|
||||
int label_tt_len = strlen( label_time_text );
|
||||
const char *s_ptr = label_time_text;
|
||||
char *d_ptr = label_text;
|
||||
while ( *s_ptr && ((d_ptr-label_text) < sizeof(label_text)) )
|
||||
@@ -2252,7 +2256,7 @@ bool Monitor::closeEvent()
|
||||
{
|
||||
if ( function == RECORD || function == MOCORD )
|
||||
{
|
||||
gettimeofday( &(event->EndTime()), &dummy_tz );
|
||||
gettimeofday( &(event->EndTime()), NULL );
|
||||
}
|
||||
delete event;
|
||||
event = 0;
|
||||
@@ -2550,7 +2554,7 @@ bool MonitorStream::checkSwapPath( const char *path, bool create_path )
|
||||
|
||||
void MonitorStream::processCommand( const CmdMsg *msg )
|
||||
{
|
||||
Debug( 2, ( "Got message, type %d, msg %d", msg->msg_type, msg->msg_data[0] ));
|
||||
Debug( 2, ( "Got message, type %ld, msg %d", msg->msg_type, msg->msg_data[0] ));
|
||||
// Check for incoming command
|
||||
switch( (MsgCommand)msg->msg_data[0] )
|
||||
{
|
||||
@@ -2869,7 +2873,7 @@ void MonitorStream::sendFrame( Image *image, struct timeval *timestamp )
|
||||
if ( !frame_count )
|
||||
base_time = *timestamp;
|
||||
DELTA_TIMEVAL( delta_time, *timestamp, base_time, DT_PREC_3 );
|
||||
double pts = vid_stream->EncodeFrame( send_image->Buffer(), send_image->Size(), config.mpeg_timed_frames, delta_time.delta );
|
||||
/* double pts = */ vid_stream->EncodeFrame( send_image->Buffer(), send_image->Size(), config.mpeg_timed_frames, delta_time.delta );
|
||||
}
|
||||
else
|
||||
#endif // HAVE_LIBAVCODEC
|
||||
@@ -2897,6 +2901,9 @@ void MonitorStream::sendFrame( Image *image, struct timeval *timestamp )
|
||||
send_image->Zip( img_buffer, &zip_buffer_size );
|
||||
img_buffer_size = zip_buffer_size;
|
||||
break;
|
||||
default :
|
||||
Fatal(( "Unexpected frame type %d", type ));
|
||||
break;
|
||||
}
|
||||
fprintf( stdout, "Content-Length: %d\r\n\r\n", img_buffer_size );
|
||||
fwrite( img_buffer, img_buffer_size, 1, stdout );
|
||||
@@ -2936,7 +2943,6 @@ void MonitorStream::runStream()
|
||||
temp_read_index = temp_image_buffer_count;
|
||||
temp_write_index = temp_image_buffer_count;
|
||||
|
||||
char swap_file_name[PATH_MAX];
|
||||
char swap_path[PATH_MAX] = "";
|
||||
|
||||
if ( connkey )
|
||||
@@ -2978,7 +2984,7 @@ void MonitorStream::runStream()
|
||||
break;
|
||||
}
|
||||
|
||||
gettimeofday( &now, &dummy_tz );
|
||||
gettimeofday( &now, NULL );
|
||||
|
||||
if ( buffer_playback )
|
||||
{
|
||||
@@ -3198,7 +3204,6 @@ void MonitorStream::runStream()
|
||||
|
||||
void Monitor::SingleImage( int scale)
|
||||
{
|
||||
int last_read_index = shared_data->last_write_index;
|
||||
int img_buffer_size = 0;
|
||||
static JOCTET img_buffer[ZM_MAX_IMAGE_SIZE];
|
||||
Image scaled_image;
|
||||
@@ -3225,7 +3230,6 @@ void Monitor::SingleImage( int scale)
|
||||
|
||||
void Monitor::SingleImageRaw( int scale)
|
||||
{
|
||||
int last_read_index = shared_data->last_write_index;
|
||||
Image scaled_image;
|
||||
int index = shared_data->last_write_index%image_buffer_count;
|
||||
Snapshot *snap = &image_buffer[index];
|
||||
@@ -3249,7 +3253,6 @@ void Monitor::SingleImageRaw( int scale)
|
||||
|
||||
void Monitor::SingleImageZip( int scale)
|
||||
{
|
||||
int last_read_index = shared_data->last_write_index;
|
||||
unsigned long img_buffer_size = 0;
|
||||
static Bytef img_buffer[ZM_MAX_IMAGE_SIZE];
|
||||
Image scaled_image;
|
||||
@@ -3269,7 +3272,7 @@ void Monitor::SingleImageZip( int scale)
|
||||
}
|
||||
snap_image->Zip( img_buffer, &img_buffer_size );
|
||||
|
||||
fprintf( stdout, "Content-Length: %d\r\n", img_buffer_size );
|
||||
fprintf( stdout, "Content-Length: %ld\r\n", img_buffer_size );
|
||||
fprintf( stdout, "Content-Type: image/x-rgbz\r\n\r\n" );
|
||||
fwrite( img_buffer, img_buffer_size, 1, stdout );
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
static struct timezone dummy_tz; // To avoid declaring pointless one each time we use gettimeofday
|
||||
|
||||
#include "zm_coord.h"
|
||||
#include "zm_image.h"
|
||||
#include "zm_zone.h"
|
||||
@@ -118,7 +116,7 @@ protected:
|
||||
class MonitorLink
|
||||
{
|
||||
protected:
|
||||
int id;
|
||||
unsigned int id;
|
||||
char name[64];
|
||||
|
||||
bool connected;
|
||||
@@ -166,7 +164,7 @@ protected:
|
||||
|
||||
protected:
|
||||
// These are read from the DB and thereafter remain unchanged
|
||||
int id;
|
||||
unsigned int id;
|
||||
char name[64];
|
||||
Function function; // What the monitor is doing
|
||||
bool enabled; // Whether the monitor is enabled or asleep
|
||||
|
||||
@@ -539,6 +539,11 @@ int RemoteCamera::GetResponse()
|
||||
Debug( 3, ( "Returning %d (%d) bytes of captured content", content_length, buffer.Size() ));
|
||||
return( content_length );
|
||||
}
|
||||
default :
|
||||
{
|
||||
Error(( "Unexpected content parsing state %d", state ));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -660,7 +665,7 @@ int RemoteCamera::GetResponse()
|
||||
}
|
||||
|
||||
Debug( 6, ( header_ptr ));
|
||||
if ( crlf = mempbrk( header_ptr, "\r\n", header_len ) )
|
||||
if ( ( crlf = mempbrk( header_ptr, "\r\n", header_len ) ) )
|
||||
{
|
||||
headers[n_headers++] = header_ptr;
|
||||
|
||||
@@ -728,7 +733,7 @@ int RemoteCamera::GetResponse()
|
||||
|
||||
if ( status < 200 || status > 299 )
|
||||
{
|
||||
Error(( "Invalid response status %d: %s", status_code, status_mesg ));
|
||||
Error(( "Invalid response status %s: %s", status_code, status_mesg ));
|
||||
return( -1 );
|
||||
}
|
||||
Debug( 3, ( "Got status '%d' (%s), http version %s", status, status_mesg, http_version ));
|
||||
@@ -750,7 +755,7 @@ int RemoteCamera::GetResponse()
|
||||
{
|
||||
memset( content_type, 0, sizeof(content_type) );
|
||||
start_ptr = content_type_header + strspn( content_type_header, " " );
|
||||
if ( end_ptr = strchr( start_ptr, ';' ) )
|
||||
if ( ( end_ptr = strchr( start_ptr, ';' ) ) )
|
||||
{
|
||||
strncpy( content_type, start_ptr, end_ptr-start_ptr );
|
||||
Debug( 3, ( "Got content type '%s'", content_type ));
|
||||
@@ -872,7 +877,7 @@ int RemoteCamera::GetResponse()
|
||||
|
||||
Debug( 6, ( "%d: %s", subheader_len, subheader_ptr ));
|
||||
|
||||
if ( crlf = mempbrk( subheader_ptr, "\r\n", subheader_len ) )
|
||||
if ( ( crlf = mempbrk( subheader_ptr, "\r\n", subheader_len ) ) )
|
||||
{
|
||||
subheaders[n_subheaders++] = subheader_ptr;
|
||||
|
||||
@@ -909,7 +914,7 @@ int RemoteCamera::GetResponse()
|
||||
|
||||
if ( all_headers && boundary_header )
|
||||
{
|
||||
char *start_ptr, *end_ptr;
|
||||
char *start_ptr;
|
||||
|
||||
Debug( 3, ( "Got boundary '%s'", boundary_header ));
|
||||
|
||||
@@ -1153,7 +1158,6 @@ void RemoteCamera::Base64Encode( const char *in_string, char *out_string )
|
||||
base64_table[i++] = '/';
|
||||
}
|
||||
|
||||
int in_len = strlen( in_string );
|
||||
const char *in_ptr = in_string;
|
||||
char *out_ptr = out_string;
|
||||
while( *in_ptr )
|
||||
|
||||
@@ -86,7 +86,7 @@ RETSIGTYPE zm_die_handler( int signal )
|
||||
int trace_size = 0;
|
||||
|
||||
#if HAVE_STRUCT_SIGCONTEXT_EIP
|
||||
Error(( "Signal address is %p, from %p\n", context.cr2, context.eip ));
|
||||
Error(( "Signal address is %p, from %p\n", (void *)context.cr2, (void *)context.eip ));
|
||||
|
||||
trace_size = backtrace( trace, 16 );
|
||||
// overwrite sigaction with caller's address
|
||||
|
||||
@@ -94,9 +94,6 @@ bool StreamBase::checkCommandQueue()
|
||||
|
||||
Image *StreamBase::prepareImage( Image *image )
|
||||
{
|
||||
int img_buffer_size = 0;
|
||||
static JOCTET img_buffer[ZM_MAX_IMAGE_SIZE];
|
||||
|
||||
static int last_scale = 0;
|
||||
static int last_zoom = 0;
|
||||
static int last_x = 0;
|
||||
@@ -247,7 +244,7 @@ void StreamBase::sendTextFrame( const char *frame_text )
|
||||
fprintf( stdout, "Content-type: %s\r\n\r\n", vid_stream->MimeType() );
|
||||
vid_stream->OpenStream();
|
||||
}
|
||||
double pts = vid_stream->EncodeFrame( image.Buffer(), image.Size() );
|
||||
/* double pts = */ vid_stream->EncodeFrame( image.Buffer(), image.Size() );
|
||||
}
|
||||
else
|
||||
#endif // HAVE_LIBAVCODEC
|
||||
|
||||
@@ -131,8 +131,6 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||
// Get the difference image
|
||||
Image *diff_image = image = new Image( *delta_image );
|
||||
int diff_width = diff_image->Width();
|
||||
int diff_height = diff_image->Height();
|
||||
int diff_stride = diff_width * diff_image->Colours();
|
||||
|
||||
unsigned long pixel_diff_count = 0;
|
||||
|
||||
@@ -346,15 +344,13 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||
{
|
||||
int lo_x = ranges[py].lo_x;
|
||||
int hi_x = ranges[py].hi_x;
|
||||
int last_lo_x = py>=0?ranges[py-1].lo_x:0;
|
||||
int last_hi_x = py>=0?ranges[py-1].hi_x:0;
|
||||
|
||||
pdiff = diff_image->Buffer( lo_x, y );
|
||||
for ( int x = lo_x; x <= hi_x; x++, pdiff++ )
|
||||
{
|
||||
if ( *pdiff == WHITE )
|
||||
{
|
||||
Debug( 9, ( "Got white pixel at %d,%d (%x)", x, y, pdiff ));
|
||||
Debug( 9, ( "Got white pixel at %d,%d (%p)", x, y, pdiff ));
|
||||
//last_x = (x>lo_x)?*(pdiff-1):0;
|
||||
//last_y = (y>lo_y&&x>=last_lo_x&&x<=last_hi_x)?*(pdiff-diff_width):0;
|
||||
last_x = x>0?*(pdiff-1):0;
|
||||
@@ -398,7 +394,7 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||
spdiff = diff_image->Buffer( lo_sx, sy );
|
||||
for ( int sx = lo_sx; sx <= hi_sx; sx++, spdiff++ )
|
||||
{
|
||||
Debug( 9, ( "Pixel at %d,%d (%x) is %d", sx, sy, spdiff, *spdiff ));
|
||||
Debug( 9, ( "Pixel at %d,%d (%p) is %d", sx, sy, spdiff, *spdiff ));
|
||||
if ( *spdiff == bss->tag )
|
||||
{
|
||||
Debug( 9, ( "Setting pixel" ));
|
||||
@@ -838,7 +834,7 @@ bool Zone::ParseZoneString( const char *zone_string, int &zone_id, int &colour,
|
||||
char *ws = strchr( str, ' ' );
|
||||
if ( !ws )
|
||||
{
|
||||
Debug( 3, ( "No whitespace found in zone string, finishing", zone_string ));
|
||||
Debug( 3, ( "No whitespace found in zone string '%s', finishing", zone_string ));
|
||||
}
|
||||
zone_id = strtol( str, 0, 10 );
|
||||
Debug( 3, ( "Got zone %d from zone string", zone_id ));
|
||||
@@ -901,7 +897,7 @@ int Zone::Load( Monitor *monitor, Zone **&zones )
|
||||
const char *Name = dbrow[col++];
|
||||
int Type = atoi(dbrow[col++]);
|
||||
const char *Units = dbrow[col++];
|
||||
int NumCoords = atoi(dbrow[col++]);
|
||||
/* int NumCoords = */ atoi(dbrow[col++]);
|
||||
const char *Coords = dbrow[col++];
|
||||
int AlarmRGB = dbrow[col]?atoi(dbrow[col]):0; col++;
|
||||
int CheckMethod = atoi(dbrow[col++]);
|
||||
|
||||
@@ -109,7 +109,6 @@ int main( int argc, char *argv[] )
|
||||
|
||||
sigset_t block_set;
|
||||
sigemptyset( &block_set );
|
||||
struct sigaction action, old_action;
|
||||
|
||||
while( !zm_terminate )
|
||||
{
|
||||
|
||||
@@ -187,7 +187,6 @@ int main( int argc, char *argv[] )
|
||||
|
||||
sigset_t block_set;
|
||||
sigemptyset( &block_set );
|
||||
struct sigaction action, old_action;
|
||||
|
||||
sigaddset( &block_set, SIGUSR1 );
|
||||
sigaddset( &block_set, SIGUSR2 );
|
||||
@@ -218,7 +217,7 @@ int main( int argc, char *argv[] )
|
||||
{
|
||||
long min_delay = MAXINT;
|
||||
|
||||
gettimeofday( &now, &dummy_tz );
|
||||
gettimeofday( &now, NULL );
|
||||
for ( int j = 0; j < n_monitors; j++ )
|
||||
{
|
||||
if ( last_capture_times[j].tv_sec )
|
||||
@@ -256,7 +255,7 @@ int main( int argc, char *argv[] )
|
||||
|
||||
if ( next_delays[i] > 0 )
|
||||
{
|
||||
gettimeofday( &now, &dummy_tz );
|
||||
gettimeofday( &now, NULL );
|
||||
DELTA_TIMEVAL( delta_time, now, last_capture_times[i], DT_PREC_3 );
|
||||
long sleep_time = next_delays[i]-delta_time.delta;
|
||||
if ( sleep_time > 0 )
|
||||
@@ -264,7 +263,7 @@ int main( int argc, char *argv[] )
|
||||
usleep( sleep_time*(DT_MAXGRAN/DT_PREC_3) );
|
||||
}
|
||||
}
|
||||
gettimeofday( &(last_capture_times[i]), &dummy_tz );
|
||||
gettimeofday( &(last_capture_times[i]), NULL );
|
||||
}
|
||||
}
|
||||
sigprocmask( SIG_UNBLOCK, &block_set, 0 );
|
||||
|
||||
@@ -177,7 +177,6 @@ int main( int argc, char *argv[] )
|
||||
|
||||
sigset_t block_set;
|
||||
sigemptyset( &block_set );
|
||||
struct sigaction action, old_action;
|
||||
|
||||
int sd = OpenSocket( monitor->Id() );
|
||||
|
||||
@@ -223,7 +222,7 @@ int main( int argc, char *argv[] )
|
||||
}
|
||||
else
|
||||
{
|
||||
Warning(( "Socket closed at remote end", n_bytes ));
|
||||
Warning(( "Socket closed at remote end" ));
|
||||
}
|
||||
ReopenSocket( sd, monitor->Id() );
|
||||
continue;
|
||||
@@ -243,7 +242,7 @@ int main( int argc, char *argv[] )
|
||||
}
|
||||
else
|
||||
{
|
||||
Warning(( "Socket closed at remote end", n_bytes ));
|
||||
Warning(( "Socket closed at remote end" ));
|
||||
}
|
||||
ReopenSocket( sd, monitor->Id() );
|
||||
continue;
|
||||
@@ -256,7 +255,7 @@ int main( int argc, char *argv[] )
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf( subpath, sizeof(subpath), "%d", frame_header.event_id );
|
||||
snprintf( subpath, sizeof(subpath), "%ld", frame_header.event_id );
|
||||
}
|
||||
static char path[PATH_MAX] = "";
|
||||
snprintf( path, sizeof(path), frame_header.alarm_frame?anal_path:capt_path, subpath, frame_header.frame_id );
|
||||
|
||||
Reference in New Issue
Block a user