Snacks v2.5.1
Automated Video Library Encoder
Patch release that fixes a subtle but important cluster bug: the Is4K flag on a job was determined on the master but never sent to workers, so worker-side Hybrid-mode mux decisions evaluated every 4K source against the 1080p bitrate ceiling. 4K files that should have qualified for a video-copy mux pass were getting fully re-encoded on workers instead.
Bug Fixes
Cluster: 4K Flag Now Reaches Workers
Is4Kis plumbed through job dispatch --JobMetadata(master → worker handshake),WorkItemmaterialization on the worker, and the dispatch payload inClusterServiceall now carry theIs4Kflag. Previously the master populatedWorkItem.Is4Klocally from the source probe but dropped it when serializing the job, so workers always sawIs4K = false. The result was thatMeetsBitrateTargeton the worker compared a 4K source's bitrate against the configured 1080p ceiling (TargetBitrate * 1.0) instead of the 4K ceiling (TargetBitrate * FourKBitrateMultiplier, default 4×), and Hybrid-mode jobs that should have mux-copied a 4K stream that already met the 4K target instead burned a full re-encode. Master-only encodes were unaffected.- Applied at both dispatch sites -- standard work-item dispatch and the autonomous-encoding upload path both now include
Is4Kin theJobMetadatapayload they send to the worker.
Cluster: Worker-Side Mux-Decision Diagnostic
- Worker logs the inputs to
MeetsBitrateTargetat encode start -- before each cluster encode, the worker now printsEncodingMode,MuxStreams,Is4K,IsHevc, andBitrateexactly as it received them. If a user ever sees these print as defaults while the master is configured otherwise, it points at a metadata-flow bug rather than a transcode-logic bug — which is precisely how this 4K-flag issue would have been caught earlier.
Files Changed
Snacks/Models/JobMetadata.cs-- newIs4Kproperty on the master→worker job handshakeSnacks/Services/ClusterNodeJobService.cs-- worker copiesIs4Kfrom incomingJobMetadataonto the materializedWorkItem; logs mux-decision inputs at encode startSnacks/Services/ClusterService.cs-- master populatesIs4Kin both job-dispatch sites (standard dispatch and autonomous-encoding upload)
Version Bumps
Snacks/Controllers/HomeController.csSnacks/Services/ClusterDiscoveryService.cs-- protocol version bump to 2.5.1Snacks/Views/Shared/_Layout.cshtmlREADME.mdbuild-and-export.batelectron-app/package.json/package-lock.json
Full documentation: README.md