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

From RidgeRun Developer Connection
Jump to: navigation, search
m
 
(26 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>
  
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|700px|Figure 1: High Level Design of Onvif Reference ]]
+
{{DISPLAYTITLE:ONVIF Device Reference Design - High Level Design|noerror}}
File:OnvifRefDesignHighLevelDiagram.png
+
 
 +
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:
 +
 
 +
[[File:OnvifRefDesignHighLevelDiagram.png|thumb|center|1100px|Figure 1: High Level Design of ONVIF Reference ]]
 +
<br>
 +
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|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]].
 +
* '''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