docs/design/draft-klass.txt: Some updates and clarifications.

Original commit message from CVS:
* docs/design/draft-klass.txt:
Some updates and clarifications.
This commit is contained in:
Wim Taymans 2006-02-28 17:03:32 +00:00
parent fe37c5aad2
commit 9857a3cea2
2 changed files with 55 additions and 25 deletions

View file

@ -1,3 +1,8 @@
2006-02-28 Wim Taymans <wim@fluendo.com>
* docs/design/draft-klass.txt:
Some updates and clarifications.
2006-02-28 Wim Taymans <wim@fluendo.com>
* docs/design/draft-klass.txt:

View file

@ -39,21 +39,35 @@ Proposal:
- functional
Categories are base on _intended usage_ of the element. Some elements
might have other sideeffects (especially for filers/effects). The purpose
might have other side-effects (especially for filers/effects). The purpose
is to list enough keywords so that applications can do meaningfull filtering,
not to completely describe the functionality, that is expressed in caps etc..
* Source : produces data
* Sink : consumes data
* Filter : transforms data, no modification on the data is
intended (although it might be unavoidable)
* Effect : applies an effect to some data, changes to data is
intended (although it might be unavoidable). The
filter can decide on input and output caps independently
of the stream contents (GstBaseTransform).
* Effect : applies an effect to some data, changes to data are
intended.
* Demuxer : splits audio, video, ... from a stream
* Muxer : combines audio, video, ... into one stream
* Decoder : decodes encoded data into a raw format
* Encoder : encodes raw data into an encoded format
* Visualisation : transforms audio into video
* Muxer : interleave audio, video, ... into one stream, this is
like mixing but without losing or degrading each separate
input stream. The reverse operation is possible with a
Demuxer that reproduces the exact same input streams.
* Decoder : decodes encoded data into a raw format, there is typically
no relation between input caps and output caps. The output
caps are defined in the stream data. This separates the
decoder from the filter.
* Encoder : encodes raw data into an encoded format.
* Mixer : combine audio, video, .. this is like muxing but with
applying some algorithm so that the individual streams
are not extractable anymore, there is therefore no
reverse operation to mixing.
* Converter : convert audio into video, text to audio, ... The converter
typically works on raw types only. The source media type
is listed first.
* Analyzer : reports about the stream contents.
* Debug : tee, identity, fakesrc, navseek, ...
* Control : controls some aspect of a hardware device
@ -83,37 +97,42 @@ Proposal:
* Payloader : encapsulate as payload (RTP, RDT,.. )
* Depayloader : strip a payload (RTP, RDT,.. )
* RTP : intended to be used in RTP applications
* Device : operates on some hardware device (disk, network,
audio card, video card, usb, ...)
* Visualisation : intended to be used for audio visualisation
3) suggested order:
<functional>/<media type>/<extra...>
<functional>[/<media type>]*[/<extra...>]*
4) examples:
apedemux : Extracter/Metadata
autoaudiosink : Sink/Audio
cairotimeoverlay : Effect/Muxer/Video/Text
audiotestsrc : Source/Audio
autoaudiosink : Sink/Audio/Device
cairotimeoverlay : Mixer/Video/Text
dvdec : Decoder/Video
dvdemux : Demuxer
goom : Visualisation
goom : Converter/Audio/Video
id3demux : Extracter/Metadata
udpsrc : Source/Network/Protocol
videomixer : Effect/Muxer/Video
ffmpegcolorspace : Filter/Video (intended use to convert video)
udpsrc : Source/Network/Protocol/Device
videomixer : Mixer/Video
ffmpegcolorspace : Transform/Video (intended use to convert video with as little
visible change as possible)
vertigotv : Effect/Video (intended use is to change the video)
volume : Effect/Audio (intended use is to change the audio)
volume : Effect/Audio (intended use is to change the audio data)
vorbisdec : Decoder/Audio
vorbisenc : Encoder/Audio
oggmux : Muxer
adder : Effect/Muxer/Audio
adder : Mixer/Audio
videobox : Effect/Video
alsamixer : Control/Audio
audioconvert : Filter/Audio
audioresample : Filter/Audio
xvimagesink : Sink/Video
alsamixer : Control/Audio/Device
audioconvert : Transform/Audio
audioresample : Transform/Audio
xvimagesink : Sink/Video/Device
navseek : Debug
decodebin : Decoder/Demuxer
level : Filter/Analyzer/Audio
level : Transform/Analyzer/Audio
Use cases:
@ -123,13 +142,13 @@ Use cases:
- get list of muxers (pitivi):
klass.contains (Muxer & !Effect)
klass.contains (Muxer)
- get list of encoders (pitivi):
- get list of video encoders (pitivi):
klass.contains (Encoder)
klass.contains (Encoder & video)
- Get a list of all visualisations (totem):
- Get a list of all audio/video visualisations (totem):
klass.contains (Visualisation)
@ -137,4 +156,10 @@ Use cases:
klass.contains (Visualisation | Demuxer | Decoder | (Extractor & Metadata))
- Get a list of elements that can capture from an audio device (gst-properties):
klass.contains (Source & Audio & Device)
* filters out audiotestsrc, since it is not a device