aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
AgeCommit message (Collapse)Author
2026-08-07Merge pull request #17536 from gnattu/fix-concurrent-racingCody Robibero
Fix concurrent ffmpeg segment racing
2026-08-05Merge pull request #17466 from Shadowghost/fix-byname-queriesCody Robibero
Improve People deduplication, fix search and restrict ItemByName responses
2026-08-05Merge pull request #17537 from vdatanet/fix/pcm-wav-transcodeCody Robibero
Fix PCM audio transcoding to wav returning HTTP 500 and headerless output
2026-08-04Fix PCM audio transcoding to wav returning HTTP 500 and headerless outputvdatanet
`GetProgressiveAudioFullCommandLine` forced the raw PCM muxer and a bogus sample rate whenever the audio encoder was `pcm_*`, regardless of the container the client asked for. Two separate failures came out of it: - `-ar ` + `state.BaseRequest.AudioBitRate` used a *bitrate* as a *sample rate*, and `AudioBitRate` is optional. When it is absent the argument degrades to a bare `-ar`, ffmpeg aborts with `Expected number for ar but found: -ar` / `Error opening output files: Invalid argument` (exit 234) and the request fails with HTTP 500. Every `GET /Audio/{id}/stream.wav` that does not carry an explicit `AudioBitRate` hits this. The sample rate was already being set correctly a few lines below from `OutputAudioSampleRate`, so the line is dropped rather than repaired. - `-f s16le` overrode the muxer even for a real container. A request that did supply a bitrate (`/Audio/{id}/universal` passes `MaxStreamingBitrate`) survived the first bug but produced raw headerless samples served under an `audio/wav` content type, so clients saw a body with no RIFF header. The raw muxer is now only forced when the requested container is actually raw PCM, which keeps the I2S/MCU route from #10321 working. Also drop the `containerInternal = ".pcm"` assignment in `StreamingHelpers.GetStreamingState`: it is written after `state.OutputContainer` has already been read from the same variable and is never read again, so it has no effect and only obscures where the output container comes from. Verified against ffmpeg 8.1.2 with a 96 kHz FLAC source: before, the wav command line exits 234; after, it produces a valid `RIFF/WAVE` 48 kHz stereo `pcm_s16le` file, while the raw `.pcm` route still yields exactly 2 s x 48000 x 2ch x 2 B = 384000 bytes of headerless samples.
2026-08-05Fix concurrent ffmpeg segment racinggnattu
This is a nasty one. The failure mode is: 1. Request A started FFmpeg and waited for a segment. 2. Request B requested an earlier or far away segment. 3. Jellyfin thought FFmpeg should to restart at a different position. 4. Request B killed the existing transcoding job. 5. Killing that job cancelled the same token request A was using. 6. The cancellation produced http 500 to request A. To fix this: we lock transcoding job state changes and segment handling per playlist, and use a thread safe counter to track how many http responses are still using each job’s segments. A job is only stopped or replaced once that counter reaches zero.
2026-08-03Keep folder extras with the item that owns the folderShadowghost
2026-08-02Merge remote-tracking branch 'upstream/master' into fix-byname-queriesShadowghost
2026-08-02Merge pull request #17456 from Shadowghost/fix-extrasCody Robibero
Fix extras naming and version assignment
2026-08-02Merge pull request #17486 from Shadowghost/fix-adjacentCody Robibero
Fix AdjacentTo being ignored on non-recursive item queries
2026-08-01Merge remote-tracking branch 'upstream/master' into fix-byname-queriesShadowghost
# Conflicts: # src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/JellyfinDbModelSnapshot.cs
2026-08-01Preserve multiple roles per person type instead of deduping credits by name ↵Shadowghost
and type
2026-08-01Merge pull request #17463 from Shadowghost/fix-unplayed-filterCody Robibero
Fix (Un)Played filter correctness and performance
2026-08-01Merge pull request #17416 from Shadowghost/enable-duplicate-playlist-childrenCody Robibero
Allow duplicate LinkedChildren for Playlists
2026-07-29Fix playlist entries being lost on migration and library scansShadowghost
2026-07-29Fix AdjacentTo being ignored on non-recursive item queriesShadowghost
2026-07-29Fix more filter casesShadowghost
2026-07-28Restrict people, genres, studios and artists to names backed by an item the ↵Shadowghost
user can access
2026-07-28Fix played/unplayed filter for empty Series and BoxSetsShadowghost
2026-07-27Fix extras naming and version assignmentShadowghost
2026-07-26Merge pull request #17417 from Shadowghost/series-merge-fixesCody Robibero
Fix series merging
2026-07-25Merge pull request #17399 from Shadowghost/fix-extra-yearCody Robibero
Fix incorrect year on local trailers
2026-07-25Always inherit from owner item and add testsShadowghost
2026-07-24Merge pull request #17234 from Eneo-org/fix/syncplay-playqueue-indexCody Robibero
Fix play queue index handling in SyncPlay
2026-07-23Fix series mergingShadowghost
2026-07-22Apply cleaning logic on ForcedSortNameShadowghost
2026-07-22Prefer null checks over HasValue everywhereShadowghost
2026-07-22Prefer null checks over HasValueShadowghost
2026-07-21Merge pull request #16980 from ↵Cody Robibero
TheMelmacian/feature/library_specific_language_filter_values Improve language filters to only fetch language codes that match the requested items/libraries (follow up to #9787)
2026-07-21Fix incorrect year on local trailersShadowghost
2026-07-21Merge remote-tracking branch 'upstream/master' into ↵Shadowghost
security-path-traversal-fixes # Conflicts: # Jellyfin.Api/Controllers/HlsSegmentController.cs # Jellyfin.Api/Controllers/PluginsController.cs
2026-07-20Merge pull request #17377 from mbastian77/fix/person-visibility-allowed-tagsCody Robibero
Exempt people from the allowed tags visibility check
2026-07-20Merge pull request #17311 from dkanada/book-progressCody Robibero
extract page count from archives and PDFs
2026-07-20Merge pull request #17375 from mbastian77/docs/entities-xml-docsBond-009
Add XML docs to small entity interfaces and remove CS1591 suppressions
2026-07-18Exempt people from the allowed tags visibility checkmbastian77
2026-07-17Merge pull request #17334 from nyanmisaka/fix-cuda-hwuploadBond-009
Fix format negotiation in hybrid SW decode and CUDA tonemap pipeline
2026-07-17Merge pull request #17280 from Shadowghost/remove-image-override-hackBond-009
Remove episode image override hack
2026-07-17Sanitize ClientLog upload filename to prevent path traversalShadowghost
2026-07-17Merge pull request #17343 from mbastian77/docs/channels-xml-docsBond-009
2026-07-16Reduce cognitive complexity of RemoveFromPlaylistEnea D'Angiò
2026-07-15Add XML docs to small entity interfaces and remove CS1591 suppressionsmbastian77
2026-07-15Add XML docs to small channel types and remove CS1591 suppressionsmbastian77
2026-07-15Add XML docs to lookup info types and remove CS1591 suppressionsmbastian77
2026-07-15Fix format negotiation in hybrid SW decode and CUDA tonemap pipelinenyanmisaka
The CUDA hwcontext in FFmpeg 8.1 has added support for 10bit fully-planar formats, but few CUDA filters support them. Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-07-12extract page count from archives and PDFsdkanada
2026-07-09Cleanup PreferEpisodeParentPoster)Shadowghost
2026-07-08Fix additional parts for non-adminsShadowghost
2026-07-05Merge pull request #17044 from Shadowghost/version-model-and-handlingCody Robibero
Fixes for multi version handling
2026-07-04Fix play queue index handling in SyncPlayEnea D'Angiò
Three index bugs in PlayQueueManager, two of which leave PlayingItemIndex out of bounds, making every subsequent Buffering/Ready request throw and leaving the group unusable until it empties: - RemoveFromPlaylist did not compensate for removed items preceding the playing item: removing the playing item together with earlier items could select the wrong item or crash with an out-of-bounds index. - Next/Previous on an empty playlist with RepeatOne/RepeatAll reported success or set PlayingItemIndex to 0 on an empty list, crashing downstream in Group and corrupting the index. - SetPlayingItemByIndex accepted an index equal to the playlist count (latent off-by-one, callers currently pre-validate).
2026-07-03Fix ghost entries when deleting library pathstheguymadmax
2026-07-02Fix review commentsShadowghost