onvif-python 0.2.5__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {onvif_python-0.2.5/onvif_python.egg-info → onvif_python-0.2.6}/PKG-INFO +5 -5
  2. {onvif_python-0.2.5 → onvif_python-0.2.6}/README.md +4 -4
  3. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/cli/interactive.py +2 -2
  4. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/cli/main.py +2 -2
  5. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/devicemgmt.py +3 -0
  6. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/media2.py +17 -0
  7. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +9 -9
  8. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +53 -0
  9. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/schema/metadatastream.xsd +2 -0
  10. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/schema/onvif.xsd +224 -0
  11. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/media/wsdl/media.wsdl +148 -0
  12. {onvif_python-0.2.5 → onvif_python-0.2.6/onvif_python.egg-info}/PKG-INFO +5 -5
  13. {onvif_python-0.2.5 → onvif_python-0.2.6}/pyproject.toml +1 -1
  14. {onvif_python-0.2.5 → onvif_python-0.2.6}/LICENSE.md +0 -0
  15. {onvif_python-0.2.5 → onvif_python-0.2.6}/MANIFEST.in +0 -0
  16. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/__init__.py +0 -0
  17. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/cli/__init__.py +0 -0
  18. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/cli/__main__.py +0 -0
  19. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/cli/utils.py +0 -0
  20. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/client.py +0 -0
  21. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/db/companies.db +0 -0
  22. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/db/products.db +0 -0
  23. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/operator.py +0 -0
  24. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/__init__.py +0 -0
  25. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/accesscontrol.py +0 -0
  26. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/accessrules.py +0 -0
  27. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/actionengine.py +0 -0
  28. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/analytics/analytics.py +0 -0
  29. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/analytics/ruleengine.py +0 -0
  30. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/analyticsdevice.py +0 -0
  31. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/appmgmt.py +0 -0
  32. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/authenticationbehavior.py +0 -0
  33. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/credential.py +0 -0
  34. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/deviceio.py +0 -0
  35. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/display.py +0 -0
  36. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/doorcontrol.py +0 -0
  37. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/events/events.py +0 -0
  38. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/events/notification.py +0 -0
  39. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/events/pausable_subscription.py +0 -0
  40. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/events/pullpoint.py +0 -0
  41. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/events/subscription.py +0 -0
  42. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/imaging.py +0 -0
  43. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/media.py +0 -0
  44. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/provisioning.py +0 -0
  45. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/ptz.py +0 -0
  46. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/receiver.py +0 -0
  47. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/recording.py +0 -0
  48. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/replay.py +0 -0
  49. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/schedule.py +0 -0
  50. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/search.py +0 -0
  51. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/advancedsecurity.py +0 -0
  52. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/authorizationserver.py +0 -0
  53. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/dot1x.py +0 -0
  54. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/jwt.py +0 -0
  55. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/keystore.py +0 -0
  56. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/mediasigning.py +0 -0
  57. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/security/tlsserver.py +0 -0
  58. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/thermal.py +0 -0
  59. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/services/uplink.py +0 -0
  60. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/__init__.py +0 -0
  61. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/discovery.py +0 -0
  62. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/error_handlers.py +0 -0
  63. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/exceptions.py +0 -0
  64. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/parser.py +0 -0
  65. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/service.py +0 -0
  66. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/wsdl.py +0 -0
  67. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/xml_capture.py +0 -0
  68. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/utils/zeep.py +0 -0
  69. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/LICENSE.md +0 -0
  70. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/accesscontrol/wsdl/index.html +0 -0
  71. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +0 -0
  72. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/accessrules/wsdl/index.html +0 -0
  73. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/actionengine.wsdl +0 -0
  74. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +0 -0
  75. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/analyticsdevice.wsdl +0 -0
  76. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +0 -0
  77. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/appmgmt/wsdl/index.html +0 -0
  78. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +0 -0
  79. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +0 -0
  80. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/credential/wsdl/credential.wsdl +0 -0
  81. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/credential/wsdl/index.html +0 -0
  82. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/deviceio.wsdl +0 -0
  83. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/display/display.wsdl +0 -0
  84. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/display/wsdl/index.htm +0 -0
  85. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/display.wsdl +0 -0
  86. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/doorcontrol/wsdl/index.html +0 -0
  87. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +0 -0
  88. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +0 -0
  89. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/events/wsdl/event.wsdl +0 -0
  90. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/events/wsdl/index.html +0 -0
  91. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/federatedsearch.wsdl +0 -0
  92. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/media/wsdl/media.wsdl +0 -0
  93. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/pacs/accesscontrol.wsdl +0 -0
  94. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/pacs/doorcontrol.wsdl +0 -0
  95. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/pacs/types.xsd +0 -0
  96. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +0 -0
  97. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/receiver.wsdl +0 -0
  98. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/recording.wsdl +0 -0
  99. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/replay.wsdl +0 -0
  100. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/schedule/wsdl/index.html +0 -0
  101. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +0 -0
  102. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/schema/common.xsd +0 -0
  103. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/search.wsdl +0 -0
  104. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/thermal/wsdl/index.html +0 -0
  105. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +0 -0
  106. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/topics/topicns.xml +0 -0
  107. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/uplink/wsdl/index.html +0 -0
  108. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +0 -0
  109. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/humanbody.xsd +0 -0
  110. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/humanface.xsd +0 -0
  111. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/index.html +0 -0
  112. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/radiometry.xsd +0 -0
  113. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/rules.xsd +0 -0
  114. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +0 -0
  115. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/analytics/wsdl/index.html +0 -0
  116. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +0 -0
  117. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/media/wsdl/index.html +0 -0
  118. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +0 -0
  119. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/util/federated_search_documentation.html +0 -0
  120. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +0 -0
  121. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +0 -0
  122. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif/wsdl/ver20/util/operationIndex.html +0 -0
  123. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif_python.egg-info/SOURCES.txt +0 -0
  124. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif_python.egg-info/dependency_links.txt +0 -0
  125. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif_python.egg-info/entry_points.txt +0 -0
  126. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif_python.egg-info/requires.txt +0 -0
  127. {onvif_python-0.2.5 → onvif_python-0.2.6}/onvif_python.egg-info/top_level.txt +0 -0
  128. {onvif_python-0.2.5 → onvif_python-0.2.6}/setup.cfg +0 -0
  129. {onvif_python-0.2.5 → onvif_python-0.2.6}/setup.py +0 -0
  130. {onvif_python-0.2.5 → onvif_python-0.2.6}/tests/test_client.py +0 -0
  131. {onvif_python-0.2.5 → onvif_python-0.2.6}/tests/test_core.py +0 -0
  132. {onvif_python-0.2.5 → onvif_python-0.2.6}/tests/test_error_handlers.py +0 -0
  133. {onvif_python-0.2.5 → onvif_python-0.2.6}/tests/test_exceptions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onvif-python
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: A modern Python library for ONVIF-compliant devices
5
5
  Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
