[theora] Connect Theora DirectShow encoder filter to decoder filter
andreas at neokast.com
Sat Jan 20 14:22:31 PST 2007
This may sound like a weird problem, but I am trying to create a
DirectShow graph (using the Theora DirectShow filters from
http://www.illiminable.com/ogg/) where I have a video source, which is
connected to the Theora encoder, which is then connected to a Theora
The problem is that this doesn't seem to work, those filters refuse to
connect to each other.
Now obviously that isn't the whole app, there are some other filters in
between the encoder and decoder. After the encoder filter I have a
sample grabber filter, which delivers the samples from the encoder to my
application, where I send them using a proprietary protocol across a
network. On the other end I am using a special filter provided by
DirectShow.NET, which allows me to inject the samples into the
DirectShow graph. That filter should then connect to a video renderer
and in between it should insert the Theora decoder. So that samples
injecting filter's output pin looks like the output from the Theora
encoder and hence it doesn't form a connecting with the decoder. My
application is completely written in C#, so accessing the Theora codec
directly would be quite a bit of work and also quite inefficient.
All this works by the way with other codecs, such as XviD. My main issue
with other codecs is that they don't expose a COM interface on their
encoding end, which allows me to change encoder settings
programmatically (hence my interest in Theora).
Along those same lines, does anyone know why the Ogg muxer and demuxer
only have input pins and output pins respectively? Those filters are
used to read/write Ogg streams from/to a file. It would be awesome if
the the muxer filter would offer an output node, where it sends out the
Ogg stream samples, which I then could intercept using the sample
grabber. Similarly I would want an input pin on the demuxer, so I can
inject the samples there again. This would solve the whole
encoder/decoder connection problem because the encoder can connect to
the muxer and the decoder connects to the demuxer (plus I wouldn't have
to worry about audio and video streams separately...). Anyone has any
ideas on this one?
Sorry if this is slightly off topic, but I haven't been able to get any
replies from illiminable.com and was hoping that someone else on this
list has any DirectShow experience.
More information about the theora