<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/MediaBrowser.Model/Dlna/StreamInfo.cs, branch v12.0-rc4</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc4</id>
<link rel='self' href='https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc4'/>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/'/>
<updated>2026-02-18T20:08:35Z</updated>
<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.lodewillems.com/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 #14809 from lostb1t/fix/subtitleencoder</title>
<updated>2026-01-26T11:00:14Z</updated>
<author>
<name>Niels van Velzen</name>
<email>nielsvanvelzen@users.noreply.github.com</email>
</author>
<published>2026-01-26T11:00:14Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=360b6bcce1fc3f353ec23fa82ca415c3035b5710'/>
<id>urn:sha1:360b6bcce1fc3f353ec23fa82ca415c3035b5710</id>
<content type='text'>
fix: prevent premature disposal of HTTP subtitle streams</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.lodewillems.com/jellyfin/commit/?id=8d052a6cb17421e6c7774bafc6957029f3c9d4ae'/>
<id>urn:sha1:8d052a6cb17421e6c7774bafc6957029f3c9d4ae</id>
<content type='text'>
Refactor HLS transcode seeking</content>
</entry>
<entry>
<title>wip</title>
<updated>2025-12-21T13:34:27Z</updated>
<author>
<name>lostb1t</name>
<email>coding-mosses0z@icloud.com</email>
</author>
<published>2025-11-29T09:20:18Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=172b054f487c185efbe3f83639e1e896ca38dcb3'/>
<id>urn:sha1:172b054f487c185efbe3f83639e1e896ca38dcb3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wip</title>
<updated>2025-12-21T13:34:27Z</updated>
<author>
<name>lostb1t</name>
<email>coding-mosses0z@icloud.com</email>
</author>
<published>2025-11-29T09:11:18Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=2168847a45721c567c69767be28c4ce51fe5523a'/>
<id>urn:sha1:2168847a45721c567c69767be28c4ce51fe5523a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>style: fix return statement indentation in StreamInfo.cs</title>
<updated>2025-04-24T06:25:12Z</updated>
<author>
<name>sususu98</name>
<email>suchangshan@foxmail.com</email>
</author>
<published>2025-04-24T06:25:12Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=aebabb15801a2d216f84d6a49d8b434ae59e1f34'/>
<id>urn:sha1:aebabb15801a2d216f84d6a49d8b434ae59e1f34</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Style: Fix indentation in StreamInfo.cs</title>
<updated>2025-04-24T06:17:33Z</updated>
<author>
<name>sususu98</name>
<email>suchangshan@foxmail.com</email>
</author>
<published>2025-04-24T06:17:33Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=fd108ff5284f7b59fe4f0e942a05051acbf14cdc'/>
<id>urn:sha1:fd108ff5284f7b59fe4f0e942a05051acbf14cdc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(StreamInfo): reorganize subtitle URL logic and conditions</title>
<updated>2025-04-23T10:18:38Z</updated>
<author>
<name>sususu98</name>
<email>suchangshan@foxmail.com</email>
</author>
<published>2025-04-23T10:18:38Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=22ce1f25d0686b6f8a06d590289d50a7ee907845'/>
<id>urn:sha1:22ce1f25d0686b6f8a06d590289d50a7ee907845</id>
<content type='text'>
# Conflicts:
#	MediaBrowser.Model/Dlna/StreamInfo.cs
</content>
</entry>
<entry>
<title>Improve dynamic HDR metadata handling (#13277)</title>
<updated>2025-04-03T00:06:02Z</updated>
<author>
<name>gnattu</name>
<email>gnattu@users.noreply.github.com</email>
</author>
<published>2025-04-03T00:06:02Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=49ac705867234c48e79ceb1cd84bc4394c65313d'/>
<id>urn:sha1:49ac705867234c48e79ceb1cd84bc4394c65313d</id>
<content type='text'>
* Add support for bitstream filter to remove dynamic hdr metadata

* Add support for ffprobe's only_first_vframe for HDR10+ detection

* Add BitStreamFilterOptionType for metadata removal check

* Map HDR10+ metadata to VideoRangeType.cs

Current implementation uses a hack that abuses the EL flag to avoid database schema changes. Should add proper field once EFCore migration is merged.

* Add more Dolby Vision Range types

Out of spec ones are problematic and should be marked as a dedicated invalid type and handled by the server to not crash the player.

Profile 7 videos should not be treated as normal HDR10 videos at all and should remove the metadata before serving.

* Remove dynamic hdr metadata when necessary

* Allow direct playback of HDR10+ videos on HDR10 clients

* Only use dovi codec tag when dovi metadata is not removed

* Handle DV Profile 7 Videos better

* Fix HDR10+ with new bitmask

* Indicate the presence of HDR10+ in HLS SUPPLEMENTAL-CODECS

* Fix Dovi 8.4 not labeled as HLG in HLS

* Fallback to dovi_rpu bsf for av1 when possible

* Fix dovi_rpu cli for av1

* Use correct EFCore db column for HDR10+

* Undo outdated migration

* Add proper hdr10+ migration

* Remove outdated migration

* Rebase to new db code

* Add migrations for Hdr10PlusPresentFlag

* Directly use bsf enum

* Add xmldocs for SupportsBitStreamFilterWithOption

* Make `VideoRangeType.Unknown` explicitly default on api models.

* Unset default for non-api model class

* Use tuples for bsf dictionary for now</content>
</entry>
<entry>
<title>Fix StreamInfo.ToUrl (#13808)</title>
<updated>2025-03-31T03:37:58Z</updated>
<author>
<name>Tim Eisele</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2025-03-31T03:37:58Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=824bafc32dfe467ddfe161110b8974c3114d7367'/>
<id>urn:sha1:824bafc32dfe467ddfe161110b8974c3114d7367</id>
<content type='text'>
</content>
</entry>
</feed>
