External decoding in MFormats SDK

External decoding makes sure that your application's performance and stability is not affected by the decoder: the decoding of each file is done in a separate process that is controlled by a watchdog. Once there's a problem (such as a corrupt file, decoder error or memory leak), the watchdog will detect it and restart the process.


External decoding is great for professional 24/7 playout solutions, where stability is of most importance.


For each file a new MServer.exe process is created; this process performs the decoding. When playback of this file is completed, this MServer.exe process is closed and all memory is released. Even if memory was leaking, it will not affect the system as much as it would if this feature were not enabled.


External decoding uses a special approach for cross-process data transfer without copying of memory (through shared memory), so performance of the decoding in external process is almost the same as in common decoding. Also, decoding of each file in a separate process allows to use up to 2 GB of memory (in x86 applications) and up to 4 GB (in x64 applications) for each decoding process - so multiple files can be decoded at the same time.


To enable this feature in MFormats SDK, adjust these settings in the system registry:


HKEY_CURRENT_USER\Software\Medialooks\MFormats\MFReader
external_process = true


This feature is enabled by default in the Expert edition of MFormats SDK.


Here's a quick video where Boris shows how quicly the decoder restores playback when this feature is enabled: