[gst-devel] Gran Canaria meeting notes
Thomas Vander Stichele
thomas at apestaart.org
Sat Nov 14 16:21:49 CET 2009
Hi gang,
I had sent my notes to Jan a while ago, and Jan was going to integrate
his notes, but then life caught up or something.
So instead, here are both his and my raw notes, for those that can still
make sense of it! Consider it like the exclusive limited edition
dvd-only backdoor access for those who weren't there.
Thomas
--
the things I do posess
sometimes they own me too
--
MOAP - Maintaining your projects since 2006
https://apestaart.org/moap/trac/
-------------- next part --------------
== GStreamer 1.0 ==
Possible items:
* Easier installations for other platforms
- Windows and OS/X installs
- One of the corporate partners could just do it if they think it's important
- We should invite people to join the release process
- It's hard to keep people interested in making Windows builds in the long term 'for the fun of it', so we end up with multiple out-of-date installer bundles from different people
- Build slaves might help, to keep ensuring that everything continues to build on interesting platforms
- wix might be a good option for getting to msi files for Windows
- LRN uses MingW cross-compilation
- Windows builds need to be handled by someone who really cares
- Moovida uses Git GStreamer and their own build process
- Songbird build and ship their own GStreamer as well. They use patched autotools/libtools + MS VC compiler. MikeS could comment more and provide good feedback
- Tandberg / Ole Andre
Toward GStreamer 1.0
* There is a GStreamer 0.11 wiki page
* There is a simple TODO list in the docs/random/part-TODO.txt
* Concerns about the March 2010 timeline proposal
* Desire to do more of the experimental work in 0.10 - introduce base classes, . Explore the API there better.
* "Release 1.0 with new core, removed deprecated API and invite applications to start porting while we start adding features again" is not a good plan.
* Needs to be less ambitious than with the 0.9 dev cycle, as we don't have the same core of hackers that can work on it full time
* must fix items
- remove the existing deprecated API
- GstImplementsInterface needs to die
- Must have a porting guide
* nice to have
- Add base classes for Audio/Video decoders (can happen in 0.10 master)
* API that needs improving:
XOverlay -> GstVideoEmbedInterface
* Caps negotiation - switch to a iterator model
* Reverse negotiation via buffer alloc is flawed. Use an upstream notification mechanism from downstream that 'something has changed'
* 2 opinions: define a timeline for GNOME 3.0 and approach it vs. choose our own 'deadline' rather than arbitrarily pick GNOME 3.0 which is too soon
== Supporting KDE/Qt better ==
* Need examples of GMainloop/QtMainloop examples
* Widget examples
* applies to OS/X and Windows too - provide more platform example code
* KDE people say GSTreamer backend for Phonon sucks
* We don't know who is working on it
* Video support in Phonon unimplemented
* Need to get the word out and invite people into #gstreamer
* There are several GStreamer phonon backends, and it's not clear what the 'current' one is.
* Need a way to get in touch with the relevant developers
* GStreamer is the default backend because it's the only one they can easily ship, but it doesn't work properly
* Stefan to try and find some of the developers to get us in touch
* kdenlive are using MLT
* Edward had some discussions with Amarok developers
- didn't know there were GStreamer C++ bindings.
- A simple helper API that hides all the complex GStreamer API
* Tim doesn't think that C++ bindings are convincing, at least not to Qt people, as they're not Qt APIs
* There are some Qt bindings for GStreamer in KDE svn somewhere
* Applying resources to GStreamer 1.0 will prevent a lot of effort on this from us
* Poor communication - KDE devs that don't know GStreamer runs on Windows for e.g.
* Oliviere: Last night Andrunko said he had once tried to build some QObject style APIs via GObject introspection, which may be a least-effort way to go.
Notes from ThomasVS:
remove deprecated api's
ugly api
ImplementsInterface
tuner
XOverlay (Tim), slight adjusting
PropertyProbe (Tim), ugly
caps nego
n2 algorithms (Wim)
upstream caps change with bufferalloc: change without dropping the buffer
Jan and Wim agree on an iterator approach instead of generating huge lists
part-todo.txt
easy stuff, search and replace
buffers
subclassing doesn't work well
used now for
special allocation; to verify you created the buffer
netbuffer
subbuffering
for metadata (not yet used that way)
plan
some way of tagging buffers
using something like a structure but with less overhead
prototype using just a GType, not subclassable, just a structure with a refcount
video buffers: caps and metadata
concept
yuv
stride
chroma
scale
gamma
subrectangle for visible region
buffer row-stride
clean-region
interlace-info
clean up colorspaces (for example for hi-def)
chroma subsampling
interleaved/non-interleaved audio
caps
things that don't change per buffer
things needed for negotiating
hints on what the metadata could contain
tags
things that change per buffer
newsegment
makes pipelines harder to do dynamically
it only comes at the start
it's state that needs to be kept on pads
very similar to the caps on the buffer (Wim), but you would lose speed that way (Edward)
descriptor of the stream, for timing information
caching in the pad: great
putting it on every buffer: not so great
elements mostly store it for clipping or demuxing
makes sense to keep as an event (for example for GDP)
"given a buffer, how do I get the timing info for that buffer" (Wim)
parity error between segment and accumulator
timestamps
rounding errors for nanoseconds
use a clock-base
clock-base would be per-stream, not global
clock distribution
make it atomic to set clock and base time
GST_CLOCK_TIME_NONE
shoving a signed int into a uint creates problems
bindings
needing to use macros
negative timestamps
Jan has a use case for DVD's sending older data after sending time info
error reporting
Internal flow error coming from the source
no way to know where it came from except looking from the log
caps negotiation and intersection failing
Stefan would already be happy with something in the logs saying why
this is for app developers trying to figure out nego
Jan: should be possible to try and negotiate, get a failure message, and try again with a different decoder/element
this is for the app
Laszlo dumps images from pipeline in debug mode
Wim says gst-launch does this when it hits an error
caps names and mime type
elements could post mime types as tags
clear up when a name is not a mime type ?
bindings
what problems do we create for bindings ?
should all functions that can fail give a GError ?
special constructors ?
C-based stuff like writability based on refcounting ?
writability and refcounting should be separate somehow ?
MiniObjects ?
ORC
Should we endorse it ?
Dave has already made GStreamer branches ?
our requirements ?
we think it's a really good way to go
with liboil you needed to ifdef after adding a function to liboil for you
orc is more like a vector shader language
liboil will not be a hard requirement for 1.0 anymore
maybe include orc in the tree to help it stabilize and make us more active on it ? Doesn't seem necessary
registry stuff
Jan: can be done in 0.10
exec a binary and communicate over a socket
fixes scanning on OSX
fixes Windows scanning where you don't have fork
you can blacklist plugins
property probe
Tim knows what he wants to do but doesn't have an API yet
Not sure he wants to tie it to elements
ideally it will be hotpluggable
maybe a centralized device manager with notifications
parse library
pull it out of core
unify microlibraries
GstBus
async messages
with futures mechanism
when the metadata is posted needs changing
to when the data is being rendered
Infrastructure
our own server ?
storage for media
buildmaster
custom web app
central chroot for making tarballs
API experiments (Wim)
pad_alloc
get_range
new web page
Stefan wants to get feedback and deploy
caps
stepped ranges (like multiple of 8)
RGB caps should be more like YUV (get rid of the masks)
black metadata
things that don't fit in the current tags
tags on pads
tags should be sticky on pads too, like newsegment (Olivier)
preset
discussion with Christian
TODO
wiki with tips
stefan's tracer log
cymacs log analyzer
Mine
log refcounting
stream time deprecated ?
More information about the gstreamer-devel
mailing list