<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs, branch v12.0-rc5</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.b0n.dev/jellyfin/atom?h=v12.0-rc5</id>
<link rel='self' href='https://git.b0n.dev/jellyfin/atom?h=v12.0-rc5'/>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/'/>
<updated>2026-08-04T16:33:42Z</updated>
<entry>
<title>Fix concurrent ffmpeg segment racing</title>
<updated>2026-08-04T16:33:42Z</updated>
<author>
<name>gnattu</name>
<email>gnattuoc@me.com</email>
</author>
<published>2026-08-04T16:33:42Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=e2586eed9b04d501cd5805711cb6ad5553c1816b'/>
<id>urn:sha1:e2586eed9b04d501cd5805711cb6ad5553c1816b</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>move to new System.Threading.Lock type for better performance</title>
<updated>2024-12-12T13:10:06Z</updated>
<author>
<name>Daniyar Alpyspayev</name>
<email>daniyara@thereachagency.com</email>
</author>
<published>2024-12-12T13:10:06Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=2614fecf8df6e04b0d0a2b33722923c239ed0f91'/>
<id>urn:sha1:2614fecf8df6e04b0d0a2b33722923c239ed0f91</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove BOM from UTF-8 files</title>
<updated>2024-08-30T13:29:48Z</updated>
<author>
<name>Bond_009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2024-08-30T13:29:48Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=97a02f58039855eb1e3e23686d4fe5bee1fbd15e'/>
<id>urn:sha1:97a02f58039855eb1e3e23686d4fe5bee1fbd15e</id>
<content type='text'>
I think some people need to change their IDE configuration ;)
</content>
</entry>
<entry>
<title>Add TranscodingSegmentCleaner to replace ffmpeg's hlsenc deletion</title>
<updated>2024-03-15T23:35:05Z</updated>
<author>
<name>nyanmisaka</name>
<email>nst799610810@gmail.com</email>
</author>
<published>2024-03-15T19:40:14Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=eca9bf41bcf536708ad74236793b363db3af1e4d'/>
<id>urn:sha1:eca9bf41bcf536708ad74236793b363db3af1e4d</id>
<content type='text'>
FFmpeg deletes segments based on its own transcoding progress,
but we need to delete segments based on client download progress.
Since disk and GPU speeds vary, using hlsenc's built-in deletion
will result in premature deletion of some segments. As a consequence,
the server has to constantly respin new ffmpeg instances, resulting
in choppy video playback.

Signed-off-by: nyanmisaka &lt;nst799610810@gmail.com&gt;
</content>
</entry>
<entry>
<title>Rename and clean up TranscodingJob</title>
<updated>2023-12-21T17:53:50Z</updated>
<author>
<name>Patrick Barron</name>
<email>barronpm@gmail.com</email>
</author>
<published>2023-10-31T15:31:09Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=c2081955c8b2a81eb214f321697d3462709164e0'/>
<id>urn:sha1:c2081955c8b2a81eb214f321697d3462709164e0</id>
<content type='text'>
</content>
</entry>
</feed>
