Hello Trevor,
I think this is a great idea. I have no idea how gstreamer works, but a lot of quartz is automatic pulling the pipes etc together. There are 3 categories of filters in directshow: - Source filters (can be a file, can be a webcam, can be any filter that has only an output) - Intermediate filters (can decode or parse a file, multiple can be linked together) - Renderers
I have only peeked at gstreamer, but it seems it is very similar. Wine's directshow however still misses a few things that are probably important, like sending information about when new segments start, etc. If you implemented a gstreamer codec, a big part of it could be to fix this to be more similar to what windows does.
You will probably find graphedt.exe from the microsoft sdk useful, it used to be part of the directx sdk, but later I think it became part of the platform sdk. It will probably still run, but the save/load function for saving/restoring filtergraphs is missing. However last time I looked most other functionality from it worked, if not patches should be easy to write. Also some older directx sdk's had in the extras a debug version of windows' quartz dll which is very useful if you want to test your stuff against windows' quartz. It would output extra debug information which you could use to debug stuff. I would have to do some digging to find it back again.
I have also made a stand-alone codec for schroedinger last year, which falls in the 'intermediate filters' category. It's source is available at: http://www.diracvideo.org/git?p=direct-schro.git;a=tree;h=HEAD
This is a very basic filter based on wine's directshow code and using the schroedinger open source codec to do the decoding and encoding (they're separate filters). In encoder.c there is also a beginning of a properties dialog, which might be useful if you need one for the gstreamer filter.
Cheers, Maarten.
Hi Maarten,
I think this is a great idea. I have no idea how gstreamer works, but a lot of quartz is automatic pulling the pipes etc together. There are 3 categories of filters in directshow:
- Source filters (can be a file, can be a webcam, can be any filter
that has only an output)
- Intermediate filters (can decode or parse a file, multiple can be
linked together)
- Renderers
Gstreamer is quite similiar, there are: - Sources (provide data, filesrc, v4l, networksrc, etc) - Sink (data endpoints, xvideo sink, filesink, network sink, etc) - Filters, convertors, demuxers, muxers, codecs
I have only peeked at gstreamer, but it seems it is very similar. Wine's directshow however still misses a few things that are probably important, like sending information about when new segments start, etc. If you implemented a gstreamer codec, a big part of it could be to fix this to be more similar to what windows does.
I expected there to be a number of things that are either not implemented or will need some work. At this point I don't think getting data in/out of gstreamer will be very difficult (i've done it before and am currently using gstreamer for university project). Is there any documentation about the current state of wine's quartz (ie, wiki page, good buzilla reports/comments, etc)?
I have also made a stand-alone codec for schroedinger last year, which falls in the 'intermediate filters' category. It's source is available at: http://www.diracvideo.org/git?p=direct-schro.git;a=tree;h=HEAD
Cool, thanks for the link. I will check it out a bit later once i finish some other work.
Cheers,
Trevor Davenport
Hello Trevor,
2009/3/17 Trevor Davenport trevor.davenport@gmail.com:
Hi Maarten,
I think this is a great idea. I have no idea how gstreamer works, but a lot of quartz is automatic pulling the pipes etc together. There are 3 categories of filters in directshow:
- Source filters (can be a file, can be a webcam, can be any filter
that has only an output)
- Intermediate filters (can decode or parse a file, multiple can be
linked together)
- Renderers
Gstreamer is quite similiar, there are:
- Sources (provide data, filesrc, v4l, networksrc, etc)
- Sink (data endpoints, xvideo sink, filesink, network sink, etc)
- Filters, convertors, demuxers, muxers, codecs
I have only peeked at gstreamer, but it seems it is very similar. Wine's directshow however still misses a few things that are probably important, like sending information about when new segments start, etc. If you implemented a gstreamer codec, a big part of it could be to fix this to be more similar to what windows does.
I expected there to be a number of things that are either not implemented or will need some work. At this point I don't think getting data in/out of gstreamer will be very difficult (i've done it before and am currently using gstreamer for university project). Is there any documentation about the current state of wine's quartz (ie, wiki page, good buzilla reports/comments, etc)?
I have also made a stand-alone codec for schroedinger last year, which falls in the 'intermediate filters' category. It's source is available at: http://www.diracvideo.org/git?p=direct-schro.git;a=tree;h=HEAD
Cool, thanks for the link. I will check it out a bit later once i finish some other work.
The easiest way to test how good wine's directshow is is by running some applications, and seeing what breaks. Our video playback filter sucks, and I have an improved version at http://repo.or.cz/w/wine/multimedia.git . Sadly it is not part of the current wine tree, because it relies on a hack with Xv which AJ won't allow to be used directly. In that tree there is also a opengl accelerated version, but that has issues with various drivers. Fglrx and all open source drivers will not work with them, so it's not the default. If it wasn't for that I would have gotten this merged with wine a long time ago, but breaking quartz even more for some users seemd to be a bad idea.
Directshow's way of loading a file is very simple, FilterGraph2_AddSourceFilter shows how it's done for wine (and presumably windows too). There are also some functions there that can be called by the application to build a full renderer pipeline.
Cheers, Maarten.
On Di, 2009-03-17 at 15:56 +0100, Maarten Lankhorst wrote:
You will probably find graphedt.exe from the microsoft sdk useful,
A GPL alternative exists, but does not work in Wine yet: http://blog.monogram.sk/janos/tools/monogram-graphstudio/