<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/Jellyfin.Api/Helpers, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.b0n.dev/jellyfin/atom?h=master</id>
<link rel='self' href='https://git.b0n.dev/jellyfin/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/'/>
<updated>2026-05-21T18:48:41Z</updated>
<entry>
<title>Run tree-wide dotnet format</title>
<updated>2026-05-21T18:48:41Z</updated>
<author>
<name>jakobkukla</name>
<email>jakob.kukla@gmail.com</email>
</author>
<published>2026-04-16T09:38:01Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=37350282cc18a977162dcf14fe9b6068d29d6edf'/>
<id>urn:sha1:37350282cc18a977162dcf14fe9b6068d29d6edf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix GHSA-jh22-fw8w-2v9x</title>
<updated>2026-04-06T09:37:45Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-03-31T07:30:45Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=0bf7653e3648a86bd0c6f224fcea341a6fdb8a85'/>
<id>urn:sha1:0bf7653e3648a86bd0c6f224fcea341a6fdb8a85</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add additional validations</title>
<updated>2026-04-06T09:37:45Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-03-30T08:48:51Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=b846958f2c99271ff68de1cc6b252b5c851fb01c'/>
<id>urn:sha1:b846958f2c99271ff68de1cc6b252b5c851fb01c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add spec-compliant dvh1 HLS variant for Dolby Vision Profile 5 (#16362)</title>
<updated>2026-03-28T21:12:06Z</updated>
<author>
<name>NoFear0411</name>
<email>9083405+NoFear0411@users.noreply.github.com</email>
</author>
<published>2026-03-28T21:12:06Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=e5bbb1ea0c0aa74ddb6f6d33c94583dfc1accf31'/>
<id>urn:sha1:e5bbb1ea0c0aa74ddb6f6d33c94583dfc1accf31</id>
<content type='text'>
* Add spec-compliant dvh1 HLS variant for Dolby Vision Profile 5

DV Profile 5 has no backward-compatible base layer, so
SUPPLEMENTAL-CODECS cannot be used. The master playlist
currently labels P5 streams as hvc1 in the CODECS field,
even though DynamicHlsController already passes
-tag:v:0 dvh1 -strict -2 to FFmpeg for P5 copy-codec
streams, writing a dvh1 FourCC and dvvC configuration box
into the fMP4 init segment. This mismatch between the
manifest (hvc1) and the bitstream (dvh1) causes
spec-compliant clients like Apple TV and webOS 24+ to set
up an HDR10 pipeline instead of a Dolby Vision one.

Add a dvh1 variant before the existing hvc1 variant for P5
copy-codec streams. Both variants point to the same stream
URL. Spec-compliant clients select dvh1 and activate the
DV decoder path. Legacy clients that reject dvh1 in CODECS
fall through to the hvc1 variant and detect DV from the
init segment, preserving existing behavior.

Fixes #16179

* Address review: support AV1 DoVi P10, add client capability check

- GetDoviString: add isAv1 parameter, return dav1 FourCC for AV1 DoVi
  (P10 bl_compat_id=0) and dvh1 for HEVC DoVi (P5)
- Remove redundant IsDovi() check; VideoRangeType.DOVI is sufficient
  and correctly limits to profiles without a compatible base layer
- Replace IsDoviRemoved() with client capability check using
  GetRequestedRangeTypes(state.VideoStream.Codec) to only emit the
  dvh1/dav1 variant for clients that declared DOVI support
- Update comments and doc summary to reflect P5 + P10/bl0 scope

* Use codec string instead of boolean for DoVi FourCC mapping

Replace bool isAv1 with string codec in GetDoviString for
future-proofing when DoVi extends to H.266/VVC or AV2.

* Move AppendDoviPlaylist next to AppendPlaylist

* Fix SA1508: remove blank line before closing brace

* Use AppendLine() instead of Append(Environment.NewLine)</content>
</entry>
<entry>
<title>Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxies</title>
<updated>2026-02-18T20:08:35Z</updated>
<author>
<name>Cosmin Dumitru</name>
<email>cosu@cosu.ro</email>
</author>
<published>2026-02-18T20:08:35Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=37b50fe13c689e8fb89288da12f79bf7164e1194'/>
<id>urn:sha1:37b50fe13c689e8fb89288da12f79bf7164e1194</id>
<content type='text'>
StreamInfo.ToUrl() generated URLs like `/master.m3u8?&amp;DeviceId=...` (note `?&amp;`)
because `?` was appended to the path and all parameters started with `&amp;`. When
the first optional parameter (DeviceProfileId) was null, the result was a
malformed query string.

This is harmless when clients hit Jellyfin directly (ASP.NET Core tolerates `?&amp;`),
but when accessed through a reverse proxy that parses and re-serializes the URL
(e.g. Home Assistant ingress via aiohttp/yarl), `?&amp;` becomes `?=&amp;` — introducing
an empty-key query parameter. ParseStreamOptions then crashes on `param.Key[0]`
with IndexOutOfRangeException.

Changes:
- StreamInfo.ToUrl(): Track query start position and replace the first `&amp;` with
  `?` after all parameters are appended, producing valid query strings
- ParseStreamOptions: Guard against empty query parameter keys
- Tests: Remove .Replace("?&amp;", "?") workaround that masked the bug

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge pull request #15926 from abitofevrything/feat/accurate_hls_seeking</title>
<updated>2026-01-18T11:17:06Z</updated>
<author>
<name>Abitofevrything</name>
<email>54505189+abitofevrything@users.noreply.github.com</email>
</author>
<published>2026-01-18T11:17:06Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=8d052a6cb17421e6c7774bafc6957029f3c9d4ae'/>
<id>urn:sha1:8d052a6cb17421e6c7774bafc6957029f3c9d4ae</id>
<content type='text'>
Refactor HLS transcode seeking</content>
</entry>
<entry>
<title>Update to .NET 10.0</title>
<updated>2026-01-14T17:55:47Z</updated>
<author>
<name>Bond_009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2025-11-11T16:41:46Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=9e480f6efb4bc0e1f0d1323ed7ed5a7208fded99'/>
<id>urn:sha1:9e480f6efb4bc0e1f0d1323ed7ed5a7208fded99</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add TrueHD and DTS codes string for HLS</title>
<updated>2026-01-06T15:15:06Z</updated>
<author>
<name>nyanmisaka</name>
<email>nst799610810@gmail.com</email>
</author>
<published>2026-01-06T15:15:06Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=582a1d98665eba7f7d7b510633cc283fd72305e1'/>
<id>urn:sha1:582a1d98665eba7f7d7b510633cc283fd72305e1</id>
<content type='text'>
Signed-off-by: nyanmisaka &lt;nst799610810@gmail.com&gt;
</content>
</entry>
<entry>
<title>Backport pull request #15833 from jellyfin/release-10.11.z</title>
<updated>2025-12-28T12:22:34Z</updated>
<author>
<name>nyanmisaka</name>
<email>nst799610810@gmail.com</email>
</author>
<published>2025-12-28T12:22:34Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=7f0e71578dc278da36c5efeae2fe2674e4677230'/>
<id>urn:sha1:7f0e71578dc278da36c5efeae2fe2674e4677230</id>
<content type='text'>
Fix missing H.264 and AV1 SDR fallbacks in HLS playlist

Original-merge: 01b20d3b75e00909e7a531a625eda5ecb1a76f42

Merged-by: Bond-009 &lt;bond.009@outlook.com&gt;

Backported-by: Bond_009 &lt;bond.009@outlook.com&gt;
</content>
</entry>
<entry>
<title>Backport pull request #15690 from jellyfin/release-10.11.z</title>
<updated>2025-12-28T12:22:18Z</updated>
<author>
<name>martenumberto</name>
<email>martenumberto@users.noreply.github.com</email>
</author>
<published>2025-12-28T12:22:18Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=1af1c72e81c3100c5db1a58d853818910c125c10'/>
<id>urn:sha1:1af1c72e81c3100c5db1a58d853818910c125c10</id>
<content type='text'>
Fix: Add .ts fallback for video streams to prevent crash

Original-merge: 2a0b90e3852edae22d9f7cec197e6e81e9415632

Merged-by: crobibero &lt;cody@robibe.ro&gt;

Backported-by: Bond_009 &lt;bond.009@outlook.com&gt;
</content>
</entry>
</feed>
