I am currently in the process of developing a new layered video codec, based around MPEG-2 or MPEG-4 (switchable) by patching FFMpeg. The codec itself works now, I can code, decode and view it using FFMpeg and FFPlay.
Next step is to enable the codec in windows. I use FFDShow for that as it nicely integrates with libavcodec from the FFMpeg project.
The first step, which is just using the MPEG-2 video sequence headers, etc, works as the stream is recognized by windows as MPEG-2 stream and the FFDShow filter is selected for playback. After that, I modified the start codes of the sequence header to avoid the stream being recognized as MPEG-2 and muxed the video into an AVI using a new non-existent fourcc code (LLV2). I added this fourcc code to the filterdata section of FFDShow in the windows registry.
However, windows is not able to find the FFDShow filter as match for my stream. If I replace the fourcc code with MPG2 for example, it works. When I view the filterData data I can see the ASCII code of LLV2 showing up there.
I can verify that the FFDShow filter loads by connecting to the player process with Visual Studio and setting breakpoints at appropriate places, e.g. in the CreateInstance method.

What am I missing here? I assume the codec selection process works as follows (a little bit pseudo code):
- get fourcc code from stream
-
Codec getTheCodec(int fourccCode) {
Codec theCodec = NULL;
int merit = -1;
for each (codec in registeredCodecs) {
if (codec.filterData.contains(fourccCode) && codec.merit > merit) {
theCodec = codec;
merit = codec.merit;
}
}
return theCodec;
}