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

From RidgeRun Developer Connection
Jump to: navigation, search
Line 11: Line 11:
 
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|1100px|Figure 1: High Level Design of Onvif Reference ]]
 
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|1100px|Figure 1: High Level Design of Onvif Reference ]]
  
 +
And the purpose of each block is explained below:
  
* '''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.
+
* '''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]].
** '''JetsonEncoderHandler''': manages the custom encoders of the NVIDIA Jetson devices and reports them to the base server.
+
* '''iVideoSourceHandler''': interface abstracting the device video source related options.
** '''JetsonSourceHandler''': manages the custom video sources of the NVIDIA Jetson devices and reports them to the base server.
+
** '''JetsonSourceHandler''': implementation of the '''iVideoSourceHandler''' interface for Jetson boards.
** '''GstJetsonStreamHandler''': manages the multimedia using a GStreamer pipeline configuring it with the provided information.
+
* '''iVideoEncoderHandler''': interface abstracting the device video encoder related options.  
 
+
** '''JetsonEncoderHandler''': implementation of the '''iVideoEncoderHandler''' for Jetson boards.
* '''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.
+
* '''iRtspStreamHandler''': interface abstracting the stream management.
 
+
** '''GstJetsonStreamHandler''': manages the multimedia streams using GStreamer.
* '''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]].
+
* '''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 want support for these two task.
+
* '''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.
  
 
<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>

Revision as of 15:04, 30 June 2022




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.



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