mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
docs: update docs
This commit is contained in:
parent
1ea2722180
commit
44d45e0b63
2 changed files with 193 additions and 2 deletions
|
@ -10,8 +10,7 @@ API/ABI
|
||||||
keyframe, after the seek you want to get the new stream time that will
|
keyframe, after the seek you want to get the new stream time that will
|
||||||
actually be used to update the slider bar.
|
actually be used to update the slider bar.
|
||||||
|
|
||||||
- make gst_pad_push_event() return a GstFlowReturn so that we can resend
|
- make gst_pad_push_event() return a GstFlowReturn
|
||||||
NEWSEGMENT and other events.
|
|
||||||
|
|
||||||
- GstEvent, GstMessage register like GstFormat or GstQuery.
|
- GstEvent, GstMessage register like GstFormat or GstQuery.
|
||||||
|
|
||||||
|
|
192
docs/random/status-0.11-14-jun-2011.txt
Normal file
192
docs/random/status-0.11-14-jun-2011.txt
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
0.11 status 1 jun 2011
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Hello again GStreamer hackers,
|
||||||
|
|
||||||
|
|
||||||
|
Here's another status update from the 0.11 branch. This one is packed
|
||||||
|
with new stuff because it really took too long between the last
|
||||||
|
update, but well..
|
||||||
|
|
||||||
|
|
||||||
|
Misc Core Changes
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The first set of big core change was done by über hacker Sebastian Dröge.
|
||||||
|
He removed our special GST_BOILERPLATE macro. Because of some API strangeness
|
||||||
|
we needed to do actions in the base_init method, which the GST_BOILERPLATE
|
||||||
|
macro set up for us. The base_init concept is unfortunately not supported
|
||||||
|
by almost all language bindings so we wanted to clean this up and use the
|
||||||
|
regular G_DEFINE_TYPE macros. By inheriting metadata and pad templates
|
||||||
|
from the parent, the GST_BOILERPLATE macro could be removed.
|
||||||
|
|
||||||
|
|
||||||
|
Removal of gst_pad_alloc_buffer
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
The next big change was the removal of gst_pad_alloc_buffer along with
|
||||||
|
all the pad_alloc functions. The pad_alloc function were used to both
|
||||||
|
implement allocation of buffers and notify upstream elements of new media
|
||||||
|
formats. The functionality is replace by 3 new things: GstBufferPool (as
|
||||||
|
noted in the previous status update), a new ALLOCATION query and a new
|
||||||
|
RECONFIGURE event.
|
||||||
|
|
||||||
|
The ALLOCATION query is used to query the downstream elements about the
|
||||||
|
buffer properties they would like. These properties include the size,
|
||||||
|
prefix and alignment of the memory. The downstream element can also propose
|
||||||
|
a GstBufferPool. It is then the upstream element that decides how it
|
||||||
|
will allocate buffers. This allows us, for example, to make the video
|
||||||
|
decoders specify their required memory alignment to the videosink.
|
||||||
|
|
||||||
|
Since new format suggestions are no longer piggybacked upstream with the
|
||||||
|
allocation, something new was needed to notify upstream elements of a
|
||||||
|
format change. It started with bringing in the new RENEGOTIATE event
|
||||||
|
that Thiago Santos had been experimenting with in the 0.10 branch. The
|
||||||
|
new event basically lets upstream elements know that new formats are
|
||||||
|
possible somewhere downstream and it would make them renegotiate a new
|
||||||
|
format before pushing a new buffer.
|
||||||
|
|
||||||
|
New format changes can also happen when new elements are linked, so
|
||||||
|
gst_pad_link() will also send this RENEGOTIATE event upstream. As it turns
|
||||||
|
out, adding new elements could also signal the availability of a new
|
||||||
|
bufferpool or different ALLOCATION properties. The RENEGOTIATE event was
|
||||||
|
thus renamed to the more generic RECONFIGURE event.
|
||||||
|
|
||||||
|
The most impressive result of these changes is that most of the
|
||||||
|
complicated code in GstBaseTransform could simply be removed.
|
||||||
|
|
||||||
|
|
||||||
|
Sticky Events
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The idea for the sticky events comes from the observation that a lot of the
|
||||||
|
serialized downstream events (SEGMENT, EOS, TAGS, ..) are really context
|
||||||
|
for the buffers that follow. The design called for making these events
|
||||||
|
sticky on the pads, meaning that they become a property of the pads
|
||||||
|
they travel over.
|
||||||
|
|
||||||
|
The result is that the current timing information (SEGMENT event) or the
|
||||||
|
current stream medatadata (TAG event) that is handled by the pad are
|
||||||
|
directly accessible by looking at the last event that traveled on the pad.
|
||||||
|
|
||||||
|
By making the events stick on the pads, we can propagate them downstream
|
||||||
|
automatically when new pads are linked. This should solve one of the
|
||||||
|
biggest 0.10 problems when dealing with dynamic pipelines, the loss of
|
||||||
|
events (mostly NEWSEGMENT events).
|
||||||
|
|
||||||
|
It was then only natural to also make the CAPS event a sticky downstream
|
||||||
|
serialized event. CAPS are indeed also context for the buffers that follow.
|
||||||
|
The caps property was also removed from GstBuffer, making caps negotiation
|
||||||
|
separate from the buffer dataflow again.
|
||||||
|
|
||||||
|
|
||||||
|
GstSegment changes
|
||||||
|
------------------
|
||||||
|
|
||||||
|
For the sticky events to work with SEGMENT events, we needed to change
|
||||||
|
the SEGMENT event so that it became selfcontained. The complicated segment
|
||||||
|
accumulation logic of 0.10 was simply removed and replaced with pad offsets.
|
||||||
|
|
||||||
|
It is now possible to tweak the timing of the data comming from a pad by
|
||||||
|
using the pad offset property.
|
||||||
|
|
||||||
|
|
||||||
|
GstCaps optimizations
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
It doesn't look like we'll be able to implement GstCaps iterators to 0.11 so
|
||||||
|
Sebastian was looking for other ways to improve caps performance. One of the
|
||||||
|
lowhanging fruits was to pass the complete GstCaps structure to the
|
||||||
|
GstBaseTransform transform_caps method. This allows for better and smarter
|
||||||
|
implementations of the function at the cost of marginally more complex code.
|
||||||
|
|
||||||
|
Sebastian also added a filter caps parameter to the gst_pad_get_caps()
|
||||||
|
function. This allows the caller to pass preferences and possible caps to
|
||||||
|
the function. The result is that the pad can make much better negotiation
|
||||||
|
decisions.
|
||||||
|
|
||||||
|
Sebastian also optimized gst_caps_is_subset()in the 0.10 branch and ported
|
||||||
|
the results to 0.11 as well.
|
||||||
|
|
||||||
|
with the still planned caps simplifications later, these changes should
|
||||||
|
substantially improve caps negotiation speed.
|
||||||
|
|
||||||
|
|
||||||
|
Pad probes
|
||||||
|
----------
|
||||||
|
|
||||||
|
Quite a few iterations were needed to reimplement the pad blocking and pad
|
||||||
|
probes. The new infrastructure allows you to add callbacks for the various
|
||||||
|
stages in the data transfer on a pad.
|
||||||
|
|
||||||
|
It's now possible to be notified when no data is going over a pad with the
|
||||||
|
IDLE probe. This should also fix one of the big problems with implementing
|
||||||
|
dynamic pipelines and the old pad blocking.
|
||||||
|
|
||||||
|
Not all features that we want to add to the new probes are implemented yet
|
||||||
|
but they can be added later without much trouble.
|
||||||
|
|
||||||
|
|
||||||
|
Other gems
|
||||||
|
----------
|
||||||
|
|
||||||
|
A new SCHEDULING query was added to get more information about the upstream
|
||||||
|
elements scheduling properties.
|
||||||
|
|
||||||
|
Tim-Philipp Müller finally removed our dependency on libxml2. Back in the
|
||||||
|
day, we used XML for serialization of objects and the registry. Object
|
||||||
|
serialization had long been deprecated and the XML registry was replaced
|
||||||
|
with a much faster binary registry.
|
||||||
|
|
||||||
|
Tim also removed the unversioned gst-launch, gst-inspect and gst-typefind
|
||||||
|
scripts. They were always confusing and annoying for packagers and users,
|
||||||
|
it is just easier
|
||||||
|
|
||||||
|
Edward Hervey spent some time keeping the unit tests working and making
|
||||||
|
sure the API docs are up to data.
|
||||||
|
|
||||||
|
GstIterator was made more binding friendly By Johan Dahlin and Sebastian.
|
||||||
|
|
||||||
|
|
||||||
|
And what about the plugins..
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
As usual, all -base plugins are kept in sync with the core API updates and
|
||||||
|
the new features. They are always a good place to see how the new API can
|
||||||
|
be used and how to port things.
|
||||||
|
|
||||||
|
|
||||||
|
What's next
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Almost all of the features laid out in the GStreamer conference last year
|
||||||
|
are now implemented. We also have quite a few new cool features that
|
||||||
|
slipped in. Things are shaping up indeed.
|
||||||
|
|
||||||
|
The last big missing piece is the redesign of the caps fields for raw audio
|
||||||
|
and video. We plan to finish that in the next weeks.
|
||||||
|
|
||||||
|
There are also a few smaller things we would like to do: use GstQuery
|
||||||
|
for the various caps functions, do GstFlowReturn for the query/event
|
||||||
|
functions, ...
|
||||||
|
|
||||||
|
Meanwhile we start the stabilization phase and we will do a first prerelease
|
||||||
|
of 0.11 this week to bring things to a wider audience. Now is the time to
|
||||||
|
catch up and start porting your plugins to 0.11.
|
||||||
|
|
||||||
|
There is still a lot of work to be done to port plugins to 0.11 before we
|
||||||
|
can release 1.0. I ask everyone again (and especially maintainers) to help
|
||||||
|
us porting plugins, it's really a lot of work!
|
||||||
|
|
||||||
|
|
||||||
|
Have a nice hacking week,
|
||||||
|
|
||||||
|
Wim
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue