IPB

Welcome Guest ( Log In | Register )

lossyWAV 1.3.0 Delphi to C++ Translation Thread, Added noise linear PCM bitdepth reduction method.
Nick.C
post Aug 22 2012, 19:27
Post #1


lossyWAV Developer


Group: Developer
Posts: 1789
Joined: 11-April 07
From: Wherever here is
Member No.: 42400



Tycho started the Delphi to C++ translation of lossyWAV in August 2012. After some time getting to grips with C++ and a bit of debugging, I started to develop lossyWAV 1.4.0.

Changelog:

lossyWAV beta 1.3.1m 04/08/2014
  • Drop-dead-date now end of September 2014.
lossyWAV beta 1.3.1k 02/06/2014
  • Drop-dead-date now end of July 2014.
lossyWAV beta 1.3.1j2 01/04/2014
  • Drop-dead-date now end of May 2014.
  • Crash fixed.
lossyWAV beta 1.3.1j 31/03/2014
  • Drop-dead-date now end of May 2014.
  • Code tidy-up.
lossyWAV beta 1.3.1h 31/01/2014
  • Drop-dead-date now end of March 2014.
  • Code tidy-up.
lossyWAV beta 1.3.1g 01/12/2013
  • Drop-dead-date now end of January 2014.
  • Code tidy-up.
  • Modifications to --shaping altfilter.
lossyWAV beta 1.3.1f 15/10/2013
  • Drop-dead-date still end of November.
  • Bug hunt attempt #1 for non-specific crash.
lossyWAV beta 1.3.1e 07/10/2013
  • Drop-dead-date now end of November.
  • Additions to --feedback parameter: "--feedback [n]" and "V, verbose". The addition of the numeric parameter (0.0 <= n <= 10.0) allows the user to increase the feedback sensitivity. Verbose increases the level of detail in the feedback output.
  • A shorter FFT analysis has been introduced: 16 samples. This is now the first additional FFT analysis to be added (using "-a 4" or "--analyses 4"). Other FFT lengths are added in increasing numerical order.
  • Bug fixes in output and some variable structural changes.
lossyWAV beta 1.3.1d 15/09/2013
  • Drop-dead-date now end of October.
  • Additions to --feedback parameter: "r, round <n>" reduces the permitted deviation between expected added noise due to rounding and actual; "n, noise <n>" reduces the added noise level due to adaptive noise shaping; "a, aclips <n>" defines the permitted number of exceedences of the permitted adaptive noise shaping limiting level; "A, alevel <n> reduces the permitted adaptive noise shaping limiting level;
  • Slight change to rounding clipping behaviour. Only clips introduced after scaling will be used when determining whether number of bits to remove should be reduced due to clipping.
lossyWAV beta 1.3.1c 04/08/2013
  • Drop-dead-date now end of September. Apologies for any inconvenience caused by the introduction of an expiry date for beta versions.
lossyWAV beta 1.3.1b 20/06/2013
  • Error in correction file re-combination (was restricted to 24-bit files) corrected.
lossyWAV beta 1.3.1a 18/06/2013
  • Improvements to WAVE64 and RF64 compatibility;
  • Correction files work again for WAV and also WAVE64 and RF64;
  • Dependency on pthreadgc2.dll removed.
lossyWAV beta 1.3.0o 11/06/2013
  • Introduction of WAVE64 and RF64 compatibility. lossyWAV will now read and write both formats in addition to WAV.
lossyWAV beta 1.3.0n 30/03/2013
  • experimental parameter --feedback introduced to modify bit removal process to include an added noise check. Seems to work well in conjunction with "--maxclips 0" or "--maxclips 1" at lower quality settings.
lossyWAV beta 1.3.0m 25/03/2013
  • Removed experimental new parameter --noisebtr.
  • --interp-curve reinstated.
  • experimental parameter --altfilter introduced to modify adaptive noise shaping method.
lossyWAV beta 1.3.0k3 08/03/2013
  • Introduction of experimental new parameter --noisebtr which applies a new method of detemining bits to remove. Well, I say new - SebastianG did point me in this direction *quite* some time ago. Basically, the creation of the noise shaping filter for each channel outputs a numerical value that I have finally used to determine the number of bits to remove from that codec-block channel. It even works on (non-clipping) tonal samples. It should be noted that this is a complete departure from the original method - no searching for the lowest signal in the FFT output bins. Limited tuning so far - however the presets should give approximately the same resultant FLAC output bitrate from --portable up to --insane. Below --portable, I have made the quality settings more aggressive and --extraportable results in a FLAC output bitrate of approximately 283kbit/s. This is quite a drop from the 308 to 311kbit/s previously. If anyone is prepared to spend the time on some testing, that would be very much appreciated. I think that --extraportable is a bit *too* aggressive at the moment, but that is more of a feeling than anything else.
  • --interp-curve removed at this time.
  • beta 1.3.0k2 issued due to omission of --noisebtr from text output parameter list (used in FACT chunk and log file).
  • beta 1.3.0k3 issued due to last minute fix for bits-per-sample not equal to 16.
