All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 1/2] package/x265: New package
@ 2014-11-18 17:04 Bernd Kuhls
  2014-11-18 17:04 ` [Buildroot] [PATCH v2 2/2] package/ffmpeg: Add support for x265 encoding Bernd Kuhls
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Bernd Kuhls @ 2014-11-18 17:04 UTC (permalink / raw)
  To: buildroot

Depends on http://patchwork.ozlabs.org/patch/411789/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

--
v2: Removed package-specific handling of CMAKE_SYSTEM_PROCESSOR

---
 package/Config.in           |    1 +
 package/x265/0001-arm.patch |   71 +++++++++++++++++++++++++++++++++++++++++++
 package/x265/Config.in      |   23 ++++++++++++++
 package/x265/x265.mk        |   34 +++++++++++++++++++++
 4 files changed, 129 insertions(+)
 create mode 100644 package/x265/0001-arm.patch
 create mode 100644 package/x265/Config.in
 create mode 100644 package/x265/x265.mk

diff --git a/package/Config.in b/package/Config.in
index 9a73995..0084f9b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -773,6 +773,7 @@ menu "Multimedia"
 	source "package/live555/Config.in"
 	source "package/mediastreamer/Config.in"
 	source "package/x264/Config.in"
+	source "package/x265/Config.in"
 endmenu
 
 menu "Networking"
diff --git a/package/x265/0001-arm.patch b/package/x265/0001-arm.patch
new file mode 100644
index 0000000..69ae458
--- /dev/null
+++ b/package/x265/0001-arm.patch
@@ -0,0 +1,71 @@
+Fix ARM build
+
+Fetched from https://github.com/archlinuxarm/PKGBUILDs/blob/master/extra/x265/arm.patch
+and adjusted paths so patch applies with -p1.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+--- a/source/CMakeLists.txt.orig	2014-10-04 17:02:08.482815493 +0200
++++ b/source/CMakeLists.txt	2014-10-04 17:11:52.536865262 +0200
+@@ -46,10 +46,18 @@
+         set(X64 1)
+         add_definitions(-DX86_64=1)
+     endif()
+-elseif(${SYSPROC} STREQUAL "armv6l")
+-    message(STATUS "Detected ARM target processor")
+-    set(ARM 1)
+-    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
++elseif(${SYSPROC} MATCHES "armv5.*")
++    message(STATUS "Detected ARMV5 system processor")
++    set(ARMV5 1)
++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=0 -DHAVE_NEON=0)
++elseif(${SYSPROC} STREQUAL "armv6l")
++    message(STATUS "Detected ARMV6 system processor")
++    set(ARMV6 1)
++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0)
++elseif(${SYSPROC} STREQUAL "armv7l")
++    message(STATUS "Detected ARMV7 system processor")
++    set(ARMV7 1)
++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0)
+ else()
+     message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
+     message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
+@@ -127,8 +135,8 @@
+     if(X86 AND NOT X64)
+         add_definitions(-march=i686)
+     endif()
+-    if(ARM)
+-        add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp)
++    if(ARMV7)
++        add_definitions(-fPIC)
+     endif()
+     check_cxx_compiler_flag(-Wno-narrowing CC_HAS_NO_NARROWING) 
+     check_cxx_compiler_flag(-ffast-math CC_HAS_FAST_MATH) 
+--- a/source/common/cpu.cpp.orig	2014-10-04 17:13:58.507875996 +0200
++++ b/source/common/cpu.cpp	2014-10-04 17:21:11.170912864 +0200
+@@ -37,7 +37,7 @@
+ #include <machine/cpu.h>
+ #endif
+ 
+-#if X265_ARCH_ARM && !defined(HAVE_NEON)
++#if X265_ARCH_ARM && (!defined(HAVE_NEON) || HAVE_NEON==0)
+ #include <signal.h>
+ #include <setjmp.h>
+ static sigjmp_buf jmpbuf;
+@@ -340,7 +340,6 @@
+     }
+ 
+     canjump = 1;
+-    x265_cpu_neon_test();
+     canjump = 0;
+     signal(SIGILL, oldsig);
+ #endif // if !HAVE_NEON
+@@ -356,7 +355,7 @@
+     // which may result in incorrect detection and the counters stuck enabled.
+     // right now Apple does not seem to support performance counters for this test
+ #ifndef __MACH__
+-    flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0;
++    //flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0;
+ #endif
+     // TODO: write dual issue test? currently it's A8 (dual issue) vs. A9 (fast mrc)
+ #endif // if HAVE_ARMV6
diff --git a/package/x265/Config.in b/package/x265/Config.in
new file mode 100644
index 0000000..bf8bd12
--- /dev/null
+++ b/package/x265/Config.in
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_X265
+	bool "x265"
+	depends on BR2_i386 || BR2_x86_64 || BR2_arm
+	depends on !BR2_ARM_CPU_ARMV4
+	depends on BR2_INSTALL_LIBSTDCPP
+	help
+	  x265 is an open-source project and free application library for encoding
+	  video streams into the H.265/High Efficiency Video Coding (HEVC) format.
+
+	  http://x265.org
+
+if BR2_PACKAGE_X265
+
+config BR2_PACKAGE_X265_CLI
+	bool "CLI"
+	help
+	  Build standalone CLI application
+endif
+
+comment "x265 needs a toolchain w/ C++"
+	depends on BR2_i386 || BR2_x86_64 || BR2_arm
+	depends on !BR2_ARM_CPU_ARMV4
+	depends on !BR2_INSTALL_LIBSTDCPP
diff --git a/package/x265/x265.mk b/package/x265/x265.mk
new file mode 100644
index 0000000..026fd26
--- /dev/null
+++ b/package/x265/x265.mk
@@ -0,0 +1,34 @@
+################################################################################
+#
+# x265
+#
+################################################################################
+
+X265_VERSION = 1.4
+X265_SOURCE = $(X265_VERSION).tar.bz2
+X265_SITE = https://bitbucket.org/multicoreware/x265/get
+X265_INSTALL_STAGING = YES
+X265_LICENSE = GPLv2
+X265_LICENSE_FILES = COPYING
+
+ifeq ($(BR2_i386)$(BR2_x86_64),y)
+X265_DEPENDENCIES += host-yasm
+else
+X265_CONF_OPTS += --disable-asm
+endif
+
+# CMakeLists.txt is stored in $(@D)/source/, not in $(@D)/
+define X265_CONFIGURE_CMDS
+	(cd $(@D); \
+		$(HOST_DIR)/usr/bin/cmake -G "Unix Makefiles" source/ \
+			-DCMAKE_TOOLCHAIN_FILE="$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \
+			-DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release) \
+			-DCMAKE_INSTALL_PREFIX="/usr" \
+			-DCMAKE_COLOR_MAKEFILE=OFF \
+		-DBUILD_SHARED_LIBS=$(if $(BR2_PREFER_STATIC_LIB),OFF,ON) \
+		-DUSE_CCACHE=$(if $(BR2_CCACHE),ON,OFF) \
+		-DENABLE_CLI=$(if $(BR2_PACKAGE_X265_CLI),ON,OFF) \
+	)
+endef
+
+$(eval $(cmake-package))
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 2/2] package/ffmpeg: Add support for x265 encoding
  2014-11-18 17:04 [Buildroot] [PATCH v2 1/2] package/x265: New package Bernd Kuhls
@ 2014-11-18 17:04 ` Bernd Kuhls
  2014-11-18 18:18 ` [Buildroot] [PATCH v2 1/2] package/x265: New package Samuel Martin
  2015-01-02 18:19 ` Thomas Petazzoni
  2 siblings, 0 replies; 4+ messages in thread
From: Bernd Kuhls @ 2014-11-18 17:04 UTC (permalink / raw)
  To: buildroot


Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 package/ffmpeg/ffmpeg.mk |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/ffmpeg/ffmpeg.mk b/package/ffmpeg/ffmpeg.mk
index 1a68fa0..8d84e5b 100644
--- a/package/ffmpeg/ffmpeg.mk
+++ b/package/ffmpeg/ffmpeg.mk
@@ -236,6 +236,13 @@ else
 FFMPEG_CONF_OPTS += --disable-libx264
 endif
 
+ifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy)
+FFMPEG_CONF_OPTS += --enable-libx265
+FFMPEG_DEPENDENCIES += x265
+else
+FFMPEG_CONF_OPTS += --disable-libx265
+endif
+
 ifeq ($(BR2_X86_CPU_HAS_MMX),y)
 FFMPEG_CONF_OPTS += --enable-yasm
 FFMPEG_DEPENDENCIES += host-yasm
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 1/2] package/x265: New package
  2014-11-18 17:04 [Buildroot] [PATCH v2 1/2] package/x265: New package Bernd Kuhls
  2014-11-18 17:04 ` [Buildroot] [PATCH v2 2/2] package/ffmpeg: Add support for x265 encoding Bernd Kuhls
@ 2014-11-18 18:18 ` Samuel Martin
  2015-01-02 18:19 ` Thomas Petazzoni
  2 siblings, 0 replies; 4+ messages in thread
From: Samuel Martin @ 2014-11-18 18:18 UTC (permalink / raw)
  To: buildroot

Hi Bernd,

On Tue, Nov 18, 2014 at 6:04 PM, Bernd Kuhls <bernd.kuhls@t-online.de> wrote:
> Depends on http://patchwork.ozlabs.org/patch/411789/
>
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
>
> --
> v2: Removed package-specific handling of CMAKE_SYSTEM_PROCESSOR
>
> ---
>  package/Config.in           |    1 +
>  package/x265/0001-arm.patch |   71 +++++++++++++++++++++++++++++++++++++++++++
>  package/x265/Config.in      |   23 ++++++++++++++
>  package/x265/x265.mk        |   34 +++++++++++++++++++++
>  4 files changed, 129 insertions(+)
>  create mode 100644 package/x265/0001-arm.patch
>  create mode 100644 package/x265/Config.in
>  create mode 100644 package/x265/x265.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 9a73995..0084f9b 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -773,6 +773,7 @@ menu "Multimedia"
>         source "package/live555/Config.in"
>         source "package/mediastreamer/Config.in"
>         source "package/x264/Config.in"
> +       source "package/x265/Config.in"
>  endmenu
>
>  menu "Networking"
> diff --git a/package/x265/0001-arm.patch b/package/x265/0001-arm.patch
> new file mode 100644
> index 0000000..69ae458
> --- /dev/null
> +++ b/package/x265/0001-arm.patch
> @@ -0,0 +1,71 @@
> +Fix ARM build
> +
> +Fetched from https://github.com/archlinuxarm/PKGBUILDs/blob/master/extra/x265/arm.patch
> +and adjusted paths so patch applies with -p1.
> +
> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> +
> +--- a/source/CMakeLists.txt.orig       2014-10-04 17:02:08.482815493 +0200
> ++++ b/source/CMakeLists.txt    2014-10-04 17:11:52.536865262 +0200
> +@@ -46,10 +46,18 @@
> +         set(X64 1)
> +         add_definitions(-DX86_64=1)
> +     endif()
> +-elseif(${SYSPROC} STREQUAL "armv6l")
> +-    message(STATUS "Detected ARM target processor")
> +-    set(ARM 1)
> +-    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
> ++elseif(${SYSPROC} MATCHES "armv5.*")
> ++    message(STATUS "Detected ARMV5 system processor")
> ++    set(ARMV5 1)
> ++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=0 -DHAVE_NEON=0)
> ++elseif(${SYSPROC} STREQUAL "armv6l")

Is there any specific reason to not support big-endian?

> ++    message(STATUS "Detected ARMV6 system processor")
> ++    set(ARMV6 1)
> ++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0)
> ++elseif(${SYSPROC} STREQUAL "armv7l")

ditto

> ++    message(STATUS "Detected ARMV7 system processor")
> ++    set(ARMV7 1)
> ++    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0)
> + else()
> +     message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
> +     message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
> +@@ -127,8 +135,8 @@
> +     if(X86 AND NOT X64)
> +         add_definitions(-march=i686)
> +     endif()
> +-    if(ARM)
> +-        add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp)
> ++    if(ARMV7)
> ++        add_definitions(-fPIC)

Is this nested in a if(BUILD_SHARED_LIBS) block?
Does this mean x265 is not available for static build? If so, update
the "depends on" statements in the Config.in.

> +     endif()
> +     check_cxx_compiler_flag(-Wno-narrowing CC_HAS_NO_NARROWING)
> +     check_cxx_compiler_flag(-ffast-math CC_HAS_FAST_MATH)
> +--- a/source/common/cpu.cpp.orig       2014-10-04 17:13:58.507875996 +0200
> ++++ b/source/common/cpu.cpp    2014-10-04 17:21:11.170912864 +0200
> +@@ -37,7 +37,7 @@
> + #include <machine/cpu.h>
> + #endif
> +
> +-#if X265_ARCH_ARM && !defined(HAVE_NEON)
> ++#if X265_ARCH_ARM && (!defined(HAVE_NEON) || HAVE_NEON==0)
> + #include <signal.h>
> + #include <setjmp.h>
> + static sigjmp_buf jmpbuf;
> +@@ -340,7 +340,6 @@
> +     }
> +
> +     canjump = 1;
> +-    x265_cpu_neon_test();
> +     canjump = 0;
> +     signal(SIGILL, oldsig);
> + #endif // if !HAVE_NEON
> +@@ -356,7 +355,7 @@
> +     // which may result in incorrect detection and the counters stuck enabled.
> +     // right now Apple does not seem to support performance counters for this test
> + #ifndef __MACH__
> +-    flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0;
> ++    //flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0;
> + #endif
> +     // TODO: write dual issue test? currently it's A8 (dual issue) vs. A9 (fast mrc)
> + #endif // if HAVE_ARMV6
> diff --git a/package/x265/Config.in b/package/x265/Config.in
> new file mode 100644
> index 0000000..bf8bd12
> --- /dev/null
> +++ b/package/x265/Config.in
> @@ -0,0 +1,23 @@
> +config BR2_PACKAGE_X265
> +       bool "x265"
> +       depends on BR2_i386 || BR2_x86_64 || BR2_arm
> +       depends on !BR2_ARM_CPU_ARMV4
> +       depends on BR2_INSTALL_LIBSTDCPP
> +       help
> +         x265 is an open-source project and free application library for encoding
> +         video streams into the H.265/High Efficiency Video Coding (HEVC) format.
> +
> +         http://x265.org
> +
> +if BR2_PACKAGE_X265
> +
> +config BR2_PACKAGE_X265_CLI
> +       bool "CLI"
> +       help
> +         Build standalone CLI application
> +endif
> +
> +comment "x265 needs a toolchain w/ C++"
> +       depends on BR2_i386 || BR2_x86_64 || BR2_arm
> +       depends on !BR2_ARM_CPU_ARMV4
> +       depends on !BR2_INSTALL_LIBSTDCPP
> diff --git a/package/x265/x265.mk b/package/x265/x265.mk
> new file mode 100644
> index 0000000..026fd26
> --- /dev/null
> +++ b/package/x265/x265.mk
> @@ -0,0 +1,34 @@
> +################################################################################
> +#
> +# x265
> +#
> +################################################################################
> +
> +X265_VERSION = 1.4
> +X265_SOURCE = $(X265_VERSION).tar.bz2

hmm... not a very good name for a source tarball!
We need to find a good solution to properly support this... Yann is
working on it!

> +X265_SITE = https://bitbucket.org/multicoreware/x265/get
> +X265_INSTALL_STAGING = YES
> +X265_LICENSE = GPLv2
> +X265_LICENSE_FILES = COPYING
> +
> +ifeq ($(BR2_i386)$(BR2_x86_64),y)
> +X265_DEPENDENCIES += host-yasm
> +else
> +X265_CONF_OPTS += --disable-asm
> +endif
> +
> +# CMakeLists.txt is stored in $(@D)/source/, not in $(@D)/

You could also use X265_SUBDIR = source

> +define X265_CONFIGURE_CMDS
> +       (cd $(@D); \
> +               $(HOST_DIR)/usr/bin/cmake -G "Unix Makefiles" source/ \
> +                       -DCMAKE_TOOLCHAIN_FILE="$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \
> +                       -DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release) \

Already handled by the cmake infra [1]

> +                       -DCMAKE_INSTALL_PREFIX="/usr" \

ditto

> +                       -DCMAKE_COLOR_MAKEFILE=OFF \

ditto

> +               -DBUILD_SHARED_LIBS=$(if $(BR2_PREFER_STATIC_LIB),OFF,ON) \

ditto

> +               -DUSE_CCACHE=$(if $(BR2_CCACHE),ON,OFF) \

ditto

> +               -DENABLE_CLI=$(if $(BR2_PACKAGE_X265_CLI),ON,OFF) \
> +       )
> +endef
> +
> +$(eval $(cmake-package))
> --
> 1.7.10.4
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot


[1] http://nightly.buildroot.org/#cmake-package-reference


Regards,

-- 
Samuel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 1/2] package/x265: New package
  2014-11-18 17:04 [Buildroot] [PATCH v2 1/2] package/x265: New package Bernd Kuhls
  2014-11-18 17:04 ` [Buildroot] [PATCH v2 2/2] package/ffmpeg: Add support for x265 encoding Bernd Kuhls
  2014-11-18 18:18 ` [Buildroot] [PATCH v2 1/2] package/x265: New package Samuel Martin
@ 2015-01-02 18:19 ` Thomas Petazzoni
  2 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2015-01-02 18:19 UTC (permalink / raw)
  To: buildroot

Dear Bernd Kuhls,

On Tue, 18 Nov 2014 18:04:26 +0100, Bernd Kuhls wrote:
> Depends on http://patchwork.ozlabs.org/patch/411789/
> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

You had some review on this patch on the day you sent it, but you never
resent a new version of the patches. Therefore, I'll mark this patch,
and the following one touching ffmpeg as "Changes Requested" in
patchwork. Can you resubmit updated versions that take into account the
comments that were made?

Thanks a lot!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-02 18:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-18 17:04 [Buildroot] [PATCH v2 1/2] package/x265: New package Bernd Kuhls
2014-11-18 17:04 ` [Buildroot] [PATCH v2 2/2] package/ffmpeg: Add support for x265 encoding Bernd Kuhls
2014-11-18 18:18 ` [Buildroot] [PATCH v2 1/2] package/x265: New package Samuel Martin
2015-01-02 18:19 ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.