mediabus-0.2.0.1: Multimedia streaming on top of Conduit

Safe HaskellNone
LanguageHaskell2010

Data.MediaBus.Stream

Synopsis

Documentation

class SetPayload a (GetPayload a) ~ a => HasPayload a where Source #

Minimal complete definition

payload

Associated Types

type GetPayload a Source #

type SetPayload a b Source #

Methods

payload :: Traversal a (SetPayload a b) (GetPayload a) b Source #

Instances

HasPayload a => HasPayload (Discontinous a) Source # 

Associated Types

type GetPayload (Discontinous a) :: * Source #

type SetPayload (Discontinous a) b :: * Source #

Methods

payload :: Applicative f => (GetPayload (Discontinous a) -> f b) -> Discontinous a -> f (SetPayload (Discontinous a) b) Source #

HasPayload (Frame s t c) Source # 

Associated Types

type GetPayload (Frame s t c) :: * Source #

type SetPayload (Frame s t c) b :: * Source #

Methods

payload :: Applicative f => (GetPayload (Frame s t c) -> f b) -> Frame s t c -> f (SetPayload (Frame s t c) b) Source #

HasPayload (Stream i s t p c) Source # 

Associated Types

type GetPayload (Stream i s t p c) :: * Source #

type SetPayload (Stream i s t p c) b :: * Source #

Methods

payload :: Applicative f => (GetPayload (Stream i s t p c) -> f b) -> Stream i s t p c -> f (SetPayload (Stream i s t p c) b) Source #

data FrameCtx i s t p Source #

Constructors

MkFrameCtx !i !t !s !p 

Instances

(Eq p, Eq s, Eq t, Eq i) => Eq (FrameCtx i s t p) Source # 

Methods

(==) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

(/=) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

(Ord p, Ord s, Ord t, Ord i) => Ord (FrameCtx i s t p) Source # 

Methods

compare :: FrameCtx i s t p -> FrameCtx i s t p -> Ordering #

(<) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

(<=) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

(>) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

(>=) :: FrameCtx i s t p -> FrameCtx i s t p -> Bool #

max :: FrameCtx i s t p -> FrameCtx i s t p -> FrameCtx i s t p #

min :: FrameCtx i s t p -> FrameCtx i s t p -> FrameCtx i s t p #

(Show i, Show s, Show t, Show p) => Show (FrameCtx i s t p) Source # 

Methods

showsPrec :: Int -> FrameCtx i s t p -> ShowS #

show :: FrameCtx i s t p -> String #

showList :: [FrameCtx i s t p] -> ShowS #

Generic (FrameCtx i s t p) Source # 

Associated Types

type Rep (FrameCtx i s t p) :: * -> * #

Methods

from :: FrameCtx i s t p -> Rep (FrameCtx i s t p) x #

to :: Rep (FrameCtx i s t p) x -> FrameCtx i s t p #

(Arbitrary i, Arbitrary s, Arbitrary t, Arbitrary p) => Arbitrary (FrameCtx i s t p) Source # 

Methods

arbitrary :: Gen (FrameCtx i s t p) #

shrink :: FrameCtx i s t p -> [FrameCtx i s t p] #

(Default i, Default s, Default t, Default p) => Default (FrameCtx i s t p) Source # 

Methods

def :: FrameCtx i s t p #

(NFData i, NFData s, NFData t, NFData p) => NFData (FrameCtx i s t p) Source # 

Methods

rnf :: FrameCtx i s t p -> () #

HasSeqNum (FrameCtx i s t p) Source # 

Methods

seqNum :: Functor f => (GetSeqNum (FrameCtx i s t p) -> f s) -> FrameCtx i s t p -> f (SetSeqNum (FrameCtx i s t p) s) Source #

HasSeqNumT (FrameCtx i s t p) Source # 

Associated Types

type GetSeqNum (FrameCtx i s t p) :: * Source #

type SetSeqNum (FrameCtx i s t p) s :: * Source #

HasTimestamp (FrameCtx i s t p) Source # 

Methods

timestamp :: Functor f => (GetTimestamp (FrameCtx i s t p) -> f s) -> FrameCtx i s t p -> f (SetTimestamp (FrameCtx i s t p) s) Source #

timestamp' :: Lens' (FrameCtx i s t p) (GetTimestamp (FrameCtx i s t p)) Source #

HasTimestampT (FrameCtx i s t p) Source # 

Associated Types

type GetTimestamp (FrameCtx i s t p) :: * Source #

type SetTimestamp (FrameCtx i s t p) s :: * Source #

HasDuration (FrameCtx i s t p) Source # 
type Rep (FrameCtx i s t p) Source # 
type Rep (FrameCtx i s t p) = D1 (MetaData "FrameCtx" "Data.MediaBus.Stream" "mediabus-0.2.0.1-GufOXSQMJOgBSiYlFFnZ4L" False) (C1 (MetaCons "MkFrameCtx" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "_frameCtxSourceId") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 i)) (S1 (MetaSel (Just Symbol "_frameCtxTimestampRef") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 t))) ((:*:) (S1 (MetaSel (Just Symbol "_frameCtxSeqNumRef") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 s)) (S1 (MetaSel (Just Symbol "_frameCtxInit") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 p)))))
type GetSeqNum (FrameCtx i s t p) Source # 
type GetSeqNum (FrameCtx i s t p) = s
type GetTimestamp (FrameCtx i s t p) Source # 
type GetTimestamp (FrameCtx i s t p) = t
type SetSeqNum (FrameCtx i s t p) x Source # 
type SetSeqNum (FrameCtx i s t p) x = FrameCtx i x t p
type SetTimestamp (FrameCtx i s t p) t' Source # 
type SetTimestamp (FrameCtx i s t p) t' = FrameCtx i s t' p

frameCtxSourceId :: forall i s t p i. Lens (FrameCtx i s t p) (FrameCtx i s t p) i i Source #

frameCtxSeqNumRef :: forall i s t p s. Lens (FrameCtx i s t p) (FrameCtx i s t p) s s Source #

frameCtxTimestampRef :: forall i s t p t. Lens (FrameCtx i s t p) (FrameCtx i s t p) t t Source #

frameCtxInit :: forall i s t p p. Lens (FrameCtx i s t p) (FrameCtx i s t p) p p Source #

data Frame s t c Source #

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.

Constructors

MkFrame !t !s !c 

Instances

Functor (Frame s t) Source # 

Methods

fmap :: (a -> b) -> Frame s t a -> Frame s t b #

(<$) :: a -> Frame s t b -> Frame s t a #

(Eq c, Eq s, Eq t) => Eq (Frame s t c) Source # 

Methods

(==) :: Frame s t c -> Frame s t c -> Bool #

(/=) :: Frame s t c -> Frame s t c -> Bool #

(Ord c, Ord s, Ord t) => Ord (Frame s t c) Source # 

Methods

compare :: Frame s t c -> Frame s t c -> Ordering #

(<) :: Frame s t c -> Frame s t c -> Bool #

(<=) :: Frame s t c -> Frame s t c -> Bool #

(>) :: Frame s t c -> Frame s t c -> Bool #

(>=) :: Frame s t c -> Frame s t c -> Bool #

max :: Frame s t c -> Frame s t c -> Frame s t c #

min :: Frame s t c -> Frame s t c -> Frame s t c #

(Show s, Show t, Show v) => Show (Frame s t v) Source # 

Methods

showsPrec :: Int -> Frame s t v -> ShowS #

show :: Frame s t v -> String #

showList :: [Frame s t v] -> ShowS #

Generic (Frame s t c) Source # 

Associated Types

type Rep (Frame s t c) :: * -> * #

Methods

from :: Frame s t c -> Rep (Frame s t c) x #

to :: Rep (Frame s t c) x -> Frame s t c #

(Arbitrary c, Arbitrary s, Arbitrary t) => Arbitrary (Frame s t c) Source # 

Methods

arbitrary :: Gen (Frame s t c) #

shrink :: Frame s t c -> [Frame s t c] #

(Default s, Default t, Default c) => Default (Frame s t c) Source # 

Methods

def :: Frame s t c #

(NFData c, NFData s, NFData t) => NFData (Frame s t c) Source # 

Methods

rnf :: Frame s t c -> () #

HasPayload (Frame s t c) Source # 

Associated Types

type GetPayload (Frame s t c) :: * Source #

type SetPayload (Frame s t c) b :: * Source #

Methods

payload :: Applicative f => (GetPayload (Frame s t c) -> f b) -> Frame s t c -> f (SetPayload (Frame s t c) b) Source #

HasSeqNum (Frame s t c) Source # 

Methods

seqNum :: Functor f => (GetSeqNum (Frame s t c) -> f s) -> Frame s t c -> f (SetSeqNum (Frame s t c) s) Source #

HasSeqNumT (Frame s t c) Source # 

Associated Types

type GetSeqNum (Frame s t c) :: * Source #

type SetSeqNum (Frame s t c) s :: * Source #

HasTimestamp (Frame s t c) Source # 

Methods

timestamp :: Functor f => (GetTimestamp (Frame s t c) -> f s) -> Frame s t c -> f (SetTimestamp (Frame s t c) s) Source #

timestamp' :: Lens' (Frame s t c) (GetTimestamp (Frame s t c)) Source #

HasTimestampT (Frame s t c) Source # 

Associated Types

type GetTimestamp (Frame s t c) :: * Source #

type SetTimestamp (Frame s t c) s :: * Source #

HasDuration c => HasDuration (Frame s t c) Source # 
type Rep (Frame s t c) Source # 
type Rep (Frame s t c) = D1 (MetaData "Frame" "Data.MediaBus.Stream" "mediabus-0.2.0.1-GufOXSQMJOgBSiYlFFnZ4L" False) (C1 (MetaCons "MkFrame" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "_frameTimestamp") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 t)) ((:*:) (S1 (MetaSel (Just Symbol "_frameSeqNum") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 s)) (S1 (MetaSel (Just Symbol "_framePayload") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 c)))))
type GetPayload (Frame s t c) Source # 
type GetPayload (Frame s t c) = c
type GetSeqNum (Frame s t c) Source # 
type GetSeqNum (Frame s t c) = s
type GetTimestamp (Frame s t c) Source # 
type GetTimestamp (Frame s t c) = t
type SetPayload (Frame s t c) d Source # 
type SetPayload (Frame s t c) d = Frame s t d
type SetSeqNum (Frame s t c) x Source # 
type SetSeqNum (Frame s t c) x = Frame x t c
type SetTimestamp (Frame s t c) t' Source # 
type SetTimestamp (Frame s t c) t' = Frame s t' c

frameSeqNum :: forall s t c s. Lens (Frame s t c) (Frame s t c) s s Source #

frameTimestamp :: forall s t c t. Lens (Frame s t c) (Frame s t c) t t Source #

framePayload :: forall s t c c. Lens (Frame s t c) (Frame s t c) c c Source #

newtype Stream i s t p c Source #

Constructors

MkStream (Streamish i s t p c) 

Instances

(Eq c, Eq i, Eq t, Eq s, Eq p) => Eq (Stream i s t p c) Source # 

Methods

(==) :: Stream i s t p c -> Stream i s t p c -> Bool #

(/=) :: Stream i s t p c -> Stream i s t p c -> Bool #

(Ord c, Ord i, Ord t, Ord s, Ord p) => Ord (Stream i s t p c) Source # 

Methods

compare :: Stream i s t p c -> Stream i s t p c -> Ordering #

(<) :: Stream i s t p c -> Stream i s t p c -> Bool #

(<=) :: Stream i s t p c -> Stream i s t p c -> Bool #

(>) :: Stream i s t p c -> Stream i s t p c -> Bool #

(>=) :: Stream i s t p c -> Stream i s t p c -> Bool #

max :: Stream i s t p c -> Stream i s t p c -> Stream i s t p c #

min :: Stream i s t p c -> Stream i s t p c -> Stream i s t p c #

(Show i, Show s, Show t, Show c, Show p) => Show (Stream i s t p c) Source # 

Methods

showsPrec :: Int -> Stream i s t p c -> ShowS #

show :: Stream i s t p c -> String #

showList :: [Stream i s t p c] -> ShowS #

Generic (Stream i s t p c) Source # 

Associated Types

type Rep (Stream i s t p c) :: * -> * #

Methods

from :: Stream i s t p c -> Rep (Stream i s t p c) x #

to :: Rep (Stream i s t p c) x -> Stream i s t p c #

(Arbitrary c, Arbitrary p, Arbitrary t, Arbitrary s, Arbitrary i) => Arbitrary (Stream i s t p c) Source # 

Methods

arbitrary :: Gen (Stream i s t p c) #

shrink :: Stream i s t p c -> [Stream i s t p c] #

(Default c, Default s, Default t) => Default (Stream i s t p c) Source # 

Methods

def :: Stream i s t p c #

(NFData i, NFData s, NFData t, NFData c, NFData p) => NFData (Stream i s t p c) Source # 

Methods

rnf :: Stream i s t p c -> () #

HasPayload (Stream i s t p c) Source # 

Associated Types

type GetPayload (Stream i s t p c) :: * Source #

type SetPayload (Stream i s t p c) b :: * Source #

Methods

payload :: Applicative f => (GetPayload (Stream i s t p c) -> f b) -> Stream i s t p c -> f (SetPayload (Stream i s t p c) b) Source #

HasSeqNum (Stream i s t p c) Source # 

Methods

seqNum :: Functor f => (GetSeqNum (Stream i s t p c) -> f s) -> Stream i s t p c -> f (SetSeqNum (Stream i s t p c) s) Source #

HasSeqNumT (Stream i s t p c) Source # 

Associated Types

type GetSeqNum (Stream i s t p c) :: * Source #

type SetSeqNum (Stream i s t p c) s :: * Source #

HasTimestamp (Stream i s t p c) Source # 

Methods

timestamp :: Functor f => (GetTimestamp (Stream i s t p c) -> f s) -> Stream i s t p c -> f (SetTimestamp (Stream i s t p c) s) Source #

timestamp' :: Lens' (Stream i s t p c) (GetTimestamp (Stream i s t p c)) Source #

HasTimestampT (Stream i s t p c) Source # 

Associated Types

type GetTimestamp (Stream i s t p c) :: * Source #

type SetTimestamp (Stream i s t p c) s :: * Source #

HasDuration c => HasDuration (Stream i s t p c) Source # 

Methods

getDuration :: Stream i s t p c -> NominalDiffTime Source #

getDurationTicks :: (Integral i, KnownNat r) => Stream i s t p c -> Ticks r i Source #

type Rep (Stream i s t p c) Source # 
type Rep (Stream i s t p c)
type GetPayload (Stream i s t p c) Source # 
type GetPayload (Stream i s t p c) = c
type GetSeqNum (Stream i s t p c) Source # 
type GetSeqNum (Stream i s t p c) = s
type GetTimestamp (Stream i s t p c) Source # 
type GetTimestamp (Stream i s t p c) = t
type SetPayload (Stream i s t p c) d Source # 
type SetPayload (Stream i s t p c) d = Stream i s t p d
type SetSeqNum (Stream i s t p c) x Source # 
type SetSeqNum (Stream i s t p c) x = Stream i x t p c
type SetTimestamp (Stream i s t p c) t' Source # 
type SetTimestamp (Stream i s t p c) t' = Stream i s t' p c

stream :: forall i s t p c i s t p c. Iso (Stream i s t p c) (Stream i s t p c) (Streamish i s t p c) (Streamish i s t p c) Source #

yieldStreamish :: Monad m => Streamish i s t p c -> Conduit a m (Stream i s t p c) Source #

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) Source #

yieldNextFrame :: Monad m => Frame s t c -> Conduit a m (Stream i s t p c) Source #

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) Source #

yieldStartFrameCtx :: Monad m => FrameCtx i s t p -> Conduit a m (Stream i s t p c) Source #

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) Source #

toFramesC :: Monad m => Conduit (Stream i s t p c) m (Frame s t c) Source #

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') Source #

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') Source #

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') Source #

mapSeqNumC :: Monad m => (s -> s') -> Conduit (Stream i s t p c) m (Stream i s' t p c) Source #

mapTicksC :: Monad m => (t -> t') -> Conduit (Stream i s t p c) m (Stream i s t' p c) Source #

mapTicksC' :: (NFData t, Monad m) => (t -> t') -> Conduit (Stream i s t p c) m (Stream i s t' p c) Source #

mapPayloadMC :: Monad m => (c -> m c') -> Conduit (Stream i s t p c) m (Stream i s t p c') Source #

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') Source #

mapPayloadC' :: (NFData c', Monad m) => (c -> c') -> Conduit (Stream i s t p c) m (Stream i s t p c') Source #

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) Source #

foldStream :: (Monoid o, Monad m) => (Stream i s t p c -> o) -> Sink (Stream i s t p c) m o Source #

foldStreamM :: (Monoid o, Monad m) => (Stream i s t p c -> m o) -> Sink (Stream i s t p c) m o Source #

concatStreamContents :: (Monoid c, Monad m) => Sink (Stream i s t p c) m c Source #