Audio Watermarking Tools 2 (AWT2)
change log

Please refer to for more details about AWT2 package.



Major release

- added audio stream decoding API functionality to the SDK
- slightly faster encoding, especially in high-capacity mode
- improved .wav files handling


- command-line tools: improved non-standard WAV files handling


Major release

- (encoder) new '-quality' switch and SDK parameter. The parameter is related to an optional mechanism responsible for preservation of the original signal quality. The quality setting can be from 0 to 10. Zero setting switches the mechanism off. Non-zero settings force the encoder to perform additional signal analysis aimed to improve original audio signal quality preservation by skipping watermarking of certain signal blocks containing acoustic content which is “sensitive to manipulations”.
- Raspberry real-time audio watermarking SDK and example are available



Major release

- (decoder) significant algorithmic speed-up in time-stretch analysis, much faster operation
- ARM Linux binaries are available



Major release

- (encoder) now the CLI encoder tool uses only a fraction of RAM it required earlier. The encoding is now done buffer-by-buffer, and the tool does not load the entire audio file into memory.
- (encoder) added support for a "compound payload", i.e. a sequence of different payloads that are to be embedded at different time-locations within the audio stream. Each payload must be accompanied with the time where the payload should start. Such sequence must be of the following form: time_sec:hex_payload;time_sec:hex_payload;... No spaces are allowed in the compound payload, the semicolon “;” is used as a delimiter. The 'time_sec' can be a positive offset (in seconds) relative to the start of the file, or a negative offset relative to the end of file. You can use 'void' payload to designate bypass (no watermarking).
- (decoder) now consumes significantly less RAM in sliced analysis operation
- (decoder) now can process even shorter audios
- (encoder) removed -show_ram, -8/16/24/32/64bit command line switches
- (encoder & SDK) -output_gain_db can now be fractional
- (encoder & decoder) improved non-standard WAV formal support
- (encoder & decoder) various bugfixes
- (SDK) updated error codes list



Major release

- (decoder) redesigned and rewritten watermark detection engine; watermark search in non-watermarked audio is now 7-10 times faster, without compromising the reliability of watermark extraction.
- (decoder, CLI) -stop_on_found command line parameter has been modified, it now allows specifying -stop_on_found=N to stop after N slices with found watermarks.
- (decoder) -fast_scan mode is now more reliable
- various speed improvements and optimizations



Major release

- New feature: AWT2 now natively supports Dual-Layer watermarking (requires 'high capacity' mode). Two independent watermarks can be embedded into the same audio stream at different stages of audio content distribution. When layered watermarking is used, the watermarking data rate on each layer corresponds to the data rate in ‘normal mode’. Dual-layer watermarking only available in CLI tools and SDK (not available via the GUI front-end tool).
- minor bugfixes



- bugfix (encoder): -cache_dir command line switch which was removed in the previous release is supported again (to preserve compatibility)
- AWT2 SDK now features two additional functions:
awt2_encode_stream_set_payload() - allows changing watermark payload on the fly during live stream watermarking without encoder object re-init
awt2_encode_stream_set_bypass() - enables/disables processing (watermarking) bypass. If bypass is disabled (bypass=0), awt2_encode_stream_buffer() call outputs watermarked output (normal working state). If bypass is enabled (bypass=1), awt2_encode_stream_buffer() call outputs not watermarked audio data.



Major release

- Fully rewritten encoder code, backwards/forwards compatible with older decoders
- faster encoding, dramatically reduced encoder memory consumption
- completely new cross-platform SDK with real-time, low latency "live" audio stream encoding functionality
- fully thread safe SDK
- improved signal limiter with configurable attack/release times
- fixed bug in the decoder: ffmpeg files conversion was broken



Important upgrade

