mediabus-0.4.0.1: Multimedia streaming on top of Conduit

Safe HaskellNone
LanguageHaskell2010

Data.MediaBus.Media.Stream

Description

A media Stream is often represented by a Series of related Frames with a FrameCtx created when the Stream Starts. This module contains the basic definitions of the building blocks of media content that is create, processed, and presented by a possibly infinite Series of chunks called Frames.

Synopsis

Documentation

data FrameCtx i s t p Source #

Meta information about a media stream.

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 # 

Associated Types

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

type SetSeqNum (FrameCtx i s t p) s :: * 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 #

HasTimestamp (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 #

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 #

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.Media.Stream" "mediabus-0.4.0.1-KxOztWIrQ7SL9k5ZMcQI4H" 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 #

class EachFrameCtxInit s t where Source #

Class for types that have a Traversal for $sel:_frameCtxInit:MkFrameCtx

Minimal complete definition

eachFrameCtxInit

Associated Types

type FrameCtxInitFrom s Source #

type FrameCtxInitTo t Source #

Methods

eachFrameCtxInit :: Traversal s t (FrameCtxInitFrom s) (FrameCtxInitTo t) Source #

A traversal for the FrameCtx initial content, skipping over any Frame

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

HasSeqNum (Frame s t c) Source # 

Associated Types

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

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

Methods

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

HasTimestamp (Frame s t c) Source # 

Associated Types

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

type SetTimestamp (Frame s t c) s :: * 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 #

HasDuration c => HasDuration (Frame s t c) Source # 
HasMedia c c' => HasMedia (Frame s t c) (Frame s t c') Source # 

Associated Types

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

type MediaTo (Frame s t c') :: * Source #

Methods

media :: Lens (Frame s t c) (Frame s t c') (MediaFrom (Frame s t c)) (MediaTo (Frame s t c')) Source #

EachChannel c c' => EachChannel (Frame s t c) (Frame s t c') Source # 

Associated Types

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

type ChannelsTo (Frame s t c') :: * Source #

Methods

eachChannel :: Traversal (Frame s t c) (Frame s t c') (ChannelsFrom (Frame s t c)) (ChannelsTo (Frame s t c')) Source #

EachFrameContent (Frame s t c) (Frame s t c') Source # 

Associated Types

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

type FrameContentTo (Frame s t c') :: * Source #

Methods

eachFrameContent :: Traversal (Frame s t c) (Frame s t c') (FrameContentFrom (Frame s t c)) (FrameContentTo (Frame s t c')) Source #

type Rep (Frame s t c) Source # 
type Rep (Frame s t c) = D1 (MetaData "Frame" "Data.MediaBus.Media.Stream" "mediabus-0.4.0.1-KxOztWIrQ7SL9k5ZMcQI4H" 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 MediaFrom (Frame s t c) Source # 
type MediaFrom (Frame s t c) = MediaFrom c
type MediaTo (Frame s t c') Source # 
type MediaTo (Frame s t c') = MediaTo c'
type ChannelsFrom (Frame s t c) Source # 
type ChannelsFrom (Frame s t c) = c
type ChannelsTo (Frame s t c') Source # 
type ChannelsTo (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 FrameContentFrom (Frame s t c) Source # 
type FrameContentFrom (Frame s t c) = c
type FrameContentTo (Frame s t c') Source # 
type FrameContentTo (Frame s t c') = c'
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

class EachFrameContent s t where Source #

Class for types that have a Traversal for $sel:_framePayload:MkFrame

Minimal complete definition

eachFrameContent

Associated Types

type FrameContentFrom s Source #

type FrameContentTo t Source #

Methods

eachFrameContent :: Traversal s t (FrameContentFrom s) (FrameContentTo t) Source #

A traversal for the frame content of all Frames, skipping over any FrameCtx

Instances

EachFrameContent (Frame s t c) (Frame s t c') Source # 

Associated Types

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

type FrameContentTo (Frame s t c') :: * Source #

Methods

eachFrameContent :: Traversal (Frame s t c) (Frame s t c') (FrameContentFrom (Frame s t c)) (FrameContentTo (Frame s t c')) Source #

EachFrameContent (Stream i s t p c) (Stream i s t p c') Source # 

Associated Types

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

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

Methods

eachFrameContent :: Traversal (Stream i s t p c) (Stream i s t p c') (FrameContentFrom (Stream i s t p c)) (FrameContentTo (Stream i s t p c')) Source #

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 #

A type for values that belong to a Series of Frames started by a FrameCtx. This combines the sum type Series which has either Start or Next with FrameCtx and Frame.

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

HasSeqNum (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 #

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 #

HasTimestamp (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 #

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 #

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

Methods

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

getDurationTicks :: CanBeTicks r i => Stream i s t p c -> Ticks r i Source #

EachChannel (Frame s t c) (Frame s t c') => EachChannel (Stream i s t p c) (Stream i s t p c') Source # 

Associated Types

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

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

Methods

eachChannel :: Traversal (Stream i s t p c) (Stream i s t p c') (ChannelsFrom (Stream i s t p c)) (ChannelsTo (Stream i s t p c')) Source #

EachFrameContent (Stream i s t p c) (Stream i s t p c') Source # 

Associated Types

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

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

Methods

eachFrameContent :: Traversal (Stream i s t p c) (Stream i s t p c') (FrameContentFrom (Stream i s t p c)) (FrameContentTo (Stream i s t p c')) Source #

type Rep (Stream i s t p c) Source # 
type Rep (Stream i s t p c) = D1 (MetaData "Stream" "Data.MediaBus.Media.Stream" "mediabus-0.4.0.1-KxOztWIrQ7SL9k5ZMcQI4H" True) (C1 (MetaCons "MkStream" PrefixI True) (S1 (MetaSel (Just Symbol "_stream") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Streamish i s t p c))))
type ChannelsFrom (Stream i s t p c) Source # 
type ChannelsFrom (Stream i s t p c) = ChannelsFrom (Frame s t c)
type ChannelsTo (Stream i s t p c') Source # 
type ChannelsTo (Stream i s t p c') = ChannelsTo (Frame s t 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 FrameContentFrom (Stream i s t p c) Source # 
type FrameContentFrom (Stream i s t p c) = c
type FrameContentTo (Stream i s t p c') Source # 
type FrameContentTo (Stream i s t p c') = c'
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

type Streamish i s t p c = Series (FrameCtx i s t p) (Frame s t c) Source #

This is the type alias that Stream is a newtype wrapper of, see the description of Stream.

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 #