lossyWAV beta 1.3.0j 08/02/2013
  • Further experimental modification to the adaptive noise shaping routine, backed off a little but now works well with >96kHz samplerate
lossyWAV beta 1.3.0i 30/01/2013
  • Further experimental modification to the adaptive noise shaping routine. NB: Testing has shown that this does not work well with >96kHz samplerate!!.
  • Bug-fix: now processes >16-bit properly - unexpected integer overflow discovered where floating point was thought to be used.
lossyWAV beta 1.3.0h 23/01/2013
  • Further experimental modification to the adaptive noise shaping routine. FLAC encode (-5 -b 512) from "-q X -i" results in 302kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0g 18/01/2013
  • Experimental modification to the adaptive noise shaping routine, new parameter -i, --interp-curve; adds optional cubic curve interpolation in lieu of linear interpolation when determining target spectral shape for each noise shaping filter. When encoded in FLAC (-5 -b 512) using the --extraportable preset, my 10 album test set results in 304kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0f 26/10/2012
  • First attempt at FFMPEG compatibility;
lossyWAV beta 1.3.0e 24/09/2012
  • More rounding issues found and amended;
  • Output is hopefully bit identical with reference output (2nd attempt....);
lossyWAV beta 1.3.0d 18/09/2012
  • Bit removal chain error identified: C++ inherently rounds 0.5 differently from Delphi, Delphi uses Banker's rounding (round to even);
  • Banker's rounding implemented;
  • Output is now bit identical with reference output (caveat: from testing so far). [edit] Found not to be at --portable. Bug hunting continues.... [/edit]
lossyWAV beta 1.3.0c 15/09/2012
  • Piped I/O implemented - please report problems;
  • Most bugs in bit-removal chain removed - output not yet bit identical;
  • Internal FFT routines optimised.


This post has been edited by Nick.C: Aug 4 2014, 18:16
Attached File(s)
Attached File  lossyWAV_beta_1.3.1m.zip ( 333.14K ) Number of downloads: 28
 


--------------------
lossyWAV -q X -a 4 --feedback 4| FLAC -8 ~= 320kbps
Go to the top of the page
+Quote Post
 
Start new topic
Replies
Atak_Snajpera
post Aug 29 2012, 18:40
Post #2





Group: Members
Posts: 28
Joined: 16-August 12
Member No.: 102388



Without --ignorelength switch lossyWav is useless for movie sound tracks. I can't even use pipe for direct processing.

BTW. Do you know maybe why your sources won't compile in delphi 7 pro?

This post has been edited by Atak_Snajpera: Aug 29 2012, 18:44
Go to the top of the page
+Quote Post

Posts in this topic
- Nick.C   lossyWAV 1.3.0 Delphi to C++ Translation Thread   Aug 22 2012, 19:27
- - [JAZ]   Hi Tycho. That sounds nice. Remember that there a...   Aug 22 2012, 19:55
- - Kohlrabi   Is the port done publicly, like on github or simil...   Aug 22 2012, 20:48
- - tycho   JAZ, Thanks, I was aware of the C# translation of ...   Aug 22 2012, 23:11
- - Nick.C   Hi Tycho, How are you getting on? Impatient Inqui...   Aug 25 2012, 19:55
- - tycho   It's progressing quite well. Many of the file...   Aug 25 2012, 23:36
- - lvqcl   CODEfunction ArcTan_Complex(const X: tDCom...   Aug 25 2012, 23:46
- - Nick.C   Apologies - you've found some of the "dir...   Aug 26 2012, 21:40
- - Atak_Snajpera   Once we have C++ version can we expect nice speed ...   Aug 28 2012, 11:55
- - tycho   I haven't studied enough how the data is proce...   Aug 28 2012, 18:22
- - Nick.C   A simple parallelism would be to process each chan...   Aug 28 2012, 19:01
|- - Atak_Snajpera   QUOTE (Nick.C @ Aug 28 2012, 20:01) A sim...   Aug 28 2012, 20:35
- - Nick.C   Another would be to have the FFT analyses run in p...   Aug 28 2012, 20:49
- - Atak_Snajpera   I have noticed that original LossyWav 1.3 does not...   Aug 29 2012, 14:18
- - Nick.C   A specification compliant WAV file can be no large...   Aug 29 2012, 17:49
- - Atak_Snajpera   Without --ignorelength switch lossyWav is useless ...   Aug 29 2012, 18:40
|- - Nick.C   You could split the soundtrack into chapters, proc...   Aug 29 2012, 22:30
- - Nick.C   Tycho, Are there any specific compiler options th...   Aug 30 2012, 12:44
- - tycho   Nick, Good to hear you're progressing with c++...   Aug 30 2012, 23:31
- - Nick.C   Updated executable later tonight - huge thanks to ...   Sep 7 2012, 19:05
- - Atak_Snajpera   what is still missing in current c version vs orig...   Sep 7 2012, 20:36
- - Nick.C   A bit of accuracy - there's a bug somewhere in...   Sep 7 2012, 20:49
- - Nick.C   lossyWAV beta 1.3.0b attached. Superseded. Chan...   Sep 7 2012, 21:01
|- - Atak_Snajpera   QUOTE (Nick.C @ Sep 7 2012, 21:01) lossyW...   Sep 7 2012, 21:29
- - mudlord   Is there any reason for custom FFT? Why not someth...   Sep 8 2012, 01:37
|- - mezenga   QUOTE (mudlord @ Sep 7 2012, 16:37) Is th...   Sep 8 2012, 04:32
- - Nick.C   I'll have a look at KissFFT - it may be faster...   Sep 8 2012, 13:20
- - lvqcl   There's also PFFFT library: https://bitbucket....   Sep 8 2012, 13:23
- - Nick.C   I know that single precision would be faster but a...   Sep 8 2012, 13:28
- - lvqcl   SoX uses fft4g.c from Ooura 1D FFT   Sep 8 2012, 13:55
- - Destroid   Being unaware of KissFFT, I did a brief overview a...   Sep 9 2012, 10:50
|- - mezenga   QUOTE (Destroid @ Sep 9 2012, 01:50) - FF...   Sep 9 2012, 15:59
- - Nick.C   The C++ executable is *much* bigger than the Delph...   Sep 9 2012, 19:06
- - tycho   Even though much of the point of translating to C+...   Sep 9 2012, 22:24
- - Nick.C   Thanks for those Tycho. I've started on piped...   Sep 10 2012, 21:38
- - Nick.C   Piped I/O is now in testing phase - I processed my...   Sep 12 2012, 18:39
- - Atak_Snajpera   have you decided yet what multithreading method wi...   Sep 13 2012, 18:37
- - Nick.C   I have not started on multi-threading yet. I will ...   Sep 13 2012, 19:19
- - Atak_Snajpera   i keep asking about ignore chunk size switch becau...   Sep 13 2012, 20:03
- - Nick.C   Ah! Now it makes sense to me. In that case, I ...   Sep 13 2012, 21:07
- - Atak_Snajpera   great and thank you!   Sep 13 2012, 21:30
- - Nick.C   lossyWAV beta 1.3.0c attached to post #1 in this t...   Sep 15 2012, 12:00
- - Atak_Snajpera   Speed comparison Q6600@3Ghz All read/write done on...   Sep 15 2012, 18:36
- - Nick.C   That's certainly encouraging !   Sep 15 2012, 18:44
- - Atak_Snajpera   Ability to process channels independently each in ...   Sep 15 2012, 18:46
- - [JAZ]   I can confirm that higher speed will be possible: ...   Sep 15 2012, 19:28
- - Nick.C   lossyWAV beta 1.3.0d attached to post #1 in this t...   Sep 18 2012, 18:56
|- - mezenga   QUOTE (Nick.C @ Sep 18 2012, 09:56) lossy...   Sep 19 2012, 17:32
|- - Nick.C   QUOTE (mezenga @ Sep 19 2012, 17:32) - po...   Sep 20 2012, 19:57
- - Nick.C   .... ok. Thanks for the testing - I'll go bug ...   Sep 19 2012, 17:39
- - punkrockdude   I really look forward to try this out on Linux one...   Sep 19 2012, 23:16
- - bandpass   QUOTE (mezenga @ Sep 19 2012, 17:32) Test...   Sep 20 2012, 07:37
- - Nick.C   I have received samples that should allow me to de...   Sep 23 2012, 20:11
- - Nick.C   lossyWAV beta 1.3.0e attached to post #1 in this t...   Sep 24 2012, 20:27
|- - mezenga   QUOTE (Nick.C @ Sep 24 2012, 11:27) lossy...   Sep 24 2012, 23:14
|- - Nick.C   Thanks for the corroborative testing. I have been ...   Sep 26 2012, 19:57
- - Atak_Snajpera   why delphi version is faster than c version? on ...   Sep 26 2012, 20:54
- - Nick.C   The Delphi version (i.e. the Delphi version with s...   Sep 26 2012, 21:08
- - Atak_Snajpera   single integer unit in amd fx cpus is really slow ...   Sep 26 2012, 21:28
- - Atak_Snajpera   any news about current progress?   Oct 17 2012, 20:48
- - Nick.C   I've been working on speeding up the code most...   Oct 17 2012, 21:07
- - Atak_Snajpera   unfortunatelly ripbot264 is just a gui for other t...   Oct 18 2012, 09:35
- - Nick.C   I'll work on ffmpeg compatibility. Multi thre...   Oct 18 2012, 17:46
- - Nick.C   lossyWAV beta 1.3.0f attached to post #1 in this t...   Oct 26 2012, 20:25
- - Atak_Snajpera   have you figured out how to accept pipe output fro...   Nov 17 2012, 16:30
- - Nick.C   I will try it out and see where I get to. Sorry f...   Nov 17 2012, 19:08
|- - Atak_Snajpera   great! don't forget also about broken prog...   Nov 17 2012, 21:33
- - Jan7887   Hello everybody, I am very new at this forum but...   Nov 29 2012, 05:07
- - Dynamic   If you look back at the 1.0 thread (find it via th...   Nov 29 2012, 14:07
- - Nick.C   Hi Jan7887, You've firstly got to thank 2Bdec...   Nov 29 2012, 20:38
- - Jan7887   Thank you Dynamic and Nick.C for the fast response...   Nov 29 2012, 23:56
- - SebastianG   QUOTE (Nick.C @ Aug 22 2012, 20:27) Tycho...   Nov 30 2012, 14:27
- - Nick.C   Hi Sebastian, I was kick-started into learning C...   Nov 30 2012, 20:47
- - Jan7887   @SebastianG Thank you very much for all your wor...   Dec 1 2012, 01:42
- - Nick.C   Opus is very good indeed. If I was looking for ver...   Dec 1 2012, 10:38
- - Nick.C   Got sidetracked again - I'm going to add an op...   Dec 16 2012, 23:11
- - Atak_Snajpera   any progress on lossywav?   Jan 3 2013, 16:44
- - Nick.C   Still working on it, still distracted by the Elite...   Jan 3 2013, 23:28
- - FreaqyFrequency   I've been experimenting with various compressi...   Jan 7 2013, 18:17
- - Nick.C   lossyWAV beta 1.3.0g attached to post #1 in this t...   Jan 18 2013, 21:26
|- - FreaqyFrequency   QUOTE (Nick.C @ Jan 18 2013, 15:26) lossy...   Jan 20 2013, 08:25
|- - Nick.C   QUOTE (FreaqyFrequency @ Jan 20 2013, 07...   Jan 20 2013, 18:00
- - Nick.C   I did a bit of testing with my 55 problem sample s...   Jan 20 2013, 22:44
- - Nick.C   lossyWAV beta 1.3.0h attached to post #1 in this t...   Jan 23 2013, 22:19
- - Nick.C   lossyWAV beta 1.3.0i attached to post #1 in this t...   Jan 30 2013, 23:20
- - Nick.C   lossyWAV beta 1.3.0j attached to post #1 in this t...   Feb 8 2013, 22:31
- - Cynic   What is the penalty (if any) for using the -i swit...   Feb 19 2013, 23:31
- - Nick.C   Hi Cynic, The penalty is simply that the noise sh...   Feb 20 2013, 22:03
- - Banned   Out of curiousity, why does the distribution inclu...   Mar 2 2013, 21:20
- - Nick.C   When v1.40 is released, the source will be as well...   Mar 3 2013, 17:33
- - Nick.C   lossyWAV beta 1.3.0k attached to post #1 in this t...   Mar 8 2013, 21:27
- - Nick.C   lossyWAV beta 1.3.0m attached to post #1 in this t...   Mar 25 2013, 23:04
- - Nick.C   lossyWAV beta 1.3.0n attached to post #1 in this t...   Mar 30 2013, 15:14
- - skamp   Thanks for your work. I'm looking forward to 1...   Mar 30 2013, 15:31
- - doccolinni   I may be late for the party, but regarding the int...   May 26 2013, 03:04
- - doccolinni   By the way, you can read more about genfft and why...   May 26 2013, 05:43
- - Nick.C   lossyWAV beta 1.3.0o attached to post #1 in this t...   Jun 11 2013, 19:34
- - Atak_Snajpera   does pipeing work with wave64 format? for example ...   Jun 12 2013, 23:13
|- - Nick.C   FLAC 1.3.0 > lossyWAV 1.3.0o > FLAC 1.3.0 wo...   Jun 13 2013, 07:16
- - Atak_Snajpera   Ok works like I charm I've encoded using pip...   Jun 13 2013, 12:33
2 Pages V   1 2 >


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 20th August 2014 - 10:57