<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atracdenc/src/main.cpp, branch at3p_riff</title>
<subtitle>OpenSource ATRAC1 ATRAC3 Encoder</subtitle>
<id>https://code.mastervirt.ru/atracdenc/atom?h=at3p_riff</id>
<link rel='self' href='https://code.mastervirt.ru/atracdenc/atom?h=at3p_riff'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/'/>
<updated>2026-05-12T19:57:17Z</updated>
<entry>
<title>[AT3P] Add ATRAC3plus RIFF output</title>
<updated>2026-05-12T19:57:17Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-05-12T19:01:59Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=8a7c92ac447f50d10f19addfaeea8969f9da096f'/>
<id>urn:sha1:8a7c92ac447f50d10f19addfaeea8969f9da096f</id>
<content type='text'>
</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>
<entry>
<title>atrac3: reimplement tonal encoding. Use flatness-based tonal extraction</title>
<updated>2026-04-19T22:27:45Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-04-18T14:51:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=e784b79cfef682059cf5cc8cf9bed635e714c439'/>
<id>urn:sha1:e784b79cfef682059cf5cc8cf9bed635e714c439</id>
<content type='text'>
- Add shared CalcSpectralFlatnessPerBfu helper in atrac_psy_common
  with BFU-table mapping.
- Implement ATRAC3 tonal extraction: compute MDCT energy, estimate
  per-BFU flatness, extract up to 5-bin strongest tonal run in
  low-flatness BFUs, and zero extracted bins in residual.
- Map extracted tonal bins into TTonalBlocks and integrate them into
  bitstream coding.
- Update ATRAC3 bit allocation - reduce residual bits for BFUs with tonal
  blocks, and increase tonal quantizer selection.
- Restore --notonal CLI option in main.cpp for A/B comparison.
</content>
</entry>
<entry>
<title>atrac3: add YAML gain control debug logging (--yaml-log)</title>
<updated>2026-04-08T21:33:40Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2026-03-16T17:14:19Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=901974b3aa5045226201c710da13a8365a7bf1c8'/>
<id>urn:sha1:901974b3aa5045226201c710da13a8365a7bf1c8</id>
<content type='text'>
Inspired by edge264's YAML logging approach (FOSDEM 2026): emit every
gain control decision as a self-contained YAML stream so any frame can
be grep'd, analyzed with Python, or used to craft custom test curves.

  ./atracdenc -e atrac3 -i in.wav -o out.oma --yaml-log gain.yaml

Each YAML document covers one frame (frame:/time: header) with channels
and bands nested below. Per-band fields emitted in pipeline order:
  high_freq_ratio, overlap_ratio, dynamic_min_score, gain[], next_level
  pcm_qmf (256 raw QMF samples, non-modulated, non-windowed)
  curve_raw, rms_cur, rms_next_mod, point0_level, crossover
  curve_final, max_gain, ratio, level_boost, scale_boost, total_boost
  gain_boost (or skip: &lt;reason&gt; at each early-exit point)

New files / changes:
  src/yaml_log.h         - TYamlFmtGuard (stream format RAII),
                           YamlWriteFloatSeq (vector + ptr/len overloads)
  src/atrac/at3/atrac3.h - YamlLog field in TAtrac3EncoderSettings
  src/atrac3denc.h       - FrameNum counter + YamlLog pointer on TAtrac3Encoder
  src/atrac3denc.cpp     - frame header in GetLambda, incremental YAML in
                           CreateSubbandInfo at every decision point
  src/main.cpp           - --yaml-log &lt;file&gt; CLI flag

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Use common bit allocation engine for AT1 mode</title>
<updated>2025-07-31T21:40:11Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2025-07-30T21:15:12Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=e8400f35fa8f9bff628cca0c9d5ed9184b6d4bd9'/>
<id>urn:sha1:e8400f35fa8f9bff628cca0c9d5ed9184b6d4bd9</id>
<content type='text'>
This commit also removes handling "bfuidxconst" option
and mark it as deprecated. This option actually does not
affect encoding speed significantly.
</content>
</entry>
<entry>
<title>Move implementation details into corresponding dirs (#52)</title>
<updated>2025-07-22T20:54:21Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2025-07-22T20:54:21Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=61045345fa43e54fb4fc3eee0e05b25451af9ca5'/>
<id>urn:sha1:61045345fa43e54fb4fc3eee0e05b25451af9ca5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>0.2 stable branch</title>
<updated>2025-07-20T12:01:08Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2025-06-16T20:21:54Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=58b4ce18809b8ae0f2d5b3f810ff57df8fc8ea65'/>
<id>urn:sha1:58b4ce18809b8ae0f2d5b3f810ff57df8fc8ea65</id>
<content type='text'>
- ATH and some bit allocation tuning for ATRAC1 compatible encoding.
- ATH, energy aware quanitization and tuning for ATRAC3 compatible
  encoding.
- Noticeable improvements for LP4 mode (but still not perfect on some
  tracks for LP4 bitrate)
- Initial implementation of ATRAC3PLUS compatible encoding.
</content>
</entry>
<entry>
<title>Fix memory leak in case of unsupported input file.</title>
<updated>2025-06-08T17:44:34Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2025-06-08T17:44:34Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=42aa1bfdd430ac39c8fdb76363d2868238d40853'/>
<id>urn:sha1:42aa1bfdd430ac39c8fdb76363d2868238d40853</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[AT3P] Add advanced option for GHA debug</title>
<updated>2025-05-16T21:48:26Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2025-05-16T21:27:59Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=c5ae2cec2c8308f96867e1620f0ec3a5c41395e4'/>
<id>urn:sha1:c5ae2cec2c8308f96867e1620f0ec3a5c41395e4</id>
<content type='text'>
There are 3 flags:
GHA_PASS_INPUT - allows to pass source signal in to the filter
GHA_WRITE_TONAL - allows to write result of GHA into the bitstream
GHA_WRITE_RESIUDAL - allows to process signal after the filter

If all 3 flags set it denotes normal processing.
If we want to see only result of sinusoid extraction (tonal component) we can set only
GHA_WRITE_TONAL flag. If we want to see signal after  extraction we need
to set GHA_PASS_INPUT and GHA_WRITE_RESIUDAL.
</content>
</entry>
<entry>
<title>Merge branch 'master' into at3plus-dev</title>
<updated>2024-12-24T21:59:03Z</updated>
<author>
<name>Daniil Cherednik</name>
<email>dan.cherednik@gmail.com</email>
</author>
<published>2024-12-24T21:59:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/atracdenc/commit/?id=bddbeb98b3db8d435de6b2d10269640121475538'/>
<id>urn:sha1:bddbeb98b3db8d435de6b2d10269640121475538</id>
<content type='text'>
</content>
</entry>
</feed>
