<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atracdenc/src, branch atrac3_enc_cache</title>
<subtitle>OpenSource ATRAC1 ATRAC3 Encoder</subtitle>
<id>https://code.mastervirt.ru/atracdenc/atom?h=atrac3_enc_cache</id>
<link rel='self' href='https://code.mastervirt.ru/atracdenc/atom?h=atrac3_enc_cache'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/'/>
<updated>2026-06-25T21:48:15Z</updated>
<entry>
<title>Add BFU encode cache and use it in ATRAC3 bit allocation</title>
<updated>2026-06-25T21:48:15Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-06-25T21:48:15Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=bd270db9f2efca6d71959f1e60bc4f3a6867a03a'/>
<id>urn:sha1:bd270db9f2efca6d71959f1e60bc4f3a6867a03a</id>
<content type='text'>
Introduce a generic TEncCache/TUnit library (src/atrac/atrac_enc_cache.*)
that memoizes per-unit quantization results keyed by a user-supplied
function. Units are owned via unique_ptr in a flat vector pre-sized to a
known key bound; the codec supplies both the unit factory (which also
performs the computation, avoiding an extra virtual call on the hot path)
and the key packing.

Wire it into the ATRAC3 allocator: during the lambda binary search the
same (bfu, wordlen) block is quantized repeatedly. TAt3SpecUnit now caches
the mantissas plus the CLC/VLC spectrum costs and energy error, so each
(bfu, wordlen) is computed once per channel. The cache is reset in
TAlloc::Dump (once per channel) so no stale spectrum is reused.

Output is bit-exact with the previous encoder; ~36% faster encode.
</content>
</entry>
<entry>
<title>Add explicit container selection</title>
<updated>2026-05-26T19:32:54Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-26T19:32:54Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=01234b09a2fb3e7fc6746ace7554383b0caa97e1'/>
<id>urn:sha1:01234b09a2fb3e7fc6746ace7554383b0caa97e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add raw output format for ATRAC1/ATRAC3/ATRAC3plus</title>
<updated>2026-05-25T07:33:50Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-23T08:04:15Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=5a97fec0876fb6052996311498ea5bd707049c69'/>
<id>urn:sha1:5a97fec0876fb6052996311498ea5bd707049c69</id>
<content type='text'>
Output files with .raw or .dat extensions now write raw frames
with no container header.
</content>
</entry>
<entry>
<title>[AT3P] Add ATRAC3plus RIFF output (#74)</title>
<updated>2026-05-12T20:45:06Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-12T20:45:06Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=746602d5eb6984b2a3e9927094f8bc1e67e1ecf3'/>
<id>urn:sha1:746602d5eb6984b2a3e9927094f8bc1e67e1ecf3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use gain energy scale for ATRAC3 allocation</title>
<updated>2026-05-08T22:12:48Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-08T22:12:48Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=a57dab0fa16bb48972405ca861f6bfd7059b80b8'/>
<id>urn:sha1:a57dab0fa16bb48972405ca861f6bfd7059b80b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>atrac3: fix JS gain analysis domain. The regression was added in 16e7ec8</title>
<updated>2026-05-07T21:37:07Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-07T21:23:17Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=e6148b4cf5b969f0fc2ef8c23c70bfd913dffb9c'/>
<id>urn:sha1:e6148b4cf5b969f0fc2ef8c23c70bfd913dffb9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>atrac3: tune bit allocation. Reduce low frequency distortion</title>
<updated>2026-05-03T21:39:18Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-03T21:39:18Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=f23acf505e6b81d00f45a5548eda433ff0e30927'/>
<id>urn:sha1:f23acf505e6b81d00f45a5548eda433ff0e30927</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Multiple fixes related to IO path(#72)</title>
<updated>2026-05-03T19:22:01Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-03T19:22:01Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=744364f30314bf85725803b1016e66957b772f49'/>
<id>urn:sha1:744364f30314bf85725803b1016e66957b772f49</id>
<content type='text'>
* Fix UTF-8 input and output paths for Windows
* Fix wrong message in case of missed input file
* Add test</content>
</entry>
<entry>
<title>Add MSYS2 build support (#70)</title>
<updated>2026-05-03T12:41:21Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-03T12:41:21Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=3e04903c35c61a0f0be0c2db409f5fd5f58d6e12'/>
<id>urn:sha1:3e04903c35c61a0f0be0c2db409f5fd5f58d6e12</id>
<content type='text'>
* Add MSYS2 build support

Add a selectable PCM I/O backend so MSVC builds can keep Media Foundation while MSYS2/MinGW builds use libsndfile.

Teach the libsndfile finder about MINGW_PREFIX and add a Windows MSYS2 CI job that builds the libsndfile backend.

Fix and enable tests for MSYS2 builds</content>
</entry>
<entry>
<title>Fix mono AT3 RIFF channel count. issues/67</title>
<updated>2026-05-02T21:42:38Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-02T21:40:10Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=93e92ee09faa942eefa997e244a7e7b519a51119'/>
<id>urn:sha1:93e92ee09faa942eefa997e244a7e7b519a51119</id>
<content type='text'>
AT3 RIFF output always stores a two-channel ATRAC3 stream.
Mono input is encoded as duplicated single channels or as joint stereo with an empty side channel.
</content>
</entry>
</feed>
