reinierlakhan d728c4ab7d python-codecs: arm zygote fork self-destruct at call time, not first frame (#2139)
CodecFork.generateVideoFramesLibav and generateVideoFramesGstreamer are async
generator functions, so their bodies -- including the call_later(10, timeoutExit)
that lets the worker kill itself -- do not run until the caller requests the first
frame. The PluginFork handle is discarded at handout in LibavGenerator and
GstreamerGenerator, so a worker that is handed a session but never iterated has no
watchdog and no reachable terminate(), and idles for the life of the plugin host.

aclose() on a never-started async generator returns without executing the body, so
even a consumer that closes the RPC proxy cannot trigger the self-destruct.

Make the two methods coroutines that return the inner generator. rpc.py does
await maybe_await(invoke(*args)) before serializing, so the async iterator proxy
seen by the caller is unchanged, but the watchdog is armed as soon as the fork is
committed to a session.

Also keep the PluginFork handle at the call sites and terminate it if the session
cannot be handed to the caller.

Fixes #2138


Claude-Session: https://claude.ai/code/session_018kjDzffi8VZKA1mn6nrGfo

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 22:54:35 -07:00
2025-10-29 11:36:04 -07:00
2026-09-03 09:05:04 -07:00
2026-09-03 09:03:55 -07:00
2024-07-18 10:24:34 -07:00
2021-10-02 20:52:59 -07:00
2024-10-26 16:19:52 -05:00
2022-11-16 11:17:11 -08:00
2025-01-18 15:04:59 -08:00
2023-07-11 11:18:44 -07:00
2023-05-08 14:48:19 -07:00

Scrypted

Scrypted is a high performance home video integration platform and NVR with smart detections. Instant, low latency, streaming to HomeKit, Google Home, and Alexa. Supports most cameras. Learn more.

Installation and Documentation

Installation and camera onboarding instructions can be found in the docs.

Community

Scrypted has active communities on Discord, Reddit, and Github. Check them out if you have questions!

Development

Debug Scrypted Plugins in VS Code

# this is an example for homekit.
# check out the code
git clone https://github.com/koush/scrypted
cd scrypted
# get the dependencies for the server and various plugins
./npm-install.sh
# open the homekit project in VS Code
code plugins/homekit

You can now launch (using the Start Debugging play button) the HomeKit Plugin in VS Code. Please be aware that you do not need to restart the Scrypted Server if you make changes to a plugin. Edit the plugin, launch, and the updated plugin will deploy on the running server.

If you do not want to set up VS Code, you can also run build and install the plugin directly from the command line:

# currently in the plugins/homekit directory.
npm run build && npm run scrypted-deploy 127.0.0.1

Plugin SDK Documentation

Want to write your own plugin? Full documentation is available here: https://developer.scrypted.app

Debug the Scrypted Server in VS Code

Debugging the server should not be necessary, as the server only provides the hosting and RPC mechanism for plugins. The following is for reference purpose. Most development can be done by debugging the relevant plugin.

# check out the code
git clone https://github.com/koush/scrypted
cd scrypted
# get the dependencies for the server and various plugins
./npm-install.sh
# open server project in VS Code
code server

You can now launch the Scrypted Server in VS Code.

Description
No description provided
Readme 68 MiB
Languages
TypeScript 79.6%
Python 16.6%
JavaScript 2.2%
Shell 1.5%
PowerShell 0.1%