Some Filter defect(I think)
As the use Theora to be a tool for development. For the first time to see the relevant open source code and found that some of the problems I find this place can be submitted.
oggdsf\src\lib\core\directshow\dsfOggDemux2\OggDemuxPacketSourcePin.cpp 211 IOggDecoder::eAcceptHeaderResult locResult = mDecoderInterface->showHeaderPacket(mIdentHeader->clone()); the "mIdentHeader->clone()" buffer in theora decoder is not deleted.
oggdsf\src\lib\codecs\theora\filters\dsfTheoraDecoder\TheoraDecodeInputPin.cpp 174 StampedOggPacket* locStamped = new StampedOggPacket(locPacketData, inCodecHeaderPacket->packetSize(), false, false, 0,0, StampedOggPacket::NONE); The "locStamped" buffer is not deleted.
oggdsf\src\lib\core\directshow\dsfOggDemux2\RegWrap.cpp 99 (DWORD)(inValue.length()+1)); If here is UNICODE, RegSetValueEx receive param must be "(inValue.length()+1)) * 2"
I Use the RGB24 to encoder Theora, found the video is reverse. I think the source code can change like this: oggdsf\src\lib\codecs\theora\filters\dsfTheoraEncoder\TheoraEncodeInputPin.cpp 1447 add code: if (inMediaType->subtype == MEDIASUBTYPE_RGB32 || inMediaType->subtype == MEDIASUBTYPE_RGB24) { m_isImageFlipped = false; }