module GHCJS.DOM.JSFFI.AudioContext (
module Generated
, DecodeAudioError(..)
, js_decodeAudioData
, decodeAudioData
) where
import Control.Exception (Exception(..), throwIO)
import Control.Monad.IO.Class (MonadIO(..))
import GHCJS.Types (JSVal)
import GHCJS.Foreign (jsNull)
import GHCJS.Marshal (fromJSVal, fromJSValUnchecked)
import GHCJS.Foreign.Callback (releaseCallback)
import GHCJS.DOM.Types
import GHCJS.DOM.JSFFI.Generated.AudioContext as Generated hiding (js_decodeAudioData, decodeAudioData)
data DecodeAudioError = DecodeAudioError deriving (Show, Eq)
instance Exception DecodeAudioError
foreign import javascript interruptible
"$1[\"decodeAudioData\"]($2, $c, function() { $c(null); });" js_decodeAudioData ::
AudioContext -> ArrayBuffer -> IO (Nullable AudioBuffer)
decodeAudioData :: (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) =>
self -> audioData -> m AudioBuffer
decodeAudioData self audioData = liftIO $ nullableToMaybe <$> js_decodeAudioData
(toAudioContext self)
(toArrayBuffer audioData)
>>= maybe (throwIO DecodeAudioError) return