Commit 14f5518f authored by Piotr Fusik's avatar Piotr Fusik Committed by Tim-Philipp Müller
parent 92ad7f0d
......@@ -140,7 +140,7 @@ PLATFORMS
- MacOSX is reported to work; specific audio and video sinks have been written
- Windows support is experimental but improving. Output sinks have been
written but are not yet included in the code. We support
- MSys/MingW builds
- MSys/MinGW builds
- Microsoft Visual Studio 6 builds (see win32/README.txt)
INSTALLING FROM PACKAGES
......
......@@ -120,7 +120,7 @@ GTK-DOC NOTES
- add all documented symbols to gstreamer-sections.txt in the proper section
(default),<SUBSECTION Standard>,<SUBSECTION Private>
- document at least the Short_Description in tmpl/.sgml
- document symbols where they are definied, so that when one changes the
- document symbols where they are defined, so that when one changes the
definition, the chaces are good that docs are updated.
- document functions, signals in the .c files
- document structs, typedefs, enums in the .h files
......
......@@ -5,7 +5,7 @@ This draft document describes a possible design for arbitrary per-buffer
metadata.
The proposed changes in this document are not ABI/API compatible with the 0.10
version of GStreamer and should thus only be considered for upcomming unstable
version of GStreamer and should thus only be considered for upcoming unstable
versions.
Buffer metadata typically includes properties that give more information about
......
......@@ -39,7 +39,7 @@ for wild (application specific) customisation.
Categories are base on _intended usage_ of the element. Some elements
might have other side-effects (especially for filers/effects). The purpose
is to list enough keywords so that applications can do meaningfull filtering,
is to list enough keywords so that applications can do meaningful filtering,
not to completely describe the functionality, that is expressed in caps etc..
* Source : produces data
......
......@@ -45,7 +45,7 @@ Shared data structures and writability:
_get_writable() function call. This function will check the refcount of the
object and if the object is referenced by more than one instance, a copy is
made of the object that is then by definition only referenced from the calling
thread. This new copy is then modifyable without being visible to other
thread. This new copy is then modifiable without being visible to other
refcount holders.
This technique is used for information objects that, once created, never
......
......@@ -27,7 +27,7 @@ API/ABI
- Optimize negotiation. We currently do a get_caps() call when we link pads,
which could potentially generate a huge list of caps and all their
combinations, we need to avoid generating these huge lists by generating them
incrementaly when needed. We can do this with a gst_pad_iterate_caps() call.
incrementally when needed. We can do this with a gst_pad_iterate_caps() call.
We also need to incrementally return intersections etc, for this.
- Elements in a bin have no clue about the final state of the parent element
......
......@@ -63,7 +63,7 @@ fakesrc:src's activation function is then called.
Note that it does not make sense to set an activation function on a
source pad. The peer of a source pad is downstream, meaning it should
have been activated first. If it was activated in PULL mode, the the
have been activated first. If it was activated in PULL mode, the
source pad should have already had activate_pull() called on it, and
thus needs no further activation. Otherwise it should be in PUSH mode,
which is the choice of the default activation function.
......
......@@ -163,7 +163,7 @@ Issues
When an EOS event has passed a pad and the pad is set to blocked, the block will
never happen because no data is going to flow anymore. One possibility is to
keep track of the pad's EOS state and make the block succeed immediatly. This is
keep track of the pad's EOS state and make the block succeed immediately. This is
not yet implemenented.
When dynamically reconnecting pads, some events (like NEWSEGMENT, EOS,
......
......@@ -11,7 +11,7 @@ live sources.
We want to be able to implement the following features:
- buffering up to a specifc amount of data, in memory, before starting playback
- buffering up to a specific amount of data, in memory, before starting playback
so that network fluctuations are minimized.
- download of the network file to a local disk with fast seeking in the
downloaded data. This is similar to the quicktime/youtube players.
......@@ -79,7 +79,7 @@ Some use cases:
The application can use the BUFFERING query to get the estimated download time
and match this time to the current/remaining playback time to control when
playback should start to have a non-interupted playback experience.
playback should start to have a non-interrupted playback experience.
* Timeshifting
......
......@@ -81,7 +81,7 @@ group.
Metadata
~~~~~~~~
Each of the buffers inside the bufferlist can have metadata assiociated with it.
Each of the buffers inside the bufferlist can have metadata associated with it.
The metadata of the bufferlist is always the metadata of the first buffer of the
first group in the bufferlist. This means that:
......
......@@ -15,6 +15,6 @@ produce (see part-pads.txt and part-negotiation.txt).
Caps are also attached to buffers to describe to content of the data
pointed to be the buffer.
Various methods exist to work with the media types such as substracting
Various methods exist to work with the media types such as subtracting
or intersecting.
......@@ -3,7 +3,7 @@ Clocks
The GstClock returns a monotonically increasing time with the method
_get_time(). Its accuracy and base time depends on the specific clock
implementation but time is always expessed in nanoseconds. Since the
implementation but time is always expressed in nanoseconds. Since the
baseline of the clock is undefined, the clock time returned is not
meaningful in itself, what matters are the deltas between two clock
times.
......
......@@ -179,7 +179,7 @@ sink overview
STREAM_UNLOCK
break
NEWSEGMENT:
# the newsegment must be used to clip incomming
# the newsegment must be used to clip incoming
# buffers. Then then go into the queue as non-prerollable
# items used for syncing the buffers
STREAM_LOCK
......
......@@ -25,7 +25,7 @@ the following things:
Some transform elements can operate in different modes:
- passthrough (no changes are done on the input buffers)
- in-place (changes made directly to the incomming buffers without requiring a
- in-place (changes made directly to the incoming buffers without requiring a
copy or new buffer allocation)
- metadata changes only
......@@ -266,7 +266,7 @@ state. We can identify these steady states:
input buffer is transformed into the output buffer. The flow is exactly
the same as the case with the same-caps negotiation. (DCC)
We can immeditatly observe that the copy transform states will need to
We can immediately observe that the copy transform states will need to
allocate a buffer from a downstream element using pad-alloc. When the transform
element is receiving a non-writable buffer in the in-place state, it will also
need to perform a pad-alloc. There is no reason why the passthrough state would
......@@ -300,7 +300,7 @@ generated in the chain function is handled above in the copy-transform and the
in-place transform when the input buffer is not writable or the input buffer
size is smaller than the output size.
We are left with the last case (proxy an incomming pad-alloc or not). We have 2
We are left with the last case (proxy an incoming pad-alloc or not). We have 2
possibilities here:
- pad-alloc is called with the same caps as are currently being handled by
......@@ -413,7 +413,7 @@ retrieve the size. There are two functions:
Given a caps and a size on one pad, and a caps on the other pad, calculate
the size of the other buffer. This function is able to perform all size
transforms and is the prefered method of transforming a size.
transforms and is the preferred method of transforming a size.
- get_unit_size()
......
......@@ -121,11 +121,11 @@ Before sending buffers, an element must send a NEWSEGMENT event. An element is
free to refuse buffers if they were not preceeded by a NEWSEGMENT event.
Elements that sync to the clock should store the NEWSEGMENT start and end values
and substract the start value from the buffer timestamp before comparing
and subtract the start value from the buffer timestamp before comparing
it against the stream time (see part-clocks.txt).
An element is allowed to send out buffers with the NEWSEGMENT start time already
substracted from the timestamp. If it does so, it needs to send a corrected
subtracted from the timestamp. If it does so, it needs to send a corrected
NEWSEGMENT downstream, ie, one with start time 0.
A NEWSEGMENT event should be generated as soon as possible in the pipeline and
......
......@@ -113,7 +113,7 @@ The step event is created with the following fields in the structure:
direction.
"flush", G_TYPE_BOOLEAN
when flushing is TRUE, the step is performed immediatly:
when flushing is TRUE, the step is performed immediately:
- In the PAUSED state the pipeline loses the PAUSED state, the requested
amount of data is skipped and the pipeline prerolls again when a
......@@ -140,7 +140,7 @@ The step event is created with the following fields in the structure:
Signal that this step operation is an intermediate step, part of a series
of step operations. It is mostly interesting for stepping in the PAUSED state
because the sink will only perform a preroll after a non-intermediate step
operation completes. Intermediate steps are usefull to flush out data from
operation completes. Intermediate steps are useful to flush out data from
other sinks in order to not cause excessive queueing. In the PLAYING state
the intermediate flag has no visual effect. In all states, the intermediate
flag is passed to the corresponding GST_MESSAGE_STEP_DONE.
......
......@@ -51,7 +51,7 @@ gst_element_add_pad(element,pads):
Fails if either the element or pad are either NULL or not what they
claim to be. Should fail if the pad already has a parent. Should fail
if the pad is already owned by the element. Should fail if there's
already a pad by that name in the the list of pads.
already a pad by that name in the list of pads.
pad = gst_element_get_pad(element,"padname"):
Searches through the list of pads
......
......@@ -406,7 +406,7 @@ are already active, so it ignores them.
Similarly in (4), activating D will cause the activation of all of the
rest of the pads, in this order: C d c b a B A. Then when the state
change gets to the other elements they are already active, and in fact
data flow is already occuring.
data flow is already occurring.
So, from these scenarios, we can distill how ghost pad activation
functions should work:
......
......@@ -95,7 +95,7 @@ capture pipelines.
* the sink will receive the buffer with timestamp 0 at time >= D. At this
point the buffer is too late already and might be dropped. This state of
constantly dropping data will not change unless a constant latency
correction is added to the incomming buffer timestamps.
correction is added to the incoming buffer timestamps.
The problem is due to the fact that the sink is set to (pending) PLAYING
without being prerolled, which only happens in live pipelines.
......
......@@ -103,7 +103,7 @@ GST_MESSAGE_ELEMENT:
GST_MESSAGE_SEGMENT_START:
An element started playback of a new segment. This message is not forwarded
the the application but is used internally to schedule SEGMENT_DONE messages.
the application but is used internally to schedule SEGMENT_DONE messages.
GST_MESSAGE_SEGMENT_DONE:
......
......@@ -40,7 +40,7 @@ A three step process:
There is not much useful information we can give about how to resolve this
issue. It is possible to use the first N bytes of the data to determine the
type (and needed plugin) on the server. We don't explore this option in this
document yet, but the proposal is flexible enough to accomodate this in the
document yet, but the proposal is flexible enough to accommodate this in the
future should the need arise.
- missing demuxer
......
......@@ -42,12 +42,12 @@ The basics of negotiation are as follows:
The core will automatically call the set_caps function for this purpose
when it is installed on the sink or source pad.
- When requesting a buffer from a bufferpool, the prefered type should
- When requesting a buffer from a bufferpool, the preferred type should
be passed to the buffer allocation function. After receiving a buffer
from a bufferpool, the datatype should be checked again.
- A bufferpool allocation function should try to allocate a buffer of the
prefered type. If there is a good reason to choose another type, the
preferred type. If there is a good reason to choose another type, the
alloc function should see if that other type is accepted by the other
element, then allocate a buffer of that type and attach the type to the
buffer before returning it.
......
......@@ -9,7 +9,7 @@ clock and typically happens in the sinks when they synchronize buffers
against the clock.
The measurements result in QOS events that aim to adjust the datarate
in one or more upstream elements. Two types of adjustements can be
in one or more upstream elements. Two types of adjustments can be
made:
- short time "emergency" corrections based on latest observation
......@@ -350,7 +350,7 @@ in audio are more disturbing than dropping video frames. Also video requires in
general more processing than audio.
Normally there is a threshold for when buffers get dropped in a video sink. Frames
that arrive 20 milliseconds late are still rendered as it is not noticable for
that arrive 20 milliseconds late are still rendered as it is not noticeable for
the human eye.
A QoS message is posted whenever a (part of a) buffer is dropped.
......
......@@ -8,7 +8,7 @@ Pushing
~~~~~~~
A pad can produce data and push it to the next pad. A pad that behaves this way
exposes a loop function that will be called repeadedly until it returns false.
exposes a loop function that will be called repeatedly until it returns false.
The loop function is allowed to block whenever it wants. When the pad is deactivated
the loop function should unblock though.
......@@ -24,7 +24,7 @@ Pulling
Pads that operate in pulling mode can only pull data from a pad that exposes the
pull_range function. In this case, the sink pad exposes a loop function that will be
called repeadedly until the task is stopped.
called repeatedly until the task is stopped.
After pulling data from the peer pad, the loop function will typically call the
push function to push the result to the peer sinkpad.
......
......@@ -178,12 +178,12 @@ Summary:
- if the KEY_UNIT flag is *not* specified, the demuxer/parser should
start pushing data from a key unit preceding the seek position
(or from the the seek position if that falls on a key unit), and
(or from the seek position if that falls on a key unit), and
the start of the new segment should be the requested seek position.
- if the KEY_UNIT flag is specified, the demuxer/parser should start
pushing data from the key unit nearest the seek position (or from
the the seek position if that falls on a key unit), and
the seek position if that falls on a key unit), and
the start of the new segment should be adjusted to the position of
that key unit which was nearest the requested seek position (ie.
the new segment start should be the position from which data is
......
......@@ -179,7 +179,7 @@ function returns a GstElementStateReturn.
* If the element aborts the ASYNC state change due to an error within the
specified timeout, this function returns FAILURE with the state set to last
successfull state and pending set to the last attempt. The element should
successful state and pending set to the last attempt. The element should
also post an error message on the bus with more information about the problem.
......@@ -201,7 +201,7 @@ error.
If all the children return SUCCESS, the function returns SUCCESS as well.
If one of the children returns FAILURE, the function returns FAILURE as well. In
this state it is possible that some elements successfuly changed state. The
this state it is possible that some elements successfully changed state. The
application can check which elements have a changed state, which were in error
and which were not affected by iterating the elements and calling _get_state()
on the elements.
......
......@@ -9,7 +9,7 @@ thread changes. The purpose of this message is to allow the application to
interact with the streaming thread properties, such as the thread priority or
the threadpool to use.
We accomodate for the following requirements:
We accommodate for the following requirements:
- Application is informed when a streaming thread is about to be created. It
should be possible for the application to suggest a custom GstTask.
......
......@@ -19,7 +19,7 @@ FIG_SRC = $(notdir $(wildcard $(srcdir)/*.fig))
# extra sources to copy in build directory
EXTRA_SRC =
### this is the generic bit and you shouln't need to change this
### this is the generic bit and you shouldn't need to change this
# get the generic docbuilding Makefile stuff
include $(srcdir)/../manuals.mak
......
......@@ -57,7 +57,7 @@ Does GStreamer offer support for DVD decoder cards like dxr2/3 ?
<answer>
<para>
We do have support for the dxr3, although dxr2 support is unknown.
GStreamer can easily accomodate hardware acceleration by writing new
GStreamer can easily accommodate hardware acceleration by writing new
device-specific elements.
</para>
</answer>
......
......@@ -80,7 +80,7 @@ application doesn't play back your files, you can help us solve that problem
by <ulink url="http://bugzilla.gnome.org">filing an enhancement request
bug</ulink> for that format. If you have it, please provide:
<itemizedlist>
<listitem><para>links to other players, preferrably Open Source and working
<listitem><para>links to other players, preferably Open Source and working
on Unix</para></listitem>
<listitem><para>links to explanations of the format.</para></listitem>
<listitem><para>ways to obtain mediafiles in that format to test.
......
......@@ -22,7 +22,7 @@ FIG_SRC = $(notdir $(wildcard $(srcdir)/*.fig))
# extra sources to copy in build directory
EXTRA_SRC =
### this is the generic bit and you shouln't need to change this
### this is the generic bit and you shouldn't need to change this
# get the generic docbuilding Makefile stuff
include $(srcdir)/../manuals.mak
......
......@@ -53,7 +53,7 @@
<function>gst_clock_get_time ()</function>. The clock-time does not
need to start at 0. The pipeline, which contains the global clock that
all elements in the pipeline will use, in addition has a <quote>base
time</quote>, which is the clock time at the the point where the
time</quote>, which is the clock time at the point where the
pipeline went to the PLAYING state. Each element can subtract the
<quote>base time</quote> from the clock-time to know the current
running time.
......
......@@ -7,7 +7,7 @@
The controller subsystem offers a lightweight way to adjust gobject
properties over stream-time. Normaly these properties are changed using
<function>g_object_set()</function>. Timing those calls reliably so that
the changes affect certain stream times is close to imposible. The
the changes affect certain stream times is close to impossible. The
controller takes time into account. It works by attaching control-sources
to properties. Control-sources can provide new values for the properties
for a given timestamp. At run-time the elements continously pull values
......@@ -30,7 +30,7 @@
</para>
<para>
The <filename>gstreamer-controller</filename> library needs to be initialized
when your application is run. This can be done after the the GStreamer
when your application is run. This can be done after the GStreamer
library has been initialized.
</para>
<programlisting>
......
......@@ -525,7 +525,7 @@ main (int argc,
video sinks can already play the first frame (since this does
not affect the clock yet). Autopluggers could use this same
state transition to already plug together a pipeline. Most other
elements, such as codecs or filters, do not need to explicitely
elements, such as codecs or filters, do not need to explicitly
do anything in this state, however.
</para>
</listitem>
......
......@@ -3,7 +3,7 @@
<para>
When writing a &GStreamer; application, you can simply include
<filename>gst/gst.h</filename> to get access to the library
functions. Besides that, you will also need to intialize the
functions. Besides that, you will also need to initialize the
&GStreamer; library.
</para>
......
......@@ -37,7 +37,7 @@
request. The meaning of those three types is exactly as it says:
always pads always exist, sometimes pad exist only in certain
cases (and can disappear randomly), and on-request pads appear
only if explicitely requested by applications.
only if explicitly requested by applications.
</para>
<sect2 id="section-pads-dynamic">
......
......@@ -12581,7 +12581,7 @@
style="font-size:12px"
y="-434.5477"
x="554.7406"
sodipodi:role="line">- effetcs</tspan><tspan
sodipodi:role="line">- effects</tspan><tspan
id="tspan4637"
style="font-size:12px"
y="-419.5477"
......@@ -14283,7 +14283,7 @@
style="font-size:12px"
y="-1005.6619"
x="499.47424"
sodipodi:role="line">- effetcs</tspan><tspan
sodipodi:role="line">- effects</tspan><tspan
id="tspan6117"
style="font-size:12px"
y="-990.66187"
......
......@@ -163,7 +163,7 @@ main (gint argc,
<para>
Supports stream selection and disabling. If your media has
multiple audio or subtitle tracks, you can dynamically choose
which one to play back, or decide to turn it off alltogther
which one to play back, or decide to turn it off altogether
(which is especially useful to turn off subtitles). For each
of those, use the <quote>current-text</quote> and other related
properties.
......
......@@ -23,7 +23,7 @@
</para>
<para>
One of the the most obvious uses of &GStreamer; is using it to build
One of the most obvious uses of &GStreamer; is using it to build
a media player. &GStreamer; already includes components for building a
media player that can support a very wide variety of formats, including
MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod, and more. &GStreamer;,
......
......@@ -19,7 +19,7 @@ FIG_SRC = $(notdir $(wildcard $(srcdir)/*.fig))
# extra sources to copy in build directory
EXTRA_SRC =
### this is the generic bit and you shouln't need to change this
### this is the generic bit and you shouldn't need to change this
# get the generic docbuilding Makefile stuff
include $(srcdir)/../manuals.mak
......
......@@ -81,7 +81,7 @@
element, it might be a good idea to add it to <filename>gsttag.c</filename>
instead. That's up to you to decide. If you want to do it in your own
element, it's easiest to register the tag in one of your class init
functions, preferrably <function>_class_init ()</function>.
functions, preferably <function>_class_init ()</function>.
</para>
<programlisting>
<![CDATA[
......
......@@ -272,7 +272,7 @@
<title>The Basic Types</title>
<para>
&GStreamer; already supports many basic media types. Following is a
table of a few of the the basic types used for buffers in
table of a few of the basic types used for buffers in
&GStreamer;. The table contains the name ("mime type") and a
description of the type, the properties associated with the type, and
the meaning of each property. A full list of supported types is
......
......@@ -27,7 +27,7 @@
</para>
<para>
One of the the most obvious uses of &GStreamer; is using it to build
One of the most obvious uses of &GStreamer; is using it to build
a media player. &GStreamer; already includes components for building a
media player that can support a very wide variety of formats, including
MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod, and more. &GStreamer;,
......
......@@ -151,7 +151,7 @@ gst_my_sink_class_init (GstMySinkClass * klass)
<listitem>
<para>
Features can be added to all audiosinks by making a change in the
base class, which makes maintainance easy.
base class, which makes maintenance easy.
</para>
</listitem>
<listitem>
......@@ -192,7 +192,7 @@ gst_my_sink_class_init (GstMySinkClass * klass)
<para>
By adding new features to <classname>GstVideoSink</classname>, it
will be possible to add extensions to videosinks that affect all of
them, but only need to be coded once, which is a huge maintainance
them, but only need to be coded once, which is a huge maintenance
benefit.
</para>
</listitem>
......
......@@ -58,7 +58,7 @@ gst_my_source_get (GstPad *pad)
Those will continuously describe the current state of the stream.
Query functions can be used to get stream properties such as current
position and length. This can be used by fellow elements to convert
this same value into a different unit, or by appliations to provide
this same value into a different unit, or by applications to provide
information about the length/position of the stream to the user.
Conversion functions are used to convert such values from one unit
to another. Lastly, events are mostly used to seek to positions
......
......@@ -43,7 +43,7 @@ provided by various plugins.
We will create a little pipeline to detect the media type by connecting
a disksrc element to a typefind element. The typefind element will
repeadedly call all registered typefind functions with the buffer it
repeatedly call all registered typefind functions with the buffer it
receives on its sink pad. when a typefind function returns a non NULL
GstCaps*, that caps is set to the sink pad of the typefind element and
a signal is emitted to notify the app.
......@@ -195,7 +195,7 @@ for the second sink the following is needed:
Note that for the audio connection the element list "mpeg1parse, mp3parse,
mpg123" would also connect the srccaps to the audiosink caps. Since the
"mpeg1parse, mad" list is shorter, it it always prefered by the autoplugger.
"mpeg1parse, mad" list is shorter, it it always preferred by the autoplugger.
We now have two lists of elementfactories.
......
......@@ -54,7 +54,7 @@ aligned video) and pixel-aspect-ratio (default value being 1/1). Adding p-a-r
was in this case an example of 2bII, whereas stride is 2bI. The reason for
this is simple: adding pixel-aspect-ratio to some element and not to others
could lead to misunderstanding size. However, this is not a regression,
because not adding it alltogether would lead to the same misunderstanding.
because not adding it altogether would lead to the same misunderstanding.
In both cases, the result would be wrongly sized video. Therefore, there
is no regression and there is a bugfix, so this is fine. Obviously, the
optional property is in this case very specifically a temporary solution.
......
......@@ -4,13 +4,13 @@ Stream selection
1. Problem
URIs (that being either a media stream or a media stream plus subtitle) can
contain multiple streams of a type (audio, subtitle). A user has to be given
the option of selecting one of those streams (or none alltogether).
the option of selecting one of those streams (or none altogether).
2. Implementation ideas
Stream selection, in GStreamer, has to be integrated at the player plugging
level, which is (in the case of Totem) playbin. Playbin offers a feature to
'mute' a stream (which means that no processing is done on that stream
alltogether, saving the decoding step). Currently, playbin will select the
altogether, saving the decoding step). Currently, playbin will select the
first occurrence of a stream type and mute all others. A queue is connected
(for pre-roll) to the active stream. What is missing here is a way to change
the active stream.
......@@ -30,7 +30,7 @@ stream was linked. Alternatively, a switch-like element is used, which
requires no replugging. Pad disabling/enabling is then enough. This also
makes relinking less painful. The switch-like element needs to proxy the
active pads' caps. However, since those caps are (in practice) always the
same accross streams, caps setting will (inside the core) immediately
same across streams, caps setting will (inside the core) immediately
return success.
The switch-like element simply works like this:
=
......
......@@ -162,7 +162,7 @@ As with option2, a global plan will be built. At runtime the src pads
will actually specify the capabilities they need for any element that
wants to be connected to its source pads.
In this case we specifiy the capabilities for all the sink pads of an
In this case we specify the capabilities for all the sink pads of an
element at create time. The capabilities of the src pads would only
become available when data has been processed by the element.
......
......@@ -209,7 +209,7 @@ for themselves - most of the time depending on caps on other pads in the
element. The core then takes those, intersects them and if the intersection
isn't empty fixates them. Fixation is a process that selects the best possible
fixed caps from a caps. A fixed caps is a caps that describes only one format
and cannot be reduced further. After both pads acdepted the fixed caps, its
and cannot be reduced further. After both pads accepted the fixed caps, its
format is then used to describe the contents of the buffers that are passed on
this link. Caps can be serialized and deserialized to a string representation.
[Add: a medium complex caps description (audioconvert?)]
......
......@@ -39,7 +39,7 @@ What is needed
Elements that sink raw data buffers of usualy constant size would like to
maintain a bufferpool. These could be sinks or encoders. We need mechanims to
select and dynamicaly update:
select and dynamically update:
- the bufferpool owners in a pipeline
- the bufferpool sizes
......