I think I found a small memory leak in MPEG2VideoDecoderBase:
In the beginning MPEG2VideoDecoderBase::Init() will call BaseCodec::Init(). If the initialization parameter of BaseCodecParams->lpMemoryAllocator is set to NULL, then BaseCodec::Init() will create an own instance of DefaultMemoryAllocator for m_pMemoryAllocator and m_bOwnAllocator is set to true. In the further processing of MPEG2VideoDecoderBase::Init() the method Reset() is called which will set m_bOwnAllocator to false. The result is that m_pMemoryAllocator will never be freed.