6
6
  Maintainer: Kaburagi
@@ -44,9 +44,9 @@ Dynamic: license-file
44
44
  <h1 align="center">ONVIF Python</h1>
45
45
 
46
46
  <div align="center">
47
- <a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy grade" src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?label=Code%20Quality&logo=codacy"></a>
47
+ <a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img src="https://app.codacy.com/project/badge/Grade/bff08a94e4d447b690cea49c6594826d"/></a>
48
48
  <a href="https://deepwiki.com/nirsimetri/onvif-python"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg"></a>
49
- <a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.5-orange?logo=archive&color=yellow"></a>
49
+ <a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.6-orange?logo=archive&color=yellow"></a>
50
50
  <a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?label=Downloads&color=red"></a>
51
51
  <br>
52
52
  <a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
@@ -362,7 +362,7 @@ usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password
362
362
  [--cache {all,db,mem,none}] [--health-check-interval HEALTH_CHECK_INTERVAL] [--output OUTPUT] [--version]
363
363
  [service] [method] [params ...]
364
364
 
365
- ONVIF Terminal Client — v0.2.5
365
+ ONVIF Terminal Client — v0.2.6
366
366
  https://github.com/nirsimetri/onvif-python
367
367
 
368
368
  positional arguments:
@@ -443,7 +443,7 @@ Examples:
443
443
  <summary><b>2. Interactive Shell</b></summary>
444
444
 
445
445
  ```bash
446
- ONVIF Interactive Shell — v0.2.5
446
+ ONVIF Interactive Shell — v0.2.6
447
447
  https://github.com/nirsimetri/onvif-python
448
448
 
449
449
  Basic Commands:
@@ -1,9 +1,9 @@
1
1
  <h1 align="center">ONVIF Python</h1>
2
2
 
3
3
  <div align="center">
4
- <a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy grade" src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?label=Code%20Quality&logo=codacy"></a>
4
+ <a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img src="https://app.codacy.com/project/badge/Grade/bff08a94e4d447b690cea49c6594826d"/></a>
5
5
  <a href="https://deepwiki.com/nirsimetri/onvif-python"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg"></a>
6
- <a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.5-orange?logo=archive&color=yellow"></a>
6
+ <a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.6-orange?logo=archive&color=yellow"></a>
7
7
  <a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?label=Downloads&color=red"></a>
8
8
  <br>
9
9
  <a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
@@ -319,7 +319,7 @@ usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password
319
319
  [--cache {all,db,mem,none}] [--health-check-interval HEALTH_CHECK_INTERVAL] [--output OUTPUT] [--version]
320
320
  [service] [method] [params ...]
321
321
 
322
- ONVIF Terminal Client — v0.2.5
322
+ ONVIF Terminal Client — v0.2.6
323
323
  https://github.com/nirsimetri/onvif-python
324
324
 
325
325
  positional arguments:
@@ -400,7 +400,7 @@ Examples:
400
400
  <summary><b>2. Interactive Shell</b></summary>
401
401
 
402
402
  ```bash
