Old 17th December 2012, 13:51   #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
Plugin not allowing out_ds crossfades.

So, as you probably already know, I'm developing Opus codec support for Winamp plugins. I've got opus file playback itself working, tags support working, whatnot support working...

The current thing that is driving me crazy is I can't figure out why, or even how, the plugin is disallowing out_ds.dll from being able to crossfade the playback and have come very nearly to my own rope's end on the matter.

I'm attaching the latest version of the plugin in the hopes that maybe somebody else can figure out what I'm doing wrong in maybe my sequence of calls or the threading of playback or whatever.

This version of the plugin is built against the libraries required to run downloadable from here:
http://ftp.mozilla.org/pub/mozilla.o...-0.2-win32.zip Only three files from that archive are required in the plugins folder for it to work: libopusfile-0.dll, libopus-0.dll, and libogg-0.dll

It does look like out_ds is pre-gathering buffers before it starts output so I'm a bit confused at the moment as to how this is happening. I'll consider every theory thrown at me.

Last edited by thinktink; 26th January 2013 at 20:36.
thinktink is offline   Reply With Quote
Old 17th December 2012, 22:45   #2
Aminifu
Forum King
 
Aminifu's Avatar
 
Join Date: Aug 2011
Location: Phoenix, AZ
Posts: 4,658
Hi thinktink,

As you may remember, I'm very interested in crossfading alternatives to out_ds.dll.

This is just a wag, but is it possible that out_ds is pausing the output from input plug-ins (to flush buffers) during it's crossfading processing? If it does this, is your plug-in allowing for such a pause?

All the crossfading alternatives I have tried have some frustrating artifact at the point the two output streams are merged. It seems out_ds is doing something special that no one else has figured out. If you have the tools to focus on what out_ds is doing, I'm confident you have the skill to figure it out.

If it helps any, know that I'm rooting for ya!

Winamp Pro v5.666.3516 fully-patched - Komodo X Touchscreen v1.0 by Victhor skin
Windows 10 Home 64-bit v1809 desktop - Logitech Z906 5.1 speaker system
Aminifu is offline   Reply With Quote
Old 19th December 2012, 17:03   #3
SilverBird775
Senior Member
 
SilverBird775's Avatar
 
Join Date: Jan 2009
Location: Russia
Posts: 237
code:

//wait until buffer is empty
while (!stop && module->out->IsPlaying())
{
module->out->CanWrite();
Sleep(20);
}
module->out->Close();
PostMessage(module->hMainWindow, WM_WA_MPEG_EOF, 0, 0);


The out_ds crossfade will not work another way because it needs a bunch of hints to guess the crossfade situation. The major hint to crossfade there is the "outMod->IsPlaying()" call. But still it would not work properly without the code above on every crossfade capable plugin.
SilverBird775 is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Developer Center > Winamp Development

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