Repository navigation
Conversation
Signed-off-by: Kenneth Mitchell <kmitchel46725@gmail.com>
Signed-off-by: Kenneth Mitchell <kmitchel46725@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Ferrofin persists
RecordingPostProcessorandRecordingPostProcessorArgumentsbut never invokes the configured executable. Retained DVR recordings now run
that processor after being marked Completed, then queue a metadata refresh.
For example, a processor that replaces MPEG-2 with HEVC now runs automatically,
and subsequent library playback reports the processed file's codec and duration.
Upgrade note: Previously ignored post-processor settings become active.
Check the executable, service-account permissions, and argument template before
upgrading. Templates use POSIX shell-word quoting without shell execution;
"{path}"passes the recording path as one argument. No database migration isrequired.
Why
A configured or adopted Jellyfin post-processing pipeline otherwise silently
stops running. Refreshing only before processing also leaves stale media metadata
when the script replaces a recording and its library has no filesystem watcher.
Compared against the pinned Jellyfin v12.4
RecordingsManager.RecordStreamandPostProcessRecording.How
settle_timerafter retaining the capture andpersisting Completed. This includes retained partial captures when retries are
exhausted or the retry window has ended. Empty captures and attempts scheduled
for retry do not invoke it.
Start the executable directly, expand
{path}case-insensitively, and awaitits exit. Blank executable settings disable processing.
recording or scheduling another capture. A nonzero exit leaves the recording
Completed. This preserves server state; it does not undo changes a script made
to the file.
nonzero exit because the script may already have changed the file.
Three intentional differences are recorded in the new
recording-postprocessingsubsystem parity row: argument templates are parsed with POSIX shell-word rules
before path substitution, argument values are omitted from logs, and a refresh
is queued after processing. Parsing before substitution keeps spaces, quotes,
and metacharacters in recording names literal instead of letting them change
argument boundaries. POSIX quoting is not a claim of exact .NET argument-parser
compatibility.
The private module reuses the workspace's existing
shlexdependency. The APIsource change contains only the parity record; no request handler or query path
changes. There are no route, schema, migration, adoption, or boot-repair changes.
Verification
disabled settings, missing executables, nonzero exits, retained captures,
retries, empty captures, and refresh after successful and unsuccessful scripts.
(four live external-provider API tests and one query-cost measurement).
All doctests passed, including three executable cases.
Separate per-crate coverage gates passed: 95.59% Live TV, 91.36% API.
-D warnings.Formatting, workspace dependency declarations,
cargo deny --locked check,cargo machete apps crates, and patch whitespace checks passed.Comskip/comcut and Intel VA-API HEVC script and observed exit 0. The resulting
33.33-second file passed full video/audio decoding. Automatic refresh changed
the scanned library item's playback metadata to HEVC; authenticated static
delivery through that item's ID returned HTTP 206 for the requested 1 MiB.
recording schedules/settings and database integrity passed post-deployment
checks. Disposable recordings and fixtures were removed.
Playback verification used the scanned library item's ID. A separate DVR row-ID
resolution gap still returns 404 at
PlaybackInfo; this PR does not fix that gap.Checklist
cargo fmt --all --check.