sink or swim - carnegie mellon university · 1998 scientific and technical award avid received an...
TRANSCRIPT
Sink or Swim
Ivan [email protected]
|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
Oscar?
Yup!
1998 Scientific and Technical Award
Avid received an Oscar statuette representing the 1998 Scientific and Technical Award for the concept, design and engineering of the Avid Film Composer® system for motion picture editing.
http://www.imdb.com/event/ev0000003/1999http://fp.avid.com/pressroom/corp_bg.html
Data Streams
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
First published: March 10, 2006 http://www.ivanism.com/Articles/SinkorSwim.html
Pipe and Filter
|=========|| || Filter1 || ||=========|
|=========|| || Filter2 || ||=========|
|=========|| || Filter3 || ||=========|
|=========|| || Filter4 || ||=========|
|=========|| || Filter5 || ||=========|
-----
-- /-- \ --
-- \ -- /--
|=============|| |> >| ||=============|
|=============|| |< || ||=============|
|=============|| |> <| ||=============|
|=============|| |> >| ||=============|
|=============|| |> >| ||=============|
|=============|| |> <| ||=============|
|=============|| |> >| ||=============|
|===|| || >| ||===|
*disclaimer: neither complete nor to scale
|===|| |< >| ||===|
|===|| |> >| ||===|
|===|| |> >| ||===|
Media & PubSub & Streaming & Data
|=============|| |> >| ||=============|
|=============|| |< || ||=============|
|=============|| |> <| ||=============|
Media & PubSub & Streaming & Data
|=============|| |> >| ||=============|
|=============|| |> >| ||=============|
|=============|| |> <| ||=============|
|=============|| |> >| ||=============|
|===|| || >| ||===|
*disclaimer: neither complete nor to scale
|===|| |< >| ||===|
|===|| |> >| ||===|
|===|| |> >| ||===|
|=============|| |< || ||=============|
|=============|| |> <| ||=============|
|=============|| |> >| ||=============|
|=============|| |> >| ||=============|
|=============|| |> >| ||=============|
|=============|| |> <| ||=============|
|=============|| |> >| ||=============|
|===|| || >| ||===|
*disclaimer: neither complete nor to scale
|===|| |< >| ||===|
|===|| |> >| ||===|
|===|| |> >| ||===|
Media & PubSub & Streaming & Data
From Pipe and Filter ...
|=========|| || Filter1 || ||=========|
|=========|| || Filter2 || ||=========|
|=========|| || Filter3 || ||=========|
|=========|| || Filter4 || ||=========|
|=========|| || Filter5 || ||=========|
-----
-- /-- \ --
-- \ -- /--
… to Sink or Swim Puzzle Pieces!|=============|| || Stream >| ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Pusher >| ||=============|
Streaming Media Example
|=============|| timing loop |< Drain || ||=============| Sound Card
|=============|| timing loop |< Puller <| buffer ||=============| Codec
|=============|| |> Pool <| buffer ||=============| Jitter Buffer
|=============|| || Stream >| ||=============| NIC
|=============|| |> Pusher >| ||=============|Packet Handler
|=============|| || Stream >| ||=============| Sound Card
|=============|| |> Pusher >| ||=============| Network Sender
|=============|| |> Sink || ||=============| NIC
|=============|| |> Pusher >| ||=============| Packetizer
|=============|| |> Pusher >| ||=============| Codec
Live Podcaster
Podcast Listener
sink
|=============|| asynch. in |> || ||=============|
|=============|| || >| synch. out ||=============|
|=============|| |< synch. in || ||=============|
|=============|| || asynch. out <| ||=============|
sink
|=============|| asynch. in |> || ||=============|
|=============|| || >| synch. out ||=============|
|=============|| |< synch. in || ||=============|
|=============|| || asynch. out <| ||=============|
sink
|=============|| asynch. in |> || ||=============|
|=============|| || >| synch. out ||=============|
|=============|| |< synch. in || ||=============|
|=============|| || asynch. out <| ||=============|
a sink|=============|| timing loop |< synch. in *| ||=============|
a sink |=============|| |* asynch. out <| buffer ||=============|
a sink|=============|| timing loop |< synch. in *| ||=============|
|=============|| |* asynch. out <| buffer ||=============|
synch
|=============|| || asynch. out <| buffer ||=============|
|=============|| timing loop |< synch. in || ||=============|
|=============|| timing loop |< synch. in >| synch. out ||=============|
|=============|| asynch. in |> asynch. out <| buffer ||=============|
synch
|=============|| || >| synch. out ||=============|
|=============|| asynch. in |> || ||=============|
|=============|| timing loop |< synch. in >| synch. out ||=============|
|=============|| asynch. in |> asynch. out <| buffer ||=============|
synch
|=============|| || asynch. out <| buffer ||=============|
|=============|| timing loop |< synch. in || ||=============|
|=============|| timing loop |< synch. in >| synch. out ||=============|
|=============|| asynch. in |> asynch. out <| buffer ||=============|
|=============|| || >| synch. out ||=============|
|=============|| asynch. in |> || ||=============|
|=============|| timing loop |< synch. in >| synch. out ||=============|
|=============|| asynch. in |> asynch. out <| buffer ||=============|
(a)synch
|=============|| || Well <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| |> Pool <| buffer ||=============|
(a)synch
|=============|| || Well <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Puller <| buffer ||=============|
(a)synch
|=============|| || Well <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Puller <| buffer ||=============|
|=============|| || Well <| buffer ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| timing loop |< Puller <| buffer ||=============|
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
(a)synch
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Driver >| ||=============|
(a)synch
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Driver >| ||=============|
(a)synch
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
Formalized in Acme Studio
From Pipe and Filter ...
|=========|| || Filter1 || ||=========|
|=========|| || Filter2 || ||=========|
|=========|| || Filter3 || ||=========|
|=========|| || Filter4 || ||=========|
|=========|| || Filter5 || ||=========|
-----
-- /-- \ --
-- \ -- /--
… to Sink or Swim Puzzle Pieces!|=============|| || Stream >| ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| |> Pusher >| ||=============|
|=============|| || Well <| buffer ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| timing loop |< Puller <| buffer ||=============|
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
Next...
● More Shapes:○ 1 to many -- Diffusers?○ many to 1 -- Combiners?○ many to many -- ???
● Input to output ratios -- think gearbox!● Blocking behavior● Timing behavior
○ eg. underruns
|=============|> |> >> ||=============|
|=============|| >> >| >|=============|
|=============|| || Well <| buffer ||=============|
|=============|| |> Pool <| buffer ||=============|
|=============|| timing loop |< Drain || ||=============|
|=============|| timing loop |< Driver >| ||=============|
|=============|| timing loop |< Puller <| buffer ||=============|
|=============|| || Stream >| ||=============|
|=============|| |> Sink || ||=============|
|=============|| |> Pusher >| ||=============|
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Enhancing Pipe and Filter Diagrams
Ivan [email protected]
First published: March 10, 2006 http://www.ivanism.com/Articles/SinkorSwim.html
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Questions?
Ivan [email protected]
Enhancing Pipe and Filter Diagrams
Sink or Swim|============|| |> || ||============|
|==============|| |> <| ||==============|
Ivan [email protected]
Enhancing Pipe and Filter Diagrams