- In 0.10, buffers have caps attached to them. Elements should
allocate new buffers with `gst_pad_alloc_buffer ()`. See [Caps
- negotiation](pwg-negotiation.md) for more details.
+ negotiation](pwg/advanced/negotiation.md) for more details.
- Most functions returning an object or an object property have been
changed to return its own reference rather than a constant reference
some more work. Pads get assigned a scheduling mode, based on which
they can either operate in random access-mode, in pipeline driving
mode or in push-mode. all this is documented in detail in [Different
- scheduling modes](pwg-scheduling.md). As a result of this, the
+ scheduling modes](pwg/advanced/scheduling.md). As a result of this, the
bytestream object no longer exists. Elements requiring byte-level
access should now use random access on their sinkpads.
- Negotiation is asynchronous. This means that downstream negotiation
is done as data comes in and upstream negotiation is done whenever
renegotiation is required. All details are described in [Caps
- negotiation](pwg-negotiation.md).
+ negotiation](pwg/advanced/negotiation.md).
- For as far as possible, elements should try to use existing base
classes in 0.10. Sink and source elements, for example, could derive
from `GstBaseSrc` and `GstBaseSink`. Audio sinks or sources could
even derive from audio-specific base classes. All existing base
classes have been discussed in [Pre-made base
- classes](pwg-other-base.md) and the next few chapters.
+ classes](pwg/other/base.md) and the next few chapters.
- In 0.10, event handling and buffers are separated once again. This
means that in order to receive events, one no longer has to set the
need to be able to accept and process data already in the
`GST_STATE_PAUSED` state now (i.e. when prerolling the pipeline).
More details can be found in [What are
- states?](pwg-statemanage-states.md).
+ states?](pwg/building/statemanage-states.md).
- If your plugin's state change function hasn't been superseded by
virtual start() and stop() methods of one of the new base classes,
class (usually GstElementClass in these cases), and only then handle
downwards state changes. See the vorbis decoder plugin in
gst-plugins-base for an example.
-
+
The reason for this is that in the case of downwards state changes
you don't want to destroy allocated resources while your plugin's
chain function (for example) is still accessing those resources in
handled in the GstElement class's state change function, including
proper locking, that's why it is essential to chain up before
destroying allocated resources.
-
+
As already mentioned above, you should really rewrite your plugin to
derive from one of the new base classes though, so you don't have to
worry about these things, as the base class will handle it for you.
nowadays, which sets a function that is called when the format
streaming over a pad changes (so similar to `_set_link_function ()`
in GStreamer-0.8).
-
+
If the element is derived from a `GstBase` class, then override the
`set_caps ()`.
- `gst_pad_use_explicit_caps ()` has been replaced by
`gst_pad_use_fixed_caps ()`. You can then set the fixed caps to use
on a pad with `gst_pad_set_caps ()`.
-