In two CV SDK samples, i.e. the face detection user nodes and video stabilization user nodes, the API function vxPublishKernels() is defined. Within that function, the user kernels are registered to the context via vxAddUserKernel, vxAddParameterToKernel, and vxFinalizeKernel.
However, the main application in neither of the two samples explicitly calls vxPublishKernels() , meaning the user kernels are not registered before they are used. Yet the samples work fine.
I experimented with my own user kernel/node too. My user kernel defines the API function vxPublishKernels(), very similar to the ones in the aforementioned samples. This is what I am observing: as long as I can correctly load the library that is built with my user kernel, via vxLoadKernels(context, my_user_kernel_lib), my code runs correctly regardless of whether vxPublishKernels() is called or not.
How is this so? Why does vxPublishKernels() seem unnecessary? When should it be used?