func ListRendererDiscoverers() ([]*RendererDiscovererDescriptor, error) {
	if err := inst.assertInit(); err != nil {
		return nil, err
	}
	var cDescriptors **C.libvlc_rd_description_t
	count := int(C.libvlc_renderer_discoverer_list_get(inst.handle, &cDescriptors))
	if count <= 0 || cDescriptors == nil {
		return nil, nil
	}
	defer C.libvlc_renderer_discoverer_list_release(cDescriptors, C.size_t(count))
	descriptors := make([]*RendererDiscovererDescriptor, 0, count)
	for i := 0; i < count; i++ {
		cDescriptorPtr := unsafe.Pointer(uintptr(unsafe.Pointer(cDescriptors)) +
			uintptr(i)*unsafe.Sizeof(*cDescriptors))
		if cDescriptorPtr == nil {
			return nil, ErrRendererDiscovererParse
		}
		cDescriptor := *(**C.libvlc_rd_description_t)(cDescriptorPtr)
		if cDescriptor == nil {
			return nil, ErrRendererDiscovererParse
		}
		descriptors = append(descriptors, &RendererDiscovererDescriptor{
			Name:     C.GoString(cDescriptor.psz_name),
			LongName: C.GoString(cDescriptor.psz_longname),
		})
	}
	return descriptors, nil
}
ListRendererDiscoverers returns a list of descriptors identifying the
available renderer discovery services.
package vlc
import "C"
import (
	"unsafe"
)
type RendererDiscoveryCallback func(Event, *Renderer)
type RendererDiscovererDescriptor struct {
	Name     string
	LongName string
}