Merge branch 'master' of github.com:ZoneMinder/zoneminder
This commit is contained in:
commit
ccdf002c18
|
@ -86,7 +86,7 @@ Source Path
|
||||||
Use this field to enter the full URL of the stream or file your camera supports. This is usually an RTSP url. There are several methods to learn this:
|
Use this field to enter the full URL of the stream or file your camera supports. This is usually an RTSP url. There are several methods to learn this:
|
||||||
|
|
||||||
* Check the documentation that came with your camera
|
* Check the documentation that came with your camera
|
||||||
* Look for your camera in the hardware compatibilty list in the `hardware compatibility wiki <https://wiki.zoneminder.com/Hardware_Compatibility_List>`__
|
* Look for your camera in the hardware compatibility list in the `hardware compatibility wiki <https://wiki.zoneminder.com/Hardware_Compatibility_List>`__
|
||||||
* Try ZoneMinder's new ONVIF probe feature
|
* Try ZoneMinder's new ONVIF probe feature
|
||||||
* Download and install the `ONVIF Device Manager <https://sourceforge.net/projects/onvifdm/>`__ onto a Windows machine
|
* Download and install the `ONVIF Device Manager <https://sourceforge.net/projects/onvifdm/>`__ onto a Windows machine
|
||||||
* Use Google to find third party sites, such as ispy, which document this information
|
* Use Google to find third party sites, such as ispy, which document this information
|
||||||
|
@ -179,12 +179,12 @@ Storage Tab
|
||||||
The storage section allows for each monitor to configure if and how video and audio are recorded.
|
The storage section allows for each monitor to configure if and how video and audio are recorded.
|
||||||
|
|
||||||
Save JPEGs
|
Save JPEGs
|
||||||
Records video in individual JPEG frames. Storing JPEG frames requires more storage space than h264 but it allows to view an event anytime while it is being recorded.
|
Records video in individual JPEG frames. Storing JPEG frames requires more storage space than h264 but it allows one to view an event anytime while it is being recorded.
|
||||||
|
|
||||||
* Disabled – video is not recorded as JPEG frames. If this setting is selected, then "Video Writer" should be enabled otherwise there is no video recording at all.
|
* Disabled – video is not recorded as JPEG frames. If this setting is selected, then "Video Writer" should be enabled otherwise there is no video recording at all.
|
||||||
* Frames only – video is recorded in individual JPEG frames.
|
* Frames only – video is recorded in individual JPEG frames.
|
||||||
* Analysis images only (if available) – video is recorded in invidual JPEG frames with an overlay of the motion detection analysis information. Note that this overlay remains permanently visible in the frames.
|
* Analysis images only (if available) – video is recorded in individual JPEG frames with an overlay of the motion detection analysis information. Note that this overlay remains permanently visible in the frames.
|
||||||
* Frames + Analysis images (if available) – video is recorded twice, once as normal individual JPEG frames and once in invidual JPEG frames with analysis information overlaid.
|
* Frames + Analysis images (if available) – video is recorded twice, once as normal individual JPEG frames and once in individual JPEG frames with analysis information overlaid.
|
||||||
|
|
||||||
Video Writer
|
Video Writer
|
||||||
Records video in real video format. It provides much better compression results than saving JPEGs, thus longer video history can be stored.
|
Records video in real video format. It provides much better compression results than saving JPEGs, thus longer video history can be stored.
|
||||||
|
|
|
@ -34,7 +34,7 @@ Here is what the filter window looks like
|
||||||
* Update used disk space: calculates how much disk space is currently taken by the event and updates the db record.
|
* Update used disk space: calculates how much disk space is currently taken by the event and updates the db record.
|
||||||
* Create video for all matches: creates a video file of all the events that match
|
* Create video for all matches: creates a video file of all the events that match
|
||||||
* Create video for all matches: ffmpeg will be used to create a video file (mp4) out of all the stored jpgs if using jpeg storage.
|
* Create video for all matches: ffmpeg will be used to create a video file (mp4) out of all the stored jpgs if using jpeg storage.
|
||||||
* Execute command on all matches: Allows you to execute any arbitrary command on the matched events. You can use replacement tokens as subsequent arguents to the command, the last argument will be the absolute path to the event, preceeded by replacement arguents. eg: /usr/bin/script.sh %MN% will excecute as /usr/bin/script.sh MonitorName /path/to/event. Please note that urls may contain characters like & that need quoting. So you may need to put quotes around them like /usr/bin/scrupt.sh "%MN%".
|
* Execute command on all matches: Allows you to execute any arbitrary command on the matched events. You can use replacement tokens as subsequent arguents to the command, the last argument will be the absolute path to the event, preceded by replacement arguents. eg: /usr/bin/script.sh %MN% will execute as /usr/bin/script.sh MonitorName /path/to/event. Please note that urls may contain characters like & that need quoting. So you may need to put quotes around them like /usr/bin/scrupt.sh "%MN%".
|
||||||
* Delete all matches: Deletes all the matched events.
|
* Delete all matches: Deletes all the matched events.
|
||||||
* Email details of all matches: Sends an email to the configured address with details about the event.
|
* Email details of all matches: Sends an email to the configured address with details about the event.
|
||||||
* Copy all matches: copies the event files to another location, specified in the Copy To dropdown. The other location must be setup in the Storage Tab under options.
|
* Copy all matches: copies the event files to another location, specified in the Copy To dropdown. The other location must be setup in the Storage Tab under options.
|
||||||
|
|
|
@ -53,7 +53,7 @@ This screen is called the "console" screen in ZoneMinder and shows a summary of
|
||||||
* **B**: This brings up a color coded log window that shows various system and component level logs. This window is useful if you are trying to diagnose issues. Refer to :doc:`logging`.
|
* **B**: This brings up a color coded log window that shows various system and component level logs. This window is useful if you are trying to diagnose issues. Refer to :doc:`logging`.
|
||||||
* **C**: ZoneMinder allows you to group monitors for logical separation. This option lets you create new groups, associate monitors to them and edit/delete existing groups.
|
* **C**: ZoneMinder allows you to group monitors for logical separation. This option lets you create new groups, associate monitors to them and edit/delete existing groups.
|
||||||
* **D**: Filters are a powerful mechanism to perform actions when certain conditions are met. ZoneMinder comes with some preset filters that keep a tab of disk space and others. Many users create their own filters for more advanced actions like sending emails when certain events occur and more. Refer to :doc:`filterevents`.
|
* **D**: Filters are a powerful mechanism to perform actions when certain conditions are met. ZoneMinder comes with some preset filters that keep a tab of disk space and others. Many users create their own filters for more advanced actions like sending emails when certain events occur and more. Refer to :doc:`filterevents`.
|
||||||
* **E**: The Cycle option allows you to rotate between live views of each cofigured monitor.
|
* **E**: The Cycle option allows you to rotate between live views of each configured monitor.
|
||||||
* **F**: The Montage option shows a collage of your monitors. You can customize them including moving them around.
|
* **F**: The Montage option shows a collage of your monitors. You can customize them including moving them around.
|
||||||
* **G**: Montage Review allows you to simultaneously view past events for different monitors. Note that this is a very resource intensive page and its performance will vary based on your system capabilities.
|
* **G**: Montage Review allows you to simultaneously view past events for different monitors. Note that this is a very resource intensive page and its performance will vary based on your system capabilities.
|
||||||
* **H**: Audit Events Report is more of a power user feature. This option looks for recording gaps in events and recording issues in mp4 files.
|
* **H**: Audit Events Report is more of a power user feature. This option looks for recording gaps in events and recording issues in mp4 files.
|
||||||
|
|
|
@ -30,7 +30,7 @@ This screen allows you to configure various permissions on a per user basis. The
|
||||||
.. note:: if you are using zmNinja, users are required to have 'View' access to system because multi-server information is only available as part of this permission
|
.. note:: if you are using zmNinja, users are required to have 'View' access to system because multi-server information is only available as part of this permission
|
||||||
|
|
||||||
- Bandwidth
|
- Bandwidth
|
||||||
- Specifies the maximum bandwith that this user can configure (Low, Medium or High)
|
- Specifies the maximum bandwidth that this user can configure (Low, Medium or High)
|
||||||
|
|
||||||
- API enabled
|
- API enabled
|
||||||
- Specifies if the ZoneMinder API is enabled for this user (needs to be on, if you are using a mobile app such as zmNinja)
|
- Specifies if the ZoneMinder API is enabled for this user (needs to be on, if you are using a mobile app such as zmNinja)
|
||||||
|
|
|
@ -147,7 +147,7 @@ This attribute is of type L<SOAP::WSDL::XSD::Typelib::Builtin::integer|SOAP::WSD
|
||||||
|
|
||||||
=item * Cells
|
=item * Cells
|
||||||
|
|
||||||
A “1” denotes a cell where motion is detected and a “0” an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
A "1" denotes a cell where motion is detected and a "0" an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2709,7 +2709,7 @@ Returns a L<ONVIF::Device::Elements::GetNetworkInterfacesResponse|ONVIF::Device:
|
||||||
|
|
||||||
=head3 SetNetworkInterfaces
|
=head3 SetNetworkInterfaces
|
||||||
|
|
||||||
For interoperability with a client unaware of the IEEE 802.11 extension a device shall retain its IEEE 802.11 configuration if the IEEE 802.11 configuration element isn’t present in the request.
|
For interoperability with a client unaware of the IEEE 802.11 extension a device shall retain its IEEE 802.11 configuration if the IEEE 802.11 configuration element isn't present in the request.
|
||||||
|
|
||||||
Returns a L<ONVIF::Device::Elements::SetNetworkInterfacesResponse|ONVIF::Device::Elements::SetNetworkInterfacesResponse> object.
|
Returns a L<ONVIF::Device::Elements::SetNetworkInterfacesResponse|ONVIF::Device::Elements::SetNetworkInterfacesResponse> object.
|
||||||
|
|
||||||
|
@ -3093,7 +3093,7 @@ Returns a L<ONVIF::Device::Elements::SetRelayOutputStateResponse|ONVIF::Device::
|
||||||
|
|
||||||
=head3 SendAuxiliaryCommand
|
=head3 SendAuxiliaryCommand
|
||||||
|
|
||||||
tt:IRLamp|Auto – Request to configure an IR illuminator attached to the unit so that it automatically turns ON and OFF. A device that indicates auxiliary service capability shall support this command.
|
tt:IRLamp|Auto - Request to configure an IR illuminator attached to the unit so that it automatically turns ON and OFF. A device that indicates auxiliary service capability shall support this command.
|
||||||
|
|
||||||
Returns a L<ONVIF::Device::Elements::SendAuxiliaryCommandResponse|ONVIF::Device::Elements::SendAuxiliaryCommandResponse> object.
|
Returns a L<ONVIF::Device::Elements::SendAuxiliaryCommandResponse|ONVIF::Device::Elements::SendAuxiliaryCommandResponse> object.
|
||||||
|
|
||||||
|
@ -3288,7 +3288,7 @@ Returns a L<ONVIF::Device::Elements::GetSystemUrisResponse|ONVIF::Device::Elemen
|
||||||
|
|
||||||
=head3 StartFirmwareUpgrade
|
=head3 StartFirmwareUpgrade
|
||||||
|
|
||||||
The value of the Content-Type header in the HTTP POST request shall be “application/octetstream”.
|
The value of the Content-Type header in the HTTP POST request shall be "application/octetstream".
|
||||||
|
|
||||||
Returns a L<ONVIF::Device::Elements::StartFirmwareUpgradeResponse|ONVIF::Device::Elements::StartFirmwareUpgradeResponse> object.
|
Returns a L<ONVIF::Device::Elements::StartFirmwareUpgradeResponse|ONVIF::Device::Elements::StartFirmwareUpgradeResponse> object.
|
||||||
|
|
||||||
|
@ -3298,7 +3298,7 @@ Returns a L<ONVIF::Device::Elements::StartFirmwareUpgradeResponse|ONVIF::Device:
|
||||||
|
|
||||||
=head3 StartSystemRestore
|
=head3 StartSystemRestore
|
||||||
|
|
||||||
The value of the Content-Type header in the HTTP POST request shall be “application/octetstream”.
|
The value of the Content-Type header in the HTTP POST request shall be "application/octetstream".
|
||||||
|
|
||||||
Returns a L<ONVIF::Device::Elements::StartSystemRestoreResponse|ONVIF::Device::Elements::StartSystemRestoreResponse> object.
|
Returns a L<ONVIF::Device::Elements::StartSystemRestoreResponse|ONVIF::Device::Elements::StartSystemRestoreResponse> object.
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ This attribute is of type L<SOAP::WSDL::XSD::Typelib::Builtin::integer|SOAP::WSD
|
||||||
|
|
||||||
=item * Cells
|
=item * Cells
|
||||||
|
|
||||||
A “1” denotes a cell where motion is detected and a “0” an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
A "1" denotes a cell where motion is detected and a "0" an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2147,7 +2147,7 @@ Returns a L<ONVIF::Media::Elements::GetAudioOutputsResponse|ONVIF::Media::Elemen
|
||||||
|
|
||||||
=head3 CreateProfile
|
=head3 CreateProfile
|
||||||
|
|
||||||
This operation creates a new empty media profile. The media profile shall be created in the device and shall be persistent (remain after reboot). A created profile shall be deletable and a device shall set the “fixed” attribute to false in the returned Profile.
|
This operation creates a new empty media profile. The media profile shall be created in the device and shall be persistent (remain after reboot). A created profile shall be deletable and a device shall set the "fixed" attribute to false in the returned Profile.
|
||||||
|
|
||||||
Returns a L<ONVIF::Media::Elements::CreateProfileResponse|ONVIF::Media::Elements::CreateProfileResponse> object.
|
Returns a L<ONVIF::Media::Elements::CreateProfileResponse|ONVIF::Media::Elements::CreateProfileResponse> object.
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ This attribute is of type L<SOAP::WSDL::XSD::Typelib::Builtin::integer|SOAP::WSD
|
||||||
|
|
||||||
=item * Cells
|
=item * Cells
|
||||||
|
|
||||||
A “1” denotes a cell where motion is detected and a “0” an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
A "1" denotes a cell where motion is detected and a "0" an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -987,7 +987,7 @@ Returns a L<ONVIF::PTZ::Elements::GotoHomePositionResponse|ONVIF::PTZ::Elements:
|
||||||
|
|
||||||
=head3 SetHomePosition
|
=head3 SetHomePosition
|
||||||
|
|
||||||
Operation to save current position as the home position. The SetHomePosition command returns with a failure if the “home” position is fixed and cannot be overwritten. If the SetHomePosition is successful, it is possible to recall the Home Position with the GotoHomePosition command.
|
Operation to save current position as the home position. The SetHomePosition command returns with a failure if the "home" position is fixed and cannot be overwritten. If the SetHomePosition is successful, it is possible to recall the Home Position with the GotoHomePosition command.
|
||||||
|
|
||||||
Returns a L<ONVIF::PTZ::Elements::SetHomePositionResponse|ONVIF::PTZ::Elements::SetHomePositionResponse> object.
|
Returns a L<ONVIF::PTZ::Elements::SetHomePositionResponse|ONVIF::PTZ::Elements::SetHomePositionResponse> object.
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ This attribute is of type L<SOAP::WSDL::XSD::Typelib::Builtin::integer|SOAP::WSD
|
||||||
|
|
||||||
=item * Cells
|
=item * Cells
|
||||||
|
|
||||||
A “1” denotes a cell where motion is detected and a “0” an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
A "1" denotes a cell where motion is detected and a "0" an empty cell. The first cell is in the upper left corner. Then the cell order goes first from left to right and then from up to down. If the number of cells is not a multiple of 8 the last byte is filled with zeros. The information is run length encoded according to Packbit coding in ISO 12369 (TIFF, Revision 6.0).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ of the corresponding class can be passed instead of the marked hash ref.
|
||||||
You may pass any combination of objects, hash and list refs to these
|
You may pass any combination of objects, hash and list refs to these
|
||||||
methods, as long as you meet the structure.
|
methods, as long as you meet the structure.
|
||||||
|
|
||||||
List items (i.e. multiple occurences) are not displayed in the synopsis.
|
List items (i.e. multiple occurrences) are not displayed in the synopsis.
|
||||||
You may generally pass a list ref of hash refs (or objects) instead of a hash
|
You may generally pass a list ref of hash refs (or objects) instead of a hash
|
||||||
ref - this may result in invalid XML if used improperly, though. Note that
|
ref - this may result in invalid XML if used improperly, though. Note that
|
||||||
SOAP::WSDL always expects list references at maximum depth position.
|
SOAP::WSDL always expects list references at maximum depth position.
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ not checked yet.
|
||||||
|
|
||||||
The current implementation of union resorts to inheriting from the base type,
|
The current implementation of union resorts to inheriting from the base type,
|
||||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||||
alternative is chosen, then the simple ur-type definition·."
|
alternative is chosen, then the simple ur-type definition."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -810,7 +810,7 @@ bool EventStream::sendFrame(Microseconds delta_us) {
|
||||||
fputs("Content-Type: image/x-rgbz\r\n", stdout);
|
fputs("Content-Type: image/x-rgbz\r\n", stdout);
|
||||||
break;
|
break;
|
||||||
case STREAM_RAW :
|
case STREAM_RAW :
|
||||||
img_buffer = (uint8_t*)(send_image->Buffer());
|
img_buffer = send_image->Buffer();
|
||||||
img_buffer_size = send_image->Size();
|
img_buffer_size = send_image->Size();
|
||||||
fputs("Content-Type: image/x-rgb\r\n", stdout);
|
fputs("Content-Type: image/x-rgb\r\n", stdout);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -179,9 +179,11 @@ class Image {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internal buffer should not be modified from functions outside of this class */
|
inline uint8_t* Buffer() { return buffer; }
|
||||||
inline const uint8_t* Buffer() const { return buffer; }
|
inline const uint8_t* Buffer() const { return buffer; }
|
||||||
|
inline uint8_t* Buffer(unsigned int x, unsigned int y=0) { return &buffer[(y*linesize) + x*colours]; }
|
||||||
inline const uint8_t* Buffer(unsigned int x, unsigned int y=0) const { return &buffer[(y*linesize) + x*colours]; }
|
inline const uint8_t* Buffer(unsigned int x, unsigned int y=0) const { return &buffer[(y*linesize) + x*colours]; }
|
||||||
|
|
||||||
/* Request writeable buffer */
|
/* Request writeable buffer */
|
||||||
uint8_t* WriteBuffer(const unsigned int p_width, const unsigned int p_height, const unsigned int p_colours, const unsigned int p_subpixelorder);
|
uint8_t* WriteBuffer(const unsigned int p_width, const unsigned int p_height, const unsigned int p_colours, const unsigned int p_subpixelorder);
|
||||||
// Is only acceptable on a pre-allocated buffer
|
// Is only acceptable on a pre-allocated buffer
|
||||||
|
|
|
@ -422,7 +422,7 @@ bool MonitorStream::sendFrame(Image *image, SystemTimePoint timestamp) {
|
||||||
break;
|
break;
|
||||||
case STREAM_RAW :
|
case STREAM_RAW :
|
||||||
fputs("Content-Type: image/x-rgb\r\n", stdout);
|
fputs("Content-Type: image/x-rgb\r\n", stdout);
|
||||||
img_buffer = (uint8_t*)send_image->Buffer();
|
img_buffer = send_image->Buffer();
|
||||||
img_buffer_size = send_image->Size();
|
img_buffer_size = send_image->Size();
|
||||||
break;
|
break;
|
||||||
case STREAM_ZIP :
|
case STREAM_ZIP :
|
||||||
|
|
|
@ -260,6 +260,7 @@ void PacketQueue::clearPackets(const std::shared_ptr<ZMPacket> &add_packet) {
|
||||||
zm_packet = *it;
|
zm_packet = *it;
|
||||||
lp = new ZMLockedPacket(zm_packet);
|
lp = new ZMLockedPacket(zm_packet);
|
||||||
if (!lp->trylock()) {
|
if (!lp->trylock()) {
|
||||||
|
Debug(3, "Failed locking packet %d", zm_packet->image_index);
|
||||||
delete lp;
|
delete lp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -280,7 +281,7 @@ void PacketQueue::clearPackets(const std::shared_ptr<ZMPacket> &add_packet) {
|
||||||
next_front = it;
|
next_front = it;
|
||||||
}
|
}
|
||||||
++video_packets_to_delete;
|
++video_packets_to_delete;
|
||||||
Debug(4, "Counted %d video packets. Which would leave %d in packetqueue tail count is %d",
|
Debug(3, "Counted %d video packets. Which would leave %d in packetqueue tail count is %d",
|
||||||
video_packets_to_delete, packet_counts[video_stream_id]-video_packets_to_delete, tail_count);
|
video_packets_to_delete, packet_counts[video_stream_id]-video_packets_to_delete, tail_count);
|
||||||
if (packet_counts[video_stream_id] - video_packets_to_delete <= pre_event_video_packet_count + tail_count) {
|
if (packet_counts[video_stream_id] - video_packets_to_delete <= pre_event_video_packet_count + tail_count) {
|
||||||
break;
|
break;
|
||||||
|
@ -289,7 +290,7 @@ void PacketQueue::clearPackets(const std::shared_ptr<ZMPacket> &add_packet) {
|
||||||
++it;
|
++it;
|
||||||
} // end while
|
} // end while
|
||||||
} // end if first packet not locked
|
} // end if first packet not locked
|
||||||
Debug(1, "Resulting pointing at latest packet? %d, next front points to begin? %d",
|
Debug(1, "Resulting it pointing at latest packet? %d, next front points to begin? %d",
|
||||||
( *it == add_packet ),
|
( *it == add_packet ),
|
||||||
( next_front == pktQueue.begin() )
|
( next_front == pktQueue.begin() )
|
||||||
);
|
);
|
||||||
|
|
|
@ -224,6 +224,8 @@ bool VideoStore::open() {
|
||||||
);
|
);
|
||||||
video_out_codec = nullptr;
|
video_out_codec = nullptr;
|
||||||
}
|
}
|
||||||
|
av_dict_free(&opts);
|
||||||
|
av_dict_parse_string(&opts, Options.c_str(), "=", ",#\n", 0);
|
||||||
} // end if video_out_codec
|
} // end if video_out_codec
|
||||||
|
|
||||||
ret = avcodec_parameters_from_context(video_out_stream->codecpar, video_out_ctx);
|
ret = avcodec_parameters_from_context(video_out_stream->codecpar, video_out_ctx);
|
||||||
|
@ -231,7 +233,6 @@ bool VideoStore::open() {
|
||||||
Error("Could not initialize stream parameteres");
|
Error("Could not initialize stream parameteres");
|
||||||
}
|
}
|
||||||
} // end if extradata_entry
|
} // end if extradata_entry
|
||||||
av_dict_free(&opts);
|
|
||||||
} else if (monitor->GetOptVideoWriter() == Monitor::ENCODE) {
|
} else if (monitor->GetOptVideoWriter() == Monitor::ENCODE) {
|
||||||
int wanted_codec = monitor->OutputCodec();
|
int wanted_codec = monitor->OutputCodec();
|
||||||
if (!wanted_codec) {
|
if (!wanted_codec) {
|
||||||
|
|
|
@ -206,7 +206,7 @@ bool Zone::CheckAlarms(const Image *delta_image) {
|
||||||
// Get the difference image
|
// Get the difference image
|
||||||
Image *diff_image = image = new Image(*delta_image);
|
Image *diff_image = image = new Image(*delta_image);
|
||||||
int diff_width = diff_image->Width();
|
int diff_width = diff_image->Width();
|
||||||
uint8_t* diff_buff = (uint8_t*)diff_image->Buffer();
|
uint8_t* diff_buff = diff_image->Buffer();
|
||||||
uint8_t* pdiff;
|
uint8_t* pdiff;
|
||||||
|
|
||||||
unsigned int pixel_diff_count = 0;
|
unsigned int pixel_diff_count = 0;
|
||||||
|
@ -283,7 +283,7 @@ bool Zone::CheckAlarms(const Image *delta_image) {
|
||||||
int lo_x = ranges[y].lo_x;
|
int lo_x = ranges[y].lo_x;
|
||||||
int hi_x = ranges[y].hi_x;
|
int hi_x = ranges[y].hi_x;
|
||||||
|
|
||||||
pdiff = (uint8_t*)diff_image->Buffer(lo_x, y);
|
pdiff = diff_image->Buffer(lo_x, y);
|
||||||
|
|
||||||
for (int x = lo_x; x <= hi_x; x++, pdiff++) {
|
for (int x = lo_x; x <= hi_x; x++, pdiff++) {
|
||||||
if (*pdiff == kWhite) {
|
if (*pdiff == kWhite) {
|
||||||
|
@ -366,7 +366,7 @@ bool Zone::CheckAlarms(const Image *delta_image) {
|
||||||
int lo_x = ranges[y].lo_x;
|
int lo_x = ranges[y].lo_x;
|
||||||
int hi_x = ranges[y].hi_x;
|
int hi_x = ranges[y].hi_x;
|
||||||
|
|
||||||
pdiff = (uint8_t*)diff_image->Buffer(lo_x, y);
|
pdiff = diff_image->Buffer(lo_x, y);
|
||||||
for (int x = lo_x; x <= hi_x; x++, pdiff++) {
|
for (int x = lo_x; x <= hi_x; x++, pdiff++) {
|
||||||
if (*pdiff == kWhite) {
|
if (*pdiff == kWhite) {
|
||||||
Debug(9, "Got white pixel at %d,%d (%p)", x, y, pdiff);
|
Debug(9, "Got white pixel at %d,%d (%p)", x, y, pdiff);
|
||||||
|
@ -980,7 +980,7 @@ void Zone::std_alarmedpixels(
|
||||||
unsigned int hi_x = ranges[y].hi_x;
|
unsigned int hi_x = ranges[y].hi_x;
|
||||||
|
|
||||||
Debug(7, "Checking line %d from %d -> %d", y, lo_x, hi_x);
|
Debug(7, "Checking line %d from %d -> %d", y, lo_x, hi_x);
|
||||||
uint8_t *pdiff = (uint8_t*)pdiff_image->Buffer(lo_x, y);
|
uint8_t *pdiff = pdiff_image->Buffer(lo_x, y);
|
||||||
const uint8_t *ppoly = ppoly_image->Buffer(lo_x, y);
|
const uint8_t *ppoly = ppoly_image->Buffer(lo_x, y);
|
||||||
|
|
||||||
for ( unsigned int x = lo_x; x <= hi_x; x++, pdiff++, ppoly++ ) {
|
for ( unsigned int x = lo_x; x <= hi_x; x++, pdiff++, ppoly++ ) {
|
||||||
|
|
|
@ -140,7 +140,7 @@ std::shared_ptr<Image> GenerateRandomImage(
|
||||||
Image *image = new Image(width, height, ZM_COLOUR_GRAY8, ZM_SUBPIX_ORDER_NONE);
|
Image *image = new Image(width, height, ZM_COLOUR_GRAY8, ZM_SUBPIX_ORDER_NONE);
|
||||||
|
|
||||||
// Set it to black initially.
|
// Set it to black initially.
|
||||||
memset((void *) image->Buffer(0, 0), 0, (size_t) image->LineSize() * (size_t) image->Height());
|
memset(image->Buffer(0, 0), 0, (size_t) image->LineSize() * (size_t) image->Height());
|
||||||
|
|
||||||
// Now randomize the pixels inside a box.
|
// Now randomize the pixels inside a box.
|
||||||
const int box_width = (width * change_box_percent) / 100;
|
const int box_width = (width * change_box_percent) / 100;
|
||||||
|
@ -149,7 +149,7 @@ std::shared_ptr<Image> GenerateRandomImage(
|
||||||
const int box_y = (int) ((uint64_t) mt_rand() * (height - box_height) / RAND_MAX);
|
const int box_y = (int) ((uint64_t) mt_rand() * (height - box_height) / RAND_MAX);
|
||||||
|
|
||||||
for (int y = 0 ; y < box_height ; y++) {
|
for (int y = 0 ; y < box_height ; y++) {
|
||||||
uint8_t *row = (uint8_t *) image->Buffer(box_x, box_y + y);
|
uint8_t *row = image->Buffer(box_x, box_y + y);
|
||||||
for (int x = 0 ; x < box_width ; x++) {
|
for (int x = 0 ; x < box_width ; x++) {
|
||||||
row[x] = (uint8_t) mt_rand();
|
row[x] = (uint8_t) mt_rand();
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ function validateForm(form) {
|
||||||
form.elements['filter[AutoUnarchive]'].checked ||
|
form.elements['filter[AutoUnarchive]'].checked ||
|
||||||
form.elements['filter[UpdateDiskSpace]'].checked ||
|
form.elements['filter[UpdateDiskSpace]'].checked ||
|
||||||
form.elements['filter[AutoVideo]'].checked ||
|
form.elements['filter[AutoVideo]'].checked ||
|
||||||
(form.elements['filter[AutoEmail]'].checked && form.elements['filter[AutoEmail]'].checked) ||
|
(form.elements['filter[AutoEmail]'] && form.elements['filter[AutoEmail]'].checked) ||
|
||||||
(form.elements['filter[AutoMessage]'] && form.elements['filter[AutoMessage]'].checked) ||
|
(form.elements['filter[AutoMessage]'] && form.elements['filter[AutoMessage]'].checked) ||
|
||||||
form.elements['filter[AutoExecute]'].checked ||
|
form.elements['filter[AutoExecute]'].checked ||
|
||||||
form.elements['filter[AutoDelete]'].checked ||
|
form.elements['filter[AutoDelete]'].checked ||
|
||||||
|
|
Loading…
Reference in New Issue