Andreas Schuler
2007-Jan-20 14:22 UTC
[theora] Connect Theora DirectShow encoder filter to decoder filter
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