Announcement

Collapse
No announcement yet.

Yet Another (WA)SAPI Output Plugin for Winamp (YASAPI)

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Interesting, thank you

    Comment


    • 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):


      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; 30 November 2015, 15:05.

      Comment


      • 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.
        Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

        Comment


        • 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 
          Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

          Comment


          • 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; 30 November 2015, 17:46.
            Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

            Comment


            • 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.

              Comment


              • 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?
                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?
                Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

                Comment


                • 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?
                  Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

                  Comment


                  • Just tried out 0.10 in Shared+Push mode yesterday with the default settings: it's working fine! (I didn't have time for more testing.) Thanks, Peter.
                    I still need the Default Audio device in the device list.
                    (I use ClockAmp to wake up my laptop in the morning, and a wget command line for switching on my avreceiver. The problem is: whenever I start winamp when my TV is on (sometimes in the night, for the next morning), there's only the TV as audio device appears in the list, but in the morning there's not TV but avreceiver, so winamp can't use the only selected TV audio device -> no sound -> maybe I'll be late from work System default would solve this problem.)
                    Thanks
                    Winamp 5.581 (DirectSound out) + ClockAmp 2.6 + mp3cue 5.0
                    MSI GE60(i73630QM,16GB,IntelHD4000(v10.18.10.4358)+GeForceGT650m(2GB,v355.98)+muxless,1920x1080@60Hz,Plextor M5M 256GB SSD,Win8.1x64+MPC-HCx64+LAV+MadVR)+Yamaha RX-830+LG 55LD650(1080p@24/25/30/60Hz)

                    Comment


                    • Did another trace with the NSF file using the debug version you attached. Winamp locks up before it sends the "close" command (although thankfully the debug window does not freeze along with Winamp).

                      Here is another case where I play an NSF for a while and then hit stop.

                      PHP Code:
                        uFrames7680uFramesPadding3840uFramesWrite3840uFramesRing13417q
                      0.50bFlush0
                        REQUEST_CANWRITE
                        free
                      5975 frames (23900 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      5400 frames (21600 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4824 frames (19296 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4248 frames (16992 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3672 frames (14688 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3096 frames (12384 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2520 frames (10080 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1944 frames (7776 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1368 frames (5472 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      792 frames (3168 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing14760q
                      0.50bFlush0
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4632 frames (18528 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4056 frames (16224 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3480 frames (13920 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2904 frames (11616 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2328 frames (9312 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1752 frames (7008 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing13800q
                      0.50bFlush0
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      5016 frames (20064 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4440 frames (17760 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3864 frames (15456 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3288 frames (13152 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2712 frames (10848 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2136 frames (8544 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1560 frames (6240 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      984 frames (3936 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing14568q
                      0.50bFlush0
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4824 frames (19296 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4248 frames (16992 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3672 frames (14688 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3096 frames (12384 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2520 frames (10080 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1944 frames (7776 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1368 frames (5472 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding2880uFramesWrite4800uFramesRing14184q
                      0.50bFlush0
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      5592 frames (22368 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      5016 frames (20064 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4440 frames (17760 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3864 frames (15456 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3288 frames (13152 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2712 frames (10848 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2136 frames (8544 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1560 frames (6240 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      985 frames (3940 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing14567q
                      0.50bFlush0
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4825 frames (19300 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4249 frames (16996 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3673 frames (14692 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3097 frames (12388 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2521 frames (10084 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1945 frames (7780 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing13607q
                      0.50bFlush0
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      5209 frames (20836 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4633 frames (18532 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      4057 frames (16228 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      3481 frames (13924 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2905 frames (11620 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      2329 frames (9316 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1753 frames (7012 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      1177 frames (4708 bytes)
                      write
                        REQUEST_WRITE
                      canwrite
                        REQUEST_CANWRITE
                        free
                      601 frames (2404 bytes)
                        
                      REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing14951q
                      0.50bFlush0
                        REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing11111q
                      0.50bFlush0
                        REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3840uFramesRing7271q:
                       
                      0.50bFlush0
                        REQUEST_READ
                        uFrames
                      7680uFramesPadding3840uFramesWrite3431uFramesRing3431q:
                       
                      0.50bFlush0
                        REQUEST_READ 
                      If you want to try for yourself, the plugin is here:


                      And you can grab an NSF file here:


                      Thank you so much for the effort in resolving this; much appreciated .

                      EDIT: All songs play with a ring buffer of 1.64 or more; any less and certain songs will stall.

                      Comment


                      • Originally Posted by djnforce9 View Post
                        If you want to try for yourself, the plugin is here:


                        And you can grab an NSF file here:
                        http://www.zophar.net/music/nsf.html
                        Fortunately I can reproduce the bug.
                        Originally Posted by djnforce9 View Post
                        Thank you so much for the effort in resolving this; much appreciated .
                        It is interesting for me too.
                        Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

                        Comment


                        • Sounds good; glad you're enjoying developing the plugin; not too many Winamp plugin developers left but I believe that will change once Winamp re-surfaces again.

                          Anyway, I noticed that that files with a sample rate of 32Khz or lower will not play even in automatic mode; here are a couple example files:




                          EDIT: They play in "shared" mode but stutter like crazy.

                          Comment


                          • 1. Can't playback in Exclusive-Pull:
                            PHP Code:
                            setvolume
                              volume
                            0.06
                            open
                              wasapi clock
                              REQUEST_OPEN
                              samplerate
                            44100
                              numchannels
                            2
                              bitspersamp
                            16
                              audio client created
                              intitializing audio client with 0
                            /0 hns
                            AUDCLNT_E_BUFFER_SIZE_ERROR
                            "yasapi_session.c" (265).
                            Error initializing audio client"yasapi_session.c" (279). 
                            2. Can't playback in Shared-Pull (it was working in 0.8.x):
                            PHP Code:
                            open
                              wasapi clock
                              REQUEST_OPEN
                              samplerate
                            44100
                              numchannels
                            2
                              bitspersamp
                            16
                              audio client created
                              intitializing audio client with 0
                            /0 hns
                              audio client initialized
                              share mode
                            SHARED
                              event handle set
                              audio clock created
                              SHARED BUFFER SIZE
                            896 frames
                              START AUDIO CLIENT
                            1152 frames
                              audio render client created
                              RING BUFFER SIZE
                            1728 frames (1.93)
                              
                            ring buffer created
                            canwrite
                              REQUEST_CANWRITE
                              free
                            1728 frames (6912 bytes)
                            getoutputtime
                              REQUEST_GETTIME
                            write
                              REQUEST_WRITE
                              uFramesAvailable
                            623uFramesMin1152 (1728)
                            canwrite
                              REQUEST_CANWRITE
                              free
                            1105 frames (4420 bytes)
                            getoutputtime
                              REQUEST_GETTIME
                            getoutputtime
                              REQUEST_GETTIME
                            canwrite
                              REQUEST_CANWRITE
                              free
                            1105 frames (4420 bytes)
                            getoutputtime
                              REQUEST_GETTIME
                            canwrite
                              REQUEST_CANWRITE
                              free
                            1105 frames (4420 bytes)
                            getoutputtime
                              REQUEST_GETTIME
                            ........... 
                            Originally Posted by djnforce9 View Post
                            Anyway, I noticed that that files with a sample rate of 32Khz or lower will not play even in automatic mode; here are a couple example files:




                            EDIT: They play in "shared" mode but stutter like crazy.
                            3.I can't play them with Exclusive-Push mode, but only with Shared-Push mode (and the playback is good without any stuttering, using the default settings).
                            Someday exclusive-push:
                            PHP Code:
                            setvolume
                              volume
                            0.06
                            open
                              wasapi clock
                              REQUEST_OPEN
                              samplerate
                            22050
                              numchannels
                            2
                              bitspersamp
                            16
                              audio client created
                              got device period
                                
                            default: 101587 hns
                                minimum
                            30000 hns
                                choosen
                            101587 hns
                              device period scaled by 7.00 
                            (device period711515)
                              
                            intitializing audio client with 711515/0 hns
                            AUDCLNT_E_ENDPOINT_CREATE_FAILED
                            "yasapi_session.c" (269).
                            Error initializing audio client"yasapi_session.c" (279). 
                            Air Force Come and Dey Flatten Your Home exclusive-push:
                            PHP Code:
                            setvolume
                              volume
                            0.06
                            open
                              wasapi clock
                              REQUEST_OPEN
                              samplerate
                            11025
                              numchannels
                            -> 2
                              bitspersamp
                            16
                              audio client created
                              got device period
                                
                            default: 101587 hns
                                minimum
                            30000 hns
                                choosen
                            101587 hns
                              device period scaled by 7.00 
                            (device period711515)
                              
                            intitializing audio client with 711515/0 hns
                            AUDCLNT_E_ENDPOINT_CREATE_FAILED
                            "yasapi_session.c" (269).
                            Error initializing audio client"yasapi_session.c" (279). 
                            4. bug: But volume control isn't working when "Mono as Stereo" is enabled with the "Air Force Come and Dey Flatten Your Home" sample.

                            5. bug: plugin doesn't remember it's setting after winamp has been restarted. (It didn't happen before). Does it want to use an ini file in the main Winamp directory?
                            Winamp 5.581 (DirectSound out) + ClockAmp 2.6 + mp3cue 5.0
                            MSI GE60(i73630QM,16GB,IntelHD4000(v10.18.10.4358)+GeForceGT650m(2GB,v355.98)+muxless,1920x1080@60Hz,Plextor M5M 256GB SSD,Win8.1x64+MPC-HCx64+LAV+MadVR)+Yamaha RX-830+LG 55LD650(1080p@24/25/30/60Hz)

                            Comment


                            • Just wanted to pop in and say, I really appreciate you developing this plugin as much you have already; I am really enjoying using it for my music. Not many active Winamp plugin developers so I am really glad to have met you.

                              Anyway, good day

                              Comment


                              • v.0.11.0

                                What's new?
                                • Reorganized the configuration dialog:
                                  • Focused again on the most important two (per device) parameters "Mode" (share/exclusive) and "Strategy" (push/pull).
                                  • Duplicated those two parameters from the "Device Options" page to the dialog's top-region.
                                  • Moved the former top-region parameters to a new "General" tab-control page.
                                  • Added a "Store" button with similar functionality as the "OK" button except that it doesn't close the dialog.


                                • Fixed several bugs.

                                Links:
                                Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas

                                Comment

                                Working...
                                X
                                😀
                                🥰
                                🤢
                                😎
                                😡
                                👍
                                👎