Difference between revisions of "Onvif Device Reference Design/Project Architecture/High Level Design"

From RidgeRun Developer Connection
Jump to: navigation, search
(High Level Design)
m
 
(12 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
<noinclude>
 
<noinclude>
{{Onvif_Device_Reference_Design/Head|previous=Project Architecture|next=Project Architecture/Class Diagrams|keywords=}}
+
{{Onvif_Device_Reference_Design/Head|previous=Project Architecture|next=Project Architecture/Class Diagrams|metakeywords=}}
 
</noinclude>
 
</noinclude>
=High Level Design=
 
  
The high-level design of the reference design is presented in figure 1. There are the following modules:
+
{{DISPLAYTITLE:ONVIF Device Reference Design - High Level Design|noerror}}
* Base Server: This class instance the OnvifServer provided by LibOnvif and set up all its necessary information such as model, hardware ID, RTSP ports, encryption used, etc. See an example of this [[Onvif_device_server/User_Guide/Basic_Onvif_server_implementation|here]]. This Base Server makes his custom implementation of the iVideoEncoderHandelr, iVideoSourceHandler, and iRtspStreamHandler to support the custom behavior of the NVIDIA Jetson devices.
 
** JetsonEncoderHandler: manages the custom encoders of the NVIDIA Jetson devices and reports them to the base server.
 
** JetsonSourceHandler: manages the custom video sources of the NVIDIA Jetson devices and reports them to the base server.
 
** GstJetsonStreamHandler: manages the multimedia using a GStreamer pipeline configuring it with the provided information.
 
  
* Default Server: This class inherits from Base Server and sets the network interface, port, and factory of the Onvif Media Client. Some 3rd party Onvif clients could connect to this default server, such as an Onvif Device Tool.
+
Now let's take a quick look at the design by going through the main blocks that conform the application.  
  
* Web Server: this is a REST Api that provides the Default Server information and also allows its modification. See these requests [[Onvif_Device_Reference_Design/Getting_Started/Supported_REST_requests|here]].
+
==High Level Design==
  
* Web Page: this is a web page developed by RidgeRun where you can see and modify some configurations of the Default Server using the REST Api. Flask is used for deploying the web page, so if you want to support this application in production this engine should be changed. Also, for the Web-RestApi communication, we used the example keys provided by OpenSSL. If you wanted to take this application to production, new custom keys should be generated. Feek free to contact the RidgeRun team if you want support for these two task.
+
The following figure shows you a high-level overview of the application:
  
 +
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|1100px|Figure 1: High Level Design of ONVIF Reference ]]
 +
<br>
 +
And the purpose of each block is explained below:
  
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|1100px|Figure 1: High Level Design of Onvif Reference ]]
+
* '''Base Server''': This class abstracts the ONVIF-related functionality by making use of our [[Onvif_device_server|ONVIF Device Server]] library. It takes care of Web services, profiles, configurations, and more. See an example [[Onvif_device_server/User_Guide/Basic_Onvif_server_implementation|here]].
File:OnvifRefDesignHighLevelDiagram.png
+
* '''iVideoSourceHandler''': interface abstracting the device video source related options.
 +
** '''JetsonSourceHandler''': implementation of the '''iVideoSourceHandler''' interface for Jetson boards.
 +
* '''iVideoEncoderHandler''': interface abstracting the device video encoder related options.  
 +
** '''JetsonEncoderHandler''': implementation of the '''iVideoEncoderHandler''' for Jetson boards.
 +
* '''iRtspStreamHandler''': interface abstracting the stream management.
 +
** '''GstJetsonStreamHandler''': manages the multimedia streams using GStreamer.
 +
* '''Default Server''': This class inherits from Base Server and sets the network interface, port, and factory of the ONVIF Media Client.
 +
* '''Web Server''': this class exposes a REST API that provides the Default Server information and also allows its modification through a web page. See the API  [[Onvif_Device_Reference_Design/Getting_Started/Supported_REST_requests|here]].
 +
* '''Web Page''': this is a web page developed by RidgeRun where you can see and modify some configurations of the Default Server using the REST Api. Flask is used for deploying the web page, so if you want to support this application in production this engine should be changed. Also, for the Web-RestApi communication, we used the example keys provided by OpenSSL. If you wanted to take this application to production, new custom keys should be generated. Feel free to contact the RidgeRun team if you need support.
 +
 
 +
This design can be used as a starting point for your own designs. Also, additional platforms can be supported by creating custom implementations of the provided interfaces for the given hardware.  
  
 
<noinclude>
 
<noinclude>
 
{{Onvif_Device_Reference_Design/Foot|Project Architecture|Project Architecture/Class Diagrams}}
 
{{Onvif_Device_Reference_Design/Foot|Project Architecture|Project Architecture/Class Diagrams}}
 
</noinclude>
 
</noinclude>

Latest revision as of 08:29, 5 March 2023




Previous: Project Architecture Index Next: Project Architecture/Class Diagrams





Now let's take a quick look at the design by going through the main blocks that conform the application.

High Level Design

The following figure shows you a high-level overview of the application:

Figure 1: High Level Design of ONVIF Reference


And the purpose of each block is explained below:

  • Base Server: This class abstracts the ONVIF-related functionality by making use of our ONVIF Device Server library. It takes care of Web services, profiles, configurations, and more. See an example here.
  • iVideoSourceHandler: interface abstracting the device video source related options.
    • JetsonSourceHandler: implementation of the iVideoSourceHandler interface for Jetson boards.
  • iVideoEncoderHandler: interface abstracting the device video encoder related options.
    • JetsonEncoderHandler: implementation of the iVideoEncoderHandler for Jetson boards.
  • iRtspStreamHandler: interface abstracting the stream management.
    • GstJetsonStreamHandler: manages the multimedia streams using GStreamer.
  • Default Server: This class inherits from Base Server and sets the network interface, port, and factory of the ONVIF Media Client.
  • Web Server: this class exposes a REST API that provides the Default Server information and also allows its modification through a web page. See the API here.
  • Web Page: this is a web page developed by RidgeRun where you can see and modify some configurations of the Default Server using the REST Api. Flask is used for deploying the web page, so if you want to support this application in production this engine should be changed. Also, for the Web-RestApi communication, we used the example keys provided by OpenSSL. If you wanted to take this application to production, new custom keys should be generated. Feel free to contact the RidgeRun team if you need support.

This design can be used as a starting point for your own designs. Also, additional platforms can be supported by creating custom implementations of the provided interfaces for the given hardware.



Previous: Project Architecture Index Next: Project Architecture/Class Diagrams