config BR2_PACKAGE_LIBPLAYER
	depends on BR2_LARGEFILE
	depends on BR2_TOOLCHAIN_HAS_THREADS
	bool "libplayer"
	help
	  libplayer provides a generic A/V API that relies on various multimedia
	  player for Linux systems. It currently supports MPlayer, xine VLC and
	  GStreamer only

	  http://libplayer.geexbox.org/

if BR2_PACKAGE_LIBPLAYER
config BR2_PACKAGE_LIBPLAYER_MPLAYER
	bool "mplayer backend"
	# mplayer
	depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb || \
		   BR2_microblaze || BR2_aarch64 || BR2_nios)
	# mplayer
	depends on BR2_LARGEFILE
	# mplayer
	# Broken support for <ARMv5
	depends on !(BR2_arm7tdmi || BR2_arm720t || BR2_arm920t \
		|| BR2_arm920t || BR2_arm922t || BR2_fa526 || BR2_strongarm)
	select BR2_PACKAGE_MPLAYER

config BR2_PACKAGE_LIBPLAYER_GSTREAMER
	bool "gstreamer backend"
	depends on BR2_USE_WCHAR # glib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
	depends on BR2_USE_MMU # glib2
	select BR2_PACKAGE_GSTREAMER

comment "gstreamer backend needs a toolchain w/ wchar, threads"
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_LIBPLAYER_PYTHON
	depends on BR2_PACKAGE_PYTHON
	depends on BROKEN # player_init params, builds for host
	bool "Libplayer python bindings"
endif

comment "libplayer needs a toolchain w/ largefile, threads"
	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
