Skip to main content
Skip table of contents

The Merit system explained!

The Merit System
Media Playback under any DirectShow player is based on the Merit System. Each filter has a function, it can be a reader, parser, decoder or renderer. A reader filter understands the basic file structure and knows how to read it. A parser filter will use this structure to split the file into streams (audio/video/subtitles/etc...), the decoder filter decodes a stream and sends it to a renderer filter which displays the data (or sounds it in the case of audio renderers).

Now what if you have two filters that both fit the same job profile? Here's where the merit comes into play... The filter with the highest merit point gets chosen for the job. This is a bit more complex than it may seem. As consider this situation, you can have one filter that decodes more than one format. The same filter can be used to decode AC3 audio and MP3 audio. You can have a second filter which only decodes MP3 audio. You want the filter that only plays the MP3 audio to be used for MP3 playback, but still use the other filter to play back AC3 audio. You do this by assigning the MP3 only decoder a higher merit.

There are several merit usage classes (these numbers are in hex):
80000 - Preferred
60000 - Normal
40000 - Unlikely
20000 - Do not use
10000 - Software Compressor
10050 - Hardware Compressor

You should stay clear of the compressor classes, but basically, you can see where this is going. You can use any number above the class while still maintaining within the class, for example a merit of "400005" is still "Unlikely". By rearranging the merits of filters you can eventually resolve most conflicts. However, if conflicts still occur, you can try unregistering the filter entirely and assuring the system would never be aware of it.

To change a filter's merit, there are tools available such as the 'Filter Manager' from RadLight.



DEUTSCH

Das Merit-System
Die Medien-Wiedergabe mit einem DirectShow-basierten Player basiert auf dem Merit-System. Jeder Filter hat eine Funktion. Er kann zum Lesen (Reader), Verarbeiten (Parser), Dekodieren (Decoder) oder Darstellen (Renderer) dienen. Ein "Reader" versteht die Struktur einer Datei und weiß, wie er sie lesen muss. Ein "Parser" nutzt diese Struktur, um sie in einzelne Datenströme zu zerlegen (Audio, Video, Untertitel, usw.), während der "Decoder" einen solchen Datenstrom dekodiert und ihn an der "Renderer" weitergibt um die Daten darzustellen (oder Audio abszuspielen, wenn es sich um einen "audio renderer" handelt).

Was passiert aber, wenn man zwei Filter hat, die dieselbe Aufgabe erfüllen? Hier setzt das Merit-System an. Der Filter mit der höchsten Merit-Zahl wird für die Aufgabe ausgewählt. Dies ist etwas komplizierter als es aussehen mag, wenn man z.B. einen Filter hat, der mehrere Formate verarbeiten kann. Dieser Filter kann beispielsweise AC3-Audio dekodieren, ebenso wie MP3-Audio. Aber es gibt vielleicht noch einen zweiten Filter, der nur MP3-Audio dekodiert. Nun soll letzterer für die MP3-Wiedergabe genutzt werden und der erste Filter trotzdem weiterhin AC3-Audio dekodieren. Dies bewerkstelligt man, indem man dem "Nur-MP3"-Filter einen höheren Merit zuweist.

 

Es gibt verschiedene Merit-Klassen (Zahlenwerte sind Hexadezimal):
80000 - Bevorzugt
60000 - Normal
40000 - Unwahrscheinlich
20000 - Nicht benutzen
10000 - Software-Kompressor
10050 - Hardware-Kompressor

Man sollte bei Modifikationen darauf achten, nicht die Kompressor-Klassen zu verwenden, aber ansonsten ist das Prinzip zu erkennen. Man kann jeden Wert oberhalb des Klassenwertes vergeben, sich dabei aber trotzdem noch in der selben Klasse befinden. Ein Merit von z.B. "40005" ist immer noch "Unwahrscheinlich". Durch umorganisieren der Merit-Werte sollten sich normalerweise die meisten Konflikte beheben lassen. Sollte es aber trotzdem noch

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.