403
- ONVIF Interactive Shell — v0.2.5
403
+ ONVIF Interactive Shell — v0.2.6
404
404
  https://github.com/nirsimetri/onvif-python
405
405
 
406
406
  Basic Commands:
@@ -194,7 +194,7 @@ class InteractiveShell(cmd.Cmd):
194
194
  " / __ \\/ | / / | / / _/ ____/",
195
195
  " / / / / |/ /| | / // // /_ ",
196
196
  "/ /_/ / /| / | |/ // // __/ ",
197
- "\\____/_/ |_/ |___/___/_/ v0.2.5",
197
+ "\\____/_/ |_/ |___/___/_/ v0.2.6",
198
198
  " ",
199
199
  ]
200
200
 
@@ -1400,7 +1400,7 @@ class InteractiveShell(cmd.Cmd):
1400
1400
  super().do_help(line)
1401
1401
  else:
1402
1402
  help_text = f"""
1403
- {colorize('ONVIF Interactive Shell — v0.2.5', 'cyan')}\n{colorize('https://github.com/nirsimetri/onvif-python', 'white')}
1403
+ {colorize('ONVIF Interactive Shell — v0.2.6', 'cyan')}\n{colorize('https://github.com/nirsimetri/onvif-python', 'white')}
1404
1404
 
1405
1405
  {colorize('Basic Commands:', 'yellow')}
1406
1406
  capabilities, caps - Show device capabilities
@@ -22,7 +22,7 @@ def create_parser():
22
22
  """Create argument parser for ONVIF CLI"""
23
23
  parser = argparse.ArgumentParser(
24
24
  prog="onvif",
25
- description=f"{colorize('ONVIF Terminal Client', 'yellow')} — v0.2.5\nhttps://github.com/nirsimetri/onvif-python",
25
+ description=f"{colorize('ONVIF Terminal Client', 'yellow')} — v0.2.6\nhttps://github.com/nirsimetri/onvif-python",
26
26
  formatter_class=argparse.RawDescriptionHelpFormatter,
27
27
  epilog=f"""
28
28
  Examples:
@@ -188,7 +188,7 @@ def main():
188
188
 
189
189
  # Show ONVIF CLI version
190
190
  if args.version:
191
- print(colorize("0.2.5", "yellow"))
191
+ print(colorize("0.2.6", "yellow"))
192
192
  sys.exit(0)
193
193
 
194
194
  # Handle product search
@@ -411,3 +411,6 @@ class Device(ONVIFService):
411
411
 
412
412
  def SetHashingAlgorithm(self, Algorithm):
413
413
  return self.operator.call("SetHashingAlgorithm", Algorithm=Algorithm)
414
+
415
+ def UpgradeFirmware(self, Version):
416
+ return self.operator.call("UpgradeFirmware", Version=Version)
@@ -313,3 +313,20 @@ class Media2(ONVIFService):
313
313
 
314
314
  def GetPlayingAudioClips(self):
315
315
  return self.operator.call("GetPlayingAudioClips")
316
+
317
+ def GetMulticastAudioDecoderConfigurationOptions(self, ConfigurationToken=None):
318
+ return self.operator.call(
319
+ "GetMulticastAudioDecoderConfigurationOptions",
320
+ ConfigurationToken=ConfigurationToken,
321
+ )
322
+
323
+ def GetMulticastAudioDecoderConfigurations(self, ConfigurationToken=None):
324
+ return self.operator.call(
325
+ "GetMulticastAudioDecoderConfigurations",
326
+ ConfigurationToken=ConfigurationToken,
327
+ )
328
+
329
+ def SetMulticastAudioDecoderConfiguration(self, Configuration):
330
+ return self.operator.call(
331
+ "SetMulticastAudioDecoderConfiguration", Configuration=Configuration
332
+ )
@@ -82,7 +82,7 @@
82
82
  </xs:enumeration>
83
83
  </xs:restriction>
84
84
  </xs:simpleType>
85
- <xs:simpleType name="KeyAlgorithm">
85
+ <xs:simpleType name="KeyPairAlgorithm">
86
86
  <xs:restriction base="xs:string">
87
87
  <xs:enumeration value="RSA"/>
88
88
  <xs:enumeration value="ECC"/>
@@ -740,12 +740,12 @@
740
740
  </xs:attribute>
741
741
  <xs:attribute name="RSAKeyPairGeneration" type="xs:boolean">
742
742
  <xs:annotation>
743
- <xs:documentation>Indication that the device supports on-board RSA key pair generation.</xs:documentation>
743
+ <xs:documentation>Deprecated - Indication that the device supports on-board ECC key pair generation.</xs:documentation>
744
744
  </xs:annotation>
745
745
  </xs:attribute>
746
746
  <xs:attribute name="ECCKeyPairGeneration" type="xs:boolean">
747
747
  <xs:annotation>
748
- <xs:documentation>Indication that the device supports on-board ECC key pair generation.</xs:documentation>
748
+ <xs:documentation>Deprecated - Indication that the device supports on-board ECC key pair generation.</xs:documentation>
749
749
  </xs:annotation>
750
750
  </xs:attribute>
751
751
  <xs:attribute name="KeyPairGeneration" type="tt:StringList">
@@ -760,12 +760,12 @@
760
760
  </xs:attribute>
761
761
  <xs:attribute name="EllipticCurves" type="tas:EllipticCurves">
762
762
  <xs:annotation>
763
- <xs:documentation>Indicates which elliptic curves are supported by the device.</xs:documentation>
763
+ <xs:documentation>Indicates which elliptic curves are supported by the device. Supported curve names can be found in the IANA TLS Supported Groups section, under the Description field.</xs:documentation>
764
764
  </xs:annotation>
765
765
  </xs:attribute>
766
766
  <xs:attribute name="PKCS10ExternalCertificationWithRSA" type="xs:boolean">
767
767
  <xs:annotation>
768
- <xs:documentation>Indicates support for creating PKCS#10 requests for RSA keys and uploading the certificate obtained from a CA..</xs:documentation>
768
+ <xs:documentation>Deprecated - Indicates support for creating PKCS#10 requests for RSA keys and uploading the certificate obtained from a CA..</xs:documentation>
769
769
  </xs:annotation>
770
770
  </xs:attribute>
771
771
  <xs:attribute name="PKCS10" type="xs:boolean">
@@ -775,7 +775,7 @@
775
775
  </xs:attribute>
776
776
  <xs:attribute name="SelfSignedCertificateCreationWithRSA" type="xs:boolean">
777
777
  <xs:annotation>
778
- <xs:documentation>Indicates support for creating self-signed certificates for RSA keys.</xs:documentation>
778
+ <xs:documentation>Deprecated - Indicates support for creating self-signed certificates for RSA keys.</xs:documentation>
779
779
  </xs:annotation>
780
780
  </xs:attribute>
781
781
  <xs:attribute name="SelfSignedCertificateCreation" type="xs:boolean">
@@ -795,7 +795,7 @@
795
795
  </xs:attribute>
796
796
  <xs:attribute name="PKCS8RSAKeyPairUpload" type="xs:boolean">
797
797
  <xs:annotation>
798
- <xs:documentation>Indicates support for uploading an RSA key pair in a PKCS#8 data structure.</xs:documentation>
798
+ <xs:documentation>Deprecated - Indicates support for uploading an RSA key pair in a PKCS#8 data structure.</xs:documentation>
799
799
  </xs:annotation>
800
800
  </xs:attribute>
801
801
  <xs:attribute name="PKCS8" type="xs:boolean">
@@ -805,7 +805,7 @@
805
805
  </xs:attribute>
806
806
  <xs:attribute name="PKCS12CertificateWithRSAPrivateKeyUpload" type="xs:boolean">
807
807
  <xs:annotation>
808
- <xs:documentation>Indicates support for uploading a certificate along with an RSA private key in a PKCS#12 data structure.</xs:documentation>
808
+ <xs:documentation>Deprecated - Indicates support for uploading a certificate along with an RSA private key in a PKCS#12 data structure.</xs:documentation>
809
809
  </xs:annotation>
810
810
  </xs:attribute>
811
811
  <xs:attribute name="PKCS12" type="xs:boolean">
@@ -2967,7 +2967,7 @@
2967
2967
  </wsdl:operation>
2968
2968
  <wsdl:operation name="UploadKeyPairInPKCS8">
2969
2969
  <wsdl:documentation>
2970
- This operation uploads a key pair in a PKCS#8 data structure as specified in [RFC 5958, RFC 5959].<br/>
2970
+ Deprecated method for uploading a key pair in a PKCS#8 data structure as specified in [RFC 5958, RFC 5959].<br/>
2971
2971
  If an encryption passphrase ID is supplied in the request, the device shall assume that the KeyPair parameter contains an EncryptedPrivateKeyInfo ASN.1
2972
2972
  structure that is encrypted under the passphrase in the keystore that corresponds to the supplied ID, where the EncryptedPrivateKeyInfo structure contains
2973
2973
  both the private key and the corresponding public key. If no encryption passphrase ID is supplied, the device shall assume that the KeyPair parameter contains a
@@ -306,6 +306,11 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
306
306
  <xs:documentation>Indicates support for firmware upgrade through MTOM.</xs:documentation>
307
307
  </xs:annotation>
308
308
  </xs:attribute>
309
+ <xs:attribute name="CloudFirmwareUpgrade" type="xs:boolean">
310
+ <xs:annotation>
311
+ <xs:documentation>Indicates support for firmware upgrade through the cloud.</xs:documentation>
312
+ </xs:annotation>
313
+ </xs:attribute>
309
314
  <xs:attribute name="HttpFirmwareUpgrade" type="xs:boolean">
310
315
  <xs:annotation>
311
316
  <xs:documentation>Indicates support for firmware upgrade through HTTP.</xs:documentation>
@@ -2118,6 +2123,21 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
2118
2123
  </xs:complexType>
2119
2124
  </xs:element>
2120
2125
  <!--===============================-->
2126
+ <xs:element name="UpgradeFirmware">
2127
+ <xs:complexType>
2128
+ <xs:sequence>
2129
+ <xs:element name="Version" type="xs:string"/>
2130
+ </xs:sequence>
2131
+ </xs:complexType>
2132
+ </xs:element>
2133
+ <xs:element name="UpgradeFirmwareResponse">
2134
+ <xs:complexType>
2135
+ <xs:sequence>
2136
+ <xs:element name="ExpectedDownTime" type="xs:duration"/>
2137
+ </xs:sequence>
2138
+ </xs:complexType>
2139
+ </xs:element>
2140
+ <!--===============================-->
2121
2141
  <xs:element name="StartSystemRestore">
2122
2142
  <xs:complexType>
2123
2143
  <xs:sequence/>
@@ -2959,6 +2979,12 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
2959
2979
  <wsdl:message name="StartFirmwareUpgradeResponse">
2960
2980
  <wsdl:part name="parameters" element="tds:StartFirmwareUpgradeResponse"/>
2961
2981
  </wsdl:message>
2982
+ <wsdl:message name="UpgradeFirmwareRequest">
2983
+ <wsdl:part name="parameters" element="tds:UpgradeFirmware"/>
2984
+ </wsdl:message>
2985
+ <wsdl:message name="UpgradeFirmwareResponse">
2986
+ <wsdl:part name="parameters" element="tds:UpgradeFirmwareResponse"/>
2987
+ </wsdl:message>
2962
2988
  <wsdl:message name="StartSystemRestoreRequest">
2963
2989
  <wsdl:part name="parameters" element="tds:StartSystemRestore"/>
2964
2990
  </wsdl:message>
@@ -3553,6 +3579,24 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
3553
3579
  <wsdl:input message="tds:StartFirmwareUpgradeRequest"/>
3554
3580
  <wsdl:output message="tds:StartFirmwareUpgradeResponse"/>
3555
3581
  </wsdl:operation>
3582
+ <wsdl:operation name="UpgradeFirmware">
3583
+ <wsdl:documentation>This operation initiates a firmware upgrade using between the device
3584
+ and the MCS, without further actions from the client. Cloud firmware upgrade may be
3585
+ achieved using the following steps:
3586
+ <ol>
3587
+ <li>Client retrieves the list of available firmware versions from the MCS.</li>
3588
+ <li>Client calls UpgradeFirmware, selecting the desired FW version.</li>
3589
+ <li>Device service responds with a downtime value.</li>
3590
+ <li>Device and MCS perform the firmware upgrade procedure without further interaction from the Client</li>
3591
+ <li>Device notifies the Client of the result by emitting the appropriate CloudFirmwareUpgrade event</li>
3592
+ </ol>
3593
+ After applying a firmware upgrade the device shall keep the basic network configuration
3594
+ like IP address, subnet mask and gateway or DHCP settings, as well as all the parameters
3595
+ of the Uplink and Security service unchanged, so that it can connect to the cloud.
3596
+ Additionally a firmware upgrade shall not change user credentials.</wsdl:documentation>
3597
+ <wsdl:input message="tds:UpgradeFirmwareRequest"/>
3598
+ <wsdl:output message="tds:UpgradeFirmwareResponse"/>
3599
+ </wsdl:operation>
3556
3600
  <wsdl:operation name="StartSystemRestore">
3557
3601
  <wsdl:documentation>This operation initiates a system restore from backed up configuration data using the HTTP
3558
3602
  POST mechanism. The response to the command includes an HTTP URL to which the backup
@@ -4523,6 +4567,15 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
4523
4567
  <soap:body use="literal"/>
4524
4568
  </wsdl:output>
4525
4569
  </wsdl:operation>
4570
+ <wsdl:operation name="UpgradeFirmware">
4571
+ <soap:operation soapAction="http://www.onvif.org/ver10/device/wsdl/UpgradeFirmware"/>
4572
+ <wsdl:input>
4573
+ <soap:body use="literal"/>
4574
+ </wsdl:input>
4575
+ <wsdl:output>
4576
+ <soap:body use="literal"/>
4577
+ </wsdl:output>
4578
+ </wsdl:operation>
4526
4579
  <wsdl:operation name="StartSystemRestore">
4527
4580
  <soap:operation soapAction="http://www.onvif.org/ver10/device/wsdl/StartSystemRestore"/>
4528
4581
  <wsdl:input>
@@ -194,6 +194,8 @@ IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FO
194
194
  <xs:enumeration value="LicensePlate"/>
195
195
  <xs:enumeration value="Bike"/> <!-- any of bicycle, motorcycle, motorbike -->
196
196
  <xs:enumeration value="Barcode"/>
197
+ <xs:enumeration value="Fire"/>
198
+ <xs:enumeration value="Smoke"/>
197
199
  </xs:restriction>
198
200
  </xs:simpleType>
199
201
  <xs:simpleType name="ClassType">
