Old 6th November 2012, 23:05   #1
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
New Plugin: BogProg DiskWrite

The main feature of this plugin is it can utilize the Secret Rabbit Code sample rate converter although it will still function without it (no re-sampling or single file mode support however.) Lots of options including where to put the file, that name of the file, transferring of selected metadata over to the new file, usage of the Winamp encoder plugins for different output formats, and other sanity-keeping features.

Download
thinktink is offline   Reply With Quote
Old 6th November 2012, 23:29   #2
DrO
 
Join Date: Sep 2003
Posts: 27,873
i just hope you've got things correct for using the library against it's license terms (here) as there's been known issues with other players (e.g. foobar2000) and the use of it.

-daz
DrO is offline   Reply With Quote
Old 7th November 2012, 00:50   #3
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
I read the GNU.
http://www.gnu.org/licenses/quick-guide-gplv3.html
  • the freedom to use the software for any purpose,
  • the freedom to change the software to suit your needs,
  • the freedom to share the software with your friends and neighbors, and
  • the freedom to share the changes you make.
I've provided the actual Borland C++ Builder 5 Pro compatible source code (and the entirety of the original source code package) that I've compiled to the dynamically linked distributed library into under to the version of the sample rate converter in the plugin installer. It extracts to the same location when you install the the actual (optional) library itself. The plugin itself is free and I'm automatically providing the full source code of the modified version of SRC library with the installer. And even at that, without the distributed library present the plugin can still write to the disk.

I believe I'm covered.

The real reason why I'm using the SRC is because it's the only one I could get to compile under (the VERY Ansi compliant) Borland C++ Builder 5 Pro.
thinktink is offline   Reply With Quote
Old 7th November 2012, 01:02   #4
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Have you tried it yet?
thinktink is offline   Reply With Quote
Old 7th November 2012, 01:10   #5
DrO
 
Join Date: Sep 2003
Posts: 27,873
nope.

my comment about the license is purely on what i've seen and heard about people trying to use it with non-GPL code which the author is quite clear about that the code using it should then become GPL as well - the fun of the GPL vagueness at times and it's viral nature. so i would have thought you're good from what is said above but it's such a grey area at the best of times.

-daz
DrO is offline   Reply With Quote
Old 7th November 2012, 01:21   #6
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
use it with non-GPL code
Sounds extremely petty to me. What do these people want now? As I read these hactivists' manifestos it seems to me what they're trying to do is undermine the free-market flow of willing buyer and seller for their own socialist agendas. Gawd these people drive me bat-s**t.
thinktink is offline   Reply With Quote
Old 7th November 2012, 01:35   #7
DrO
 
Join Date: Sep 2003
Posts: 27,873
there is a noted schism on how that should be handled, some don't mind it as long as the GPL code is dealt with in the GPL manner, whereas others believe anything using GPL code needs to be GPL as well (remember some fun with potential plug-in devs who demanded Winamp be made GPL so they could keep to their GPL ethos *shrugs* ).

-daz
DrO is offline   Reply With Quote
Old 2nd May 2014, 06:39   #8
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
New version 1.1.1.2 available.


  • Added a skinned configuration window for super-easy access to the configuration.
  • Added presets functionality.
  • Added ability to disable the resampler to save CPU time when it's not needed.
  • Added FULL Unicode filename and metadata support. Includes using file metadata for output file locations/names.

Attached.

OmNomNom enjoy...

Download
Attached Thumbnails
Click image for larger version

Name:	DiskWrite2.2Screen.png
Views:	668
Size:	46.0 KB
ID:	51137  

Last edited by thinktink; 19th November 2014 at 22:19.
thinktink is offline   Reply With Quote
Old 2nd May 2014, 06:57   #9
MrSinatra
Forum King
 
MrSinatra's Avatar
 
Join Date: Dec 2004
Location: WKPS, State College
Posts: 5,622
Send a message via AIM to MrSinatra
hey TT,

for dopes, (like me), what exactly does this do? I haven't burned too many discs with winamp, but is that what this does? and what are the advantages over whatever winamp natively includes?

PENN STATE Radio or http://www.LION-Radio.org/
--
BUG #1 = Winamp skips short tracks
Wish #1 = Multiple Column Sorting
Wish #2 = Add TCMP/Compilation editing
MrSinatra is offline   Reply With Quote
Old 2nd May 2014, 13:38   #10
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
It's not a CD burning plugin. It's like Winamp's disk writer output plugin but with much-mo-teh-betta-ness.

The original reason why I developed this plugin was because the resampler that the Nullsoft one used sounded like crap. I actually got complaints because of it.

I also believe this one is superior because it also allows you to use other encoders. Both that come with Winamp and any installed third-party encoders.
thinktink is offline   Reply With Quote
Old 2nd May 2014, 13:50   #11
DrO
 
Join Date: Sep 2003
Posts: 27,873
so basically a 3rd party variation on the transcoder functionality done as an output plug-in (and our out_disk should probably be altered to use the transcoder functionality instead of the Win9x based setup it uses).
DrO is offline   Reply With Quote
Old 2nd May 2014, 14:06   #12
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
...transcoder functionality done as an output plug-in ...
Yes but it has a number disadvantages to the actual transcoder functions. For one, you have to tie-up normal playback to use it. Two, it's slower because the audio is being processed through Winamp's normal playback chain. When I can, I avoid using it when I want just simple/basic transcoding with no DSP processing or resampling. Of course, a number of third-party input plugins don't come with transcoding support so this comes in handy for those.
thinktink is offline   Reply With Quote
Old 2nd May 2014, 14:13   #13
DrO
 
Join Date: Sep 2003
Posts: 27,873
aye, was just dumbing it down to what it effectively is for those who might be reading this thread.

is a shame about a lack of adoption of the transcoding methods in other plug-ins, but the main formats are covered which should suffice for the majority. though i know the ideal would be with some of the game music format plug-ins (e.g. in_vmgstream) where such support would make sense, but there's just a lack of interest in that area.
DrO is offline   Reply With Quote
Old 2nd May 2014, 18:51   #14
MrSinatra
Forum King
 
MrSinatra's Avatar
 
Join Date: Dec 2004
Location: WKPS, State College
Posts: 5,622
Send a message via AIM to MrSinatra
ok, so again, dumbing it down big time for me, the native disk writer and this plugin are basically about taking a song, say a FLAC, and transcoding it to say a mp3 file?

PENN STATE Radio or http://www.LION-Radio.org/
--
BUG #1 = Winamp skips short tracks
Wish #1 = Multiple Column Sorting
Wish #2 = Add TCMP/Compilation editing
MrSinatra is offline   Reply With Quote
Old 2nd May 2014, 19:16   #15
Koopa
16-Bit Moderator
 
Koopa's Avatar
 
Join Date: Apr 2004
Posts: 4,341
Yes.

