Commit Graph

499 Commits

Author SHA1 Message Date
mani
b62d26c9b0 Update jellyfin-server: fix CRT shader writable OpenCL output pool
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 13:33:55 +01:00
mani
14b418cdaf Update jellyfin-server: fix CRT shader VAAPI path (reverse=1)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 01:18:50 +01:00
mani
4d9781aabd Update jellyfin-server: fix fract() for OpenCL 1.x in CRT shader
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 01:28:59 +01:00
mani
d8d288cb53 Update jellyfin-server: CRT shader NV12 rewrite, remove scale_opencl
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 01:20:37 +01:00
mani
67c5ecc223 Update jellyfin-server: simplify CRT VAAPI path
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 00:17:01 +01:00
mani
c0402ae63c Update jellyfin-server: fix CRT shader build_opts for jellyfin-ffmpeg
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 00:11:51 +01:00
mani
9494d25f71 Update jellyfin-server: route VAAPI→QSV before OpenCL in CRT shader path
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 23:53:08 +01:00
mani
a232d20351 Fix CRT shader: map OpenCL→QSV directly, skip broken VAAPI intermediate
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 23:19:00 +01:00
mani
beaa09d08c Fix CRT shader: correct query param format for streamOptions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 23:06:05 +01:00
mani
7d7a415edc Fix CRT shader: pass streamOptions via PlaybackInfo body, not URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 21:37:04 +01:00
mani
d9fbf604d4 Fix CRT shader: add missing QSV decoder path in VAAPI+QSV pipeline
The SDR case (QSV decoder + QSV encoder, no OCL tonemap) was never
handled — the frame stayed in QSV VRAM with no OpenCL round-trip,
so the CRT filter was simply never applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 21:15:44 +01:00
mani
8db657cfab Fix CRT shader: force video re-encode (AllowVideoStreamCopy=false)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 02:51:57 +01:00
mani
a57e9d3211 Debug CRT shader: log IsCrtShaderEnabled conditions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 02:42:39 +01:00
mani
28f996a9ae Fix CRT shader: add program_opencl to required filters whitelist
Update jellyfin-server submodule pointer. Also clean up leftover
download artifacts and add --no-cache to build_truenas.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 02:24:34 +01:00
mani
791cd290b6 Update jellyfin-web submodule pointer to amended CRT commit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 14:47:18 +01:00
mani
23a35bdf8a Update jellyfin-server: Add CRT shader support for Intel QSV pipeline
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 14:39:27 +01:00
mani
186fc6681b Update jellyfin-server: fix CRT OpenCL capability check + scale_opencl syntax 2026-02-24 14:24:41 +01:00
mani
bdabb46d64 Update jellyfin-web: fix CRT shader force-transcode 2026-02-24 14:21:35 +01:00
mani
3d344f55a6 Add CRT-Lottes shader: server OpenCL filter + web player toggle
Wires up the per-session CRT-Lottes shader end-to-end:
- jellyfin-server: OpenCL kernel + EncodingHelper integration for SW,
  Intel VAAPI, and AMD VAAPI pipelines (zero-PCIe paths where possible)
- jellyfin-web: player settings menu toggle (On/Off) that restarts the
  transcoding stream with streamOptions[crtShader]=true

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 13:54:01 +01:00
mani
6b1e61f50c Update jellyfin-server and jellyfin-web to v10.11.6
Some checks failed
Unstable Build / Debian (amd64, bookworm) (push) Has been cancelled
Unstable Build / Debian (amd64, bullseye) (push) Has been cancelled
Unstable Build / Debian (amd64, trixie) (push) Has been cancelled
Unstable Build / Debian (arm64, bookworm) (push) Has been cancelled
Unstable Build / Debian (arm64, bullseye) (push) Has been cancelled
Unstable Build / Debian (arm64, trixie) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, noble) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, noble) (push) Has been cancelled
Unstable Build / Linux (amd64) (push) Has been cancelled
Unstable Build / Docker (push) Has been cancelled
Unstable Build / Linux (amd64-musl) (push) Has been cancelled
Unstable Build / Linux (arm64) (push) Has been cancelled
Unstable Build / Linux (arm64-musl) (push) Has been cancelled
Unstable Build / Windows (amd64) (push) Has been cancelled
Unstable Build / Windows (arm64) (push) Has been cancelled
Unstable Build / MacOS (amd64) (push) Has been cancelled
Unstable Build / MacOS (arm64) (push) Has been cancelled
Unstable Build / Portable (push) Has been cancelled
Unstable Build / Nuget (push) Has been cancelled
Unstable Build / WindowsInstaller (amd64) (push) Has been cancelled
Unstable Build / WindowsInstallerUpload (amd64) (push) Has been cancelled
2026-01-20 14:20:40 +01:00
mani
7fa3cf423a Update jellyfin-web: fix Xbox UWP codec detection
Some checks failed
Unstable Build / Docker (push) Has been cancelled
Unstable Build / Debian (amd64, bookworm) (push) Has been cancelled
Unstable Build / Debian (amd64, bullseye) (push) Has been cancelled
Unstable Build / Debian (amd64, trixie) (push) Has been cancelled
Unstable Build / Debian (arm64, bookworm) (push) Has been cancelled
Unstable Build / Debian (arm64, bullseye) (push) Has been cancelled
Unstable Build / Debian (arm64, trixie) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, noble) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, noble) (push) Has been cancelled
Unstable Build / Linux (amd64) (push) Has been cancelled
Unstable Build / Linux (amd64-musl) (push) Has been cancelled
Unstable Build / Linux (arm64) (push) Has been cancelled
Unstable Build / Linux (arm64-musl) (push) Has been cancelled
Unstable Build / Windows (amd64) (push) Has been cancelled
Unstable Build / Windows (arm64) (push) Has been cancelled
Unstable Build / Nuget (push) Has been cancelled
Unstable Build / MacOS (amd64) (push) Has been cancelled
Unstable Build / MacOS (arm64) (push) Has been cancelled
Unstable Build / Portable (push) Has been cancelled
Unstable Build / WindowsInstaller (amd64) (push) Has been cancelled
Unstable Build / WindowsInstallerUpload (amd64) (push) Has been cancelled
2026-01-09 00:50:19 +01:00
mani
7ec56cbcaa Revert jellyfin-server: remove server-side Xbox filter 2026-01-09 00:44:15 +01:00
mani
1774339f88 Update jellyfin-server: fix Xbox playback on GET endpoint 2026-01-09 00:38:46 +01:00
mani
f0ae5ced4f Update jellyfin-server: Add logging to both PlaybackInfo endpoints 2026-01-09 00:36:17 +01:00
mani
413579151a Update jellyfin-server: Add Xbox filter debug logging 2026-01-09 00:28:06 +01:00
mani
ad655ae4c4 Debug: Add test response for PlaybackInfo matching
Testing if path_regexp works by returning debug response
instead of proxying. This will show:
1. If the path is matched correctly
2. What User-Agent header is received

Once confirmed working, uncomment reverse_proxy lines.
2026-01-09 00:24:51 +01:00
mani
63f6738e11 Major fix: Caddy-based intelligent routing for Xbox filter
Complete architecture overhaul:
- Caddy is now the main proxy (port 8096)
- Only Xbox PlaybackInfo requests go to Python filter
- Everything else (WebSocket, streaming, API) goes directly to Jellyfin

Changes:
- Add Caddy service to docker-compose
- Use path_regexp for proper PlaybackInfo matching
- Remove method POST constraint (handled by path)
- Direct routing for non-Xbox requests
- WebSocket support for /socket endpoint

This fixes:
- 503 errors on normal requests
- 400 errors on WebSocket connections
- Performance issues from proxying everything

Architecture:
Client → Caddy → Check (path + User-Agent)
              ↓ Xbox PlaybackInfo → Python Filter → Jellyfin
              ↓ Everything else → Jellyfin
2026-01-09 00:21:57 +01:00
mani
0eaee053f5 Fix Caddyfile: Proper reverse proxy to Python filter
Caddyfile now:
- Runs on port 8097 (external)
- Proxies to xbox-filter:8096 (Python filter)
- Python filter handles all Xbox detection and codec filtering
- Python filter then proxies to jellyfin:8096 (internal)

Architecture:
Client :8097 → Caddy → :8096 Python Filter → :8096 Jellyfin

Use Caddy if you need additional features like:
- SSL/TLS termination
- Rate limiting
- Access control
- Advanced routing

Or use Python filter directly on port 8096 for simpler setup.
2026-01-09 00:19:14 +01:00
mani
a0097cae2d Revert "Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs"
This reverts commit 9e6b9fc1db.
2026-01-09 00:18:43 +01:00
mani
9e6b9fc1db Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs
- Remove Caddyfile (Python proxy handles everything)
- Clarify that REQUEST body is filtered, not response
- Add better log examples showing actual output
- Add docker-compose comments about port exposure
- Explain filtering flow: User-Agent detection → JSON parsing → Codec filtering
2026-01-09 00:17:47 +01:00
mani
c9ffefed70 Fix Xbox proxy: Filter REQUEST body instead of response
BREAKING FIX: DeviceProfile is sent FROM client TO server in request body,
not returned in response. This was the bug preventing the filter from working.

Changes:
- Filter DeviceProfile in POST request body before sending to Jellyfin
- Add extensive debug logging to track filtering process
- Remove unnecessary response filtering (DeviceProfile not in response)
- Simplify response handling (always stream)

Now logs:
- 'Xbox PlaybackInfo request detected' when Xbox client detected
- 'Filtering Xbox DeviceProfile in REQUEST' when filtering
- 'No DeviceProfile found' if profile missing (debug info)
2026-01-09 00:15:08 +01:00
mani
485b809a63 Fix Xbox proxy: Add proper header forwarding and streaming support
- Add query parameter forwarding (?api_key=... etc.)
- Add X-Forwarded-* headers for client IP tracking
- Exclude problematic headers (content-length, transfer-encoding, etc.)
- Add streaming support for large files (8KB chunks)
- Add root route handler
- Properly forward all HTTP methods
2026-01-09 00:12:50 +01:00
mani
6efda6b0bd Update jellyfin-server: User-Agent based Xbox codec detection
- Changed from DeviceId to User-Agent for Xbox detection
- Xbox UWP app sends 'WebView2 Xbox' in User-Agent
- Fixes issue where DeviceId contains random GUID instead of 'xbox'
- Keeps FFmpeg log level, remote source transcoding, and other fixes
2026-01-09 00:03:45 +01:00
mani
1cedac1aa9 Add Xbox codec filter proxy as alternative to code patches
- Transparent reverse proxy that filters AV1/Opus for Xbox clients
- Detects Xbox via User-Agent header
- Docker-based solution, no Jellyfin code modifications needed
- Can be easily enabled/disabled without affecting Jellyfin updates
2026-01-09 00:03:04 +01:00
mani
f517a97ca0 Remove download/transcoding features to patches - keep core fixes
Moved to patches/:
- jellyfin-progressive-download-improvements-v10.11.5.patch (server)
- jellyfin-web-download-dialog-v10.11.5.patch (web UI)

Kept in code:
- Xbox UWP codec detection (AV1/Opus fix)
- FFmpeg log level configuration
- Remote source forced transcoding
- Quality text UI fix (web)

Both jellyfin-server and jellyfin-web reset to v10.11.5 base
2026-01-08 23:37:37 +01:00
mani
0bd96b4a89 Update jellyfin-server: fix Xbox playback 2026-01-08 17:13:39 +01:00
mani
ceda15a9f4 Update jellyfin-server: add filename debug info 2026-01-08 17:05:09 +01:00
mani
33b8d104a1 Update jellyfin-server: clean downloads folder code 2026-01-08 16:50:31 +01:00
mani
8ba181add6 Update jellyfin-server: add debug logging 2026-01-08 16:45:35 +01:00
mani
97208b62ba Update jellyfin-server: add /downloads/ folder for full-file downloads 2026-01-08 16:38:15 +01:00
mani
bc2cf0f4b8 Remove all timestamp fixes - revert to original Jellyfin 2026-01-08 16:34:41 +01:00
mani
38683358b8 Reset to working fix: Progressive-only timestamp normalization 2026-01-08 15:50:12 +01:00
mani
5a277e94a2 Apply timestamp normalization only for full file downloads
- Force CopyTimestamps=false when SegmentContainer is null (full downloads)
- Preserve client's copyTimestamps setting for streaming (HLS)
- Fixes negative timestamps only in downloaded files, not streaming
2026-01-08 15:47:52 +01:00
mani
94f5e64ab0 Update jellyfin-server: always apply timestamp normalization 2026-01-08 15:44:33 +01:00
mani
766a58195d Update jellyfin-server: remove restrictive Progressive-only conditions 2026-01-08 15:23:30 +01:00
mani
23e93b584e Update jellyfin-server: add debug logging to trace code path 2026-01-08 13:38:18 +01:00
mani
0b3d627074 Update jellyfin-server: use Console.Error for debug output 2026-01-08 13:37:05 +01:00
mani
c0dd7c9897 Update jellyfin-server: add file-based debug logging 2026-01-08 13:32:06 +01:00
mani
4cf5571355 Update jellyfin-server: fix missing using directive 2026-01-08 13:26:42 +01:00
mani
730624f9f4 Update jellyfin-server: use ILogger for debug output 2026-01-08 13:22:13 +01:00