#355 Playing audio in Xena - no play after pause

Terry O'Neill

After normalising a particular audio file ("non-quadriga bwf.wav") in Xena then opening with the viewer, pressing play and then pressing pause results in the play button no longer appearing; the button stays as pause. This is reproducible with this file; which is too big to attach here.


  • margotc

    • assigned_to: nobody --> kirtic
  • margotc

    Please test with a variety of files.

  • Tested with different audio files.

    1. Some audio files fail to play in Xena viewer although normalization was successful. No error in GUI, below error comes in console:
      (attached are some input files which fail to play after normalization) This error is when using either Oracle Jre 1.7 or openJDK 1.7.

    java.lang.IllegalArgumentException: unable to convert FLAC 96000.0 Hz, 24 bit, stereo, unknown frame size, unknown frame rate, to PCM_SIGNED 96000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
    at org.kc7bfi.jflac.sound.spi.FlacFormatConversionProvider.getAudioInputStream(FlacFormatConversionProvider.java:298)
    at au.gov.naa.digipres.xena.plugin.audio.AudioPlayerView.initAudioLine(AudioPlayerView.java:130)
    at au.gov.naa.digipres.xena.plugin.audio.AudioPlayerView.access$400(AudioPlayerView.java:50)
    at au.gov.naa.digipres.xena.plugin.audio.AudioPlayerView$1.actionPerformed(AudioPlayerView.java:95)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

    1. On most files, after clicking on play and pause a number of times, Xena hangs and cannot close from GUI. This behavior happens with most audio files but does not happen when using Oracle Jre 1.7. I am unable to attach the test files, but will provide them if needed.
    • assigned_to: Kirti Chennareddy --> Terry O'Neill
    • Group: --> v1.0 (example)
  • Terry O'Neill
    Terry O'Neill

    Fixed issues with OpenJDK 7 on master branch and assigned to Kirti to test. Note that in order to fix this I have removed the code that was stopping the audio from playing and instead am just stopping writing to the audio buffer. This means that there can be a short delay from when pause or stop is pressed until the actual audio stops playing (as the buffer empties). I have attempted to keep this to a maximum of one quarter of a second by sizing the buffer to a size for approximately this amount of data.

  • Terry O'Neill
    Terry O'Neill

    • status: open --> open-fixed
    • assigned_to: Terry O'Neill --> Kirti Chennareddy
  • Tested with a variety of files with open jdk 7 and Sun jre. All tested ok.

    • status: open-fixed --> closed-fixed
  • Terry O'Neill
    Terry O'Neill

    • Group: No milestone --> 6.1.0