#
# Amlogic DVB configuration
#

menu "Amlogic dvb configuration"

config AMLOGIC_DVB
	tristate "Amlogic dvb support"
	depends on DVB_CORE && AMLOGIC_DVB_COMPAT
	default n
	help
		This option is used only to control the
		compilation of dvb related driver code, for
		example hw_demux, it is enabled by default,
		When it is turned on,it will automatically
		select DVB_CORE and AMLOGIC_DVB_COMPAT.

config AMLOGIC_DVB_COMPAT
	tristate "Compat amlogic dvb"
	depends on DVB_CORE
	default n
	help
		This option is used only to compatible with
		amlogic dvb related code, for example dvb-core,
		it is enabled by default,depending on
		AMLOGIC_DVB and DVB_CORE.

endmenu


#
# Amlogic multimedia configuration
#

menu "Amlogic multimedia configuration"

config AMLOGIC_MEDIA_ENABLE
	bool "Amlgoic Multimedia Support"
	default n
	help
		Amlogic multimedia framework composed of two parts,
		the first part is common which consists of modules
		such as arch, codec_mm, vfm, the second is driver
		part of the media, both of which depends on this
		configuration options.

config AMLOGIC_MEDIA_COMMON
	bool "Amlogic the common of the media"
	depends on AMLOGIC_MEDIA_ENABLE
	default n
	help
		This option is used to configure Amlogic common
		for media, it as the basis for drivers of the
		multimedia, mainly on the operation of the
		registers, memory allocation and the chain of
		responsibility management of the frame processing.


config AMLOGIC_MEDIA_DRIVERS
	bool "Amlogic drivers of the media"
	depends on AMLOGIC_MEDIA_COMMON
	default n
	help
		This option is used to configure Amlogic drivers
		of the multimedia, which consists of video decoder
		module, video decoder management module and post
		processing of the frame.

config AMLOGIC_MEDIA_MULTI_DEC
	bool "Support multi-instance decoding"
	default n
	help
		Support for multi-instance decoding features,
		this option must be configured if multi playback
		is required, the feature supports decoding
		at the same time.

if AMLOGIC_MEDIA_COMMON
source "drivers/amlogic/media/common/Kconfig"
endif

if AMLOGIC_MEDIA_DRIVERS
source "drivers/amlogic/media/video_sink/Kconfig"
source "drivers/amlogic/media/vout/Kconfig"
source "drivers/amlogic/media/osd/Kconfig"
source "drivers/amlogic/media/frame_sync/Kconfig"
source "drivers/amlogic/media/video_processor/Kconfig"
source "drivers/amlogic/media/gdc/Kconfig"
source "drivers/amlogic/media/autowrite/Kconfig"
endif
endmenu

