{"id":967,"date":"2009-06-30T00:34:26","date_gmt":"2009-06-29T22:34:26","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=967"},"modified":"2010-05-11T10:05:45","modified_gmt":"2010-05-11T08:05:45","slug":"ahead-neros-neresize-directshow-filter","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/967","title":{"rendered":"Ahead Nero&#8217;s NeResize DirectShow Filter"},"content":{"rendered":"<p>Another example of a negligence with a cost of incompatibility and enormous amount of support time. Ahead Nero installs a number of DirectShow filters into <em>$(Program Files)\\Common Files\\Ahead\\DSFilter<\/em> directory. One of the files is <em>NeResize.ax<\/em> and it hosts a <em>Nero Resize<\/em> filter. Let us take a closer look:<\/p>\n<p>CLSID: <strong>{30002E0C-C574-481E-A5DE-90AE54A79E10}<\/strong> (note that Nero 8 ships the same buggy stuff with new CLSID of <strong>{3D0A27C9-B4D6-487B-AFE4-E3CABD4B81F9}<\/strong><em> &#8211; 11.05.2010<\/em>)<br \/>\nMerit: <strong>0x00400000<\/strong> (<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd388793(VS.85).aspx\">MERIT_UNLIKELY<\/a>)<br \/>\nInput Pin&#8217;s Media Type: major type GUID_NULL, subtype GUID_NULL<br \/>\nOutput Pin&#8217;s Media Type: major type GUID_NULL, subtype GUID_NULL<\/p>\n<p>The filter is clearly a video filter:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-969\" title=\"Ahead Nero Resize Filter's Property Page\" src=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/06\/29-image001.png\" alt=\"Ahead Nero Resize Filter's Property Page\" width=\"376\" height=\"292\" srcset=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/06\/29-image001.png 376w, https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/06\/29-image001-300x232.png 300w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><\/p>\n<p>So the filter register itself under a merit that allows taking it during <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd390342(VS.85).aspx\">Intelligent Connect<\/a>, it registers using media type wildcard which is clearly widely than the filter can affectively operate with and the most interesting part is: with certain video media types the filter crashes (memory access violation) during pin connection negotiation process. That is, inaccurate filter <span style=\"text-decoration: underline;\">may be crashing third party software it has nothing to deal with at all<\/span>.<\/p>\n<pre>*** Unhandled Exception\r\nProcess: 0x000001d4, Thread: 0x00000ce4, Date: 6\/29\/2009, Time: 11:20:56 AM, Application: C:\\Program Files\\...\r\nModule: C:\\..., Product Version: 1.7.1.1, File Version: 1.7.1.20014, File Time: 23.06.2009, 19:02\r\nCode: 0xc0000005, Flags: 0x00000000, Address: 0x05fc6c65\r\nParameters: 0x00000001, 0x15be9030\r\n\r\n** Call Stack\r\nNeResize!05fc6c65 DllUnregisterServer +21909 @05fc0000\r\nNeResize!05fc7888 DllUnregisterServer +25016 @05fc0000\r\nNeResize!05fc7204 DllUnregisterServer +23348 @05fc0000<\/pre>\n<p>Additionally to that the filter does not allow its insertion in debugging environment, and it seems even with Visual Studio running without a debugging session active. Which means that developer may be unaware of issues until incompatibility comes up at a later stage such as testing, or at production site.<\/p>\n<p>It is not the first Nero filter which is bringing real problems. Basically any user who want to keep his system far from issues while still having Nero installed, needs to do find <em>$(Program Files)\\Common Files\\Ahead\\DSFilter<\/em> directory and immediately rename it to some <em>~DSFilter<\/em> in order to invalidate all Nero filters registration.<\/p>\n<p>A few quotes from <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd388793(VS.85).aspx\">Guidelines for Registering Filters<\/a>:<\/p>\n<p style=\"padding-left: 30px;\">Avoid specifying MEDIATYPE_None, MEDIASUBTYPE_None, or GUID_NULL in the <a id=\"ctl00_MTContentSelector1_mainContentContainer_ctl04\" onclick=\"javascript:Track('ctl00_MTContentSelector1_mainContentContainer_ctl00|ctl00_MTContentSelector1_mainContentContainer_ctl04',this);\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd373438%28VS.85%29.aspx\"><strong>AMOVIESETUP_MEDIATYPE<\/strong><\/a> information for a pin. <strong>IFilterMapper2<\/strong> treats these as wildcards, which can slow the graph-building process.<\/p>\n<p>Nero Resize does specify and obviously slows the system down.<\/p>\n<p style=\"padding-left: 30px;\">Choose the lowest merit value possible. Here are some guidelines:<br \/>\n&#8230;<br \/>\nSpecial purpose filter; any filter that is created directly by the application: MERIT_DO_NOT_USE<\/p>\n<p>Nero Resize uses higher value and thus affects proper applications.<\/p>\n<p>Software developers will be safer to prevent from <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd373399(VS.85).aspx\">DirectShow Filter Graph Manager<\/a> considering the buggy filter to be used during <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd390342(VS.85).aspx\">Intelligent Connect<\/a> by implementing <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd389376(VS.85).aspx\">IAMGraphBuilderCallback<\/a> interface.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Another example of a negligence with a cost of incompatibility and enormous amount of support time. Ahead Nero installs a number of DirectShow filters into $(Program Files)\\Common Files\\Ahead\\DSFilter directory. One of the files is NeResize.ax and it hosts a Nero Resize filter. Let us take a closer look: CLSID: {30002E0C-C574-481E-A5DE-90AE54A79E10} (note that Nero 8 ships&hellip; <\/p>\n<p><a class=\"moretag\" href=\"https:\/\/alax.info\/blog\/967\">Read the full article<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[216,214,63,98,153,218,154,78,119,217,219,215],"class_list":["post-967","post","type-post","status-publish","format-standard","hentry","category-seriously","tag-access-violation","tag-ahead","tag-bug","tag-confuse","tag-crash","tag-debug","tag-debugger","tag-directshow","tag-filter","tag-memory","tag-neresize","tag-nero"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=967"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/967\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}