SoC: DirectShow/Gstreamer

Maarten Lankhorst m.b.lankhorst at gmail.com
Tue Mar 17 09:56:01 CDT 2009


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.



More information about the wine-devel mailing list