But the Nullsoft DiskWriter only works with ACM codecs (so it's using the poor MP3 codec, which is part of Windows, there was an experimental LAME ACM codec available in the web, iicr)

The advantage is, that it works with any input plug-in, the transcoder is only working, if the input plug-in supports the transcoding api.

I'm using the DiskWriter to convert game music to PCM WAV, these I can convert to Mp3 files using the transcoder.

Though, the Nullsoft DiskWriter only gives good results, if you tweak the input plug-in correctly (especially for SNESAmp I had to use specfic input settings, otherwise it sounds like crap)

It's a bit like a cheat, instead of sending the decoded output to the speakers via e.g. DirectSound, it will be written to the disk. Any EQ, DSP, 24 Bit or whatever setting you do for decoding will be written via the diskwriter too.
Koopa is offline   Reply With Quote
Old 2nd May 2014, 19:23   #16
DrO
 
Join Date: Sep 2003
Posts: 27,873
yes that's what's being talked about. it's just that you're taking the already decoded audio and then converting that via a output plug-in (and so the DSP, etc could have been applied to the audio) instead of just going from file -> PCM -> new file without going through the Winamp playback chain (which is good for direct transcoding but isn't if wanting to apply affects before the final output).

both effectively have the same result, but when you go into the specifics then you get into variations in quality of the input and output stages of the audio subject to what's in the chain.

so compared to out_disk at the moment, thinktink's option is better for those needing such functionality (i.e. decent output to other formats than the ACM codecs that out_disk uses and want to have a wider range of codec support).
DrO is offline   Reply With Quote
Old 6th October 2014, 02:32   #17
ChiggyChiggy
Senior Member
 
Join Date: Jan 2014
Posts: 243
When a song thats being sent to the output Disk Writer plugin has non latin characters and the output encoder is lame mp3 it gives an error, this to be precise http://i.gyazo.com/658e964ce7a6cf0b63f102b1b8a0095b.png

But if i use vorbis as an encoder with the exact same file i dont get such an error with non latin stuff, is there any way to fix this? I tried it with several files, both with non latin and latin stuff, but the things with non latin characters all gave the same error D:

*If you have issues with Winamp, ensure you have the currently latest version Winamp v5.666 build 3516 & its patches that fix several issues
*To remove the currently dead Winamp online stuff, see here: removing online stuff
*If you miss the Autotag feature: Gracenote CDDB Autotag alternatives
ChiggyChiggy is offline   Reply With Quote
Old 2nd November 2014, 03:27   #18
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by ChiggyChiggy View Post
When a song thats being sent to the output Disk Writer plugin has non latin characters and the output encoder is lame mp3 it gives an error, this to be precise http://i.gyazo.com/658e964ce7a6cf0b63f102b1b8a0095b.png

But if i use vorbis as an encoder with the exact same file i dont get such an error with non latin stuff, is there any way to fix this? I tried it with several files, both with non latin and latin stuff, but the things with non latin characters all gave the same error D:
I'll have a look later on. For non-latin, is it just non-latin filenames or metadata (or both?)
thinktink is offline   Reply With Quote
Old 2nd November 2014, 22:06   #19
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by ChiggyChiggy View Post
When a song thats being sent to the output Disk Writer plugin has non latin characters and the output encoder is lame mp3 it gives an error, this to be precise http://i.gyazo.com/658e964ce7a6cf0b63f102b1b8a0095b.png

But if i use vorbis as an encoder with the exact same file i dont get such an error with non latin stuff, is there any way to fix this? I tried it with several files, both with non latin and latin stuff, but the things with non latin characters all gave the same error D:
So I just did some experiments with my source code and have come to the conclusion that you're not using the latest version of the plugin which adds several checks to the filename to make sure it doesn't try to call the Ansi only finalization functions from lame_enc.dll with Unicode file names and that you're on a filesystem that doesn't support 8.3 filenames.

For the time being, it would probably be better to use "MP3 Encoder v1.37" instead of "Lame MP3 Encoder (lame_enc.dll)" since you're using Unicode file names.
thinktink is offline   Reply With Quote
Old 3rd November 2014, 08:44   #20
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by thinktink View Post
So I just did some experiments with my source code and have come to the conclusion that you're not using the latest version of the plugin which adds several checks to the filename to make sure it doesn't try to call the Ansi only finalization functions from lame_enc.dll with Unicode file names and that you're on a filesystem that doesn't support 8.3 filenames.

For the time being, it would probably be better to use "MP3 Encoder v1.37" instead of "Lame MP3 Encoder (lame_enc.dll)" since you're using Unicode file names.
Well... ...nope, scratch that. Use Lame MP3 Encoder instead. Apparently Winamp's encoder is no longer exporting the Unicode compatible functions. That's odd.
thinktink is offline   Reply With Quote
Old 4th November 2014, 04:38   #21
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
I've now got a version that double checks the availability of 8.3 support with Unicode filenames on encoders without Unicode support. I tested all of the available official Winamp supplied encoders and they all check out using filenames with Chinese characters.

All that being said, I'm gonna take a quick look to see if I can replace the SRC resampler with the ones I'm now using for the Opus encoder before publishing as they seem to be better quality with faster processing.
thinktink is offline   Reply With Quote
Old 4th November 2014, 06:59   #22
ChiggyChiggy
Senior Member
 
Join Date: Jan 2014
Posts: 243
Hi sorry for the late reply, the issue happens only with lame_enc, not with the "MP3 Encoder" (i didnt see theres a different mp3 encoder there too before) MP3 Encoder doesnt seem to have any of the issue.

If the file name is in non-latin stuff it will make that error, however if its just the tags that are non-latin (but the file name is in latin characters) then its A-okay.

Quote:
Originally Posted by thinktink View Post
Well... ...nope, scratch that. Use Lame MP3 Encoder instead. Apparently Winamp's encoder is no longer exporting the Unicode compatible functions. That's odd.
Actually, its the other way round for me lame_enc is the one that causes it, the other is just dandy... might I ask why theres two?

Btw im using 1.1.1.2 of the plugin, not an older version o:

*If you have issues with Winamp, ensure you have the currently latest version Winamp v5.666 build 3516 & its patches that fix several issues
*To remove the currently dead Winamp online stuff, see here: removing online stuff
*If you miss the Autotag feature: Gracenote CDDB Autotag alternatives
ChiggyChiggy is offline   Reply With Quote
Old 4th November 2014, 15:40   #23
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by ChiggyChiggy View Post
...might I ask why theres two?

...
There's two because there's one that comes from Winamp and then there's my internal implementation of an mp3 encoder available that uses lame_enc.dll if it's present. Winamp's implementation of a WAV encoder is there as well but it likes to crash when I show it's configuration window on my frame (like I do for the others) so I purposely skipped it and did my own implementation of a WAV encoder. And since I had an internal encoder framework already developed I decided to go ahead and create one using lame_enc.dll just for the sake of completeness.


Quote:
Originally Posted by ChiggyChiggy View Post
...
Btw im using 1.1.1.2 of the plugin, not an older version o:
Aye, I saw it in mine as well so it's not because of an older version.
thinktink is offline   Reply With Quote
Old 4th November 2014, 16:10   #24
DrO
 
Join Date: Sep 2003
Posts: 27,873
what steps are needed to reproduce the crash? though i suspect you're not calling something needed as all of the standalone enc_*.dll from 5.5+ need the SetWinampHWND export called before doing anything with them.
DrO is offline   Reply With Quote
Old 5th November 2014, 03:24   #25
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
what steps are needed to reproduce the crash? though i suspect you're not calling something needed as all of the standalone enc_*.dll from 5.5+ need the SetHWND export called before doing anything with them.
Just open the config window and either try to operate the "Convert to format..." checkbox or try to set the format (after you hit ok on the window that pops open when you click on the "Choose Format" button.

I am now calling SetWinampHWND(...) just before calling ConfigAudio3(...) (I wasn't before you mentioned it, just put it in though I think I'm pre-putting it in when I load them) but it's had no effect. Same thing happens.

Video showing the difficulties below (shows some of the call stack trace):
http://www.youtube.com/watch?v=aBDRm3-fXkE
thinktink is offline   Reply With Quote
Old 5th November 2014, 12:10   #26
DrO
 
Join Date: Sep 2003
Posts: 27,873
quick comment on things (as i'll need to properly look at the video - 17mins is a lot )

SetWinampHWND(..) (which just passes the Winamp main window HWND needs to be called before any of the other exports from the enc_*.dll are called i..e just after LoadLibrary(..).

will follow-up on anything else once i've had a chance to properly look at the video and do a local test of things.
DrO is offline   Reply With Quote
Old 5th November 2014, 15:18   #27
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
...

SetWinampHWND(..) (which just passes the Winamp main window HWND needs to be called before any of the other exports from the enc_*.dll are called i..e just after LoadLibrary(..).

...
I just took a look and I can confirm that right after my call to LoadLibrary(...) and GetProcAddress(...) for all of the standard exported functions that I am calling SetWinampHWND(...) right after loading. I also checked to make sure that the handle to the main wnd is valid but it's of course before the main window is shown. Maybe that's the problem. I don't know if I'll be able to find an easy way to test that theory.
thinktink is offline   Reply With Quote
Old 5th November 2014, 15:25   #28
DrO
 
Join Date: Sep 2003
Posts: 27,873
then that's going to be the most likely cause of the issues. unless those enc_* get a valid HWND, they're going to be in a weird state which can cause them to crash.

if you are going to have all of the enc_* always loaded (i assume that's what you're doing as i'm not in a position to try out things myself), then you need to wait a bit before showing any windows or ensure you've got a valid HWND before doing anything.

i suspect you'll need to consider making some changes once i've had a chance to try things out as i suspect there's some things which if done against 5.66x will help to resolve such issues that you're seeing.
DrO is offline   Reply With Quote
Old 5th November 2014, 15:56   #29
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
then that's going to be the most likely cause of the issues. unless those enc_* get a valid HWND, they're going to be in a weird state which can cause them to crash.
They are getting the correct window handle (shown in the video) but I am loading them before the window is shown.


Quote:
Originally Posted by DrO View Post
...

if you are going to have all of the enc_* always loaded (i assume that's what you're doing as i'm not in a position to try out things myself), then you need to wait a bit before showing any windows or ensure you've got a valid HWND before doing anything.
Aye, I've got them always loaded to ensure that they are not removed/uninstalled silently (users are crazy) after a user has gone through the trouble to configure them. This happens during Winamp's call to "out_bpdiskwrite.dll*Out_Module::Init(...)". Individual configuration files for each encoder and encoder type are created and managed and keeping them loaded ensures they remain viable throughout the running Winamp session.


Quote:
Originally Posted by DrO View Post
...

i suspect you'll need to consider making some changes once i've had a chance to try things out as i suspect there's some things which if done against 5.66x will help to resolve such issues that you're seeing.
There's always changes... lol
thinktink is offline   Reply With Quote
Old 5th November 2014, 18:55   #30
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
...

if you are going to have all of the enc_* always loaded (i assume that's what you're doing as i'm not in a position to try out things myself), then you need to wait a bit before showing any windows or ensure you've got a valid HWND before doing anything.

...
My code is pretty modular so I was able to move the loading and initialization of the enc_* libraries to just before the creation of the skinned config window. I was able to verify with an external tool that none of the enc_* libraries were loaded, that all of the other plugins appeared to have been loaded (including ml), and that the main window handle was ready for API calls (just not visible yet.)

Unfortunately, there was no change with the behavior of enc_wav.dll configuration window problems.
thinktink is offline   Reply With Quote
Old 6th November 2014, 01:46   #31
DrO
 
Join Date: Sep 2003
Posts: 27,873
i've just installed the version from your signature and i'm already off to a bad start as i don't see the skinned config window like in your video (unless that's from something else or i've missed an option).

[edit]seems like the option for the skinned window only works on my 5.666 install and not my dev install. though now i've got it showing, it doesn't seem to aid much in this case anyway and i suspect that's due to tweaking the main menu positions as the keyboard shortcut works ok - i should probably add a proper api so it's reliable to add a menu item onto the main menu[/edit]

next issue is that i'm not seeing enc_wav attempted to be loaded in either the 5.666 install or my dev install with it never showing up in the debugger as even being attempted to be loaded. do i need to specify something specific or should it just see it ? (all being done on Win7x64).


and i'm sure you'll be happy to know that your plug-in is the slowest to load in my dev install with it taking ~30-35ms on average to complete it's init(..) call. for comparison, it currently takes gen_ml (which includes all of the ml_* and pmp_*) ~85-90ms on average at the time of testing to load (which is after a load of re-jigging things around). so where possible, i'd suggest trying to defer any ini reading and dll loading until it's actually needed or if it can be done asynchronously after init(..) is called.

[edit #2]
i also need to rummage out the output plug-in callback export details i added which notifies the plug-in when it's activated / deactivated as that would probably help for knowing when to load everything or not.
DrO is offline   Reply With Quote
Old 6th November 2014, 05:33   #32
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
...

[edit]seems like the option for the skinned window only works on my 5.666 install and not my dev install. though now i've got it showing, it doesn't seem to aid much in this case anyway and i suspect that's due to tweaking the main menu positions as the keyboard shortcut works ok - i should probably add a proper api so it's reliable to add a menu item onto the main menu[/edit]

...
Might be because the dev build you got allows messages to be processed on the UI thread before it's actually ready for plugins to create skinned windows. I will need to conjure an alternative method for the next Winamp release.


Quote:
Originally Posted by DrO View Post
...

next issue is that i'm not seeing enc_wav attempted to be loaded in either the 5.666 install or my dev install with it never showing up in the debugger as even being attempted to be loaded. do i need to specify something specific or should it just see it ? (all being done on Win7x64).

...
All publicly released versions of DiskWrite always skipped loading enc_wav.dll because of the problems. The attached Alpha version does not skip it.


Quote:
Originally Posted by DrO View Post
...

and i'm sure you'll be happy to know that your plug-in is the slowest to load in my dev install with it taking ~30-35ms on average to complete it's init(..) call. for comparison, it currently takes gen_ml (which includes all of the ml_* and pmp_*) ~85-90ms on average at the time of testing to load (which is after a load of re-jigging things around). so where possible, i'd suggest trying to defer any ini reading and dll loading until it's actually needed or if it can be done asynchronously after init(..) is called.

...
Actually, that's more likely due to the VCL and not the configuration files or init(). The attached version now pops the config and DLL loading (except the resampler and lame DLLs that are auto loaded dynamically during LoadLibrary[A/W]) just before the skinned window creation as I described in the earlier post to test that valid WinampMainWnd theory.

http://forums.winamp.com/attachment....1&d=1415255585

Last edited by thinktink; 7th November 2014 at 03:05.
thinktink is offline   Reply With Quote
Old 6th November 2014, 12:07   #33
DrO
 
Join Date: Sep 2003
Posts: 27,873
rightio will give things a go hopefully later tonight.
DrO is offline   Reply With Quote
Old 6th November 2014, 22:34   #34
DrO
 
Join Date: Sep 2003
Posts: 27,873
have managed to replicate the issue and it's a bug in enc_wav and how it handles the passed information when ConfigAudio3(..) is called which all of the other enc_* are handling correctly. as such i don't think there's any thing you can really do since it's an internal pointer dereference (which i've fixed for 6.x).

btw, would be good if the config dialog supported the tab theming fix and also that it remembered the last selected config tab instead of always going back to the first tab.
DrO is offline   Reply With Quote
Old 7th November 2014, 00:25   #35
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
have managed to replicate the issue and it's a bug in enc_wav and how it handles the passed information when ConfigAudio3(..) is called which all of the other enc_* are handling correctly. as such i don't think there's any thing you can really do since it's an internal pointer dereference (which i've fixed for 6.x).

...
Good to know. I'll put a version check in there to not skip it for the next Winamp release.



Quote:
Originally Posted by DrO View Post
...the tab theming fix...
Huh? Only using Windows API's to create it so I don't know what's going on.



Quote:
Originally Posted by DrO View Post
...and also that it remembered the last selected config tab instead of always going back to the first tab.
I'll look into it.



thinktink is offline   Reply With Quote
Old 7th November 2014, 00:32   #36
DrO
 
Join Date: Sep 2003
Posts: 27,873
Quote:
Originally Posted by thinktink View Post
Huh? Only using Windows API's to create it so I don't know what's going on.
Quote:
#define IPC_USE_UXTHEME_FUNC 3033
/* (requires Winamp 5.35+)
** int ret = SendMessage(hwnd_winamp,WM_WA_IPC,param,IPC_USE_UXTHEME_FUNC);
** param can be IPC_ISWINTHEMEPRESENT or IPC_ISAEROCOMPOSITIONACTIVE or a valid hwnd.
**
** If you pass a hwnd then it will apply EnableThemeDialogTexture(ETDT_ENABLETAB)
** so your tabbed dialogs can use the correct theme (on supporting OSes ie XP+).
**
** Otherwise this will return a value based on the param passed (as defined below).
** For compatability, the return value will be zero on success (as 1 is returned
** for unsupported ipc calls on older Winamp versions)
*/
#define IPC_ISWINTHEMEPRESENT 0
/* This will return 0 if uxtheme.dll is present
** int isthemethere = !SendMessage(hwnd_winamp,WM_WA_IPC,IPC_ISWINTHEMEPRESENT,IPC_USE_UXTHEME_FUNC);
*/
#define IPC_ISAEROCOMPOSITIONACTIVE 1
/* This will return 0 if aero composition is active
** int isaero = !SendMessage(hwnd_winamp,WM_WA_IPC,IPC_ISAEROCOMPOSITIONACTIVE,IPC_USE_UXTHEME_FUNC);
*/
applying that on the child pages of the config dialog will make it have the same themeing as the tab header. even though you're using the Windows API, you have to manually set it for it to appear correctly on XP and newer when not using the Windows classic look i.e. the tab control is lighter compared to the body of the page dialogs.
DrO is offline   Reply With Quote
Old 7th November 2014, 01:18   #37
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
applying that on the child pages of the config dialog will make it have the same themeing as the tab header. even though you're using the Windows API, you have to manually set it for it to appear correctly on XP and newer when not using the Windows classic look i.e. the tab control is lighter compared to the body of the page dialogs.
Done/Fixed.

Bloody hell, I had no idea it wasn't supposed to look like that.

/em sigh...
thinktink is offline   Reply With Quote
Old 7th November 2014, 01:25   #38
DrO
 
Join Date: Sep 2003
Posts: 27,873
all of the native Winamp dialogs have done it for years, hence that API
DrO is offline   Reply With Quote
Old 7th November 2014, 02:40   #39
DrO
 
Join Date: Sep 2003
Posts: 27,873
btw, forgot to mention the test version of the plug-in now takes ~3-5ms on average for it's init(..) stage which is a nice reduction without any obvious breakage. though it's not quite as good as the reduction i've just managed to get for gen_ml which is now in the ~35-40ms (*) range (which was from a few small tweaks to ml_local, ml_playlists and ml_wire to delay a few more things with no obvious down-side so far *fingers crossed*).

(*) in safe mode it's in the ~25-30ms range
DrO is offline   Reply With Quote
Old 7th November 2014, 03:00   #40
thinktink
Forum King
 
thinktink's Avatar
 
Join Date: May 2009
Location: On the streets of Kings County, CA.
Posts: 3,009
Send a message via Skype™ to thinktink
Quote:
Originally Posted by DrO View Post
btw, forgot to mention the test version of the plug-in now takes ~3-5ms on average for it's init(..) stage which is a nice reduction without any obvious breakage. though it's not quite as good as the reduction i've just managed to get for gen_ml which is now in the ~35-40ms (*) range (which was from a few small tweaks to ml_local, ml_playlists and ml_wire to delay a few more things with no obvious down-side so far *fingers crossed*).

(*) in safe mode it's in the ~25-30ms range
Interesting, I would've sworn up-and-down that it was the VCL that caused loading delays. It was the case with some plugins I converted off of the VCL, forgot which.



Quote:
Originally Posted by DrO View Post
...and also that it remembered the last selected config tab instead of always going back to the first tab.
Done.
thinktink is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Winamp > Winamp Discussion

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump