-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Multimedia streaming on top of Conduit
--
-- Please see README.md
@package mediabus
@version 0.2.0.2
module Data.MediaBus.SourceId
class SetSourceId a (GetSourceId a) ~ a => HasSourceIdT a where type GetSourceId a type SetSourceId a b where {
type family GetSourceId a;
type family SetSourceId a b;
}
-- | Things that can be uniquely identified by a looking at a (much
-- simpler) representation, the identity.
newtype SourceId i
MkSourceId :: i -> SourceId i
type SrcId32 = SourceId Word32
type SrcId64 = SourceId Word64
sourceId :: forall i_afdf i_akHK. Iso (SourceId i_afdf) (SourceId i_akHK) i_afdf i_akHK
instance GHC.Show.Show i => GHC.Show.Show (Data.MediaBus.SourceId.SourceId i)
instance GHC.Generics.Generic (Data.MediaBus.SourceId.SourceId i)
instance GHC.Classes.Ord i => GHC.Classes.Ord (Data.MediaBus.SourceId.SourceId i)
instance Data.Default.Class.Default i => Data.Default.Class.Default (Data.MediaBus.SourceId.SourceId i)
instance Test.QuickCheck.Arbitrary.Arbitrary i => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.SourceId.SourceId i)
instance GHC.Classes.Eq i => GHC.Classes.Eq (Data.MediaBus.SourceId.SourceId i)
instance Control.DeepSeq.NFData i => Control.DeepSeq.NFData (Data.MediaBus.SourceId.SourceId i)
module Data.MediaBus.Series
data Series a b
Next :: !b -> Series a b
Start :: !a -> Series a b
type Series' a = Series a a
_Next :: forall a_aoqz b_aoqA b_aoOm. Prism (Series a_aoqz b_aoOm) (Series a_aoqz b_aoqA) b_aoOm b_aoqA
_Start :: forall a_aoqz b_aoqA a_aoOr. Prism (Series a_aoOr b_aoqA) (Series a_aoqz b_aoqA) a_aoOr a_aoqz
class AsSeries s a b | s -> a, s -> b
seriesStart' :: AsSeries s a b => Prism' s a
seriesNext' :: AsSeries s a b => Prism' s b
class (SetSeriesStart s (GetSeriesStart s) ~ s) => AsSeriesStart s where type GetSeriesStart s type SetSeriesStart s t where {
type family GetSeriesStart s;
type family SetSeriesStart s t;
}
seriesStart :: AsSeriesStart s => Prism s (SetSeriesStart s n) (GetSeriesStart s) n
class (SetSeriesNext s (GetSeriesNext s) ~ s) => AsSeriesNext s where type GetSeriesNext s type SetSeriesNext s t where {
type family GetSeriesNext s;
type family SetSeriesNext s t;
}
seriesNext :: AsSeriesNext s => Prism s (SetSeriesNext s n) (GetSeriesNext s) n
newtype StartingFrom a
MkStartingFrom :: a -> StartingFrom a
startingFromValue :: forall a_aoOB a_ap46. Iso (StartingFrom a_aoOB) (StartingFrom a_ap46) a_aoOB a_ap46
toNextsC' :: Monad m => Conduit (Series a b) m b
toStartsC' :: Monad m => Conduit (Series a b) m a
monotoneSeriesC :: Monad m => m a -> (i -> m b) -> Conduit i m (Series a b)
instance GHC.Show.Show a => GHC.Show.Show (Data.MediaBus.Series.StartingFrom a)
instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Series.StartingFrom a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.MediaBus.Series.StartingFrom a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.MediaBus.Series.StartingFrom a)
instance Data.MediaBus.Series.AsSeries (Data.MediaBus.Series.Series a b) a b
instance Data.MediaBus.Series.AsSeriesNext (Data.MediaBus.Series.Series a b)
instance Data.MediaBus.Series.AsSeriesStart (Data.MediaBus.Series.Series a b)
instance GHC.Base.Functor (Data.MediaBus.Series.Series a)
instance Data.Bifunctor.Bifunctor Data.MediaBus.Series.Series
instance GHC.Generics.Generic (Data.MediaBus.Series.Series a b)
instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.MediaBus.Series.Series a b)
instance Data.MediaBus.Series.AsSeries (Data.Either.Either a b) a b
instance Data.MediaBus.Series.AsSeriesStart (Data.Either.Either a b)
instance Data.MediaBus.Series.AsSeriesNext (Data.Either.Either a b)
instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Data.MediaBus.Series.Series a b)
instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.MediaBus.Series.Series a b)
instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.MediaBus.Series.Series a b)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, Test.QuickCheck.Arbitrary.Arbitrary b) => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Series.Series a b)
module Data.MediaBus.Payload
class (SetPayload a (GetPayload a) ~ a) => HasPayload a where type GetPayload a type SetPayload a b where {
type family GetPayload a;
type family SetPayload a b;
}
payload :: HasPayload a => Traversal a (SetPayload a b) (GetPayload a) b
module Data.MediaBus.OrderedBy
data OrderedBy a
MkOrderedBy :: (a -> a -> Ordering) -> a -> OrderedBy a
instance GHC.Classes.Eq (Data.MediaBus.OrderedBy.OrderedBy a)
instance GHC.Classes.Ord (Data.MediaBus.OrderedBy.OrderedBy a)
module Data.MediaBus.Monotone
-- | Class of numbers that are monotone increasing (or decreasing) and have
-- a relative order, that is not necessarily transitive.
--
-- For example, for a series of Word8 values: 0 64 128 192 0
-- 64 128 ... could be interpreted as a monotone series of
-- consecutive increasing values, that wrap around after 255. But note
-- that the Ord instance is not sufficient to express that
-- 0 is after 192, since 0 < 192.
class LocalOrd a where x `succeeds` y = (x - y) < ((maxBound - minBound) `div` 2)
succeeds :: LocalOrd a => a -> a -> Bool
succeeds :: (LocalOrd a, Bounded a, Integral a) => a -> a -> Bool
instance Data.MediaBus.Monotone.LocalOrd GHC.Word.Word8
instance Data.MediaBus.Monotone.LocalOrd GHC.Word.Word16
instance Data.MediaBus.Monotone.LocalOrd GHC.Word.Word32
instance Data.MediaBus.Monotone.LocalOrd GHC.Word.Word64
instance Data.MediaBus.Monotone.LocalOrd GHC.Int.Int8
instance Data.MediaBus.Monotone.LocalOrd GHC.Int.Int16
instance Data.MediaBus.Monotone.LocalOrd GHC.Int.Int32
instance Data.MediaBus.Monotone.LocalOrd GHC.Int.Int64
instance Data.MediaBus.Monotone.LocalOrd GHC.Types.Int
module Data.MediaBus.Sequence
newtype SeqNum s
MkSeqNum :: s -> SeqNum s
type SeqNum8 = SeqNum Word8
type SeqNum16 = SeqNum Word16
type SeqNum32 = SeqNum Word32
type SeqNum64 = SeqNum Word64
class SetSeqNum t (GetSeqNum t) ~ t => HasSeqNumT t where type GetSeqNum t type SetSeqNum t s where {
type family GetSeqNum t;
type family SetSeqNum t s;
}
class HasSeqNumT t => HasSeqNum t
seqNum :: HasSeqNum t => Lens t (SetSeqNum t s) (GetSeqNum t) s
fromSeqNum :: forall s_atXM s_auta. Iso (SeqNum s_atXM) (SeqNum s_auta) s_atXM s_auta
synchronizeToSeqNum :: (HasSeqNum a, Monad m, Integral i) => i -> Conduit a m (SetSeqNum a i)
instance (GHC.Real.Real a, GHC.Num.Num a, GHC.Classes.Eq a, Data.MediaBus.Monotone.LocalOrd a) => GHC.Real.Real (Data.MediaBus.Sequence.SeqNum a)
instance (GHC.Real.Integral a, GHC.Enum.Enum a, GHC.Real.Real a, GHC.Classes.Eq a, Data.MediaBus.Monotone.LocalOrd a) => GHC.Real.Integral (Data.MediaBus.Sequence.SeqNum a)
instance Data.MediaBus.Sequence.HasSeqNumT (Data.MediaBus.Sequence.SeqNum s)
instance Data.MediaBus.Sequence.HasSeqNum (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Show.Show s => GHC.Show.Show (Data.MediaBus.Sequence.SeqNum s)
instance (GHC.Classes.Eq a, Data.MediaBus.Monotone.LocalOrd a) => GHC.Classes.Ord (Data.MediaBus.Sequence.SeqNum a)
instance System.Random.Random s => System.Random.Random (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Generics.Generic (Data.MediaBus.Sequence.SeqNum s)
instance Data.Default.Class.Default s => Data.Default.Class.Default (Data.MediaBus.Sequence.SeqNum s)
instance Test.QuickCheck.Arbitrary.Arbitrary s => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Sequence.SeqNum s)
instance Data.MediaBus.Monotone.LocalOrd s => Data.MediaBus.Monotone.LocalOrd (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Enum.Enum s => GHC.Enum.Enum (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Enum.Bounded s => GHC.Enum.Bounded (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Classes.Eq s => GHC.Classes.Eq (Data.MediaBus.Sequence.SeqNum s)
instance GHC.Num.Num s => GHC.Num.Num (Data.MediaBus.Sequence.SeqNum s)
instance (Data.MediaBus.Sequence.HasSeqNumT a, Data.MediaBus.Sequence.HasSeqNumT b, Data.MediaBus.Sequence.GetSeqNum a ~ Data.MediaBus.Sequence.GetSeqNum b) => Data.MediaBus.Sequence.HasSeqNumT (Data.MediaBus.Series.Series a b)
instance (Data.MediaBus.Sequence.HasSeqNum a, Data.MediaBus.Sequence.HasSeqNum b, Data.MediaBus.Sequence.GetSeqNum a ~ Data.MediaBus.Sequence.GetSeqNum b) => Data.MediaBus.Sequence.HasSeqNum (Data.MediaBus.Series.Series a b)
instance Control.DeepSeq.NFData s => Control.DeepSeq.NFData (Data.MediaBus.Sequence.SeqNum s)
module Data.MediaBus.Ticks
-- | Types with a duration (e.g. audio samples).
class HasDuration a where getDuration !x = from nominalDiffTime # (getDurationTicks x :: Ticks 1000000000000 Integer) getDurationTicks !x = nominalDiffTime # getDuration x
getDuration :: HasDuration a => a -> NominalDiffTime
getDurationTicks :: (HasDuration a, Integral i, KnownNat r) => a -> Ticks r i
class SetTimestamp t (GetTimestamp t) ~ t => HasTimestampT t where type GetTimestamp t type SetTimestamp t s where {
type family GetTimestamp t;
type family SetTimestamp t s;
}
class HasTimestampT t => HasTimestamp t where timestamp' = timestamp
timestamp :: HasTimestamp t => Lens t (SetTimestamp t s) (GetTimestamp t) s
timestamp' :: HasTimestamp t => Lens' t (GetTimestamp t)
newtype Ticks (rate :: Nat) w
MkTicks :: w -> Ticks w
type Ticks32 r = Ticks r Word32
type Ticks64 r = Ticks r Word64
type Ticks32At8000 = Ticks32 8000
type Ticks32At16000 = Ticks32 16000
type Ticks32At48000 = Ticks32 48000
type Ticks64At8000 = Ticks64 8000
type Ticks64At16000 = Ticks64 16000
type Ticks64At48000 = Ticks64 48000
mkTicks :: forall proxy rate baseType. proxy '(rate, baseType) -> baseType -> Ticks rate baseType
at8kHzU32 :: Proxy '(8000, Word32)
at16kHzU32 :: Proxy '(16000, Word32)
at48kHzU32 :: Proxy '(48000, Word32)
at16kHzU64 :: Proxy '(16000, Word64)
at48kHzU64 :: Proxy '(48000, Word64)
nominalDiffTime :: forall r w. (Integral w, KnownNat r) => Iso' (Ticks r w) NominalDiffTime
convertTicks :: (Integral w, Integral w', KnownNat r, KnownNat r') => Ticks r w -> Ticks r' w'
deriveFrameTimestamp :: (Monad m, KnownNat r, Integral t, HasDuration a, HasTimestamp a) => Ticks r t -> Conduit a m (SetTimestamp a (Ticks r t))
data StaticTicks
[MkStaticTicks] :: Nat -> Rate -> StaticTicks
class KnownStaticTicks (s :: StaticTicks)
staticTicksVal :: (KnownStaticTicks s, KnownNat r) => proxy s -> Ticks r Integer
data Rate
MkRate :: Nat -> Rate
type (:@) ticks rate = MkStaticTicks ticks (MkRate rate)
class (KnownStaticTicks (GetStaticDuration s), SetStaticDuration s (GetStaticDuration s) ~ s) => HasStaticDuration (s :: k) where type SetStaticDuration s (pt :: StaticTicks) :: k' type GetStaticDuration s :: StaticTicks where {
type family SetStaticDuration s (pt :: StaticTicks) :: k';
type family GetStaticDuration s :: StaticTicks;
}
toStaticDurationProxy :: (HasStaticDuration s) => proxy s -> Proxy (GetStaticDuration s)
getStaticDuration :: forall proxy s. HasStaticDuration s => proxy s -> NominalDiffTime
getStaticTicks :: forall proxy s r t i. (KnownNat r, KnownNat t, HasStaticDuration s, GetStaticDuration s ~ (t :@ r), Integral i) => proxy s -> Ticks r i
getStaticRate :: forall proxy s r t. (KnownNat r, KnownNat t, HasStaticDuration s, GetStaticDuration s ~ (t :@ r)) => proxy s -> Integer
ticksFromStaticDuration :: forall proxy rate ticks i. (KnownNat rate, KnownNat ticks, Integral i) => proxy (ticks :@ rate) -> Ticks rate i
rateFromStaticDuration :: forall proxy rate ticks. (KnownNat rate, KnownNat ticks) => proxy (ticks :@ rate) -> Integer
instance System.Random.Random w => System.Random.Random (Data.MediaBus.Ticks.Ticks rate w)
instance GHC.Generics.Generic (Data.MediaBus.Ticks.Ticks rate w)
instance Data.Default.Class.Default w => Data.Default.Class.Default (Data.MediaBus.Ticks.Ticks rate w)
instance Test.QuickCheck.Arbitrary.Arbitrary w => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Ticks.Ticks rate w)
instance GHC.Num.Num w => GHC.Num.Num (Data.MediaBus.Ticks.Ticks rate w)
instance Data.MediaBus.Monotone.LocalOrd w => Data.MediaBus.Monotone.LocalOrd (Data.MediaBus.Ticks.Ticks rate w)
instance GHC.Enum.Enum w => GHC.Enum.Enum (Data.MediaBus.Ticks.Ticks rate w)
instance (Data.MediaBus.Monotone.LocalOrd w, GHC.Real.Integral w) => GHC.Real.Integral (Data.MediaBus.Ticks.Ticks rate w)
instance (Data.MediaBus.Monotone.LocalOrd w, GHC.Real.Real w) => GHC.Real.Real (Data.MediaBus.Ticks.Ticks rate w)
instance GHC.Classes.Eq w => GHC.Classes.Eq (Data.MediaBus.Ticks.Ticks rate w)
instance Control.DeepSeq.NFData w => Control.DeepSeq.NFData (Data.MediaBus.Ticks.Ticks rate w)
instance (GHC.TypeLits.KnownNat r, GHC.Real.Integral w, GHC.Show.Show w) => GHC.Show.Show (Data.MediaBus.Ticks.Ticks r w)
instance (GHC.Classes.Eq w, Data.MediaBus.Monotone.LocalOrd w) => GHC.Classes.Ord (Data.MediaBus.Ticks.Ticks rate w)
instance Data.MediaBus.Ticks.HasDuration a => Data.MediaBus.Ticks.HasDuration (GHC.Base.Maybe a)
instance (Data.MediaBus.Ticks.HasTimestampT a, Data.MediaBus.Ticks.HasTimestampT b, Data.MediaBus.Ticks.GetTimestamp a ~ Data.MediaBus.Ticks.GetTimestamp b) => Data.MediaBus.Ticks.HasTimestampT (Data.MediaBus.Series.Series a b)
instance (Data.MediaBus.Ticks.HasTimestamp a, Data.MediaBus.Ticks.HasTimestamp b, Data.MediaBus.Ticks.GetTimestamp a ~ Data.MediaBus.Ticks.GetTimestamp b) => Data.MediaBus.Ticks.HasTimestamp (Data.MediaBus.Series.Series a b)
instance (GHC.TypeLits.KnownNat r, GHC.TypeLits.KnownNat t) => Data.MediaBus.Ticks.HasStaticDuration Data.MediaBus.Ticks.StaticTicks (t Data.MediaBus.Ticks.:@ r)
instance (GHC.TypeLits.KnownNat d, GHC.TypeLits.KnownNat r) => Data.MediaBus.Ticks.KnownStaticTicks ('Data.MediaBus.Ticks.MkStaticTicks d ('Data.MediaBus.Ticks.MkRate r))
module Data.MediaBus.Segment
-- | Class of types that support splitting of from the front a packet
-- containing roughly a certain duration.
class CanSegment a
-- | Try to split the packet into the a part which has at most the given
-- duration and a rest. If not possible, e.g. because the input data is
-- already shorter than the given duration, return Nothing.
splitAfterDuration :: (CanSegment a, HasStaticDuration d) => proxy d -> a -> Maybe (Segment d a, a)
-- | A segment is some content with a fixed (type level) duration.
newtype Segment (duration :: StaticTicks) c
MkSegment :: c -> Segment c
segmentContent :: forall duration_aB08 c_aB09 duration_aBhf c_aBhg. Iso (Segment duration_aB08 c_aB09) (Segment duration_aBhf c_aBhg) c_aB09 c_aBhg
instance Data.MediaBus.Ticks.KnownStaticTicks d => Data.MediaBus.Ticks.HasStaticDuration * (Data.MediaBus.Segment.Segment d x)
instance Data.MediaBus.Ticks.HasStaticDuration Data.MediaBus.Ticks.StaticTicks d => Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Segment.Segment d x)
instance GHC.Classes.Eq c => GHC.Classes.Eq (Data.MediaBus.Segment.Segment duration c)
instance GHC.Base.Functor (Data.MediaBus.Segment.Segment duration)
instance Test.QuickCheck.Arbitrary.Arbitrary c => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Segment.Segment duration c)
instance Data.Default.Class.Default c => Data.Default.Class.Default (Data.MediaBus.Segment.Segment duration c)
instance Control.DeepSeq.NFData c => Control.DeepSeq.NFData (Data.MediaBus.Segment.Segment duration c)
instance (Data.MediaBus.Ticks.HasStaticDuration Data.MediaBus.Ticks.StaticTicks d, GHC.Show.Show c) => GHC.Show.Show (Data.MediaBus.Segment.Segment d c)
module Data.MediaBus.Stream
class (SetPayload a (GetPayload a) ~ a) => HasPayload a where type GetPayload a type SetPayload a b where {
type family GetPayload a;
type family SetPayload a b;
}
payload :: HasPayload a => Traversal a (SetPayload a b) (GetPayload a) b
data FrameCtx i s t p
MkFrameCtx :: !i -> !t -> !s -> !p -> FrameCtx i s t p
frameCtxSourceId :: forall i_aC5P s_aC5Q t_aC5R p_aC5S i_aCeM. Lens (FrameCtx i_aC5P s_aC5Q t_aC5R p_aC5S) (FrameCtx i_aCeM s_aC5Q t_aC5R p_aC5S) i_aC5P i_aCeM
frameCtxSeqNumRef :: forall i_aC5P s_aC5Q t_aC5R p_aC5S s_aCeL. Lens (FrameCtx i_aC5P s_aC5Q t_aC5R p_aC5S) (FrameCtx i_aC5P s_aCeL t_aC5R p_aC5S) s_aC5Q s_aCeL
frameCtxTimestampRef :: forall i_aC5P s_aC5Q t_aC5R p_aC5S t_aCeN. Lens (FrameCtx i_aC5P s_aC5Q t_aC5R p_aC5S) (FrameCtx i_aC5P s_aC5Q t_aCeN p_aC5S) t_aC5R t_aCeN
frameCtxInit :: forall i_aC5P s_aC5Q t_aC5R p_aC5S p_aCeK. Lens (FrameCtx i_aC5P s_aC5Q t_aC5R p_aC5S) (FrameCtx i_aC5P s_aC5Q t_aC5R p_aCeK) p_aC5S p_aCeK
-- | A Frame can be anything that has a start time and is exactly
-- one time unit long, it can respresent anything ranging from an audio
-- buffer with 20ms of audio to a single pulse coded audio sample, of
-- course it could also be a video frame or a chat message.
data Frame s t c
MkFrame :: !t -> !s -> !c -> Frame s t c
frameSeqNum :: forall s_aCfl t_aCfm c_aCfn s_aCw7. Lens (Frame s_aCfl t_aCfm c_aCfn) (Frame s_aCw7 t_aCfm c_aCfn) s_aCfl s_aCw7
frameTimestamp :: forall s_aCfl t_aCfm c_aCfn t_aCw8. Lens (Frame s_aCfl t_aCfm c_aCfn) (Frame s_aCfl t_aCw8 c_aCfn) t_aCfm t_aCw8
framePayload :: forall s_aCfl t_aCfm c_aCfn c_aCw6. Lens (Frame s_aCfl t_aCfm c_aCfn) (Frame s_aCfl t_aCfm c_aCw6) c_aCfn c_aCw6
newtype Stream i s t p c
MkStream :: Streamish i s t p c -> Stream i s t p c
stream :: forall i_aCwA s_aCwB t_aCwC p_aCwD c_aCwE i_aCUs s_aCUt t_aCUu p_aCUv c_aCUw. Iso (Stream i_aCwA s_aCwB t_aCwC p_aCwD c_aCwE) (Stream i_aCUs s_aCUt t_aCUu p_aCUv c_aCUw) (Streamish i_aCwA s_aCwB t_aCwC p_aCwD c_aCwE) (Streamish i_aCUs s_aCUt t_aCUu p_aCUv c_aCUw)
yieldStreamish :: Monad m => Streamish i s t p c -> Conduit a m (Stream i s t p c)
yieldStreamish' :: (NFData i, NFData s, NFData t, NFData c, NFData p, Monad m) => Streamish i s t p c -> Conduit a m (Stream i s t p c)
yieldNextFrame :: Monad m => Frame s t c -> Conduit a m (Stream i s t p c)
yieldNextFrame' :: (NFData i, NFData s, NFData t, NFData c, NFData p, Monad m) => Frame s t c -> Conduit a m (Stream i s t p c)
yieldStartFrameCtx :: Monad m => FrameCtx i s t p -> Conduit a m (Stream i s t p c)
yieldStartFrameCtx' :: (NFData i, NFData s, NFData t, NFData c, NFData p, NFData (FrameCtx i s t p), Monad m) => FrameCtx i s t p -> Conduit a m (Stream i s t p c)
toFramesC :: Monad m => Conduit (Stream i s t p c) m (Frame s t c)
overStreamC :: Monad m => Conduit (Series (FrameCtx i s t p) (Frame s t c)) m (Series (FrameCtx i' s' t' p') (Frame s' t' c')) -> Conduit (Stream i s t p c) m (Stream i' s' t' p' c')
mapFramesC :: Monad m => (Frame s t c -> m (Frame s t c')) -> Conduit (Stream i s t p c) m (Stream i s t p c')
mapFramesC' :: (NFData i, NFData s, NFData t, NFData c', Monad m) => (Frame s t c -> Frame s t c') -> Conduit (Stream i s t p c) m (Stream i s t p c')
mapSeqNumC :: Monad m => (s -> s') -> Conduit (Stream i s t p c) m (Stream i s' t p c)
mapTicksC :: Monad m => (t -> t') -> Conduit (Stream i s t p c) m (Stream i s t' p c)
mapTicksC' :: (NFData t, Monad m) => (t -> t') -> Conduit (Stream i s t p c) m (Stream i s t' p c)
mapPayloadMC :: Monad m => (c -> m c') -> Conduit (Stream i s t p c) m (Stream i s t p c')
mapPayloadMC' :: (NFData (Stream i s t p c'), Monad m) => (c -> m c') -> Conduit (Stream i s t p c) m (Stream i s t p c')
mapPayloadC' :: (NFData c', Monad m) => (c -> c') -> Conduit (Stream i s t p c) m (Stream i s t p c')
convertTicksC' :: forall proxy0 proxy1 m r t r' t' i s c p. (NFData t, NFData t', KnownNat r, KnownNat r', Integral t, Integral t', Monad m, NFData t') => proxy0 '(r, t) -> proxy1 '(r', t') -> Conduit (Stream i s (Ticks r t) p c) m (Stream i s (Ticks r' t') p c)
foldStream :: (Monoid o, Monad m) => (Stream i s t p c -> o) -> Sink (Stream i s t p c) m o
foldStreamM :: (Monoid o, Monad m) => (Stream i s t p c -> m o) -> Sink (Stream i s t p c) m o
concatStreamContents :: (Monoid c, Monad m) => Sink (Stream i s t p c) m c
instance Data.MediaBus.Payload.HasPayload (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Ticks.HasDuration c => Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Sequence.HasSeqNumT (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Sequence.HasSeqNum (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Ticks.HasTimestampT (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Ticks.HasTimestamp (Data.MediaBus.Stream.Stream i s t p c)
instance (Data.Default.Class.Default c, Data.Default.Class.Default s, Data.Default.Class.Default t) => Data.Default.Class.Default (Data.MediaBus.Stream.Stream i s t p c)
instance (GHC.Show.Show i, GHC.Show.Show s, GHC.Show.Show t, GHC.Show.Show c, GHC.Show.Show p) => GHC.Show.Show (Data.MediaBus.Stream.Stream i s t p c)
instance GHC.Generics.Generic (Data.MediaBus.Stream.Stream i s t p c)
instance (Test.QuickCheck.Arbitrary.Arbitrary c, Test.QuickCheck.Arbitrary.Arbitrary p, Test.QuickCheck.Arbitrary.Arbitrary t, Test.QuickCheck.Arbitrary.Arbitrary s, Test.QuickCheck.Arbitrary.Arbitrary i) => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Stream.Stream i s t p c)
instance (GHC.Classes.Eq c, GHC.Classes.Eq i, GHC.Classes.Eq t, GHC.Classes.Eq s, GHC.Classes.Eq p) => GHC.Classes.Eq (Data.MediaBus.Stream.Stream i s t p c)
instance (GHC.Classes.Ord c, GHC.Classes.Ord i, GHC.Classes.Ord t, GHC.Classes.Ord s, GHC.Classes.Ord p) => GHC.Classes.Ord (Data.MediaBus.Stream.Stream i s t p c)
instance Data.MediaBus.Payload.HasPayload (Data.MediaBus.Stream.Frame s t c)
instance Data.MediaBus.Ticks.HasTimestampT (Data.MediaBus.Stream.Frame s t c)
instance Data.MediaBus.Ticks.HasTimestamp (Data.MediaBus.Stream.Frame s t c)
instance Data.MediaBus.Sequence.HasSeqNumT (Data.MediaBus.Stream.Frame s t c)
instance Data.MediaBus.Sequence.HasSeqNum (Data.MediaBus.Stream.Frame s t c)
instance Data.MediaBus.Ticks.HasDuration c => Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Stream.Frame s t c)
instance (Test.QuickCheck.Arbitrary.Arbitrary c, Test.QuickCheck.Arbitrary.Arbitrary s, Test.QuickCheck.Arbitrary.Arbitrary t) => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Stream.Frame s t c)
instance (Data.Default.Class.Default s, Data.Default.Class.Default t, Data.Default.Class.Default c) => Data.Default.Class.Default (Data.MediaBus.Stream.Frame s t c)
instance (GHC.Show.Show s, GHC.Show.Show t, GHC.Show.Show v) => GHC.Show.Show (Data.MediaBus.Stream.Frame s t v)
instance (Control.DeepSeq.NFData i, Control.DeepSeq.NFData s, Control.DeepSeq.NFData t, Control.DeepSeq.NFData c, Control.DeepSeq.NFData p) => Control.DeepSeq.NFData (Data.MediaBus.Stream.Stream i s t p c)
instance GHC.Generics.Generic (Data.MediaBus.Stream.Frame s t c)
instance (GHC.Classes.Ord c, GHC.Classes.Ord s, GHC.Classes.Ord t) => GHC.Classes.Ord (Data.MediaBus.Stream.Frame s t c)
instance (GHC.Classes.Eq c, GHC.Classes.Eq s, GHC.Classes.Eq t) => GHC.Classes.Eq (Data.MediaBus.Stream.Frame s t c)
instance GHC.Base.Functor (Data.MediaBus.Stream.Frame s t)
instance Data.MediaBus.Ticks.HasTimestampT (Data.MediaBus.Stream.FrameCtx i s t p)
instance Data.MediaBus.Ticks.HasTimestamp (Data.MediaBus.Stream.FrameCtx i s t p)
instance Data.MediaBus.Sequence.HasSeqNumT (Data.MediaBus.Stream.FrameCtx i s t p)
instance Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Stream.FrameCtx i s t p)
instance Data.MediaBus.Sequence.HasSeqNum (Data.MediaBus.Stream.FrameCtx i s t p)
instance (Test.QuickCheck.Arbitrary.Arbitrary i, Test.QuickCheck.Arbitrary.Arbitrary s, Test.QuickCheck.Arbitrary.Arbitrary t, Test.QuickCheck.Arbitrary.Arbitrary p) => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Stream.FrameCtx i s t p)
instance (Data.Default.Class.Default i, Data.Default.Class.Default s, Data.Default.Class.Default t, Data.Default.Class.Default p) => Data.Default.Class.Default (Data.MediaBus.Stream.FrameCtx i s t p)
instance (GHC.Show.Show i, GHC.Show.Show s, GHC.Show.Show t, GHC.Show.Show p) => GHC.Show.Show (Data.MediaBus.Stream.FrameCtx i s t p)
instance (Control.DeepSeq.NFData c, Control.DeepSeq.NFData s, Control.DeepSeq.NFData t) => Control.DeepSeq.NFData (Data.MediaBus.Stream.Frame s t c)
instance GHC.Generics.Generic (Data.MediaBus.Stream.FrameCtx i s t p)
instance (GHC.Classes.Ord p, GHC.Classes.Ord s, GHC.Classes.Ord t, GHC.Classes.Ord i) => GHC.Classes.Ord (Data.MediaBus.Stream.FrameCtx i s t p)
instance (GHC.Classes.Eq p, GHC.Classes.Eq s, GHC.Classes.Eq t, GHC.Classes.Eq i) => GHC.Classes.Eq (Data.MediaBus.Stream.FrameCtx i s t p)
instance (Control.DeepSeq.NFData i, Control.DeepSeq.NFData s, Control.DeepSeq.NFData t, Control.DeepSeq.NFData p) => Control.DeepSeq.NFData (Data.MediaBus.Stream.FrameCtx i s t p)
module Data.MediaBus.Reorder
reorderFramesBySeqNumC :: (Default s, Default i, Default t, Default p, Num s, Ord s, Monad m) => Int -> Conduit (Stream i s t p c) m (Stream i s t p c)
reorderFramesByC :: (Monad m, Ord rank, Default i, Default t, Default s, Default p, Default rank) => Lens' (Stream i s t p c) rank -> (rank -> rank) -> Int -> Conduit (Stream i s t p c) m (Stream i s t p c)
module Data.MediaBus.Transcoder
class Transcoder from to where type TranscodingSeqNum from to s :: Constraint type TranscodingTicks from to t :: Constraint type TranscodingSeqNum from to s = () type TranscodingTicks from to t = () where {
type family TranscodingSeqNum from to s :: Constraint;
type family TranscodingTicks from to t :: Constraint;
type TranscodingSeqNum from to s = ();
type TranscodingTicks from to t = ();
}
transcode :: (Transcoder from to, TranscodingSeqNum from to s, TranscodingTicks from to t) => Frame s t from -> Frame s t to
transcodeStreamC' :: (NFData to, NFData p, NFData i, NFData s, NFData t, NFData p, Monad m, Transcoder from to, TranscodingSeqNum from to s, TranscodingTicks from to t) => Conduit (Stream i s t p from) m (Stream i s t p to)
module Data.MediaBus.StreamSegment
-- | The packetizer recombines incoming packets into Segments of the
-- given size. The sequence numbers will be offsetted by the number extra
-- frames generated.
segmentC :: (Num s, Monad m, HasDuration c, CanSegment c, Monoid c, Default i, KnownNat r, Integral t, HasStaticDuration d) => Conduit (Stream i s (Ticks r t) p c) m (Stream i s (Ticks r t) p (Segment d c))
segmentC' :: (Num s, Monad m, HasDuration c, CanSegment c, Monoid c, Default i, KnownNat r, Integral t, HasStaticDuration d) => proxy d -> Conduit (Stream i s (Ticks r t) p c) m (Stream i s (Ticks r t) p (Segment d c))
module Data.MediaBus.Discontinous
data Discontinous a
Missing :: Discontinous a
Got :: !a -> Discontinous a
_Missing :: forall a_aORK. Prism' (Discontinous a_aORK) ()
_Got :: forall a_aORK a_aPk7. Prism (Discontinous a_aPk7) (Discontinous a_aORK) a_aPk7 a_aORK
concealMissing :: (NFData c, Monad m) => c -> Conduit (Stream i s t p (Discontinous c)) m (Stream i s t p c)
instance Data.MediaBus.Ticks.HasDuration a => Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Discontinous.Discontinous a)
instance Data.MediaBus.Payload.HasPayload a => Data.MediaBus.Payload.HasPayload (Data.MediaBus.Discontinous.Discontinous a)
instance GHC.Generics.Generic (Data.MediaBus.Discontinous.Discontinous a)
instance GHC.Show.Show a => GHC.Show.Show (Data.MediaBus.Discontinous.Discontinous a)
instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.MediaBus.Discontinous.Discontinous a)
instance Data.Default.Class.Default (Data.MediaBus.Discontinous.Discontinous a)
module Data.MediaBus.Conduit
annotateTypeC :: proxy a -> Conduit a m a -> Conduit a m a
annotateTypeCIn :: proxy a -> Conduit a m b -> Conduit a m b
annotateTypeCOut :: proxy b -> Conduit a m b -> Conduit a m b
annotateTypeSink :: proxy a -> Sink a m r -> Sink a m r
annotateTypeSource :: proxy a -> Source m a -> Source m a
exitAfterC :: Monad m => Int -> Conduit a m a
traceShowC :: (Show a, Monad m) => Double -> String -> Conduit a m a
traceShowSink :: (Show a, Monad m) => Double -> String -> Consumer a m [a]
module Data.MediaBus.Clock
-- | Clocks can generate reference times, and they can convert these to
-- tickss. Tickss are mere integrals
class (Default (ClockTimeDiff c), Ord (ClockTimeDiff c), Eq (ClockTimeDiff c), Num (ClockTimeDiff c), Show (ClockTime c), Eq (ClockTime c), Show (ClockTimeDiff c), LocalOrd (ClockTimeDiff c)) => IsClock c where data ClockTime c data ClockTimeDiff c type MonadClock c (m :: Type -> Type) :: Constraint where {
data family ClockTime c;
data family ClockTimeDiff c;
type family MonadClock c (m :: Type -> Type) :: Constraint;
}
now :: (IsClock c, MonadClock c m) => m (ClockTime c)
timeAsTimeDiff :: IsClock c => ClockTime c -> ClockTimeDiff c
diffTime :: IsClock c => ClockTime c -> ClockTime c -> ClockTimeDiff c
timeAddTimeDiff :: IsClock c => ClockTime c -> ClockTimeDiff c -> ClockTime c
timeSince :: (IsClock c, MonadClock c m, Monad m) => ClockTime c -> m (ClockTimeDiff c)
data UtcClock
MkUtcClock :: UtcClock
useUtcClock :: Proxy UtcClock
($sel:_utcClockTimeDiff:MkUtcClockTimeDiff) :: ClockTimeDiff UtcClock -> NominalDiffTime
($sel:_utcClockTime:MkUtcClockTime) :: ClockTime UtcClock -> UTCTime
utcClockTimeDiff :: Lens' (ClockTimeDiff UtcClock) NominalDiffTime
instance GHC.Generics.Generic Data.MediaBus.Clock.UtcClock
instance GHC.Generics.Generic (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance GHC.Num.Num (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance GHC.Classes.Eq (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance GHC.Classes.Ord (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance GHC.Generics.Generic (Data.MediaBus.Clock.ClockTime * Data.MediaBus.Clock.UtcClock)
instance GHC.Classes.Eq (Data.MediaBus.Clock.ClockTime * Data.MediaBus.Clock.UtcClock)
instance Control.DeepSeq.NFData Data.MediaBus.Clock.UtcClock
instance Data.MediaBus.Clock.IsClock * Data.MediaBus.Clock.UtcClock
instance Control.DeepSeq.NFData (Data.MediaBus.Clock.ClockTime * Data.MediaBus.Clock.UtcClock)
instance GHC.Show.Show (Data.MediaBus.Clock.ClockTime * Data.MediaBus.Clock.UtcClock)
instance GHC.Show.Show (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance Control.DeepSeq.NFData (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance Data.Default.Class.Default (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Clock.ClockTime * Data.MediaBus.Clock.UtcClock)
instance Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
instance Data.MediaBus.Monotone.LocalOrd (Data.MediaBus.Clock.ClockTimeDiff * Data.MediaBus.Clock.UtcClock)
module Data.MediaBus.Transport.Udp
-- | A UDP source that uses MonandResource to make sure the socket
-- is closed.
udpDatagramSource :: (IsClock c, MonadClock c m, MonadResource m, Num s, Default p) => proxy c -> Int -> HostPreference -> Source m (Stream (SourceId (Maybe SockAddr)) (SeqNum s) (ClockTimeDiff c) p ByteString)
module Data.MediaBus.BlankMedia
class CanGenerateBlankMedia a where blankFor dt = blankForTicks (nominalDiffTime # dt :: Ticks 1000000000000 Integer) blankForTicks ticks = blankFor (from nominalDiffTime # ticks)
blankFor :: CanGenerateBlankMedia a => NominalDiffTime -> a
blankForTicks :: (CanGenerateBlankMedia a, Integral i, KnownNat r) => Ticks r i -> a
class CanBeBlank a
blank :: CanBeBlank a => a
instance (Data.MediaBus.Ticks.HasStaticDuration Data.MediaBus.Ticks.StaticTicks d, Data.MediaBus.BlankMedia.CanGenerateBlankMedia a) => Data.MediaBus.BlankMedia.CanBeBlank (Data.MediaBus.Segment.Segment d a)
module Data.MediaBus.Sample
-- | A sample is a discrete value of a continuous signal, periodically
-- sampled at the sampling frequency. This is a full buffer of those
-- things.
newtype SampleBuffer sampleType
MkSampleBuffer :: Vector sampleType -> SampleBuffer sampleType
sampleBufferFromByteString :: Storable a => ByteString -> SampleBuffer a
byteStringFromSampleBuffer :: Storable a => SampleBuffer a -> ByteString
sampleBufferToList :: Storable s => SampleBuffer s -> [s]
sampleBufferFromList :: Storable s => [s] -> SampleBuffer s
sampleVector :: forall sampleType_aUgT sampleType_aUtN. Iso (SampleBuffer sampleType_aUgT) (SampleBuffer sampleType_aUtN) (Vector sampleType_aUgT) (Vector sampleType_aUtN)
createSampleBufferFrom :: (Storable sample') => (forall s. Vector sample -> ST s (MVector s sample')) -> SampleBuffer sample -> SampleBuffer sample'
-- | A type class for media formats, like encodings, sample rate, etc...
class (Storable (GetSampleType s), SetSampleType s (GetSampleType s) ~ s) => HasSampleBuffer s where type SetSampleType s t type GetSampleType s where {
type family SetSampleType s t;
type family GetSampleType s;
}
sampleCount :: HasSampleBuffer s => s -> Int
eachSample :: (HasSampleBuffer s, Storable t) => Traversal s (SetSampleType s t) (GetSampleType s) t
sampleBuffer :: (HasSampleBuffer s, Storable t) => Lens s (SetSampleType s t) (SampleBuffer (GetSampleType s)) (SampleBuffer t)
type GetSampleBuffer s = SampleBuffer (GetSampleType s)
mutateSamples :: Storable a => (forall s. MVector s a -> ST s ()) -> SampleBuffer a -> SampleBuffer a
-- | Unsafe because results can be returned, which might contain the
-- thawn vector.
unsafeMutateSamples :: Storable a => (forall s. MVector s a -> ST s r) -> SampleBuffer a -> (r, SampleBuffer a)
instance (Data.MediaBus.BlankMedia.CanBeBlank sa, Foreign.Storable.Storable sa, Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * sa)) => Data.MediaBus.BlankMedia.CanGenerateBlankMedia (Data.MediaBus.Sample.SampleBuffer sa)
instance Foreign.Storable.Storable sampleType => Data.Default.Class.Default (Data.MediaBus.Sample.SampleBuffer sampleType)
instance (Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * sampleType), Foreign.Storable.Storable sampleType) => Data.MediaBus.Ticks.HasDuration (Data.MediaBus.Sample.SampleBuffer sampleType)
instance (Foreign.Storable.Storable a, Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * a)) => Data.MediaBus.Segment.CanSegment (Data.MediaBus.Sample.SampleBuffer a)
instance Foreign.Storable.Storable s => GHC.Exts.IsList (Data.MediaBus.Sample.SampleBuffer s)
instance Foreign.Storable.Storable a => Data.MediaBus.Sample.HasSampleBuffer (Data.MediaBus.Sample.SampleBuffer a)
instance GHC.Generics.Generic (Data.MediaBus.Sample.SampleBuffer sampleType)
instance Foreign.Storable.Storable sampleType => GHC.Base.Monoid (Data.MediaBus.Sample.SampleBuffer sampleType)
instance (GHC.Classes.Eq sampleType, Foreign.Storable.Storable sampleType) => GHC.Classes.Eq (Data.MediaBus.Sample.SampleBuffer sampleType)
instance Control.DeepSeq.NFData sampleType => Control.DeepSeq.NFData (Data.MediaBus.Sample.SampleBuffer sampleType)
instance (Foreign.Storable.Storable sampleType, Data.Typeable.Internal.Typeable * sampleType, GHC.Show.Show sampleType) => GHC.Show.Show (Data.MediaBus.Sample.SampleBuffer sampleType)
module Data.MediaBus.Audio.Channels
data ChannelLayout
SingleChannel :: ChannelLayout
ChannelPair :: ChannelLayout
data ChannelPair a
MkChannelPair :: a -> a -> ChannelPair a
leftSample :: forall a_aWkW. Lens' (ChannelPair a_aWkW) a_aWkW
rightSample :: forall a_aWkW. Lens' (ChannelPair a_aWkW) a_aWkW
class HasChannelLayout c
channelLayout :: HasChannelLayout c => c -> ChannelLayout
instance Data.MediaBus.Audio.Channels.HasChannelLayout a => Data.MediaBus.Audio.Channels.HasChannelLayout (Data.MediaBus.Audio.Channels.ChannelPair a)
instance Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * a) => Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * (Data.MediaBus.Audio.Channels.ChannelPair a))
instance Foreign.Storable.Storable s => Foreign.Storable.Storable (Data.MediaBus.Audio.Channels.ChannelPair s)
instance GHC.Generics.Generic (Data.MediaBus.Audio.Channels.ChannelPair a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.MediaBus.Audio.Channels.ChannelPair a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.MediaBus.Audio.Channels.ChannelPair a)
instance GHC.Show.Show a => GHC.Show.Show (Data.MediaBus.Audio.Channels.ChannelPair a)
instance GHC.Generics.Generic Data.MediaBus.Audio.Channels.ChannelLayout
instance GHC.Enum.Enum Data.MediaBus.Audio.Channels.ChannelLayout
instance GHC.Classes.Ord Data.MediaBus.Audio.Channels.ChannelLayout
instance GHC.Classes.Eq Data.MediaBus.Audio.Channels.ChannelLayout
instance GHC.Show.Show Data.MediaBus.Audio.Channels.ChannelLayout
instance Data.MediaBus.BlankMedia.CanBeBlank r => Data.MediaBus.BlankMedia.CanBeBlank (Data.MediaBus.Audio.Channels.ChannelPair r)
instance Control.DeepSeq.NFData Data.MediaBus.Audio.Channels.ChannelLayout
instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.MediaBus.Audio.Channels.ChannelPair a)
instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Audio.Channels.ChannelPair a)
module Data.MediaBus.Audio.Raw
newtype S16 (rate :: Nat)
MkS16 :: Int16 -> S16
s16Sample :: forall rate_a10BE rate_a10Pv. Iso (S16 rate_a10BE) (S16 rate_a10Pv) Int16 Int16
class (KnownNat (GetAudioSampleRate a), SetAudioSampleRate a (GetAudioSampleRate a) ~ a, Show a, Storable a, Eq a, Ord a, Arbitrary a) => IsAudioSample a where type GetAudioSampleRate a :: Nat type SetAudioSampleRate a (b :: Nat) where {
type family GetAudioSampleRate a :: Nat;
type family SetAudioSampleRate a (b :: Nat);
}
avgSamples :: IsAudioSample a => a -> a -> a
setAudioSampleRate :: (IsAudioSample a, KnownNat r) => proxy r -> a -> SetAudioSampleRate a r
setAudioSampleRateTo8kHz :: (IsAudioSample x, y ~ SetAudioSampleRate x 8000) => x -> y
setAudioSampleRateTo16kHz :: (IsAudioSample x, y ~ SetAudioSampleRate x 16000) => x -> y
setAudioSampleRateTo48kHz :: (IsAudioSample x, y ~ SetAudioSampleRate x 48000) => x -> y
doubleAudioSampleRate :: forall a b. (IsAudioSample a, b ~ SetAudioSampleRate a (GetAudioSampleRate a + GetAudioSampleRate a), KnownNat (GetAudioSampleRate a + GetAudioSampleRate a)) => a -> b
instance GHC.TypeLits.KnownNat r => Data.MediaBus.Audio.Raw.IsAudioSample (Data.MediaBus.Audio.Raw.S16 r)
instance Data.MediaBus.BlankMedia.CanBeBlank (Data.MediaBus.Audio.Raw.S16 r)
instance Data.MediaBus.Audio.Raw.IsAudioSample a => Data.MediaBus.Audio.Raw.IsAudioSample (Data.MediaBus.Audio.Channels.ChannelPair a)
instance Data.MediaBus.Audio.Channels.HasChannelLayout (Data.MediaBus.Audio.Raw.S16 r)
instance GHC.Generics.Generic (Data.MediaBus.Audio.Raw.S16 rate)
instance Test.QuickCheck.Arbitrary.Arbitrary (Data.MediaBus.Audio.Raw.S16 rate)
instance GHC.Classes.Ord (Data.MediaBus.Audio.Raw.S16 rate)
instance GHC.Classes.Eq (Data.MediaBus.Audio.Raw.S16 rate)
instance GHC.Num.Num (Data.MediaBus.Audio.Raw.S16 rate)
instance Foreign.Storable.Storable (Data.MediaBus.Audio.Raw.S16 rate)
instance Control.DeepSeq.NFData (Data.MediaBus.Audio.Raw.S16 rate)
instance GHC.TypeLits.KnownNat r => Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * (Data.MediaBus.Audio.Raw.S16 r))
instance GHC.Show.Show (Data.MediaBus.Audio.Raw.S16 r)
module Data.MediaBus.Audio.Resample
resample8to16kHz' :: (NFData s, NFData t, NFData p, NFData i, IsAudioSample sa, GetAudioSampleRate sa ~ 8000, Monad m, IsAudioSample (SetAudioSampleRate sa 16000), NFData (SetAudioSampleRate sa 16000)) => sa -> Conduit (Stream i s t p (SampleBuffer sa)) m (Stream i s t p (SampleBuffer (SetAudioSampleRate sa 16000)))
module Data.MediaBus.DebugSink
class HasDebugPlaybackSink s t c
debugPlaybackSink :: (HasDebugPlaybackSink s t c, MonadIO m) => Sink (Frame s t c) m ()
streamDebugPlaybackSink :: (Default i, HasDebugPlaybackSink s t c, MonadIO m) => Sink (Stream i s t p c) m ()
instance Data.MediaBus.DebugSink.HasDebugPlaybackSink s t c => Data.MediaBus.DebugSink.HasDebugPlaybackSink s t (Data.MediaBus.Segment.Segment d c)
instance GHC.TypeLits.KnownNat r => Data.MediaBus.DebugSink.HasDebugPlaybackSink s t (Data.MediaBus.Sample.SampleBuffer (Data.MediaBus.Audio.Raw.S16 r))
module Data.MediaBus.Audio.Alaw
newtype ALaw
MkALaw :: Word8 -> ALaw
alawSample :: Iso' ALaw Word8
instance GHC.Classes.Ord Data.MediaBus.Audio.Alaw.ALaw
instance Data.MediaBus.Ticks.HasDuration (Data.Proxy.Proxy * Data.MediaBus.Audio.Alaw.ALaw)
instance Data.MediaBus.Audio.Channels.HasChannelLayout Data.MediaBus.Audio.Alaw.ALaw
instance Data.MediaBus.Transcoder.Transcoder (Data.MediaBus.Sample.SampleBuffer Data.MediaBus.Audio.Alaw.ALaw) (Data.MediaBus.Sample.SampleBuffer (Data.MediaBus.Audio.Raw.S16 8000))
instance Data.MediaBus.Transcoder.Transcoder (Data.MediaBus.Sample.SampleBuffer (Data.MediaBus.Audio.Raw.S16 8000)) (Data.MediaBus.Sample.SampleBuffer Data.MediaBus.Audio.Alaw.ALaw)
instance Data.MediaBus.Audio.Raw.IsAudioSample Data.MediaBus.Audio.Alaw.ALaw
instance Data.MediaBus.BlankMedia.CanBeBlank Data.MediaBus.Audio.Alaw.ALaw
instance GHC.Generics.Generic Data.MediaBus.Audio.Alaw.ALaw
instance Test.QuickCheck.Arbitrary.Arbitrary Data.MediaBus.Audio.Alaw.ALaw
instance Data.Bits.Bits Data.MediaBus.Audio.Alaw.ALaw
instance GHC.Classes.Eq Data.MediaBus.Audio.Alaw.ALaw
instance GHC.Num.Num Data.MediaBus.Audio.Alaw.ALaw
instance Foreign.Storable.Storable Data.MediaBus.Audio.Alaw.ALaw
instance GHC.Show.Show Data.MediaBus.Audio.Alaw.ALaw
instance Control.DeepSeq.NFData Data.MediaBus.Audio.Alaw.ALaw
module Data.MediaBus.AsyncConduit
withAsyncPolledSource :: (MonadResource m, MonadBaseControl IO m, KnownNat r, Integral t, Integral s, Default c, Default p, HasStaticDuration c, HasDuration c, NFData c, NFData p, NFData s, NFData t, Random i, Random t, Random s, Show c) => Int -> Source m (Stream i s (Ticks r t) p c) -> ((Async (), Source m (Stream i s (Ticks r t) p (Discontinous c))) -> m o) -> m o
data PayloadQ a
mkPayloadQ :: forall m a. (HasStaticDuration a, MonadBaseControl IO m) => Int -> m (PayloadQ a)
payloadQSink :: (NFData a, MonadBaseControl IO m, Show a) => PayloadQ a -> Sink (Stream i s t p a) m ()
payloadQSource :: (Random i, NFData c, NFData p, Default p, HasStaticDuration c, HasDuration c, MonadBaseControl IO m, KnownNat r, Integral t, Integral s, NFData t, NFData s) => PayloadQ c -> Source m (Stream i s (Ticks r t) p (Discontinous c))
module Data.MediaBus