python-aidot-cameras 0.7.22__tar.gz → 0.7.23__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 (59) hide show
  1. {python_aidot_cameras-0.7.22/src/python_aidot_cameras.egg-info → python_aidot_cameras-0.7.23}/PKG-INFO +1 -1
  2. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/pyproject.toml +1 -1
  3. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/client.py +7 -3
  4. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23/src/python_aidot_cameras.egg-info}/PKG-INFO +1 -1
  5. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/LICENSE +0 -0
  6. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/MANIFEST.in +0 -0
  7. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/README.md +0 -0
  8. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/setup.cfg +0 -0
  9. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/__init__.py +0 -0
  10. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/aes_utils.py +0 -0
  11. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/__init__.py +0 -0
  12. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/constants.py +0 -0
  13. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/controls.py +0 -0
  14. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/go2rtc.py +0 -0
  15. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/lan_control.py +0 -0
  16. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/models.py +0 -0
  17. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/playback.py +0 -0
  18. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/protocol.py +0 -0
  19. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/sdes.py +0 -0
  20. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/tutk.py +0 -0
  21. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/camera/webrtc.py +0 -0
  22. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/client.py +0 -0
  23. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/const.py +0 -0
  24. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/credentials.py +0 -0
  25. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/device_client.py +0 -0
  26. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/discover.py +0 -0
  27. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/exceptions.py +0 -0
  28. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/g711.py +0 -0
  29. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/login_const.py +0 -0
  30. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/models/__init__.py +0 -0
  31. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/models/device_client_model.py +0 -0
  32. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/models/device_model.py +0 -0
  33. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/models/discover_model.py +0 -0
  34. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/aidot/py.typed +0 -0
  35. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/python_aidot_cameras.egg-info/SOURCES.txt +0 -0
  36. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/python_aidot_cameras.egg-info/dependency_links.txt +0 -0
  37. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/python_aidot_cameras.egg-info/requires.txt +0 -0
  38. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/src/python_aidot_cameras.egg-info/top_level.txt +0 -0
  39. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_alarm_event.py +0 -0
  40. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_backoff.py +0 -0
  41. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_go2rtc.py +0 -0
  42. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_highport_nomination.py +0 -0
  43. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_lan_control.py +0 -0
  44. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_live_stream_param.py +0 -0
  45. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_motion_poll.py +0 -0
  46. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_no_undefined_names.py +0 -0
  47. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_post_merge_hardening.py +0 -0
  48. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_sdes_fast_liveplay.py +0 -0
  49. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_sdes_idle_release.py +0 -0
  50. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_sdes_sprop.py +0 -0
  51. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_sdes_talk.py +0 -0
  52. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_sdes_watchdog.py +0 -0
  53. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_serve_relay.py +0 -0
  54. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_speak.py +0 -0
  55. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_stream_cap.py +0 -0
  56. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_stream_idle.py +0 -0
  57. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_talk.py +0 -0
  58. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_terminal_ack.py +0 -0
  59. {python_aidot_cameras-0.7.22 → python_aidot_cameras-0.7.23}/tests/test_token_refresh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.7.22
3
+ Version: 0.7.23
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-aidot-cameras"
7
- version = "0.7.22"
7
+ version = "0.7.23"
8
8
  description = "Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -2532,7 +2532,8 @@ class CameraMixin(_CameraControlsMixin):
2532
2532
  return 120.0
2533
2533
 
2534
2534
  def _resolve_sdes_fast_liveplay(self) -> bool:
2535
- """Whether to skip the ~2 s livePlayResp wait for SDES (P5, EXPERIMENTAL).
2535
+ """Whether to use SDES fast-liveplay (shorten the always-timing-out
2536
+ echo/livePlayResp signaling) - validated in soak, opt-in, default off.
2536
2537
 
2537
2538
  Per-camera ``sdes_fast_liveplay`` (set via start_keepalive) wins; else the
2538
2539
  ``AIDOT_SDES_FAST_LIVEPLAY`` env (truthy = 1/true/yes/on), default off.
@@ -7047,13 +7048,16 @@ class CameraMixin(_CameraControlsMixin):
7047
7048
  # webrtcReq. The echo confirms the MQTT pipeline to this device is live
7048
7049
  # and the broker session is registered. Fall through after 5 s if it
7049
7050
  # never arrives (same safety as the old fixed 0.5 s sleep, but adaptive).
7050
- # P5 (experimental, opt-in via sdes_fast_liveplay): instrumentation showed
7051
+ # SDES fast-liveplay (opt-in via sdes_fast_liveplay): instrumentation showed
7051
7052
  # the echo and livePlayResp waits BOTH always time out for the SDES cameras
7052
7053
  # measured (echo/resp never arrive) yet streaming succeeds - i.e. ~6 s of
7053
7054
  # dead padding. When the flag is on, cap the echo wait short and skip the
7054
7055
  # livePlayResp wait; the full ICE/TURN/SCTP handshake is untouched. This
7055
7056
  # is the SDES path's OWN livePlay waits (the DTLS gate above never runs for
7056
- # SDES: use_sdes is True there).
7057
+ # SDES: use_sdes is True there). VALIDATED in a 3 h live soak (15 SDES
7058
+ # opens across battery cameras, flag engaged on all, 0 churn / 0 fail,
7059
+ # ~4.5 s signaling saved); kept off by default pending broader multi-day
7060
+ # use (per-open + near-term stability proven, long-haul not yet).
7057
7061
  _skip_lp = self._resolve_sdes_fast_liveplay()
7058
7062
  _echo_timeout = 1.5 if _skip_lp else 5.0
7059
7063
  _echo_t0 = time.monotonic()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.7.22
3
+ Version: 0.7.23
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT