<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/MediaBrowser.Model/Entities, branch v12.0-rc6</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc6</id>
<link rel='self' href='https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc6'/>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/'/>
<updated>2026-08-22T06:50:14Z</updated>
<entry>
<title>Additional fixes</title>
<updated>2026-08-22T06:50:14Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-08-22T06:50:14Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=42c70fba63d72a4113a7b8f2e06293e512cc6914'/>
<id>urn:sha1:42c70fba63d72a4113a7b8f2e06293e512cc6914</id>
<content type='text'>
Co-Authored-By: Cody Robibero &lt;cody@robibe.ro&gt;
</content>
</entry>
<entry>
<title>Safeguard against invalid provider ids</title>
<updated>2026-08-08T17:49:26Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-08-08T17:49:26Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=8c4dfc0b710c9314061911eea0daacfd855326e4'/>
<id>urn:sha1:8c4dfc0b710c9314061911eea0daacfd855326e4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add support for VobSub subtitle streams (#16552)</title>
<updated>2026-05-31T15:18:25Z</updated>
<author>
<name>Neptune</name>
<email>al@altqx.com</email>
</author>
<published>2026-05-31T15:18:25Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=6f0ff89bdcc1961ec630f43f012528ab79022a9f'/>
<id>urn:sha1:6f0ff89bdcc1961ec630f43f012528ab79022a9f</id>
<content type='text'>
* Add support for VobSub subtitle streams

* update logic to determine separate extraction for VobSub subtitles

* simplify VobSub extraction logic and fix ffmpeg command

* Match `ExtractAllExtractableSubtitlesMKS` with `ExtractAllExtractableSubtitlesInternal` Matroska's VobSub option

* Add a comments clarify why MKS was used, and remove the redundant VobSub extension branch

* remove redundant VobSub format check

* fix type errors</content>
</entry>
<entry>
<title>Add OriginalLanguage as option to PreferredAudioLanguage (#12579)</title>
<updated>2026-05-07T18:07:23Z</updated>
<author>
<name>Erik W</name>
<email>22211983+Lampan-git@users.noreply.github.com</email>
</author>
<published>2026-05-07T18:07:23Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=e1e18e8da015e7311e62cdb62167d51e90331edd'/>
<id>urn:sha1:e1e18e8da015e7311e62cdb62167d51e90331edd</id>
<content type='text'>
* Add OriginalLanguage as option to PreferredAudioLanguage

* Support for multiple original languages

* Add original audio stream indicator

* Fetch OriginalLanguage from TMDB

* Adapt to EFCore refactor

* Fix PlayDefaultAudioTrack OriginalLanguage behavior

* Fix better PlayDefaultAudioTrack OriginalLanguage behavior

* Add comment to ItemFields

* Improved PlayDefaultAudioTrack behavior

* Add migration for original language

* Use sting.Equals for string comparisons

* Always set dto OriginalLanguage

* Remove OriginalLanguage from ItemFields

---------

Co-authored-by: Lampan-git &lt;lampan-git@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Fix language display for ISO 639-2-only codes (e.g. mul, und)</title>
<updated>2026-04-08T17:38:24Z</updated>
<author>
<name>Lasath Fernando</name>
<email>devel@lasath.org</email>
</author>
<published>2026-04-04T16:10:07Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=553f38a2377cf843404cd4d3b3602e8a72bc75f8'/>
<id>urn:sha1:553f38a2377cf843404cd4d3b3602e8a72bc75f8</id>
<content type='text'>
LoadCultures() in LocalizationManager skipped all iso6392.txt entries
without a two-letter ISO 639-1 code, dropping 302 of 496 languages
including mul (Multiple languages), und (Undetermined), mis (Uncoded
languages), zxx, and many real languages like Achinese, Akkadian, etc.
This caused FindLanguageInfo() to return null for these codes, which
meant:
- ExternalPathParser could not recognize them as valid language codes
  in subtitle filenames, so the Language field was never set
- DisplayTitle fell back to the raw code string (e.g. "Mul")

Fix by allowing entries without two-letter codes to be loaded with an
empty TwoLetterISOLanguageName. Also set LocalizedLanguage in
ProbeResultNormalizer for ffprobe-detected streams (the DB repository
path was already handled on master).
</content>
</entry>
<entry>
<title>Only set IsAvc for video streams</title>
<updated>2026-03-29T12:27:49Z</updated>
<author>
<name>Bond_009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2026-03-29T12:16:26Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=a6da575785e678e64ed03978d1f4f60a80423121'/>
<id>urn:sha1:a6da575785e678e64ed03978d1f4f60a80423121</id>
<content type='text'>
Also enables nullable for MediaStreamInfo
Makes more properties nullable that aren't always present
</content>
</entry>
<entry>
<title>Fix zh-CN subtitle language display</title>
<updated>2026-01-05T11:22:44Z</updated>
<author>
<name>ZeusCraft10</name>
<email>akhilachanta8@gmail.com</email>
</author>
<published>2026-01-05T11:22:44Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=90390772869495228793e1b29db20c8741a309de'/>
<id>urn:sha1:90390772869495228793e1b29db20c8741a309de</id>
<content type='text'>
The DisplayTitle property was using .NET's CultureInfo.GetCultures(NeutralCultures)
to resolve language display names. Since zh-CN is a specific culture (not neutral),
it would fall back to the base 'zh' code, resulting in generic 'Chinese' instead
of 'Chinese (Simplified)'.

This change adds a LocalizedLanguage property to MediaStream that gets populated
via LocalizationManager.FindLanguageInfo() when streams are retrieved from the
database. This leverages Jellyfin's existing iso6392.txt mappings which correctly
map zh-CN to 'Chinese (Simplified)'.

The same pattern is already used for other localized strings like LocalizedDefault
and LocalizedExternal.
</content>
</entry>
<entry>
<title>Further refinement of BCP 47 language labeling support</title>
<updated>2025-07-30T14:15:37Z</updated>
<author>
<name>dyphire</name>
<email>qimoge@gmail.com</email>
</author>
<published>2025-07-30T14:15:37Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=2007815fa6b592984a64a6d3d978d41ae8f7347b'/>
<id>urn:sha1:2007815fa6b592984a64a6d3d978d41ae8f7347b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Translate the ISO-639-2/B codes to ISO-639-2/T. (#13068)</title>
<updated>2025-04-08T03:29:12Z</updated>
<author>
<name>baka0815</name>
<email>git@baka0815.de</email>
</author>
<published>2025-04-08T03:29:12Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=5fc1b1c862f30f81010c3c87dbb753c6f0e4dcfb'/>
<id>urn:sha1:5fc1b1c862f30f81010c3c87dbb753c6f0e4dcfb</id>
<content type='text'>
* Translate the ISO-639-2/B codes to ISO-639-2/T.

This enables 19 additional languages to be displayed correctly.

* Convert the 2-dimensional array to a dictionary

* Added the French language to the list of ISO-639-2/B codes

* Don't change the property, use a local variable instead.

* When creating the MediaStream in the MediaStreamRepository ensure that the ISO 639-2/T (f.e. deu) code is used for the language as that is the one the .NET culture info knows.
The other code is most likely the ISO 639-2/B code (f.e. ger) which is unknown to the .NET culture info and will result in just displaying the code instead of the display name.

* Move the substitution of ISO 639-2/B to /T to the localization manager.
Some language (like Chinese) have multiple entries in the iso6392.txt file (f.e. zho|chi|zh|..., zho|chi|zh-tw|...) but the conversation between /T and /B is the same so use .TryAdd.

* Change the method definition from GetISO6392TFromB to TryGetISO6392TFromB and return true if a case was found.

* Add unit tests for TryGetISO6392TFromB.</content>
</entry>
<entry>
<title>Cleanup extracted files (#13760)</title>
<updated>2025-04-03T15:17:14Z</updated>
<author>
<name>Tim Eisele</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2025-04-03T15:17:14Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=596b63551196f7ce9bcb8d8de617d3c79201a375'/>
<id>urn:sha1:596b63551196f7ce9bcb8d8de617d3c79201a375</id>
<content type='text'>
* Cleanup extracted files

* Pagination and fixes

* Add migration for attachments to MigrateLibraryDb

* Unify attachment handling

* Don't extract again if files were already extracted

* Fix MKS attachment extraction

* Always run full extraction on mks

* Don't try to extract mjpeg streams as attachments

* Fallback to check if attachments were extracted to cache folder

* Fixup</content>
</entry>
</feed>