- bugfix (encoder): wrong modulation (defined by -modulation_gain) was applied if -skip_first was not zero
- bugfix (encoder+decoder): improved blocks alignment with long audio
- bugfix (decoder): fixed possible crash during long audio analysis
- bugfix (decoder): fixed potential cause of false positive detection
- decoder: improved realiability in -fast_scan mode
- SDK is now fully thread-safe



- lower aggressiveness setting is now allowed to allow even more "transparent" (imperceptible) watermarking
- encoder: new "-limiter_speed" parameter which defines how fast the output dynamic range limiter reacts on amplitude changes (lower settings lead to slower limiter release and longer look-ahead times, higher settings lead to shorter times and faster reaction)
- bugfix in the encoder: improper check of -skip_first/-skip_last limits


- bugfix in the decoder: faster watermark search in "high capacity" mode
- bugfix in the decoder: slice times (above 1 hour) were not displayed properly
- bugfix in the encoder: a small "click" could appear at the very end of encoded file, fixed.
- bugfix: small memory leaks eliminated
- bugfix: RAM consumption was not calcualted correctly
- code refining



- bugfix in the encoder: noise generation feature ("-noise_level" command line parameter) was ignoring "-skip_first" and "-skip_last" settings; fixed.
- improvement in the encoder: "-skip_last" value can be negative, in this case the parameter specifies duration of audio to be watermarked (all the rest is skipped and not watermarked)


Important upgrade

- AWT2 CLI decoder now automatically re-scans large audio file by slices if its analysis as a whole did not result in detection of watermark. This significantly improves and simplifies watermark detection via AWT2 GUI tool.
- fixed possible memory leak in AWT2 SDK decoder
- added stream encoding envelope for AWT2 SDK encoder
- amended calculation of consumed RAM


Major release

- AWT2 encoder uses new, redesigned encoding algorithm (backward compatible with the older one). The new algorithm features new "-modulation_gain" parameter that triggers an additional modulation mechanism of the encoder aimed to increase watermark robustness. With default setting (0 dB) the modulation of the signal is not performed. Lower values (e.g. -6 dB) enable special modulation of sub-band signals that helps the watermarks to withstand audio transformations and corruptions. In addition, the use of the modulation improves watermarking reliability of monotonous signals. “Safe” (imperceptible) modulation gain values are from 0 to -12 dB. The setting is available in the command-line encoder tool only (not in the GUI front-end).

- new "-noise_level" parameter in the encoder which defines a level of artificially generated noise mixed into the processed audio signal. This feature resolves a problem with watermarking of speech recordings. Typical speech recordings usually contain many regions of silence (pauses between words and phrases). Due to the lack of any audible information in these regions, the watermarks cannot be added into them, that reduces overall watermark robustness in the output signal. To overcome this problem, artificially generated low-level “comfort noise” can be mixed into the source audio signal to fill the silent gaps and allow carrying watermarks even in originally silent regions.  It is recommended to use this feature to watermark speech recordings. Recommended noise level setting is around -50 dB (optimal setting can vary depending on input signal level and content). The setting is available in the command-line encoder tool only (not in the GUI front-end).

- new "-output_gain" parameter in the encoder that defines attenuation level of the output (watermarked) signal. As a result of encoder’s signal processing, the output signal amplitude can become higher than the input. To prevent possible saturation/clipping of the output signal, limiter is applied on the very last stage of the processing. However, in some cases use of the limiter may be not desirable. The user can specify a desired output attenuation gain to avoid automatic limitation of the output signal. The setting is available in the command-line encoder tool only (not in the GUI front-end).

- increased encoder and decoder execution speed (various memory and code optimizations made)

- fixed bug in SDK ("high capacity" mode was set incorrectly)

- fixed minor problem with encoding of tailing 200ms of audio

- fixed potential encoder crash in case of wrong -skip_first / -skip_last values

- updated AWT2 User Guide and AWT2 SDK.



- increased decoding speed
- memory optimization in SDK
- updated GUI tool



- improved handling of non-standard wave files exported from Pro Tools 10
- lots of code optimizations and fixes in decoder and encoder
- fixes in SDK



