Usually the checks whether to play or not are done at "*_sink_can_handle" function. Could you move it there (returning FALSE from that function should cause the effect not to play)?