# Native source follows the locked One-KVM ARM64 build inputs.
include $(TOPDIR)/rules.mk
include $(TOPDIR)/package/one-kvm-os/native-dependencies.mk

PKG_NAME:=ffmpeg
PKG_VERSION:=$(ONE_KVM_FFMPEG_VERSION)
PKG_RELEASE:=1
PKG_SOURCE:=$(ONE_KVM_FFMPEG_ARCHIVE)
PKG_SOURCE_URL:=$(ONE_KVM_FFMPEG_URL)?
PKG_HASH:=$(ONE_KVM_FFMPEG_HASH)
PKG_SOURCE_VERSION:=$(ONE_KVM_FFMPEG_COMMIT)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(ONE_KVM_FFMPEG_DIRECTORY)
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING.GPLv3
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1

include $(INCLUDE_DIR)/package.mk

define Package/libffmpeg
  SECTION:=libs
  CATEGORY:=Libraries
  TITLE:=One-KVM FFmpeg Rockchip libraries
  DEPENDS:=+libstdcpp +libpthread +libdrm +rockchip-mpp +librga +libx264 +libx265 +libvpx
  PROVIDES:=libffmpeg-full libffmpeg-audio-dec
endef

FFMPEG_CONFIGURE_ARGS := \
	--prefix=/usr \
	--cross-prefix=$(TARGET_CROSS) \
	--arch=$(ARCH) \
	--target-os=linux \
	--pkg-config=pkg-config \
	--enable-cross-compile \
	--enable-gpl \
	--enable-version3 \
	--enable-static \
	--enable-pic \
	--enable-libdrm \
	--enable-rkmpp \
	--enable-rkrga \
	--disable-vaapi \
	--enable-v4l2-m2m \
	--enable-libx264 \
	--enable-libx265 \
	--enable-libvpx \
	--disable-programs \
	--disable-doc \
	--disable-htmlpages \
	--disable-manpages \
	--disable-podpages \
	--disable-txtpages \
	--disable-network \
	--disable-protocols \
	--disable-avformat \
	--disable-swscale \
	--disable-swresample \
	--disable-avfilter \
	--disable-avdevice \
	--disable-postproc \
	--disable-decoders \
	--enable-decoder=mjpeg \
	--enable-decoder=mjpeg_rkmpp \
	--disable-encoders \
	--enable-encoder=h264_rkmpp \
	--enable-encoder=hevc_rkmpp \
	--enable-encoder=h264_v4l2m2m \
	--enable-encoder=hevc_v4l2m2m \
	--enable-encoder=libx264 \
	--enable-encoder=libx265 \
	--enable-encoder=libvpx_vp8 \
	--enable-encoder=libvpx_vp9 \
	--disable-muxers \
	--disable-demuxers \
	--disable-parsers \
	--enable-parser=h264 \
	--enable-parser=hevc \
	--enable-parser=vp8 \
	--enable-parser=vp9 \
	--disable-bsfs \
	--enable-bsf=h264_mp4toannexb \
	--enable-bsf=hevc_mp4toannexb \
	--disable-indevs \
	--disable-outdevs \
	--disable-filters \
	--disable-debug \
	--enable-shared \
	--disable-autodetect \
	--enable-pthreads \
	--enable-lto

define Build/Configure
	(cd $(PKG_BUILD_DIR); \
		$(TARGET_CONFIGURE_OPTS) \
		CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
		LDFLAGS="$(TARGET_LDFLAGS)" \
		./configure $(FFMPEG_CONFIGURE_ARGS))
endef

define Build/Compile
	+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) all
endef

define Build/Install
	$(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" install
endef

define Build/InstallDev
	$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
	$(CP) $(PKG_INSTALL_DIR)/usr/include/. $(1)/usr/include/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libavcodec.* $(1)/usr/lib/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libavutil.* $(1)/usr/lib/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/
endef

define Package/libffmpeg/install
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libavcodec.so* $(1)/usr/lib/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libavutil.so* $(1)/usr/lib/
endef

$(eval $(call BuildPackage,libffmpeg))
