[theora] Connect Theora DirectShow encoder filter to decoder filter

Andreas Schuler andreas at neokast.com
Sat Jan 20 14:22:31 PST 2007


Hi all,

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 
decoder.

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.

Thanks,

Andreas


More information about the theora mailing list