- fixed incorrect handling of extended WAV chunks in x64 versions of encoder



- bugfix in the decoder (could suddenly crash)



Major release
- significantly improved encoding speed (2 times faster in 'normal capacity' mode @ 44.1 KHz)
- lower RAM consumption
- reduced cache file size
- significantly smaller binaries
- significantly improved watermark search speed (from 3 to 5 times faster); files with no watermarks are now detected quickly.
- improved watermark detection accuracy (including "-fast_calcs" mode which is now safe to use in almost all cases)
- lower RAM consumption
- new command-line parameters: "-stop_on_found" (stop watermark search after first watermark found), "-allow_not_reliable" allow watermarks with very low reliability
- significantly smaller binaries



- improved SDK
- code refining


- AWT2 encoder is now available in a form of client-server application, upon request. Client’s encoder performs all the heavy DSP as usual, but it requires receiving a special “key” for each unique watermark payload from the server side. This feature allows establishing server-controlled watermarking services.
- cosmetic changes



- bugfix in the encoder (could suddenly crash)



- improved handling of non-standard wave files (now compatible with wave files created in Pro Tools)



Major update
- added -fast_tempo_only and -slow_tempo_only parameters allowing to speed up synchronization stage of watermark decoding  process by limiting time-stretched audio analysis to analysis of increased/decreased audio playback speed only
- added -fast_calcs parameter forcing the decoder to perform simpler and thus faster calculations at expense of some very moderate loss of reliability
- in AWT2 SDK - added in-memory watermark encoding/decoding functions
- fixed a bug that could cause crash in decoder
- fixed memory leakage in decoder



- added -slice_length & slice_step feature that allows analyzing (decoding) long audio recordings by slices. It is especially useful for watermarks search in recordings of broadcasts in which not the whole recording is watermarked, but only parts of it (e.g. particular songs in radio broadcast)
- fixes of memory leakage
- document updates



- Added support for multi-channel wave files.
- Fixed bugs in GUI utility preventing from normal operation with file paths containing spaces.



Major update
- Significantly improved support of different wave file types. WAVE_FORMAT_EXTENSIBLE format is now supported. Supported wave files: basic and WAVE_FORMAT_EXTENSIBLE, sampled at 192000, 176400, 96000, 88200, 48000, 44100, 32000, 22050, 16000, 11025, 8000 Hz, signed 16-/24-/32-bit little-endian PCM or unsigned 8-bit PCM, 32-/64-bit IEEE float, mono or stereo.



- fixed bug in the decoder (could cause crash)
- AWT2 is now available in a form of SDK (static library + header file + example) for various platforms including Windows, Linux, Mac OS, iOS. AWT2 SDK is available upon request.
- reworked and detailed error codes



- fixed crytical bug in the decoder (could crash at analysis of negative time-stretch)



- resolved issue with possible crash of encoder when -cache_dir option is used
- clarified input wave file reading errors
- added -tmp_file command line option
- minor fix: encoder was unable ro read read-only files



- bug-fix in encoder. The encoder could crash in some cases.



Major update
- at least 2 times faster encoding and decoding thanks to completely rewritten and optimized core DSP code
- -skip_first and -skip_last - new encoder command line parameters allowing to specify number of seconds at the start/end of the input audio that should be left not watermarked (allows to produce smooth cross-fades between two or more consequent watermarked fragments of a continuous audio stream)
- new feature allowing to enter watermarking payload as text (supported in the GUI tool too)
- updated GUI tool



- encoder consumes now twice (!) less RAM than previously
- additional memory and speed improvements for faster processing



- new '-high_capacity' mode with 3 times increased data rate (up to 125 bps) and increased watermark payload size (up to 120 bytes)
- new 'text2hex' utility for convenient conversion of textual data into hexadecimal form (and back) for further use with AWT2 encoder
- increased decoding speed



First public release of AWT2