<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/src/Jellyfin.Extensions/StreamExtensions.cs, branch v12.0-rc1</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.b0n.dev/jellyfin/atom?h=v12.0-rc1</id>
<link rel='self' href='https://git.b0n.dev/jellyfin/atom?h=v12.0-rc1'/>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/'/>
<updated>2026-05-29T20:54:58Z</updated>
<entry>
<title>Improved resilience for fast-paths</title>
<updated>2026-05-29T20:54:58Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-29T20:54:58Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=5c7ee6a6356917252063078fdb3ff331f897bf69'/>
<id>urn:sha1:5c7ee6a6356917252063078fdb3ff331f897bf69</id>
<content type='text'>
Use fast paths only if we can TryGetBuffer on MemoryStream using segment's Array.
Reduce swap overhead for fast path B.
Avoid multiple virtcalls by memoizing the CanSeeks.
Overlap slow path stream async reads.
</content>
</entry>
<entry>
<title>Use ReadAtLeastAsync to handle short-reads.</title>
<updated>2026-05-28T18:31:13Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-28T18:31:13Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=645ae6bb99671ec8bd87c6cb78e6fa3d77063c55'/>
<id>urn:sha1:645ae6bb99671ec8bd87c6cb78e6fa3d77063c55</id>
<content type='text'>
Seeks to beginning of streams if CanSeek is true.
Added remarks about stream position.
Add test coverage for short-reads.
Fix fast-path tests to actually test the fast path.
Also fix class comment.
</content>
</entry>
<entry>
<title>Remove IsStreamIdenticalAsync CanSeek requirement</title>
<updated>2026-05-28T01:13:52Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-28T01:13:52Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=f12b666cbb1658fb9b98abe59270ee18a9e67085'/>
<id>urn:sha1:f12b666cbb1658fb9b98abe59270ee18a9e67085</id>
<content type='text'>
Now only uses for the Length mismatch.
</content>
</entry>
<entry>
<title>Use TryGetBuffer() on MemoryStreams</title>
<updated>2026-05-28T00:56:36Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-28T00:53:31Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=aa2370e0212333d93ee250e9f2236f9d5bcb3d93'/>
<id>urn:sha1:aa2370e0212333d93ee250e9f2236f9d5bcb3d93</id>
<content type='text'>
Also now throws if the streams are no CanSeek.
</content>
</entry>
<entry>
<title>Explicitly handle MemoryStream(s)</title>
<updated>2026-05-26T23:12:31Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-26T23:11:01Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=c449a933722980625640e56bfe5dbd746214b5a8'/>
<id>urn:sha1:c449a933722980625640e56bfe5dbd746214b5a8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Moved IsFileIdenticalAsync &amp; IsStreamIdenticalAsync to StreamExtensions.</title>
<updated>2026-05-26T23:12:31Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-05-26T22:37:17Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=02ca63cd13779dbff9971e10a7afd62d2634337b'/>
<id>urn:sha1:02ca63cd13779dbff9971e10a7afd62d2634337b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Backport pull request #11910 from jellyfin/release-10.9.z</title>
<updated>2024-06-01T22:41:15Z</updated>
<author>
<name>Bond-009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2024-06-01T22:41:15Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=c7f87c0d69701480de0f53c0fa5858cbb38de119'/>
<id>urn:sha1:c7f87c0d69701480de0f53c0fa5858cbb38de119</id>
<content type='text'>
Audio normalization: parse ffmpeg output line by line

Original-merge: d2be2ee480a44d3ed266d4632c3f38439b0dfaf5

Merged-by: joshuaboniface &lt;joshua@boniface.me&gt;

Backported-by: Joshua M. Boniface &lt;joshua@boniface.me&gt;
</content>
</entry>
<entry>
<title>Removed nesting levels through block-scoped `using` statement (#10025)</title>
<updated>2023-09-11T10:12:40Z</updated>
<author>
<name>Lehonti Ramos</name>
<email>17771375+Lehonti@users.noreply.github.com</email>
</author>
<published>2023-09-11T10:12:40Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=bc959270b762d1a6f68fc4f46a7c42138b39710c'/>
<id>urn:sha1:bc959270b762d1a6f68fc4f46a7c42138b39710c</id>
<content type='text'>
Co-authored-by: John Doe &lt;john@doe&gt;
Co-authored-by: Lehonti Ramos &lt;lehonti@ramos&gt;
</content>
</entry>
<entry>
<title>== null -&gt; is null</title>
<updated>2023-08-22T19:14:54Z</updated>
<author>
<name>Bond_009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2023-08-22T19:14:54Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=18a311d32fd6e3cdfed466017bda46566a013106'/>
<id>urn:sha1:18a311d32fd6e3cdfed466017bda46566a013106</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move non-jellyfin extensions to separate project</title>
<updated>2021-06-19T16:04:46Z</updated>
<author>
<name>Bond_009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2021-06-19T16:02:33Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=6f8ccab788e85e025eaa44b67a1487bf419afb53'/>
<id>urn:sha1:6f8ccab788e85e025eaa44b67a1487bf419afb53</id>
<content type='text'>
</content>
</entry>
</feed>
