Re: Gstreamer [WAS: Variable Framerate, plugin based video editing tool]
Steve Lhomme <[email protected]> Fri, 30 Jan 2004 16:06:22 +0100
| Newsgroups | gmane.comp.multimedia.media-api |
|---|---|
| Message-ID | <[email protected]> |
Enrico Weigelt wrote: >>You should know then that they simply don't want to cooporate with us. >>(just collaborate with we agree with all they say and work their way) > > rich felker doesnt want to cooperate. other probably will, but they > have high requirements. I personally wanna see media-api to fulfil > these. So we have to read the mplayer-g2 list carefully. Its very > interesting. OK ok. I'll have a look. One issue I'm thinking about with a powerful/flexible media API is the way it can handle OGG + Vorbis. Because the timecode can only be known by the codec, not the container... That implies a rather tricky design. >>We are going to investigate the GStreamer way and see if it's enough. >>That would be a lot of work already done (I'm very lazy ;). > > On a first view I see some problems w/ gstreamer: > > * muxers are implemented as filters (how shoud this work ?!) > this brings us huge trouble! muxers brigde between frame-sequences > and binary streams. we need a _clear_ decision between them, i.e. > frames have timestamps/time intervals, binary streams are simply bytes Well, this is the case in DirectShow too. What is the problem with that ? > * what are the factories for ?! > why cant we simply have list of codecs, which transform from encoding > A to B ? Allocating one should look like this: > > mmapi_codec_alloc ( 'mp3', 'pcm16' ); > > Also we require a query interface to list off the installed codecs > (this list could also be read from a config file, so we can support > load-on-call) I haven't checked GStreamer that far yet. One of the major problems of GStreamer is that you have to compile the documentation :/ > * the pads could be left off, if we would divide all devices into > strict groups. For example a codec always converts _one_ stream > from A to B - so it always has _one_ input and _one_ output. I can think of examples with either multiple input or multiple outputs... > * gstreamer relies on glib - I do _not_ want to use it, since its > bloated (in times of 1.x it was good), and many other projects > also dont want it. these days glib is good for GUI-centric > applications (together w/ gtk), but not for fundamental codec APIs. Well, as long as it runs on many OSes I don't have any problem with it. As long as it doesn't do things that are already done (better) in the OS. >>From start of this project, we were talking about a _CODEC_ API, > _NOT_ an allround a/v-processing-library. Mmm, no. My real-time DJing software is a example of things I want to do. It's not just about codecs and containers. > Gstreamer mixers things together, which are completely different > (i.e. codecs, io-streams, muxers, filters), so it implies a very > generic api for all this kind of objects. This is nice for intuitive > design of filter chains, but adds unnecessary overhead in things > like realtime applications. Maybe GStreamer is not suited for real-time/low-latency. But that's another problem. And I really want to know if that's the case or not. > So Gstreamer may be seen as a superset of our media-api, but I wan > to keep the media-api small and performant, otherwise other projects > won't use it. Well, maybe the media-api is name is not good. At least it's not what I have in mind. It should handle more than just muxing/demuxing. And GStreamer/DirectShow is the kind of thing I have in mind.