Nikolay Sivov (@nsivov) commented about dlls/evr/sample.c:
if (callback)
{
IMFVideoSampleAllocatorNotify_AddRef(callback);
if (lock_notify_release)
IMFVideoSampleAllocatorNotify_NotifyRelease(callback);
}
LeaveCriticalSection(&allocator->cs);
if (callback)
{
if (!lock_notify_release)
IMFVideoSampleAllocatorNotify_NotifyRelease(callback);
IMFVideoSampleAllocatorNotify_Release(callback);
}
Just set "callback" only for our custom case. We don't need addref/release for a normal case, and you also don't need a local variable for lock_notify_release.
Note that commit message does not describe what's happening in current version.