Add native GPU-accelerated AV1 transcode capability
Post-grab async background swap, upgrade_locked flag to prevent the upgrade loop from re-inflating a locally-transcoded file, and a transcode-library CLI backfill for the existing catalog. Bitrate model calibrated against Silicon Valley's real HEVC bitrate, scaled by resolution and AV1's encoding efficiency. HDR/2160p and anime excluded from this first pass. Jellyfin session polling throttles batch encoding back to 1 stream during active playback.
This commit is contained in:
parent
691fb39cbb
commit
d533301880
10 changed files with 924 additions and 15 deletions
|
|
@ -78,6 +78,7 @@ pub struct CycleStatus {
|
|||
pub last_import: Option<CycleRecord>,
|
||||
pub last_search: Option<CycleRecord>,
|
||||
pub last_upgrade: Option<CycleRecord>,
|
||||
pub last_transcode: Option<CycleRecord>,
|
||||
/// Set once the search-driven loop's consecutive-failure backoff hits
|
||||
/// its ceiling — still ticking at max backoff underneath (self-healing
|
||||
/// if the source recovers), but worth a loud, easy-to-spot signal that
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ pub async fn health(State(state): State<AppState>) -> Json<HealthDetail> {
|
|||
last_import_cycle: status.last_import.as_ref().map(to_info),
|
||||
last_search_cycle: status.last_search.as_ref().map(to_info),
|
||||
last_upgrade_cycle: status.last_upgrade.as_ref().map(to_info),
|
||||
last_transcode_cycle: status.last_transcode.as_ref().map(to_info),
|
||||
search_halted: status.search_halted,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue