ghcjs-dom-0.2.2.0: src/GHCJS/DOM/JSFFI/AudioContext.hs
{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
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 (JSRef)
import GHCJS.Foreign (jsNull)
import GHCJS.Marshal (fromJSRef, fromJSRefUnchecked)
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)
-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation>
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