MuTeK
15th November 2004, 07:25
Sometimes, especially if you like to install a lot of different codec packs, you can get unexpected behavior during graph building.
Filters with the same functionality may be unexpectedly used by your
application. The main cause of such behavior is the merit value that was defined by filter supplier during the compilation of the binary file of a DirectShow filter.
Each DirectShow filter is registered with a merit value, that defines the order in which the filter graph manager tries filters during graph building.
When the filter graph manager builds a graph, it enumerates all the
filters registered with the correct media type. Then it tries them in order of merit, from highest to lowest. For filters with equal merit it uses an additional criteria to choose between them.
It means that filters with merit MERIT_PREFERRED and higher will be
tried first during graph building. Then filters with merit MERIT_NORMAL will be tried, and so one. Note that it never tries filters with a merit value less than or equal to MERIT_DO_NOT_USE. It means that a filter that should never be considered for ordinary playback should have a merit of MERIT_DO_NOT_USE or less. Filters can be registered with intermediate values not defined by this enumeration, such as MERIT_NORMAL + 1.
We offer you two applications which can help you in solving this
situation. One of them is a stable console application with restricted functionality. Use console_merit_manager.exe without parameters to see a short help.
The second one – is more or less buggy GUI application with advanced
options.
Please send your feedback, bug reports and your wishes to:
<< alex @@ moonlight _ com _ ru >> with subject "MeritManager"
ftp://nimbus.elecard.net.ru/incoming/2Dima/meritmanager.zip
NOTE: Please note that console application does not understand strings
like "MERIT_XXXXXX" as a new GUID value, but you can use their
hexadecimal equivalents according to the table shown below:
MERIT NAME / HEX VALUE
------------------------------
MERIT_PREFERRED / 0x800000
MERIT_NORMAL / 0x600000
MERIT_UNLIKELY / 0x400000
MERIT_DO_NOT_USE / 0x200000
MERIT_SW_COMPRESSOR / 0x100000
MERIT_HW_COMPRESSOR / 0x100050
Filters with the same functionality may be unexpectedly used by your
application. The main cause of such behavior is the merit value that was defined by filter supplier during the compilation of the binary file of a DirectShow filter.
Each DirectShow filter is registered with a merit value, that defines the order in which the filter graph manager tries filters during graph building.
When the filter graph manager builds a graph, it enumerates all the
filters registered with the correct media type. Then it tries them in order of merit, from highest to lowest. For filters with equal merit it uses an additional criteria to choose between them.
It means that filters with merit MERIT_PREFERRED and higher will be
tried first during graph building. Then filters with merit MERIT_NORMAL will be tried, and so one. Note that it never tries filters with a merit value less than or equal to MERIT_DO_NOT_USE. It means that a filter that should never be considered for ordinary playback should have a merit of MERIT_DO_NOT_USE or less. Filters can be registered with intermediate values not defined by this enumeration, such as MERIT_NORMAL + 1.
We offer you two applications which can help you in solving this
situation. One of them is a stable console application with restricted functionality. Use console_merit_manager.exe without parameters to see a short help.
The second one – is more or less buggy GUI application with advanced
options.
Please send your feedback, bug reports and your wishes to:
<< alex @@ moonlight _ com _ ru >> with subject "MeritManager"
ftp://nimbus.elecard.net.ru/incoming/2Dima/meritmanager.zip
NOTE: Please note that console application does not understand strings
like "MERIT_XXXXXX" as a new GUID value, but you can use their
hexadecimal equivalents according to the table shown below:
MERIT NAME / HEX VALUE
------------------------------
MERIT_PREFERRED / 0x800000
MERIT_NORMAL / 0x600000
MERIT_UNLIKELY / 0x400000
MERIT_DO_NOT_USE / 0x200000
MERIT_SW_COMPRESSOR / 0x100000
MERIT_HW_COMPRESSOR / 0x100050