@@ -2042,6 +2042,230 @@ decoding .A decoder shall decode every data it receives (according to its capabi
2042
2042
  </xs:sequence>
2043
2043
  </xs:complexType>
2044
2044
  <!--===============================-->
2045
+ <!-- MulticastAudioDecoder -->
2046
+ <!--===============================-->
2047
+ <xs:complexType name="MulticastAudioDecoderConfiguration">
2048
+ <xs:annotation>
2049
+ <xs:documentation>
2050
+ Configuration for the Multicast Audio Decoder.
2051
+ </xs:documentation>
2052
+ </xs:annotation>
2053
+ <xs:complexContent>
2054
+ <xs:extension base="tt:ConfigurationEntity">
2055
+ <xs:sequence>
2056
+ <xs:element name="Enable" type="xs:boolean">
2057
+ <xs:annotation>
2058
+ <xs:documentation>
2059
+ Indicates whether the Multicast Audio Decoder is enabled or disabled.
2060
+ </xs:documentation>
2061
+ </xs:annotation>
2062
+ </xs:element>
2063
+ <xs:element name="AudioOutputToken" type="tt:ReferenceToken" minOccurs="0" maxOccurs="unbounded">
2064
+ <xs:annotation>
2065
+ <xs:documentation>
2066
+ Token of the physical Audio output. This element is optional and can occur multiple times.
2067
+ </xs:documentation>
2068
+ </xs:annotation>
2069
+ </xs:element>
2070
+ <xs:element name="Encoding" type="xs:string">
2071
+ <xs:annotation>
2072
+ <xs:documentation>
2073
+ Specifies the encoding type according to IANA media types.
2074
+ </xs:documentation>
2075
+ </xs:annotation>
2076
+ </xs:element>
2077
+ <xs:element name="Bitrate" type="xs:int">
2078
+ <xs:annotation>
2079
+ <xs:documentation>
2080
+ The bitrate of the audio stream in bits per second.
2081
+ </xs:documentation>
2082
+ </xs:annotation>
2083
+ </xs:element>
2084
+ <xs:element name="SamplingRate" type="xs:int">
2085
+ <xs:annotation>
2086
+ <xs:documentation>
2087
+ The sampling rate of the audio stream in kHz.
2088
+ </xs:documentation>
2089
+ </xs:annotation>
2090
+ </xs:element>
2091
+ <xs:element name="Multicast" type="tt:MulticastReceiverConfiguration">
2092
+ <xs:annotation>
2093
+ <xs:documentation>
2094
+ Contains configuration details for multicast settings.
2095
+ </xs:documentation>
2096
+ </xs:annotation>
2097
+ </xs:element>
2098
+ <xs:element name="RTPPayloadType" type="xs:int">
2099
+ <xs:annotation>
2100
+ <xs:documentation>
2101
+ Defines the RTP payload type used for the audio stream.
2102
+ To ensure compatibility, it is recommended to use dynamic payload types (96 and above), as specified in RFC 3551.
2103
+ Standard payload types (0-95) should only be used for predefined audio formats matching the audio encoding as defined in
2104
+ <a href="https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-1">IANA RTP Payload Types</a>,
2105
+ as using them for non-standard media may lead to unexpected errors or interoperability issues.
2106
+ </xs:documentation>
2107
+ </xs:annotation>
2108
+ </xs:element>
2109
+ <xs:element name="Priority" type="xs:int">
2110
+ <xs:annotation>
2111
+ <xs:documentation>
2112
+ Indicates the priority level when multiple configurations are active.
2113
+ A higher value signifies a higher priority. If several configurations have the same priority value the order between those configurations is undefined.
2114
+ </xs:documentation>
2115
+ </xs:annotation>
2116
+ </xs:element>
2117
+ <xs:element name="MediaFormatParameters" type="xs:string" minOccurs="0">
2118
+ <xs:annotation>
2119
+ <xs:documentation>
2120
+ Optional media format parameters as specified in SDP, such as:
2121
+ a=fmtp:101 stereo=1; sprop-stereo=1.
2122
+ </xs:documentation>
2123
+ </xs:annotation>
2124
+ </xs:element>
2125
+ <xs:element name="SRTPPreSharedParameters" type="tt:SRTPPreShared" minOccurs="0">
2126
+ <xs:annotation>
2127
+ <xs:documentation>
2128
+ Optional configuration parameters for SRTP pre-shared key usage, applicable when SRTP is supported. When this configuration is present, RTP packets shall be encrypted.
2129
+ </xs:documentation>
2130
+ </xs:annotation>
2131
+ </xs:element>
2132
+ <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->
2133
+ </xs:sequence>
2134
+ <xs:anyAttribute processContents="lax"/>
2135
+ </xs:extension>
2136
+ </xs:complexContent>
2137
+ </xs:complexType>
2138
+ <!--===============================-->
2139
+ <xs:complexType name="SRTPPreShared">
2140
+ <xs:sequence>
2141
+ <xs:element name="SRTPPSK" type="xs:string">
2142
+ <xs:annotation>
2143
+ <xs:documentation>
2144
+ An optional SRTP Pre-Shared Key (PSK) represented as a hexadecimal string.
2145
+ This includes both the SRTP master key, followed by the master salt.
2146
+ The sizes of the key and salt depend on the specified SRTPCryptoPolicy.
2147
+ When this element is specified, RTP packets shall be encrypted.
2148
+ The SRTPPSK shall never be returned on a get method.
2149
+ </xs:documentation>
2150
+ </xs:annotation>
2151
+ </xs:element>
2152
+ <xs:element name="SecureStreamingProtocolAlgorithm" type="xs:string">
2153
+ <xs:annotation>
2154
+ <xs:documentation>
2155
+ Specifies the cryptographic algorithm when using SRTP,
2156
+ selecting from predefined values provided in the GetMulticastAudioDecoderConfigurationOptions response.
2157
+ </xs:documentation>
2158
+ </xs:annotation>
2159
+ </xs:element>
2160
+ <xs:element name="ROCExtMapID" type="xs:int">
2161
+ <xs:annotation>
2162
+ <xs:documentation>
2163
+ The RTP header extension ID (ExtMapID) used to identify the ROC extension, as defined in RFC 8285.
2164
+ Valid values are 1 to 14 for one-byte header extensions.
2165
+ </xs:documentation>
2166
+ </xs:annotation>
2167
+ </xs:element>
2168
+ <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->
2169
+ </xs:sequence>
2170
+ <xs:anyAttribute processContents="lax"/>
2171
+ </xs:complexType>
2172
+ <!--===============================-->
2173
+ <xs:complexType name="MulticastReceiverConfiguration">
2174
+ <xs:sequence>
2175
+ <xs:element name="Address" type="tt:IPAddress">
2176
+ <xs:annotation>
2177
+ <xs:documentation>The multicast address (if this address is set to 0 no multicast streaming is enabled)</xs:documentation>
2178
+ </xs:annotation>
2179
+ </xs:element>
2180
+ <xs:element name="Port" type="xs:int">
2181
+ <xs:annotation>
2182
+ <xs:documentation>The RTP multicast destination port. A device may support RTCP. In this case the port value shall be even to allow the corresponding RTCP stream to be mapped to the next higher (odd) destination port number as defined in the RTSP specification.</xs:documentation>
2183
+ </xs:annotation>
2184
+ </xs:element>
2185
+ <xs:element name="TTL" type="xs:int">
2186
+ <xs:annotation>
2187
+ <xs:documentation>In case of IPv6 the TTL value is assumed as the hop limit. Note that for IPV6 and administratively scoped IPv4 multicast the primary use for hop limit / TTL is to prevent packets from (endlessly) circulating and not limiting scope. In these cases the address contains the scope.</xs:documentation>
2188
+ </xs:annotation>
2189
+ </xs:element>
2190
+ <xs:element name="InterfaceToken" type="tt:ReferenceToken" minOccurs="0" maxOccurs="unbounded">
2191
+ <xs:annotation>
2192
+ <xs:documentation>Unique identifier of the network interface on the device. If not specified, all available interfaces will be used for listening. </xs:documentation>
2193
+ </xs:annotation>
2194
+ </xs:element>
2195
+ <xs:element name="SourceSpecificMulticast" type="tt:IPAddress" minOccurs="0">
2196
+ <xs:annotation>
2197
+ <xs:documentation>When a source-specific multicast address is configured, the device will process multicast data only from the specified source, in accordance with SSM principles defined in RFC 4607.</xs:documentation>
2198
+ </xs:annotation>
2199
+ </xs:element>
2200
+ <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first Vendor then ONVIF -->
2201
+ </xs:sequence>
2202
+ <xs:anyAttribute processContents="lax"/>
2203
+ </xs:complexType>
2204
+ <!--===============================-->
2205
+ <xs:complexType name="MulticastAudioDecoderConfigurationOptions">
2206
+ <xs:sequence>
2207
+ <xs:element name="EncodingOptions" type="tt:AudioDecoder2Options">
2208
+ <xs:annotation>
2209
+ <xs:documentation>Supported encoding options for the multicast audio decoder.</xs:documentation>
2210
+ </xs:annotation>
2211
+ </xs:element>
2212
+ <xs:element name="PriorityRange" type="tt:IntRange">
2213
+ <xs:annotation>
2214
+ <xs:documentation>
2215
+ Specifies the priority range as an integer. This indicates the priority level for audio configuration.
2216
+ </xs:documentation>
2217
+ </xs:annotation>
2218
+ </xs:element>
2219
+ <xs:element name="SecureStreamingProtocolAlgorithms" type="tt:StringList" minOccurs="0">
2220
+ <xs:annotation>
2221
+ <xs:documentation>
2222
+ An optional parameter specifies the list of supported cryptographic algorithms when SRTP support is signaled as 'true' in the GetServiceCapabilitiesResponse.
2223
+ Refer to tt:SrtpSecurityAlgorithms for the acceptable values.
2224
+ </xs:documentation>
2225
+ </xs:annotation>
2226
+ </xs:element>
2227
+ <xs:element name="AudioOutputTokens" type="tt:StringList" minOccurs="0">
2228
+ <xs:annotation>
2229
+ <xs:documentation>
2230
+ Optional list of physical Audio output tokens. This element is used when only certain audio outputs can be configured for this token.
2231
+ </xs:documentation>
2232
+ </xs:annotation>
2233
+ </xs:element>
2234
+ <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first ONVIF then Vendor -->
2235
+ </xs:sequence>
2236
+ <xs:anyAttribute processContents="lax"/>
2237
+ </xs:complexType>
2238
+ <!--===============================-->
2239
+ <xs:complexType name="AudioDecoder2Options">
2240
+ <xs:sequence>
2241
+ <xs:element name="Encoding" type="xs:string">
2242
+ <xs:annotation>
2243
+ <xs:documentation>Audio Media Subtype for the audio format. For definitions see tt:AudioEncodingMimeNames and <a href="https://www.iana.org/assignments/media-types/media-types.xhtml#audio"> IANA Media Types</a>.</xs:documentation>
2244
+ </xs:annotation>
2245
+ </xs:element>
2246
+ <xs:element name="BitrateList" type="tt:IntItems">
2247
+ <xs:annotation>
2248
+ <xs:documentation>List of supported bitrates in kbps for the specified Encoding</xs:documentation>
2249
+ </xs:annotation>
2250
+ </xs:element>
2251
+ <xs:element name="SampleRateList" type="tt:IntItems">
2252
+ <xs:annotation>
2253
+ <xs:documentation>List of supported Sample Rates in kHz for the specified Encoding</xs:documentation>
2254
+ </xs:annotation>
2255
+ </xs:element>
2256
+ <xs:element name="RTPPayloadType" type="xs:int" minOccurs="0">
2257
+ <xs:annotation>
2258
+ <xs:documentation>
2259
+ Optional element for specifying the RTP payload type,
2260
+ particularly when it is fixed for a specific audio encoding as defined in <a href="https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-1">IANA RTP Payload Types</a>.
2261
+ </xs:documentation>
2262
+ </xs:annotation>
2263
+ </xs:element>
2264
+ <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <!-- first ONVIF then Vendor -->
2265
+ </xs:sequence>
2266
+ <xs:anyAttribute processContents="lax"/>
2267
+ </xs:complexType>
2268
+ <!--===============================-->
2045
2269
  <!-- Streaming -->
2046
2270
  <!--===============================-->
2047
2271
  <xs:complexType name="MulticastConfiguration">