Merge branch 'master' into fix_token_auth_sessions
This commit is contained in:
commit
bf34d8901e
|
@ -9,4 +9,5 @@
|
||||||
endscript
|
endscript
|
||||||
daily
|
daily
|
||||||
rotate 7
|
rotate 7
|
||||||
|
maxage 7
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,4 +9,5 @@
|
||||||
endscript
|
endscript
|
||||||
daily
|
daily
|
||||||
rotate 7
|
rotate 7
|
||||||
|
maxage 7
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ bool EventStream::loadEventData(uint64_t event_id) {
|
||||||
|
|
||||||
snprintf(sql, sizeof(sql),
|
snprintf(sql, sizeof(sql),
|
||||||
"SELECT `MonitorId`, `StorageId`, `Frames`, unix_timestamp( `StartTime` ) AS StartTimestamp, "
|
"SELECT `MonitorId`, `StorageId`, `Frames`, unix_timestamp( `StartTime` ) AS StartTimestamp, "
|
||||||
"(SELECT max(`Delta`)-min(`Delta`) FROM `Frames` WHERE `EventId`=`Events.Id`) AS Duration, "
|
"(SELECT max(`Delta`)-min(`Delta`) FROM `Frames` WHERE `EventId`=`Events`.`Id`) AS Duration, "
|
||||||
"`DefaultVideo`, `Scheme`, `SaveJPEGs` FROM `Events` WHERE `Id` = %" PRIu64, event_id);
|
"`DefaultVideo`, `Scheme`, `SaveJPEGs` FROM `Events` WHERE `Id` = %" PRIu64, event_id);
|
||||||
|
|
||||||
if ( mysql_query(&dbconn, sql) ) {
|
if ( mysql_query(&dbconn, sql) ) {
|
||||||
|
@ -674,7 +674,7 @@ bool EventStream::sendFrame(int delta_us) {
|
||||||
fdj = fopen(filepath, "rb");
|
fdj = fopen(filepath, "rb");
|
||||||
if ( !fdj ) {
|
if ( !fdj ) {
|
||||||
Error("Can't open %s: %s", filepath, strerror(errno));
|
Error("Can't open %s: %s", filepath, strerror(errno));
|
||||||
return false;
|
return true; // returning false will cause us to terminate.
|
||||||
}
|
}
|
||||||
#if HAVE_SENDFILE
|
#if HAVE_SENDFILE
|
||||||
if ( fstat(fileno(fdj),&filestat) < 0 ) {
|
if ( fstat(fileno(fdj),&filestat) < 0 ) {
|
||||||
|
@ -829,12 +829,6 @@ void EventStream::runStream() {
|
||||||
Debug(2, "Not checking command queue");
|
Debug(2, "Not checking command queue");
|
||||||
}
|
}
|
||||||
|
|
||||||
//if ( step != 0 )// Adding 0 is cheaper than an if 0
|
|
||||||
// curr_frame_id starts at 1 though, so we might skip the first frame?
|
|
||||||
curr_frame_id += step;
|
|
||||||
|
|
||||||
// Detects when we hit end of event and will load the next event or previous event
|
|
||||||
checkEventLoaded();
|
|
||||||
|
|
||||||
// Get current frame data
|
// Get current frame data
|
||||||
FrameData *frame_data = &event_data->frames[curr_frame_id-1];
|
FrameData *frame_data = &event_data->frames[curr_frame_id-1];
|
||||||
|
@ -926,7 +920,6 @@ void EventStream::runStream() {
|
||||||
} // end if streaming stepping or doing nothing
|
} // end if streaming stepping or doing nothing
|
||||||
|
|
||||||
if ( send_frame ) {
|
if ( send_frame ) {
|
||||||
//Debug(3,"sending frame");
|
|
||||||
if ( !sendFrame(delta_us) )
|
if ( !sendFrame(delta_us) )
|
||||||
zm_terminate = true;
|
zm_terminate = true;
|
||||||
}
|
}
|
||||||
|
@ -959,7 +952,10 @@ void EventStream::runStream() {
|
||||||
|
|
||||||
if ( send_frame && type != STREAM_MPEG ) {
|
if ( send_frame && type != STREAM_MPEG ) {
|
||||||
if ( delta_us > 0) {
|
if ( delta_us > 0) {
|
||||||
Debug(3, "dUs: %d", delta_us);
|
if ( delta_us > MAX_SLEEP_USEC ) {
|
||||||
|
Debug(1, "Limiting sleep to %d because calculated sleep is too long %d", MAX_SLEEP_USEC, delta_us);
|
||||||
|
delta_us = MAX_SLEEP_USEC;
|
||||||
|
}
|
||||||
usleep(delta_us);
|
usleep(delta_us);
|
||||||
Debug(3, "Done sleeping: %d usec", delta_us);
|
Debug(3, "Done sleeping: %d usec", delta_us);
|
||||||
}
|
}
|
||||||
|
@ -971,16 +967,23 @@ void EventStream::runStream() {
|
||||||
(unsigned long)((1000000 * ZM_RATE_BASE)/((base_fps?base_fps:1)*abs(replay_rate*2))),
|
(unsigned long)((1000000 * ZM_RATE_BASE)/((base_fps?base_fps:1)*abs(replay_rate*2))),
|
||||||
ZM_RATE_BASE,
|
ZM_RATE_BASE,
|
||||||
(base_fps?base_fps:1),
|
(base_fps?base_fps:1),
|
||||||
(replay_rate?abs(replay_rate*2):200)
|
(replay_rate?abs(replay_rate*2):0)
|
||||||
);
|
);
|
||||||
if ( delta_us > 0 and delta_us < 500000 ) {
|
if ( delta_us > 0 ) {
|
||||||
|
if ( delta_us > MAX_SLEEP_USEC ) {
|
||||||
|
Debug(1, "Limiting sleep to %d because calculated sleep is too long %d", MAX_SLEEP_USEC, delta_us);
|
||||||
|
delta_us = MAX_SLEEP_USEC;
|
||||||
|
}
|
||||||
usleep(delta_us);
|
usleep(delta_us);
|
||||||
} else {
|
|
||||||
// Never want to sleep for too long, limit to .1s
|
|
||||||
Warning("sleeping .5s because delta_us (%d) not good!", delta_us);
|
|
||||||
usleep(500000);
|
|
||||||
}
|
}
|
||||||
} // end if !paused
|
} // end if !paused
|
||||||
|
|
||||||
|
//if ( step != 0 )// Adding 0 is cheaper than an if 0
|
||||||
|
// curr_frame_id starts at 1 though, so we might skip the first frame?
|
||||||
|
curr_frame_id += step;
|
||||||
|
|
||||||
|
// Detects when we hit end of event and will load the next event or previous event
|
||||||
|
checkEventLoaded();
|
||||||
} // end while ! zm_terminate
|
} // end while ! zm_terminate
|
||||||
#if HAVE_LIBAVCODEC
|
#if HAVE_LIBAVCODEC
|
||||||
if ( type == STREAM_MPEG )
|
if ( type == STREAM_MPEG )
|
||||||
|
|
|
@ -482,7 +482,7 @@ int FfmpegCamera::OpenFfmpeg() {
|
||||||
hw_pix_fmt = find_fmt_by_hw_type(type);
|
hw_pix_fmt = find_fmt_by_hw_type(type);
|
||||||
#endif
|
#endif
|
||||||
if ( hw_pix_fmt != AV_PIX_FMT_NONE ) {
|
if ( hw_pix_fmt != AV_PIX_FMT_NONE ) {
|
||||||
Debug(1, "Selected gw_pix_fmt %d %s",
|
Debug(1, "Selected hw_pix_fmt %d %s",
|
||||||
hw_pix_fmt,
|
hw_pix_fmt,
|
||||||
av_get_pix_fmt_name(hw_pix_fmt));
|
av_get_pix_fmt_name(hw_pix_fmt));
|
||||||
|
|
||||||
|
|
|
@ -976,7 +976,7 @@ void Monitor::actionDisable() {
|
||||||
shared_data->action |= RELOAD;
|
shared_data->action |= RELOAD;
|
||||||
|
|
||||||
static char sql[ZM_SQL_SML_BUFSIZ];
|
static char sql[ZM_SQL_SML_BUFSIZ];
|
||||||
snprintf(sql, sizeof(sql), "UPDATE `Monitors` SET i`Enabled` = 0 WHERE `Id` = %d", id);
|
snprintf(sql, sizeof(sql), "UPDATE `Monitors` SET `Enabled` = 0 WHERE `Id` = %d", id);
|
||||||
db_mutex.lock();
|
db_mutex.lock();
|
||||||
if ( mysql_query(&dbconn, sql) ) {
|
if ( mysql_query(&dbconn, sql) ) {
|
||||||
Error("Can't run query: %s", mysql_error(&dbconn));
|
Error("Can't run query: %s", mysql_error(&dbconn));
|
||||||
|
|
|
@ -36,6 +36,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static const int MAX_STREAM_DELAY = 5; // Seconds
|
static const int MAX_STREAM_DELAY = 5; // Seconds
|
||||||
|
static const int MAX_SLEEP_USEC = 500000; // .5 Seconds
|
||||||
|
|
||||||
static const StreamType DEFAULT_TYPE = STREAM_JPEG;
|
static const StreamType DEFAULT_TYPE = STREAM_JPEG;
|
||||||
enum { DEFAULT_RATE=ZM_RATE_BASE };
|
enum { DEFAULT_RATE=ZM_RATE_BASE };
|
||||||
|
|
|
@ -300,7 +300,7 @@ $SLANG = array(
|
||||||
'Display' => 'Display',
|
'Display' => 'Display',
|
||||||
'Displaying' => 'Displaying',
|
'Displaying' => 'Displaying',
|
||||||
'DonateAlready' => 'No, I\'ve already donated',
|
'DonateAlready' => 'No, I\'ve already donated',
|
||||||
'DonateEnticement' => 'You\'ve been running ZoneMinder for a while now and hopefully are finding it a useful addition to your home or workplace security. Although ZoneMinder is, and will remain, free and open source, it costs money to develop and support. If you would like to help support future development and new features then please consider donating. Donating is, of course, optional but very much appreciated and you can donate as much or as little as you like.<br/><br/>If you would like to donate please select the option below or go to https://zoneminder.com/donate/ in your browser.<br/><br/>Thank you for using ZoneMinder and don\'t forget to visit the forums on ZoneMinder.com for support or suggestions about how to make your ZoneMinder experience even better.',
|
'DonateEnticement' => 'You\'ve been running ZoneMinder for a while now and hopefully are finding it a useful addition to your home or workplace security. Although ZoneMinder is, and will remain, free and open source, it costs money to develop and support. If you would like to help support future development and new features then please consider donating. Donating is, of course, optional but very much appreciated and you can donate as much or as little as you like.<br/><br/>If you would like to donate please select the option below or go to <a href="https://zoneminder.com/donate/" target="_blank">https://zoneminder.com/donate/</a> in your browser.<br/><br/>Thank you for using ZoneMinder and don\'t forget to visit the forums on <a href="https://forums.zoneminder.com">ZoneMinder.com</a> for support or suggestions about how to make your ZoneMinder experience even better.',
|
||||||
'Donate' => 'Please Donate',
|
'Donate' => 'Please Donate',
|
||||||
'DonateRemindDay' => 'Not yet, remind again in 1 day',
|
'DonateRemindDay' => 'Not yet, remind again in 1 day',
|
||||||
'DonateRemindHour' => 'Not yet, remind again in 1 hour',
|
'DonateRemindHour' => 'Not yet, remind again in 1 hour',
|
||||||
|
|
|
@ -324,14 +324,14 @@ th.table-th-sort span.table-th-sort-span {
|
||||||
float: right;
|
float: right;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
background: url("/skins/classic/graphics/arrow-s-u.png") no-repeat 0 0;
|
background: url("../skins/classic/graphics/arrow-s-u.png") no-repeat 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
th.table-th-sort-rev span.table-th-sort-span {
|
th.table-th-sort-rev span.table-th-sort-span {
|
||||||
float: right;
|
float: right;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
background: url("/skins/classic/graphics/arrow-s-d.png") no-repeat 0 0;
|
background: url("../skins/classic/graphics/arrow-s-d.png") no-repeat 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-tr-odd {
|
.table-tr-odd {
|
||||||
|
|
|
@ -328,7 +328,8 @@ for( $monitor_i = 0; $monitor_i < count($displayMonitors); $monitor_i += 1 ) {
|
||||||
?>
|
?>
|
||||||
<td class="colMark">
|
<td class="colMark">
|
||||||
<input type="checkbox" name="markMids[]" value="<?php echo $monitor['Id'] ?>" data-on-click-this="setButtonStates"<?php if ( !canEdit( 'Monitors' ) ) { ?> disabled="disabled"<?php } ?>/>
|
<input type="checkbox" name="markMids[]" value="<?php echo $monitor['Id'] ?>" data-on-click-this="setButtonStates"<?php if ( !canEdit( 'Monitors' ) ) { ?> disabled="disabled"<?php } ?>/>
|
||||||
<span class="glyphicon glyphicon-sort" title="Click and drag to change order"></span>
|
<!--<span class="glyphicon glyphicon-sort" title="Click and drag to change order"></span>-->
|
||||||
|
<i class="material-icons sort" title="Click and drag to change order">swap_vert</i>
|
||||||
</td>
|
</td>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,7 +128,7 @@ function initPage() {
|
||||||
// Makes table sortable
|
// Makes table sortable
|
||||||
$j( function() {
|
$j( function() {
|
||||||
$j( "#consoleTableBody" ).sortable({
|
$j( "#consoleTableBody" ).sortable({
|
||||||
handle: ".glyphicon-sort",
|
handle: ".sort",
|
||||||
update: applySort,
|
update: applySort,
|
||||||
axis: 'Y'} );
|
axis: 'Y'} );
|
||||||
$j( "#consoleTableBody" ).disableSelection();
|
$j( "#consoleTableBody" ).disableSelection();
|
||||||
|
|
Loading…
Reference in New Issue