Skip to content

Commit

Permalink
Merge branch 'ZoneMinder:master' into patch-474778
Browse files Browse the repository at this point in the history
  • Loading branch information
IgorA100 authored Sep 27, 2024
2 parents 09a2c17 + 33ede2f commit d85be89
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
19 changes: 10 additions & 9 deletions src/zm_eventstream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ bool EventStream::loadInitialEventData(
bool EventStream::loadEventData(uint64_t event_id) {
std::string sql = stringtf(
"SELECT `MonitorId`, `StorageId`, `Frames`, unix_timestamp( `StartDateTime` ) AS StartTimestamp, "
"unix_timestamp( `EndDateTime` ) AS EndTimestamp, "
"unix_timestamp( `EndDateTime` ) AS EndTimestamp, Length, "
"(SELECT max(`Delta`)-min(`Delta`) FROM `Frames` WHERE `EventId`=`Events`.`Id`) AS FramesDuration, "
"`DefaultVideo`, `Scheme`, `SaveJPEGs`, `Orientation`+0 FROM `Events` WHERE `Id` = %" PRIu64, event_id);

Expand Down Expand Up @@ -140,20 +140,20 @@ bool EventStream::loadEventData(uint64_t event_id) {
event_data->frame_count = dbrow[2] == nullptr ? 0 : atoi(dbrow[2]);
event_data->start_time = SystemTimePoint(Seconds(atoi(dbrow[3])));
event_data->end_time = dbrow[4] ? SystemTimePoint(Seconds(atoi(dbrow[4]))) : std::chrono::system_clock::now();
event_data->duration = std::chrono::duration_cast<Microseconds>(event_data->end_time - event_data->start_time);
event_data->duration = std::chrono::duration_cast<Microseconds>(dbrow[5] ? FPSeconds(atof(dbrow[5])) : event_data->end_time - event_data->start_time);
event_data->frames_duration =
std::chrono::duration_cast<Microseconds>(dbrow[5] ? FPSeconds(atof(dbrow[5])) : FPSeconds(0.0));
event_data->video_file = std::string(dbrow[6]);
std::string scheme_str = std::string(dbrow[7]);
std::chrono::duration_cast<Microseconds>(dbrow[6] ? FPSeconds(atof(dbrow[6])) : FPSeconds(0.0));
event_data->video_file = std::string(dbrow[7]);
std::string scheme_str = std::string(dbrow[8]);
if ( scheme_str == "Deep" ) {
event_data->scheme = Storage::DEEP;
} else if ( scheme_str == "Medium" ) {
event_data->scheme = Storage::MEDIUM;
} else {
event_data->scheme = Storage::SHALLOW;
}
event_data->SaveJPEGs = dbrow[8] == nullptr ? 0 : atoi(dbrow[8]);
event_data->Orientation = (Monitor::Orientation)(dbrow[9] == nullptr ? 0 : atoi(dbrow[9]));
event_data->SaveJPEGs = dbrow[9] == nullptr ? 0 : atoi(dbrow[9]);
event_data->Orientation = (Monitor::Orientation)(dbrow[10] == nullptr ? 0 : atoi(dbrow[10]));
mysql_free_result(result);

if (!monitor) {
Expand Down Expand Up @@ -289,7 +289,7 @@ bool EventStream::loadEventData(uint64_t event_id) {
frame.in_db);
} // end foreach db row

if (event_data->end_time.time_since_epoch() != Seconds(0) and event_data->duration != Seconds(0)) {
if (event_data->end_time.time_since_epoch() != Seconds(0) and event_data->duration != Seconds(0) and event_data->frame_count > last_id) {
Microseconds delta;
if (!last_frame) {
// There were no frames in db
Expand All @@ -306,6 +306,7 @@ bool EventStream::loadEventData(uint64_t event_id) {
last_timestamp = event_data->start_time;
event_data->frame_count ++;
} else {
Debug(1, "EIther no endtime or no duration, frame_count %d, last_id %d", event_data->frame_count, last_id);
delta = std::chrono::duration_cast<Microseconds>((event_data->end_time - last_timestamp)/(event_data->frame_count-last_id));
Debug(1, "Setting delta from endtime %f - %f / %d - %d",
FPSeconds(event_data->end_time.time_since_epoch()).count(),
Expand Down Expand Up @@ -659,7 +660,7 @@ void EventStream::processCommand(const CmdMsg *msg) {

status_data.event_id = event_data->event_id;
//status_data.duration = event_data->duration;
status_data.duration = std::chrono::duration<double>(event_data->duration).count();
status_data.duration = FPSeconds(event_data->duration).count();
//status_data.progress = event_data->frames[curr_frame_id-1].offset;
status_data.progress = std::chrono::duration<double>(event_data->frames[curr_frame_id-1].offset).count();
status_data.rate = replay_rate;
Expand Down
3 changes: 2 additions & 1 deletion web/skins/classic/views/event.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@
$replayMode = 'none';
}

$video_tag = ($codec == 'MP4') | ((false !== strpos($Event->DefaultVideo(), 'h264')) & ($codec === 'auto'));
$video_tag = ($codec == 'MP4') ||
((false !== strpos($Event->DefaultVideo(), 'h264') || (false !== strpos($Event->DefaultVideo(), 'av1')) && ($codec === 'auto'));

// videojs zoomrotate only when direct recording
$Zoom = 1;
Expand Down

0 comments on commit d85be89

Please sign in to comment.