Go Back   Winamp & SHOUTcast Forums > Winamp > Winamp Discussion

Reply
Thread Tools Search this Thread Display Modes
Old 23rd November 2015, 17:35   #121
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
Quote:
Originally Posted by pbelkner View Post
Could you please provide a trace for that? Could you please copy&paste the trace into PHP tags (right most of the forum's editor tool bar).
Okay, the song goes for 3:15. I stopped it at 4:15. This is with the only settings that plays music for me, namely Exclusive Mode, Pull, and largest buffers available.

PHP Code:
init
  plugin options created
  queue available semaphore created
  queue written semaphore created
  queue mutex created
  queue created
  store mutex created
  store available semaphore created
  store created
  event created
  waitable timer created
  thread created
  REQUEST_CREATE
  device enumerator created
  device collection created
  got device count
5
  player 
array allocated
    player device created
    id
"{0.0.0.00000000}.{060a1276-7d22-462f-b85e-13b32fe133cf}"
    
player property store created
    name
"Realtek Digital Output (Realtek High Definition Audio)"
    
player options created
  player 0 created
    player device created
    id
"{0.0.0.00000000}.{62fe9b01-ea87-4eb5-a139-038b7a80df5d}"
    
player property store created
    name
"DELL U2410-4 (NVIDIA High Definition Audio)"
    
player options created
  player 1 created
    player device created
    id
"{0.0.0.00000000}.{a1d3e704-0abb-4453-9c8a-3164c4bd0474}"
    
player property store created
    name
"Speakers (JRiver Media Center 20)"
    
player options created
  player 2 created
    player device created
    id
"{0.0.0.00000000}.{e18a2e34-6bc6-47b2-bc07-98808dfeeb39}"
    
player property store created
    name
"Realtek Digital Output(Optical) (Realtek High Definition Audio)"
    
player options created
  player 3 created
    player device created
    id
"{0.0.0.00000000}.{eb6a7457-1062-4d34-98e1-baaf3bba06cb}"
    
player property store created
    name
"Digital Output (Amanero Technologies USB Driver 1.0.57)"
    
player options created
  player 4 created
  device
"Digital Output (Amanero Technologies USB Driver 1.0.57)"
  
loop started
setvolume
  volume
1.00
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  device period scaled by 3.00 
(device period300000)
  
audio client initialized
  event handle set
  audio clock created
  got buffer size
1323 frames
  audio render client created
  ring buffer size
4032 frames (9.14)
  
ring buffer created
setvolume
  volume
1.00
  audio client started
close
  REQUEST_CLOSE
    fullstop
1
  REQUEST_END
    min free reqests
(12)
    
min free results(12)
  
stopping audio client
  destroying ring buffer
  destroying audio render client
  destroying audio clock
  destroying audio client 
Cool Barn is offline   Reply With Quote
Old 23rd November 2015, 17:40   #122
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
And here is the trace with default settings. Now I'm NOT getting any error messages, and the tracker and song time moves - just no sound unfortunately.

PHP Code:
init
  plugin options created
  queue available semaphore created
  queue written semaphore created
  queue mutex created
  queue created
  store mutex created
  store available semaphore created
  store created
  event created
  waitable timer created
  thread created
  REQUEST_CREATE
  device enumerator created
  device collection created
  got device count
5
  player 
array allocated
    player device created
    id
"{0.0.0.00000000}.{060a1276-7d22-462f-b85e-13b32fe133cf}"
    
player property store created
    name
"Realtek Digital Output (Realtek High Definition Audio)"
    
player options created
  player 0 created
    player device created
    id
"{0.0.0.00000000}.{62fe9b01-ea87-4eb5-a139-038b7a80df5d}"
    
player property store created
    name
"DELL U2410-4 (NVIDIA High Definition Audio)"
    
player options created
  player 1 created
    player device created
    id
"{0.0.0.00000000}.{a1d3e704-0abb-4453-9c8a-3164c4bd0474}"
    
player property store created
    name
"Speakers (JRiver Media Center 20)"
    
player options created
  player 2 created
    player device created
    id
"{0.0.0.00000000}.{e18a2e34-6bc6-47b2-bc07-98808dfeeb39}"
    
player property store created
    name
"Realtek Digital Output(Optical) (Realtek High Definition Audio)"
    
player options created
  player 3 created
    player device created
    id
"{0.0.0.00000000}.{eb6a7457-1062-4d34-98e1-baaf3bba06cb}"
    
player property store created
    name
"Digital Output (Amanero Technologies USB Driver 1.0.57)"
    
player options created
  player 4 created
  device
"Digital Output (Amanero Technologies USB Driver 1.0.57)"
  
loop started
setvolume
  volume
1.00
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  audio client initialized
  audio clock created
  got buffer size
3528 frames
  audio render client created
  ring buffer size
5760 frames (1.63)
  
ring buffer created
setvolume
  volume
1.00
  audio client started
AUDCLNT_E_BUFFER_TOO_LARGE
"yasapi_session.c" (659).
uFrames3528uFramesPadding236uFramesWrite3292uFramesRing5688bFlush0retry0
Error getting render buffer
"yasapi_session.c" (672).
close
  REQUEST_CLOSE
    fullstop
1
  REQUEST_END
    min free reqests
10 (12)
    
min free results(12)
  
stopping audio client
  destroying ring buffer
  destroying audio render client
  destroying audio clock
  destroying audio client 
Cool Barn is offline   Reply With Quote
Old 23rd November 2015, 17:46   #123
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Here is the trace of what appears after I attempt to play the song; this is all that appears in the console:
code:
open
wasapi clock
REQUEST_OPEN
samplerate: 44100
numchannels: 2
bitspersamp: 24
audio client created
got device period
default: 100000 hns
minimum: 30000 hns
choosen: 100000 hns
audio client initialized
audio clock created
got buffer size: 3528 frames
audio render client created
ring buffer size: 5760 frames (1.63)
ring buffer created



No playback; just hangs at 00:00.
djnforce9 is offline   Reply With Quote
Old 23rd November 2015, 17:48   #124
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
No playback; just hangs at 00:00.
Could please repeat with "Debug" set to "Verbose"?
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 17:56   #125
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
PHP Code:
AUDCLNT_E_BUFFER_TOO_LARGE"yasapi_session.c" (659).
uFrames3528uFramesPadding236uFramesWrite3292uFramesRing5688bFlush0retry0
Error getting render buffer
"yasapi_session.c" (672). 
3528 = 236 + 3292 is not what we expect from an AUDCLNT_E_BUFFER_TOO_LARGE error. On the other hand I would expect uFramesPadding / uFramesWrite to be about 50% / 50%.
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 17:57   #126
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
Okay, the song goes for 3:15. I stopped it at 4:15.
OK, I have to look into it.
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 18:01   #127
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Quote:
Originally Posted by pbelkner View Post
Could please repeat with "Debug" set to "Verbose"?
Changed it to Verbose and caught an infinite loop of this:
code:
canwrite
REQUEST_CANWRITE
canwrite
REQUEST_CANWRITE
getoutputtime
REQUEST_GETTIME
canwrite
REQUEST_CANWRITE
getoutputtime
REQUEST_GETTIME
getoutputtime
REQUEST_GETTIME



It does this endlessly until I stop playback.

EDIT: Tried a song that does work and the above still appears endlessly in the console window while the song plays.
djnforce9 is offline   Reply With Quote
Old 23rd November 2015, 18:29   #128
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
PHP Code:
AUDCLNT_E_BUFFER_TOO_LARGE"yasapi_session.c" (659).
uFrames3528uFramesPadding236uFramesWrite3292uFramesRing5688bFlush0retry
Here is how it should look (and really looks at my site):
PHP Code:
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
30000 hns
  audio client initialized
  audio clock created
  got buffer size
2048 frames
  audio render client created
  ring buffer size
2880 frames (1.41)
  
ring buffer created
  audio client started
uFrames
2048uFramesPadding0uFramesWrite2048uFramesRing2880bFlush0retry0
uFrames
2048uFramesPadding946uFramesWrite1102uFramesRing2560bFlush0retry0
uFrames
2048uFramesPadding946uFramesWrite1102uFramesRing2610bFlush0retry0
uFrames
2048uFramesPadding945uFramesWrite1103uFramesRing2660bFlush0retry0
uFrames
2048uFramesPadding991uFramesWrite1057uFramesRing2709bFlush0retry
  1. The buffer is empty, i.e. padding is 0, 2048 frames have to be written.
  2. Playback starts.
  3. If half the time is over, half of the buffer is empty, half of the buffer is still there (they call it padding) and half of the buffer has to be written.
  4. And so on (with some small fluctuations) ...
Could you please try this little experiment with the following especially prepared debug version?
http://out-yasapi.sourceforge.net/up...debug-0.9.3.7z
Edit: It would be nice if you could do this little experiment but all symptoms point to a remarkable drift between the audio and the timer used to trigger the re-filling of the buffer as the real reason for the strange behavior. Using large buffers to work around this are just curing the symptom not the root cause because large buffers just shift the point where audio and timer are hopelessly out of sync a bit further into the future.
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 18:35   #129
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
It does this endlessly until I stop playback.

EDIT: Tried a song that does work and the above still appears endlessly in the console window while the song plays.
As long as a song plays it is OK. For some reason it doesn't catch the end of that particular song. We have to hunt this down with some especially prepared debug versions.

But for today unfortunately I have to say good bye ...
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 18:44   #130
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Quote:
Originally Posted by pbelkner View Post
As long as a song plays it is OK. For some reason it doesn't catch the end of that particular song. We have to hunt this down with some especially prepared debug versions.

But for today unfortunately I have to say good bye ...
No worries, let me know when you need me to create another trace for you. Also, thanks for all the hard work you've put into with this plugin .

EDIT: Not sure if this helps but as an experiment, I rolled back to v0.82 and the playback problems were gone. They seem specific to v0.9 or later.
djnforce9 is offline   Reply With Quote
Old 23rd November 2015, 18:52   #131
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
I rolled back to v0.82 and the playback problems were gone. They seem specific to v0.9 or later.
That's most likely the case. Everything is re-written and probably I've missed something I've had in the old version. I've to look into the old version again.
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 19:11   #132
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
It does this endlessly until I stop playback.
Could you please use the above referenced debug version
http://out-yasapi.sourceforge.net/up...debug-0.9.3.7z
and produce a trace from the end of that particular song? For that reason you can probably jump (seek) to the end of the song.
pbelkner is offline   Reply With Quote
Old 23rd November 2015, 19:28   #133
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
Quote:
Originally Posted by pbelkner View Post
Could you please try this little experiment with the following especially prepared debug version?
http://out-yasapi.sourceforge.net/up...debug-0.9.3.7z
Okay here are the settings that play but don't stop (Exclusive Mode, Pull, Max Buffer Sizes):

PHP Code:
uFrames1323uFramesPadding0uFramesWrite1323uFramesRing2457bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing4014bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3843bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2520bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1773bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3906bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3735bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2412bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1665bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3798bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3627bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2304bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3861bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2538bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3519bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2196bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3753bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2430bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3987bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3816bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2493bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3474bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2151bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3708bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2385bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3942bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2619bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3600bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2277bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3834bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3663bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2340bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1593bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3726bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3555bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2232bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3789bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2466bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing4023bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2700bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3681bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2358bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3915bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3744bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2421bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2826bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3807bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3636bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2313bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3870bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2547bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3528bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2205bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3762bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3591bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2268bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1521bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3654bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3483bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2160bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3717bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2394bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3951bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2628bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3609bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2286bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3843bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3672bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2349bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1602bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3735bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3564bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2241bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3798bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2475bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing4032bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2709bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3690bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2367bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3924bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2601bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3582bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3987bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2664bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3645bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2322bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3879bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2556bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3537bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2214bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3771bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3600bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2277bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1530bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3663bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3492bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2169bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1422bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3555bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3960bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2637bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3618bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2295bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3852bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2529bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3510bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2187bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3744bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3573bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2250bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3807bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2484bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3465bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2142bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3699bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3528bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2205bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1458bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3591bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3996bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2673bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1350bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3483bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3888bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2565bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3546bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2223bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3780bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2457bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing4014bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2691bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3672bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3501bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2178bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3735bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2412bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3969bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2646bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3627bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2304bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing3861bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing2538bFlush0retry0
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing1911bFlush0retry0
close
  REQUEST_CLOSE
    fullstop
1
uFrames
1323uFramesPadding0uFramesWrite1323uFramesRing588bFlush1retry0
  REQUEST_END
    min free reqests
(12)
    
min free results(12)
  
stopping audio client
  destroying ring buffer
  destroying audio render client
  destroying audio clock
  destroying audio client 
Cool Barn is offline   Reply With Quote
Old 23rd November 2015, 19:57   #134
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Quote:
Originally Posted by pbelkner View Post
Could you please use the above referenced debug version
http://out-yasapi.sourceforge.net/up...debug-0.9.3.7z
and produce a trace from the end of that particular song? For that reason you can probably jump (seek) to the end of the song.
I get the same issue; playback won't start and I see those same four lines in the console window repeat indefinitely. I did notice that playback starts if I seek.

Here is what I get at the end of the song:
code:
canwrite
REQUEST_CANWRITE
isplaying
REQUEST_ISPLAYING
canwrite
REQUEST_CANWRITE
isplaying
REQUEST_ISPLAYING
getoutputtime
REQUEST_GETTIME
REQUEST_READ
uFrames: 3528, uFramesPadding: 792, uFramesWrite: 2736, uFramesRing: 0, bFlush:
1, retry: 0
canwrite
REQUEST_CANWRITE
isplaying
REQUEST_ISPLAYING
close
REQUEST_CLOSE
fullstop: 0
REQUEST_READ
REQUEST_END
min free reqests: 10 (12)
min free results: 9 (12)
stopping audio client
destroying ring buffer
destroying audio render client
destroying audio clock
destroying audio client

djnforce9 is offline   Reply With Quote
Old 24th November 2015, 03:33   #135
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
PHP Code:
isplaying
  REQUEST_ISPLAYING 
See you those "ispalying" lines from the beginning?

PHP Code:
uFrames3528uFramesPadding792uFramesWrite2736uFramesRing0bFlush1retry
See you those lines from time to time or only after stopping playback?

Appears a "audio client started" at the beginning as usual?

PHP Code:
  audio client started 
Note: uFramesPadding / uFramesWrite should be 50% / 50%.
pbelkner is offline   Reply With Quote
Old 24th November 2015, 12:49   #136
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Quote:
Originally Posted by pbelkner View Post
See you those "ispalying" lines from the beginning?
Checked again and this time I could not see them at all.

Quote:
Originally Posted by pbelkner View Post
See you those lines from time to time or only after stopping playback?
I see them from time to time

Quote:
Originally Posted by pbelkner View Post
Appears a "audio client started" at the beginning as usual
I do see audio client started. Here is another log where I played something very briefly and stopped.

PHP Code:
init
  properties
"C:\Winamp\Plugins\out_yasapi-debug.ini"
  
option "debug"(0)
  
option "id""{0.0.0.00000000}.{ad85f454-77f5-4f51-bc37-d303078c4d48}" ("")
  
option "mono2stereo"(1)
  
option "volume"(0)
  
option "audioclock"(1)
  
option "page"(0)
  
option "posx"617 (-1)
  
option "posy"284 (0)
  
option "sleep"5000 (5000)
  
plugin options created
  queue available semaphore created
  queue written semaphore created
  queue mutex created
  queue created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
    result event created
  store result created
  store mutex created
  store available semaphore created
  store created
  event created
  waitable timer created
  thread created
  REQUEST_CREATE
  device enumerator created
  device collection created
  got device count
1
  player 
array allocated
    player device created
    id
"{0.0.0.00000000}.{ad85f454-77f5-4f51-bc37-d303078c4d48}"
    
player property store created
    name
"Speakers (3- LH Labs Geek Pulse)"
    
option "share_mode"(2)
    
option "device_period"(0)
    
option "autoconvertpcm"(1)
    
option "src_default_quality"(0)
    
option "pull"(0)
    
option "ring_size"1.500000 (1.500000)
    
option "ring_fill"1.000000 (1.000000)
    
option "share_size"1.000000 (1.000000)
    
player options created
  player 0 created
  device
"Speakers (3- LH Labs Geek Pulse)"
  
loop started
setvolume
  volume
1.00
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  audio client initialized
  audio clock created
  got buffer size
3528 frames
  audio render client created
  ring buffer size
5760 frames (1.63)
  
ring buffer created
canwrite
  REQUEST_CANWRITE
write
  REQUEST_WRITE
canwrite
  REQUEST_CANWRITE
getoutputtime
  REQUEST_GETTIME
getoutputtime
  REQUEST_GETTIME
getoutputtime
  REQUEST_GETTIME
getoutputtime
  REQUEST_GETTIME
write
  REQUEST_WRITE
canwrite
  REQUEST_CANWRITE
write
  REQUEST_WRITE
canwrite
  REQUEST_CANWRITE
getoutputtime
  REQUEST_GETTIME
write
  REQUEST_WRITE
getoutputtime
getoutputtime
  audio client started
  REQUEST_GETTIME
canwrite
  REQUEST_GETTIME
  REQUEST_CANWRITE
getoutputtime
  REQUEST_GETTIME
close
  REQUEST_CLOSE
    fullstop
1
uFrames
3528uFramesPadding0uFramesWrite3528uFramesRing4079bFlush:
 
1retry0
  REQUEST_READ
  REQUEST_END
    min free reqests
10 (12)
    
min free results(12)
  
stopping audio client
  destroying ring buffer
  destroying audio render client
  destroying audio clock
  destroying audio client 
EDIT: It's strange how playback does start if I seek; it only stalls when I first play the song.

Last edited by djnforce9; 24th November 2015 at 13:51.
djnforce9 is offline   Reply With Quote
Old 24th November 2015, 18:50   #137
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
Exclusive Mode, Pull, Max Buffer Sizes
This scenario I cannot test myself because I don't have a device supporting it. It's interesting to see it working with the new release! The last time we had the following error reported by "chros":
Quote:
Originally Posted by chros View Post
Exclusive + Pull crashes Winamp (normal and sse version)
PHP Code:
AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED
Error initializing audio client 
(modeEXCLUSIVE): "yasapi_player.c" (301).
Error creating player"out_yasapi.c" (146). 
For now I don't have any idea why it seems to loop forever. Possibly we need some more tracing.
pbelkner is offline   Reply With Quote
Old 24th November 2015, 19:02   #138
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
It's strange how playback does start if I seek; it only stalls when I first play the song.
I need to provide a new debug version which provides further information.
pbelkner is offline   Reply With Quote
Old 25th November 2015, 09:38   #139
chros
Member
 
chros's Avatar
 
Join Date: Nov 2003
Posts: 69
Thanks Peter for the new versions!
bugs (I don't have logs this time, I didn't have time to do them):
1. with the default buffer settings I don't have any playback at all in any output combination (E-push, E-pull, S-pull, S-push): the player just hangs (though there's no force close this time at all)
2. If I modify the buffers to (from top to bottom): 2.0 , 1.5 , 1.0 , then only E-push mode is working not the rest 3 (player hangs, like in point 1.). (so probably it's a buffer problem)
3. UI bugs (cosmetics):
- when you hit the default button on the middle tab, the settings on the buffer tab won't change (it happened after using the new version)
chros is offline   Reply With Quote
Old 26th November 2015, 13:05   #140
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Quote:
Originally Posted by pbelkner View Post
I need to provide a new debug version which provides further information.
No problem, I'll provide the trace when you're ready.
djnforce9 is offline   Reply With Quote
Old 26th November 2015, 13:17   #141
Digiti
Junior Member
 
Join Date: Feb 2003
Posts: 21
v0.9.1 works for me

I am using default buffers, Push, device period default, share mode automatic and auto convert pcm. It sounds very nice. Thanks for the great work.
Digiti is offline   Reply With Quote
Old 27th November 2015, 14:33   #142
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Wonder if this may help. My DAC has an LED display that shows me the current sampling rate. If I played a song at 48Khz followed by one that stalls and is a different sampling rate the previous track, my DAC still shows 48Khz until I do the trick where I seek in order to get it playing in which case the sampling rate on the display changes. The stalling is not from sampling rate changes alone though as it does not happen with every file; just something I noticed.

Hopefully it helps narrow things down a bit.

EDIT: Another issue I found is files that are 32Khz will not play at all (I get unsupported format even in "Automatic" mode); older versions would switch to "shared" first to play those files.
djnforce9 is offline   Reply With Quote
Old 29th November 2015, 13:26   #143
Raj_09
Member
 
Raj_09's Avatar
 
Join Date: Oct 2011
Location: Melbourne Australia
Posts: 81
Pretty sure I am the first one using the version 0.10. Downloaded it less than 30m since it has been uploaded to Sourceforge. It is working flawlessly and I love the implementation of the graphical progress bars for the buffers. @pbelkner Nice work!

Powering through with the bolt
Raj_09 is offline   Reply With Quote
Old 29th November 2015, 13:47   #144
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
v0.10.0

What's new?
  • Reorganized configuration of device period.
  • Added progess bars to the configuration dialog in order to visualize the load of the ring and the shared buffers.
  • Added an option for dis-/enabling the visualization.
  • Added an (experimental) function for balancing the shared buffer.
  • Added some more tracing to the debug version.
  • Split the verbose debugging into verbose level 1 ond and level 2 (even more verbose).

EDIT: Please try the new default settings!

Links:
Quote:
Originally Posted by Raj_09 View Post
Pretty sure I am the first one using the version 0.10. Downloaded it less than 30m since it has been uploaded to Sourceforge. It is working flawlessly and I love the implementation of the graphical progress bars for the buffers. @pbelkner Nice work!
pbelkner is offline   Reply With Quote
Old 29th November 2015, 14:16   #145
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Please provide a trace with your bug report

Quote:
Originally Posted by Digiti View Post
I am using default buffers, Push, device period default, share mode automatic and auto convert pcm. It sounds very nice. Thanks for the great work.
Quote:
Originally Posted by Raj_09 View Post
It is working flawlessly
The same holds for me. I've no problem with any version I've ever published. I don't want to say that the bugs don't exist but it's hard to find them if you can't re-produce them. For that reason I've created the debug version and I ask you to provide a trace (verbose level 1) with your bug report. Start with "open" and copy it into PHP tags (they provide sliders). It should look similar to the following:
PHP Code:
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  intitializing audio client with 100000
/0 hns
  audio client initialized
  share mode
EXCLUSIVE
  audio clock created
  SHARED BUFFER SIZE
2048 frames
  START AUDIO CLIENT
2304 frames
  audio render client created
  RING BUFFER SIZE
3456 frames (1.69)
  
ring buffer created
  uFramesAvailable
576uFramesMin2304 (3456)
  
uFramesAvailable1152uFramesMin2304 (3456)
  
uFramesAvailable1728uFramesMin2304 (3456)
  
uFramesAvailable2304uFramesMin2304 (3456)
  
uFrames2048uFramesPadding0uFramesWrite2048uFramesRing2304q0.50bFlush0
  audio client started
  uFrames
2048uFramesPadding1258uFramesWrite790uFramesRing3136q0.50bFlush0
  uFrames
2048uFramesPadding944uFramesWrite1104uFramesRing2922q0.50bFlush0
  uFrames
2048uFramesPadding944uFramesWrite1104uFramesRing2970q0.50bFlush0
  uFrames
2048uFramesPadding946uFramesWrite1102uFramesRing3018q0.50bFlush0
  uFrames
2048uFramesPadding945uFramesWrite1103uFramesRing3068q0.50bFlush0
  uFrames
2048uFramesPadding945uFramesWrite1103uFramesRing3117q0.50bFlush0
  uFrames
2048uFramesPadding948uFramesWrite1100uFramesRing3166q0.50bFlush0
  uFrames
2048uFramesPadding946uFramesWrite1102uFramesRing3218q0.50bFlush0
  uFrames
2048uFramesPadding944uFramesWrite1104uFramesRing3268q0.50bFlush0
  uFrames
2048uFramesPadding947uFramesWrite1101uFramesRing3316q0.50bFlush
Especially I'm interested in a trace from a scenario with stalling.
Quote:
Originally Posted by chros View Post
Thanks Peter for the new versions!
bugs (I don't have logs this time, I didn't have time to do them):
Paper (trace) or it doesn't happen.
Quote:
Originally Posted by djnforce9 View Post
Another issue I found is files that are 32Khz will not play at all (I get unsupported format even in "Automatic" mode); older versions would switch to "shared" first to play those files.
Please double check. The following is 32.000 Hz in automatic mode. Please note AUDCLNT_E_ENDPOINT_CREATE_FAILED in exclusive mode and then recovering in shared mode:
PHP Code:
open
  wasapi clock
  REQUEST_OPEN
  samplerate
32000
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  intitializing audio client with 100000
/0 hns
  failed with AUDCLNT_E_ENDPOINT_CREATE_FAILED
  destroying audio client
  retrying in shared mode
  audio client created
  intitializing audio client with 100000
/0 hns
  audio client initialized
  share mode
SHARED
  audio clock created
  SHARED BUFFER SIZE
646 frames
  START AUDIO CLIENT
1152 frames
  audio render client created
  RING BUFFER SIZE
1152 frames (1.78)
  
ring buffer created
  uFramesAvailable
576uFramesMin1152 (1152)
  
uFramesAvailable1152uFramesMin1152 (1152)
  
uFrames646uFramesPadding0uFramesWrite646uFramesRing1152q0.50bFlush0
  audio client started
  uFrames
646uFramesPadding320uFramesWrite326uFramesRing1082q0.50bFlush0
  uFrames
646uFramesPadding6uFramesWrite640uFramesRing756q0.50bFlush0
  uFrames
646uFramesPadding326uFramesWrite116uFramesRing116q0.50bFlush0
  uFrames
646uFramesPadding122uFramesWrite524uFramesRing1152q0.50bFlush0
  uFrames
646uFramesPadding326uFramesWrite320uFramesRing628q0.50bFlush0
  uFrames
646uFramesPadding326uFramesWrite320uFramesRing884q0.50bFlush0
  uFrames
646uFramesPadding6uFramesWrite640uFramesRing1140q0.50bFlush0
  uFrames
646uFramesPadding326uFramesWrite320uFramesRing500q0.50bFlush
pbelkner is offline   Reply With Quote
Old 29th November 2015, 14:37   #146
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
I do see audio client started. Here is another log where I played something very briefly and stopped.

EDIT: It's strange how playback does start if I seek; it only stalls when I first play the song.
Could you please retry this with the new version?
pbelkner is offline   Reply With Quote
Old 29th November 2015, 21:36   #147
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
All my issues with the previous version have been totally rectified by the current version, and Winamp sounds fantastic. Great job Peter!

Edit: While listening to a song I did get a "AUDCLNT_E_BUFFER_TOO_LARGE" error, but once again increasing all the buffers to the right hand side fixed this.

Do buffer settings affect sound quality at all, or only the time needed to read/start/stop songs?

Edit 2: Looks like I spoke too soon. Only plays FLAC files, does not play MP3.
Cool Barn is offline   Reply With Quote
Old 30th November 2015, 00:27   #148
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Please provide a trace for each of the bugs you observe:
http://sourceforge.net/projects/out-....0.7z/download
It is close to impossible to resolve a bug by "pure thinking" when you cannot re-produce it.
Quote:
Originally Posted by Cool Barn View Post
While listening to a song I did get a "AUDCLNT_E_BUFFER_TOO_LARGE" error, but once again increasing all the buffers to the right hand side fixed this.
Try to avoid this. Try to use just the top one (device period) and leave the bottom two as they are (ring buffer).
Quote:
Originally Posted by Cool Barn View Post
Do buffer settings affect sound quality at all, or only the time needed to read/start/stop songs?
No. It just increases latency, i.e. the delay from being decoded until you here it.
Quote:
Originally Posted by Cool Barn View Post
Looks like I spoke too soon. Only plays FLAC files, does not play MP3.
Again, please provide traces, one for AUDCLNT_E_BUFFER_TOO_LARGE and one for stalling.
pbelkner is offline   Reply With Quote
Old 30th November 2015, 02:47   #149
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
I restarted Winamp, reset to default, and now once more it seems to be fine!

I will hold on to that trace debug file though in case it plays up again, and will post here if it does.

Thank you so much for your continued assistance on this plugin, much appreciated
Cool Barn is offline   Reply With Quote
Old 30th November 2015, 04:08   #150
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
I restarted Winamp, reset to default, and now once more it seems to be fine!
When it works, try to reduce the device period as much as possible in order to reduce latency.
pbelkner is offline   Reply With Quote
Old 30th November 2015, 06:38   #151
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
Quote:
Originally Posted by pbelkner View Post
When it works, try to reduce the device period as much as possible in order to reduce latency.
Fair enough mate, I will give it a go.

I have a question though - you have stated that adjusting the buffer sizes does NOT affect sound quality whatsoever and only the latency. My question is if we're dealing with milliseconds - what difference does latency really matter? Why should we reduce the latency when you essentially won't notice the difference in real time and would basically need a computer program to measure this exact difference?

Or is it going to be noticeable after all?

Thanks
Cool Barn is offline   Reply With Quote
Old 30th November 2015, 07:44   #152
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Cool Barn View Post
if we're dealing with milliseconds - what difference does latency really matter?
As far as I can see latency really matters for musicians who monitor their music while e.g. recording. That's not the case while playing music with Winamp and you're right it doesn't really matter.

Each audio interface (DirectSound, ASIO ...) introduces some latency due to buffers. It's in their very nature because they need to decouple input from output via buffers. Latency is the time the audio needs to "flow" through the buffers and it's good style to reduce the buffer size to a minimum (ideally to zero) just enough to "buffer away" fluctuations from writing the input and reading the output.

A buffer should e.g avoid a situation where the output needs to read and there's no input available. In such a situation you would here pops and glitches.

If there where no fluctuations we would hardly need any buffers at all.
pbelkner is offline   Reply With Quote
Old 30th November 2015, 08:34   #153
Cool Barn
Junior Member
 
Join Date: Jul 2010
Posts: 14
Interesting, thank you
Cool Barn is offline   Reply With Quote
Old 30th November 2015, 12:58   #154
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Thanks for the new version.

Certain songs still hang for me regardless of my settings such as this one (balance buffers does not resolve it):
https://www.dropbox.com/s/njkr9g3e3u...%20Me.mp3?dl=0

here is the trace when that happens:

PHP Code:
init
  plugin options created
  queue available semaphore created
  queue written semaphore created
  queue mutex created
  queue created
  store mutex created
  store available semaphore created
  store created
  event created
  waitable timer created
  thread created
  REQUEST_CREATE
  device enumerator created
  device collection created
  got device count
1
  player 
array allocated
    player device created
    id
"{0.0.0.00000000}.{ad85f454-77f5-4f51-bc37-d303078c4d48}"
    
player property store created
    name
"Speakers (3- LH Labs Geek Pulse)"
    
player options created
  player 0 created
  device
"Speakers (3- LH Labs Geek Pulse)"
  
loop started
setvolume
  volume
1.00
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  intitializing audio client with 100000
/0 hns
  audio client initialized
  share mode
EXCLUSIVE
  audio clock created
  SHARED BUFFER SIZE
3528 frames
  START AUDIO CLIENT
4032 frames
  audio render client created
  RING BUFFER SIZE
5760 frames (1.63)
  
ring buffer created
  uFramesAvailable
47uFramesMin4032 (5760)
  
uFramesAvailable312uFramesMin4032 (5760)
  
uFramesAvailable1199uFramesMin4032 (5760)
  
uFramesAvailable1464uFramesMin4032 (5760)
  
uFramesAvailable2351uFramesMin4032 (5760)
  
uFramesAvailable2616uFramesMin4032 (5760)
  
uFramesAvailable3503uFramesMin4032 (5760)
  
uFramesAvailable3768uFramesMin4032 (5760)
close
  REQUEST_CLOSE
    fullstop
1
  REQUEST_END
    min free reqests
10 (12)
    
min free results10 (12)
  
destroying ring buffer
  destroying audio render client
  destroying audio clock
  destroying audio client 
The song hangs at the line immediately before the word "close" in the above log. Also, the seek trick to get playback going does not work with the above song either.

EDIT: It seems many of my MP3 files have this same issue and when I play chip tunes such as .nsf files (uses Notso Fatso's NSF plugin), Winamp freezes after I stop playback or change songs; this never happened with the previous version of your plugin.

Last edited by djnforce9; 30th November 2015 at 15:05.
djnforce9 is offline   Reply With Quote
Old 30th November 2015, 15:29   #155
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
Certain songs still hang for me regardless of my settings
On my site there's no such problem. The final step in filling the buffer is from 3768 to 4655 frames. After this step there are more frames in the buffer then the threshold of 4608 (4032 in your case) and the audio client starts as expected:
PHP Code:
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  device period scaled by 7.00 
(device period700400)
  
intitializing audio client with 700400/0 hns
  audio client initialized
  share mode
EXCLUSIVE
  audio clock created
  SHARED BUFFER SIZE
4096 frames
  START AUDIO CLIENT
4608 frames
  audio render client created
  RING BUFFER SIZE
6336 frames (1.55)
  
ring buffer created
  uFramesAvailable
47uFramesMin4608 (6336)
  
uFramesAvailable312uFramesMin4608 (6336)
  
uFramesAvailable1199uFramesMin4608 (6336)
  
uFramesAvailable1464uFramesMin4608 (6336)
  
uFramesAvailable2351uFramesMin4608 (6336)
  
uFramesAvailable2616uFramesMin4608 (6336)
  
uFramesAvailable3503uFramesMin4608 (6336)
  
uFramesAvailable3768uFramesMin4608 (6336)
  
uFramesAvailable4655uFramesMin4608 (6336)
  
uFrames4096uFramesPadding0uFramesWrite4096uFramesRing4655q0.50bFlush0
  audio client started
  uFrames
4096uFramesPadding2320uFramesWrite1776uFramesRing5432q0.50bFlush0
  uFrames
4096uFramesPadding2025uFramesWrite2071uFramesRing5960q0.50bFlush0
  uFrames
4096uFramesPadding2020uFramesWrite2076uFramesRing5732q0.50bFlush
The step from 3768 to 4655 frames should be possible in your case as well because your ring buffer is configurated to hold up to 5760 frames.

The only thing I can propose for now is to have a another, deeper look into what's going on. Before writing the next batch Winamp issues a "canwrite" request which should return the available/free space in bytes. The only thing I can imagine is that Winamp comes to the conclusion that there's not enough space because of such a "canwrite" call and from then on forever issues "canwrite" calls.

In order to test this I have introduced further trace information into a new debug version which you can download from here. In "verbose 2" level the new debug version traces what YASAPI replys to "canwrite":
PHP Code:
open
  wasapi clock
  REQUEST_OPEN
  samplerate
44100
  numchannels
2
  bitspersamp
24
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  device period scaled by 7.00 
(device period700400)
  
intitializing audio client with 700400/0 hns
  audio client initialized
  share mode
EXCLUSIVE
  audio clock created
  SHARED BUFFER SIZE
4096 frames
  START AUDIO CLIENT
4608 frames
  audio render client created
  RING BUFFER SIZE
6336 frames (1.55)
  
ring buffer created
canwrite
getoutputtime
  REQUEST_CANWRITE
  free
6336 frames (38016 bytes)
getoutputtime
  REQUEST_GETTIME
canwrite
  REQUEST_GETTIME
  REQUEST_CANWRITE
  free
6336 frames (38016 bytes)
write
  REQUEST_WRITE
  uFramesAvailable
47uFramesMin4608 (6336)
write
  REQUEST_WRITE
  uFramesAvailable
312uFramesMin4608 (6336)
canwrite
  REQUEST_CANWRITE
  free
6024 frames (36144 bytes)
write
  REQUEST_WRITE
  uFramesAvailable
1199uFramesMin4608 (6336)
write
  REQUEST_WRITE
  uFramesAvailable
1464uFramesMin4608 (6336)
canwrite
  REQUEST_CANWRITE
  free
4872 frames (29232 bytes)
getoutputtime
write
getoutputtime
  REQUEST_GETTIME
  REQUEST_WRITE
  uFramesAvailable
2351uFramesMin4608 (6336)
  
REQUEST_GETTIME
write
  REQUEST_WRITE
  uFramesAvailable
2616uFramesMin4608 (6336)
canwrite
  REQUEST_CANWRITE
  free
3720 frames (22320 bytes)
write
  REQUEST_WRITE
  uFramesAvailable
3503uFramesMin4608 (6336)
write
  REQUEST_WRITE
  uFramesAvailable
3768uFramesMin4608 (6336)
canwrite
  REQUEST_CANWRITE
  free
2568 frames (15408 bytes)
write
  REQUEST_WRITE
  uFramesAvailable
4655uFramesMin4608 (6336)
  
uFrames4096uFramesPadding0uFramesWrite4096uFramesRing4655q0.50bFlush0
getoutputtime
  audio client started 
It would be great if you could provide a such a "verbose 2" trace with the new debug version.
pbelkner is offline   Reply With Quote
Old 30th November 2015, 15:51   #156
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
EDIT: It seems many of my MP3 files have this same issue and when I play chip tunes such as .nsf files (uses Notso Fatso's NSF plugin), Winamp freezes after I stop playback or change songs; this never happened with the previous version of your plugin.
I've changed one thing with 0.9.0 which potentially may interfere with other plugins. In the "Out_Module" structure of the WA SDK you have to provide a module id. In the old versions I've not changed the module id from WA's example "out_null", i.e. 65. On the module id WA/Nullsoft comments
PHP Code:
each input module gets its ownnon-nullsoft modules should be >= 65536. 
For the new versions of the plugin I've provided completely random ids:
PHP Code:
out_yasapi.dll65536+855
out_yasapi
-sse2.dll65536+856
out_yasapi
-debug.dll65536+857 
pbelkner is offline   Reply With Quote
Old 30th November 2015, 16:12   #157
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
Certain songs still hang for me regardless of my settings such as this one
What happens if you increase the size of the ring buffer?

Edit: I strongly suggest to increase the size of the ring buffer. Before v0.9 the default setting was was 4.0 times the shared buffer now it is just 1.5 times.

Last edited by pbelkner; 30th November 2015 at 17:46.
pbelkner is offline   Reply With Quote
Old 30th November 2015, 17:56   #158
djnforce9
Junior Member
 
Join Date: Feb 2014
Posts: 40
Increasing the ring buffer resolves the issue where playback would not start on certain MP3's so thanks for that. To clarify, when I said "regardless of my settings", I meant under "Device Options".

However, the crash upon stopping playback for other plugins still persists even with the larger ring buffer size; here is a trace from when I first opened Winamp to when I pressed stop and Winamp froze:
PHP Code:
init
  plugin options created
  queue available semaphore created
  queue written semaphore created
  queue mutex created
  queue created
  store mutex created
  store available semaphore created
  store created
  event created
  waitable timer created
  thread created
  REQUEST_CREATE
  device enumerator created
  device collection created
  got device count
1
  player 
array allocated
    player device created
    id
"{0.0.0.00000000}.{ad85f454-77f5-4f51-bc37-d303078c4d48}"
    
player property store created
    name
"Speakers (3- LH Labs Geek Pulse)"
    
player options created
  player 0 created
  device
"Speakers (3- LH Labs Geek Pulse)"
  
loop started
setvolume
  volume
0.12
flush
open
  wasapi clock
  REQUEST_OPEN
  samplerate
96000
  numchannels
2
  bitspersamp
16
  audio client created
  got device period
    
default: 100000 hns
    minimum
30000 hns
    choosen
100000 hns
  intitializing audio client with 100000
/0 hns
  audio client initialized
  share mode
EXCLUSIVE
  audio clock created
  SHARED BUFFER SIZE
7680 frames
  START AUDIO CLIENT
8064 frames
  audio render client created
  RING BUFFER SIZE
15552 frames (2.02)
  
ring buffer created
  uFramesAvailable
575uFramesMin8064 (15552)
  
uFramesAvailable1151uFramesMin8064 (15552)
  
uFramesAvailable1727uFramesMin8064 (15552)
  
uFramesAvailable2303uFramesMin8064 (15552)
  
uFramesAvailable2879uFramesMin8064 (15552)
  
uFramesAvailable3455uFramesMin8064 (15552)
  
uFramesAvailable4031uFramesMin8064 (15552)
  
uFramesAvailable4607uFramesMin8064 (15552)
  
uFramesAvailable5183uFramesMin8064 (15552)
  
uFramesAvailable5759uFramesMin8064 (15552)
  
uFramesAvailable6335uFramesMin8064 (15552)
  
uFramesAvailable6911uFramesMin8064 (15552)
  
uFramesAvailable7487uFramesMin8064 (15552)
  
uFramesAvailable8063uFramesMin8064 (15552)
  
uFramesAvailable8639uFramesMin8064 (15552)
  
uFrames7680uFramesPadding0uFramesWrite7680uFramesRing8639q0.
50
bFlush0
  audio client started
  uFrames
7680uFramesPadding4800uFramesWrite2880uFramesRing14782q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing11902q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14974q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing11134q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14781q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing12093q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14589q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14781q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing10941q
0.50bFlush0
  uFrames
7680uFramesPadding2880uFramesWrite4800uFramesRing14588q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing9788q:
 
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14588q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing11324q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14971q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing12283q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14779q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing12667q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14586q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14202q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14970q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14586q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing10746q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14969q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing11129q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14777q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14969q
0.50bFlush0
  uFrames
7680uFramesPadding2880uFramesWrite4800uFramesRing11129q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14392q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14584q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14776q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing10936q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing14583q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing11319q
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing8055q:
 
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite3840uFramesRing4215q:
 
0.50bFlush0
  uFrames
7680uFramesPadding3840uFramesWrite375uFramesRing375q0
.50
bFlush
Nothing else gets written to the log when I press stop; it just locks up completely.


EDIT: This does not happen with all input plugins. So far just playing NSF files through the NotSo Fatso plugin and the latest version of Yasapi crashes Winamp.
djnforce9 is offline   Reply With Quote
Old 30th November 2015, 18:51   #159
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
Increasing the ring buffer resolves the issue where playback would not start on certain MP3's
That's fine. Could you please let me know the minimum setting for the ring buffer size which works for you in order that I can make it the default?
Quote:
Originally Posted by djnforce9 View Post
So far just playing NSF files through the NotSo Fatso plugin and the latest version of Yasapi crashes Winamp.
From where do I get this plugin? From where do I get such files?
pbelkner is offline   Reply With Quote
Old 1st December 2015, 03:13   #160
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by djnforce9 View Post
This does not happen with all input plugins. So far just playing NSF files through the NotSo Fatso plugin and the latest version of Yasapi crashes Winamp.
What's strange with your NSF trace is that there's no "close" request. If you compare the trace with other traces where you stop playing manually you see immediately a "close" request. If the plugin receives a "close" request it immediately writes it to the trace just before it possibly does something wrong. From that I conclude that it may in fact not receive one or put it the other way round that the NSF input plugin for some reason may not issue one. Viewed this way the changed module id may in fact be the reason for the changed behavior.

In order to test it I've compiled a version with the old (wrong) module id 65 you can download here. Could you please give it a try?
pbelkner 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