In Reply to: RE: A revolution in audio rendering posted by jrling on February 9, 2013 at 03:40:25:
Hi Thanks, more like dogged determination than skill I am afraid.
Shall include a 32 bit version in the link, just rename it to playerextreme.exe, shall let you know when.
The version in the link is for x64 Intel proceesors
https://rapidshare.com/#myrs_filemanager/file/3363
Apologies for the previous version, I was using while do for the render loop which after a while didn't sound so good so back to while loop which sounded better.
I have updated what to me is the ultimate version as far as sound quality is concerned, it really is very good. No real big changes in the code, just some things I found that made a difference to the sound and then some optimisations.
One of the big finds was
hr = CoInitializeEx(NULL,0x8); //COINIT_SPEED_OVER_MEMORY 0x8
which really brought the sound to another level.
I was reassured that as I optimised for speed the Sound Quality improved.
I was surprised at how big a difference the optimisations made to the sound, you can only do so much with code.
Here are the optimisation settings for x64 Intel processor, /MT, /fp:fast,
and the /O2 /Ob2 /Oi /Ot /Oy switches made the difference
c/c++ section
/Zi /nologo /W3 /WX- /O2 /Ob2 /Oi /Ot /Oy /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Gm- /EHsc /MT /GS /fp:fast /Zc:wchar_t /Zc:forScope /Fp"x64\Release\playerextreme.pch" /Fa"x64\Release\" /Fo"x64\Release\" /Fd"x64\Release\vc100.pdb" /Gd /errorReport:queue
-DUNICODE -D_UNICODE /Og /favor:INTEL64
linker section
/OUT:"C:\vs2010\playerextreme - mem - one file\source\x64\Release\playerextreme.exe" /INCREMENTAL /NOLOGO "libad64.lib" "libacof64.lib" "libacof64o.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"x64\Release\playerextreme.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\vs2010\playerextreme - mem - one file\source\x64\Release\playerextreme.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /PGD:"C:\vs2010\playerextreme - mem - one file\source\x64\Release\playerextreme.pgd" /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE
I also made it a single thread which again made a small improvement, also fixed the sizes of buffers etc so that numbers were used in the code. This means that different code would need to be used for different sampling rates. Also worked out a way to play gapless (next release) where the wav data is just appended to the buffer. Means that it won't be able to play different sample rates gapless, but it suits my purposes.
The next release will be gapless and play different sample rates.
http://mqnplayer.blogspot.co.uk/
This post is made possible by the generous support of people like you and our sponsors:
Follow Ups
- RE: A revolution in audio rendering - SBGK 13:42:35 02/11/13 (57)
- RE: A revolution in audio rendering - jrling 14:11:55 02/11/13 (56)
- RE: A revolution in audio rendering - SBGK 16:12:40 02/11/13 (55)
- RE: A revolution in audio rendering - SBGK 16:15:16 02/11/13 (54)
- RE: A revolution in audio rendering - SBGK 09:42:35 02/12/13 (53)
- RE: A revolution in audio rendering - jrling 11:40:45 02/12/13 (52)
- RE: A revolution in audio rendering - SBGK 14:45:16 02/12/13 (51)
- RE: A revolution in audio rendering - jrling 14:26:37 02/14/13 (50)
- RE: A revolution in audio rendering - SBGK 09:56:41 02/15/13 (49)
- .NET v.4 - jrling 12:40:10 02/17/13 (48)
- RE: .NET v.4 - SBGK 13:02:41 02/17/13 (47)
- Linux Build? - jrling 14:08:43 02/17/13 (45)
- RE: Linux Build? - SBGK 15:19:46 02/17/13 (44)
- RE: Linux Build? - jrling 12:46:58 02/18/13 (43)
- RE: Linux Build? - SBGK 13:41:01 02/18/13 (42)
- RE: Linux Build? - SBGK 13:05:20 02/21/13 (41)
- RE: Linux Build? - SBGK 12:25:23 03/03/13 (40)
- RE: Linux Build? - SBGK 10:47:53 03/07/13 (30)
- RE: Linux Build? - SBGK 05:54:30 03/10/13 (29)
- RE: Linux Build? - SBGK 17:28:29 03/10/13 (28)
- RE: Linux Build? - SBGK 16:33:49 03/11/13 (27)
- RE: Linux Build? - SBGK 16:37:56 03/11/13 (26)
- RE: Linux Build? - SBGK 14:52:44 03/13/13 (25)
- RE: Linux Build? - SBGK 16:13:00 03/14/13 (24)
- RE: Linux Build? - SBGK 05:25:06 03/24/13 (23)
- RE: Linux Build? - SBGK 05:37:15 03/24/13 (22)
- Repost - jrling 10:56:32 03/24/13 (21)
- RE: Repost - SBGK 09:41:26 03/26/13 (19)
- RE: Repost - SBGK 11:03:40 03/26/13 (18)
- RE: Repost - SBGK 13:20:37 03/26/13 (17)
- RE: Repost - SBGK 00:15:21 03/28/13 (16)
- RE: Repost - jupabe 06:04:25 03/28/13 (15)
- RE: Repost - SBGK 06:29:24 03/30/13 (14)
- RE: Repost - jupabe 12:07:28 03/30/13 (13)
- RE: Repost - SBGK 23:01:20 04/01/13 (11)
- MQn v 14 / Flac play - SBGK 13:25:18 04/07/13 (10)
- RE: MQn v 14 / Flac play - SBGK 15:01:49 04/10/13 (9)
- RE: MQn v 14 / Flac play - SBGK 17:02:32 04/17/13 (8)
- RE: MQn v 14 / Flac play - SBGK 13:58:13 04/22/13 (7)
- RE: MQn v 14 / Flac play - SBGK 12:19:27 04/23/13 (6)
- MQn v 47 - SBGK 13:05:41 05/07/13 (5)
- RE: MQn v 47 - SBGK 13:35:05 05/21/13 (4)
- RE: MQn v 47 - SBGK 22:22:05 05/26/13 (3)
- RE: MQn v 79 - SBGK 12:13:39 05/28/13 (2)
- RE: MQn v 79 - jupabe 23:55:00 05/29/13 (1)
- RE: MQn v 80 - SBGK 15:14:03 05/30/13 (0)
- RE: Repost - SBGK 12:43:30 03/30/13 (0)
- RE: Repost - SBGK 16:10:11 03/25/13 (0)
- RE: Linux Build? - jupabe 02:59:45 03/04/13 (8)
- RE: Linux Build? - SBGK 13:16:39 03/04/13 (7)
- RE: Linux Build? - jupabe 13:59:00 03/04/13 (6)
- RE: Linux Build? - SBGK 14:46:51 03/04/13 (4)
- RE: Linux Build? - SBGK 15:04:44 03/04/13 (3)
- RE: Linux Build? - jupabe 23:19:08 03/04/13 (2)
- RE: Linux Build? - SBGK 00:24:41 03/05/13 (1)
- RE: Linux Build? - jupabe 06:40:43 03/05/13 (0)
- RE: Linux Build? - SBGK 14:22:01 03/04/13 (0)
- RE: .NET v.4 - jrling 13:59:29 02/17/13 (0)