From 9857a3cea2a037bc72ccad0e83316d8683e2b0f5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 28 Feb 2006 17:03:32 +0000 Subject: [PATCH] docs/design/draft-klass.txt: Some updates and clarifications. Original commit message from CVS: * docs/design/draft-klass.txt: Some updates and clarifications. --- ChangeLog | 5 +++ docs/design/draft-klass.txt | 75 ++++++++++++++++++++++++------------- 2 files changed, 55 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index e8e33e1214..dbf56241b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-28 Wim Taymans + + * docs/design/draft-klass.txt: + Some updates and clarifications. + 2006-02-28 Wim Taymans * docs/design/draft-klass.txt: diff --git a/docs/design/draft-klass.txt b/docs/design/draft-klass.txt index 7728425dc3..f9778b4a6d 100644 --- a/docs/design/draft-klass.txt +++ b/docs/design/draft-klass.txt @@ -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: - // + [/]*[/]* 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 +