Uploaded image for project: 'Core ReactOS'
  1. Core ReactOS
  2. CORE-19542

[AUDIO] Some Gecko based browsers fail to play the sound longer than 20 seconds due to getting playback position failure

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 0.4.15
    • Sound
    • None
    • Oracle VM VirtualBox 7.0.15.

    Description

      To reproduce the problem:

      1. Download any of the following 3 browsers on your desidion:
        Serpent 52.9.0 IA-32 build: https://o.rthost.win/basilisk/basilisk52-g4.8.win32-git-20240427-3219d2d-uxp-92e1373e8c-xpmod-ia32.7z
        NewMoon 28.10.7 IA-32 build: https://o.rthost.win/palemoon/palemoon-28.10.7a1.win32-git-20240427-d849524bd-uxp-92e1373e8c-xpmod-ia32.7z
        KMeleon 76.5.3 Goanna engine: https://o.rthost.win/kmeleon/KM76.5.3-Goanna-20240427.7z
        (Note that non-IA32 builds are compiled for using 32-bit Float audio, so they are not playing the sound in ReactOS at all yet. IA32 ones play because they are using 16-bit Singed audio instead.)
      2. Extract the contents of an archive you downloaded.
      3. Go to directory where you have extracted it.
      4. Set IgnoreManifestCompatVersion compatibility mode for the browser executable (basilisk.exe, kmeleon.exe or palemoon.exe). Then Apply and OK. EDIT: this step is not needed in the latest master anymore.
      5. Run the browser exe.
      6. After the browser opens, copy, paste and go to the following URL: https://soundcloud.com/the-musical-cloud/doctor-momentum-slynk and try to play a song. (Other songs and other similar websites are a valid testcases too, as many of them are using same unimplemented functionality on our side.)

      Expected result: the song should play properly till the end and the track position pointer on the trackbar should move to an appropriate position of the current playback. Also the timer should show the current played time.

      Observed result: the song starts to play, but the track position pointer will remain at the same initial position and does not move forward, and the playback timer always shows 0:00 and does not change. Due to this, the playback hangs somewhere after first 20 seconds, as it cannot get the current playback position properly.

      My investigation proved it occurs due to unimplemented GetWavePosition API in our audio subsystem. It is as for Legacy, same for MMixer mode (managed by USE_MMIXER_LIB define). However, nothing about this is visible in the log, as we don't have any debug prints for that.

      I managed to implement it locally and will send a PR with implementation soon. However note that my implementation currently works as it should only for MMixer mode, but it seems does not yet for Legacy. As MMixer is enabled by default in current master, it's not so critically to fix it later.

      I can confirm that after my changes the issue is completely fixed and everything works fine: the position cursor on the trackbar is moving correctly during the playback, and the playing timer is updated correctly too. I see exactly the same behaviour as in my Windows XP SP3 x86, Windows Server 2003 SP2 x86 VMs (with the same browsers tested) and even in my host Ubuntu 21.10 x64 with Firefox 125.0 x64.

      Attachments

        Activity

          People

            Oleg Dubinskij Oleg Dubinskiy
            Oleg Dubinskij Oleg Dubinskiy
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: