All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/2] [RFC] Add ffmpeg-2 and omxplayer
@ 2014-01-20 18:37 Yann E. MORIN
  2014-01-20 18:37 ` [Buildroot] [PATCH 1/2] package/ffmpeg2: new package Yann E. MORIN
  2014-01-20 18:37 ` [Buildroot] [PATCH 2/2] package/omxplayer: " Yann E. MORIN
  0 siblings, 2 replies; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-20 18:37 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Hello All!

This series is an RFC (or final, as you want) to add ffmpeg2 and
omxplayer.

omxplayer is an optimised video application, specially written for the
Raspberry Pi, which allows decoding video using hardware acceleration
with openMAX.

With omxplayer, it is posible to decide h264 1080p30 with as low as 20%
CPU usage (where gst is not able to, and tops at ~40% CPU for 720p30).

The series might still be  rough on the edges, so beware.

I've only slightly build-tested it, and even slightier runtime-tested
it as well. Seems OK so far, but YMMC, as they say... ;-)

Regards,
Yann E. MORIN.


----------------------------------------------------------------
Yann E. MORIN (2):
      package/ffmpeg2: new package
      package/omxplayer: new package

 package/Config.in                                  |   2 +
 package/ffmpeg2/Config.in                          | 235 ++++++++++++++++++
 package/ffmpeg2/ffmpeg2.mk                         | 274 +++++++++++++++++++++
 package/omxplayer/Config.in                        |  31 +++
 .../omxplayer-0000-clean-up-Makefile.include.patch |  38 +++
 package/omxplayer/omxplayer.mk                     |  44 ++++
 6 files changed, 624 insertions(+)
 create mode 100644 package/ffmpeg2/Config.in
 create mode 100644 package/ffmpeg2/ffmpeg2.mk
 create mode 100644 package/omxplayer/Config.in
 create mode 100644 package/omxplayer/omxplayer-0000-clean-up-Makefile.include.patch
 create mode 100644 package/omxplayer/omxplayer.mk

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 18:37 [Buildroot] [PATCH 0/2] [RFC] Add ffmpeg-2 and omxplayer Yann E. MORIN
@ 2014-01-20 18:37 ` Yann E. MORIN
  2014-01-20 19:05   ` Bernd Kuhls
  2014-01-20 18:37 ` [Buildroot] [PATCH 2/2] package/omxplayer: " Yann E. MORIN
  1 sibling, 1 reply; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-20 18:37 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

We package ffmpeg2 as a separate package from ffmpeg, instead of
bumping the latter, since gstreamer-0.10's gst-ffmpeg still use an
older version of ffmpeg. Since we still support gstreamer-0.10, we
need to keep our legacy ffmpeg, and add ffmpeg2 as a spearate package.

However, ffmpeg and ffmpeg2 can't be installed concurrently on the
same system, since the latter installs binaries named the same as the
former. Hence, they are made mutually exclusive in the menuconfig.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/Config.in          |   1 +
 package/ffmpeg2/Config.in  | 235 ++++++++++++++++++++++++++++++++++++++
 package/ffmpeg2/ffmpeg2.mk | 274 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 510 insertions(+)
 create mode 100644 package/ffmpeg2/Config.in
 create mode 100644 package/ffmpeg2/ffmpeg2.mk

diff --git a/package/Config.in b/package/Config.in
index 749ffea..639ba9b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -8,6 +8,7 @@ source "package/aumix/Config.in"
 source "package/bellagio/Config.in"
 source "package/faad2/Config.in"
 source "package/ffmpeg/Config.in"
+source "package/ffmpeg2/Config.in"
 source "package/flac/Config.in"
 source "package/gstreamer/Config.in"
 source "package/gstreamer1/Config.in"
diff --git a/package/ffmpeg2/Config.in b/package/ffmpeg2/Config.in
new file mode 100644
index 0000000..ce61900
--- /dev/null
+++ b/package/ffmpeg2/Config.in
@@ -0,0 +1,235 @@
+comment "ffmpeg2 needs a toolchain w/ largefile, IPv6"
+	depends on !(BR2_LARGEFILE && BR2_INET_IPV6) && !BR2_PACKAGE_FFMPEG2
+
+# Warning! Moving this comment to the top of the file will make it
+# appear in the ffmpeg sub-menu, dues to its dependency on ffmpeg.
+# Be sure to keep it here, below the other comment above, which breaks
+# the dependency chain, and thus breaks the adherence to the ffmpeg
+# sub-menu.
+comment "ffmpeg2 conflicts with ffmpeg"
+	depends on BR2_PACKAGE_FFMPEG
+
+menuconfig BR2_PACKAGE_FFMPEG2
+	bool "ffmpeg2"
+	depends on !BR2_PACKAGE_FFMPEG
+	depends on BR2_LARGEFILE
+	depends on BR2_INET_IPV6
+	help
+	  FFmpeg is a complete, cross-platform solution to record, convert
+	  and stream audio and video.
+
+	  http://www.ffmpeg.org
+
+	  Note: the help texts of the FFmpeg2 options, below, are scrapped
+	  directly from FFMpeg2's ./configure --help. Refer to the project's
+	  documentation for the actual meaning of the help texts.
+
+if BR2_PACKAGE_FFMPEG2
+
+config BR2_PACKAGE_FFMPEG2_GPL
+	bool "Enable GPL code"
+	help
+	  Allow use of GPL code, the resulting libs and binaries will
+	  be under GPL
+
+config BR2_PACKAGE_FFMPEG2_GPL3
+	bool "Use (L)GPLv3 instead of v2"
+	depends on BR2_PACKAGE_FFMPEG2_GPL
+	help
+	  upgrade (L)GPL to version 3
+
+config BR2_PACKAGE_FFMPEG2_NONFREE
+	bool "Enable nonfree code"
+	help
+	  allow use of nonfree code, the resulting libs and binaries
+	  will be unredistributable
+
+comment "Programs"
+
+config BR2_PACKAGE_FFMPEG2_FFMPEG
+	bool "ffmpeg"
+	select BR2_PACKAGE_FFMPEG2_SWSCALE
+	default y
+	help
+	  FFmpeg is a very fast video and audio converter.
+	  It can also grab from a live audio/video source.
+
+	  It is not needed if you want to link the FFmpeg libraries
+	  to your application.
+
+config BR2_PACKAGE_FFMPEG2_FFPLAY
+	bool "ffplay"
+	select BR2_PACKAGE_SDL
+	help
+	  FFplay is a very simple and portable media player using the
+	  FFmpeg libraries and the SDL library.
+	  It is mostly used as a testbed for the various FFmpeg APIs.
+
+config BR2_PACKAGE_FFMPEG2_FFPROBE
+	bool "ffprobe"
+	help
+	  ffprobe gathers information from multimedia streams and prints
+	  it in human- and machine-readable fashion.
+
+config BR2_PACKAGE_FFMPEG2_FFSERVER
+	bool "ffserver"
+	help
+	  FFserver is a streaming server for both audio and video.
+
+comment "Libraries"
+
+config BR2_PACKAGE_FFMPEG2_AVCODEC
+	bool "libavcodec"
+
+config BR2_PACKAGE_FFMPEG2_AVDEVICE
+	bool "libavdevice"
+
+config BR2_PACKAGE_FFMPEG2_AVFILTER
+	bool "libavfilter"
+	select BR2_PACKAGE_FFMPEG2_AVUTIL
+	select BR2_PACKAGE_FFMPEG2_AVFORMAT
+	select BR2_PACKAGE_FFMPEG2_AVCODEC
+
+config BR2_PACKAGE_FFMPEG2_AVFORMAT
+	bool "libavformat"
+
+config BR2_PACKAGE_FFMPEG2_AVRESAMPLE
+	bool "libavresample"
+
+config BR2_PACKAGE_FFMPEG2_AVUTIL
+	bool "libavutil"
+
+config BR2_PACKAGE_FFMPEG2_POSTPROC
+	bool "libpostproc"
+	depends on BR2_PACKAGE_FFMPEG2_GPL
+
+config BR2_PACKAGE_FFMPEG2_SWRESAMPLE
+	bool "libswresample"
+
+config BR2_PACKAGE_FFMPEG2_SWSCALE
+	bool "libswscale"
+
+comment "Hardware acceleration"
+
+config BR2_PACKAGE_FFMPEG2_DXVA2
+	bool "dxva2"
+
+config BR2_PACKAGE_FFMPEG2_VAAPI
+	bool "vaapi"
+
+config BR2_PACKAGE_FFMPEG2_VDA
+	bool "vda"
+
+config BR2_PACKAGE_FFMPEG2_VDPAU
+	bool "vdpau"
+
+comment "Components options"
+
+config BR2_PACKAGE_FFMPEG2_ENCODERS
+	string "Enabled encoders"
+	default "all"
+	help
+	  Space-separated list of encoders to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-encoders in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_DECODERS
+	string "Enabled decoders"
+	default "all"
+	help
+	  Space-separated list of decoders to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-decoders in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_MUXERS
+	string "Enabled muxers"
+	default "all"
+	help
+	  Space-separated list of muxers to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-muxers in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_DEMUXERS
+	string "Enabled demuxers"
+	default "all"
+	help
+	  Space-separated list of demuxers to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-demuxers in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_PARSERS
+	string "Enabled parsers"
+	default "all"
+	help
+	  Space-separated list of parsers to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-parsers in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_BSFS
+	string "Enabled bitstreams"
+	default "all"
+	help
+	  Space-separated list of bitstream filters to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-bsfs in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_PROTOCOLS
+	string "Enabled protocols"
+	default "all"
+	help
+	  Space-separated list of protocols to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-protocols in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_FILTERS
+	string "Enabled filters"
+	default "all"
+	help
+	  Space-separated list of filters to build in FFmpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-filters in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_INDEVS
+	string "Enabled input devices"
+	default "all"
+	help
+	  Space-separated list of input devices to build into FFMpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-indevs in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_OUTDEVS
+	string "Enabled output devices"
+	default "all"
+	help
+	  Space-separated list of output devices to build into FFMpeg,
+	  or "all" to build all of them.
+
+	  Run ./configure --list-outdevs in the ffmpeg sources
+	  directory to know the available options.
+
+config BR2_PACKAGE_FFMPEG2_EXTRACONF
+	string "Additional parameters for ./configure"
+	default ""
+	help
+	  Extra parameters that will be appended to FFmpeg's
+	  ./configure commandline.
+
+endif
diff --git a/package/ffmpeg2/ffmpeg2.mk b/package/ffmpeg2/ffmpeg2.mk
new file mode 100644
index 0000000..0bca20f
--- /dev/null
+++ b/package/ffmpeg2/ffmpeg2.mk
@@ -0,0 +1,274 @@
+################################################################################
+#
+# ffmpeg
+#
+################################################################################
+
+FFMPEG2_VERSION = 2.1.3
+FFMPEG2_SOURCE = ffmpeg-$(FFMPEG2_VERSION).tar.bz2
+FFMPEG2_SITE = http://ffmpeg.org/releases
+FFMPEG2_INSTALL_STAGING = YES
+
+FFMPEG2_LICENSE = LGPLv2.1+, libjpeg license
+FFMPEG2_LICENSE_FILES = LICENSE COPYING.LGPLv2.1
+ifeq ($(BR2_PACKAGE_FFMPEG2_GPL),y)
+FFMPEG2_LICENSE += and GPLv2+
+FFMPEG2_LICENSE_FILES += COPYING.GPLv2
+endif
+
+FFMPEG2_CONF_OPTS = \
+	--prefix=/usr		\
+	$(if $(BR2_HAVE_DOCUMENTATION),,--disable-doc)
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_GPL),y)
+FFMPEG2_CONF_OPTS += --enable-gpl
+else
+FFMPEG2_CONF_OPTS += --disable-gpl
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_NONFREE),y)
+FFMPEG2_CONF_OPTS += --enable-nonfree
+else
+FFMPEG2_CONF_OPTS += --disable-nonfree
+endif
+
+#------------------
+# Programs
+ifeq ($(BR2_PACKAGE_FFMPEG2_FFMPEG),y)
+FFMPEG2_CONF_OPTS += --enable-ffmpeg
+else
+FFMPEG2_CONF_OPTS += --disable-ffmpeg
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_FFPLAY),y)
+FFMPEG2_DEPENDENCIES += sdl
+FFMPEG2_CONF_OPTS += --enable-ffplay
+FFMPEG2_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
+else
+FFMPEG2_CONF_OPTS += --disable-ffplay
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_FFPROBE),y)
+FFMPEG2_CONF_OPTS += --enable-ffprobe
+else
+FFMPEG2_CONF_OPTS += --disable-ffprobe
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_FFSERVER),y)
+FFMPEG2_CONF_OPTS += --enable-ffserver
+else
+FFMPEG2_CONF_OPTS += --disable-ffserver
+endif
+
+#------------------
+# Libraries
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVCODEC),y)
+FFMPEG2_CONF_OPTS += --enable-avcodec
+else
+FFMPEG2_CONF_OPTS += --disable-avcodec
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVDEVICE),y)
+FFMPEG2_CONF_OPTS += --enable-avdevice
+else
+FFMPEG2_CONF_OPTS += --disable-avdevice
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVFILTER),y)
+FFMPEG2_CONF_OPTS += --enable-avfilter
+else
+FFMPEG2_CONF_OPTS += --disable-avfilter
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVFORMAT),y)
+FFMPEG2_CONF_OPTS += --enable-avformat
+else
+FFMPEG2_CONF_OPTS += --disable-avformat
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVRESAMPLE),y)
+FFMPEG2_CONF_OPTS += --enable-avresample
+else
+FFMPEG2_CONF_OPTS += --disable-avresample
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_AVUTIL),y)
+FFMPEG2_CONF_OPTS += --enable-avutil
+else
+FFMPEG2_CONF_OPTS += --disable-avutil
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_POSTPROC),y)
+FFMPEG2_CONF_OPTS += --enable-postproc
+else
+FFMPEG2_CONF_OPTS += --disable-postproc
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_SWRESAMPLE),y)
+FFMPEG2_CONF_OPTS += --enable-swresample
+else
+FFMPEG2_CONF_OPTS += --disable-swresample
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_SWSCALE),y)
+FFMPEG2_CONF_OPTS += --enable-swscale
+else
+FFMPEG2_CONF_OPTS += --disable-swscale
+endif
+
+#------------------
+# Hardware acceleration
+ifeq ($(BR2_PACKAGE_FFMPEG2_DXVA2),y)
+FFMPEG2_CONF_OPTS += --enable-dxva2
+else
+FFMPEG2_CONF_OPTS += --disable-dxva2
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_VAAPI),y)
+FFMPEG2_CONF_OPTS += --enable-vaapi
+else
+FFMPEG2_CONF_OPTS += --disable-vaapi
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_VDA),y)
+FFMPEG2_CONF_OPTS += --enable-vda
+else
+FFMPEG2_CONF_OPTS += --disable-vda
+endif
+
+ifeq ($(BR2_PACKAGE_FFMPEG2_VDPAU),y)
+FFMPEG2_CONF_OPTS += --enable-vdpau
+else
+FFMPEG2_CONF_OPTS += --disable-vdpau
+endif
+
+#------------------
+# Components options
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_ENCODERS)),all)
+FFMPEG2_CONF_OPTS += --disable-encoders \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_ENCODERS)),--enable-encoder=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_DECODERS)),all)
+FFMPEG2_CONF_OPTS += --disable-decoders \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_DECODERS)),--enable-decoder=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_MUXERS)),all)
+FFMPEG2_CONF_OPTS += --disable-muxers \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_MUXERS)),--enable-muxer=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_DEMUXERS)),all)
+FFMPEG2_CONF_OPTS += --disable-demuxers \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_DEMUXERS)),--enable-demuxer=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_PARSERS)),all)
+FFMPEG2_CONF_OPTS += --disable-parsers \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_PARSERS)),--enable-parser=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_BSFS)),all)
+FFMPEG2_CONF_OPTS += --disable-bsfs \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_BSFS)),--enable-bsf=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_PROTOCOLS)),all)
+FFMPEG2_CONF_OPTS += --disable-protocols \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_PROTOCOLS)),--enable-protocol=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_FILTERS)),all)
+FFMPEG2_CONF_OPTS += --disable-filters \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_FILTERS)),--enable-filter=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_INDEVS)),all)
+FFMPEG2_CONF_OPTS += --disable-indevs \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_INDEVS)),--enable-indevs=$(x))
+endif
+
+ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG2_OUTDEVS)),all)
+FFMPEG2_CONF_OPTS += --disable-indevs \
+	$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG2_OUTDEVS)),--enable-outdevs=$(x))
+endif
+
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+FFMPEG2_CONF_OPTS += --enable-pthreads
+else
+FFMPEG2_CONF_OPTS += --disable-pthreads
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+FFMPEG2_CONF_OPTS += --enable-zlib
+FFMPEG2_DEPENDENCIES += zlib
+else
+FFMPEG2_CONF_OPTS += --disable-zlib
+endif
+
+ifeq ($(BR2_i386)$(BR2_x86_64),y)
+# MMX on is default for x86, disable it for lowly x86-type processors
+ifeq ($(BR2_x86_i386)$(BR2_x86_i486)$(BR2_x86_i586)$(BR2_x86_i686)$(BR2_x86_pentiumpro)$(BR2_x86_geode),y)
+FFMPEG2_CONF_OPTS += --disable-mmx
+else
+# If it is enabled, nasm is required
+FFMPEG2_DEPENDENCIES += host-nasm
+endif
+endif
+
+# Explicitly disable everything that doesn't match for ARM
+# FFMPEG "autodetects" by compiling an extended instruction via AS
+# This works on compilers that aren't built for generic by default
+ifeq ($(BR2_arm)$(BR2_armeb),y)
+ifeq ($(BR2_arm7tdmi)$(BR2_arm720t)$(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+FFMPEG2_CONF_OPTS += --disable-armv5te
+endif
+ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+FFMPEG2_CONF_OPTS += --enable-armv6
+else
+FFMPEG2_CONF_OPTS += --disable-armv6 --disable-armv6t2
+endif
+# Note: VFPV(n+1) always selects VFPV(n),
+# so we just need to depend on VFPV2 here.
+ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y)
+FFMPEG2_CONF_OPTS += --enable-vfp
+else
+FFMPEG2_CONF_OPTS += --disable-vfp
+endif
+ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
+FFMPEG2_CONF_OPTS += --enable-neon
+endif
+endif # BR2_arm || BR2_armeb
+
+# Set powerpc altivec appropriately
+ifeq ($(BR2_powerpc),y)
+ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
+FFMPEG2_CONF_OPTS += --enable-altivec
+else
+FFMPEG2_CONF_OPTS += --disable-altivec
+endif
+endif
+
+FFMPEG2_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG2_EXTRACONF))
+
+# Override FFMPEG2_CONFIGURE_CMDS: FFmpeg does not support --target and others
+define FFMPEG2_CONFIGURE_CMDS
+	(cd $(FFMPEG2_SRCDIR) && rm -rf config.cache && \
+	$(TARGET_CONFIGURE_OPTS) \
+	$(TARGET_CONFIGURE_ARGS) \
+	$(FFMPEG2_CONF_ENV) \
+	./configure \
+		--enable-cross-compile	\
+		--cross-prefix=$(TARGET_CROSS) \
+		--sysroot=$(STAGING_DIR) \
+		--host-cc="$(HOSTCC)" \
+		--arch=$(BR2_ARCH) \
+		--target-os=linux \
+		--extra-cflags=-fPIC \
+		$(SHARED_STATIC_LIBS_OPTS) \
+		$(FFMPEG2_CONF_OPTS) \
+	)
+endef
+
+$(eval $(autotools-package))
-- 
1.8.1.2

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

* [Buildroot] [PATCH 2/2] package/omxplayer: new package
  2014-01-20 18:37 [Buildroot] [PATCH 0/2] [RFC] Add ffmpeg-2 and omxplayer Yann E. MORIN
  2014-01-20 18:37 ` [Buildroot] [PATCH 1/2] package/ffmpeg2: new package Yann E. MORIN
@ 2014-01-20 18:37 ` Yann E. MORIN
  2014-01-22  6:44   ` Peter Korsgaard
  1 sibling, 1 reply; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-20 18:37 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

OMXplayer uses openMAX on the RPi to play videos with hardware acceleration.

Compared to using a gstreamer pipe, OMXplayer uses a complete "tunnel-mode",
in which the video is pipped (after demuxing) into the hardware, all the way
down to the display, whereas gstreamer composes the video using the eglgles
sink, which uses mem-to-mem copies.

So, OMXplayer can cope with Full-HD videos (1080p), when gstreamer can only
handle 720p, with 1080p being jerky (frames are dropped).

When playing a locally-stored 1080p video, OMXplayer uses around 20% CPU,
while gstreamer bursts up to 40+% when playing 720p; all on an non
overclocked RPi.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/Config.in                                  |  1 +
 package/omxplayer/Config.in                        | 31 +++++++++++++++
 .../omxplayer-0000-clean-up-Makefile.include.patch | 38 +++++++++++++++++++
 package/omxplayer/omxplayer.mk                     | 44 ++++++++++++++++++++++
 4 files changed, 114 insertions(+)
 create mode 100644 package/omxplayer/Config.in
 create mode 100644 package/omxplayer/omxplayer-0000-clean-up-Makefile.include.patch
 create mode 100644 package/omxplayer/omxplayer.mk

diff --git a/package/Config.in b/package/Config.in
index 639ba9b..ea8dc50 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -19,6 +19,7 @@ source "package/mpd/Config.in"
 source "package/mpg123/Config.in"
 source "package/mplayer/Config.in"
 source "package/musepack/Config.in"
+source "package/omxplayer/Config.in"
 source "package/on2-8170-libs/Config.in"
 source "package/opus-tools/Config.in"
 source "package/pulseaudio/Config.in"
diff --git a/package/omxplayer/Config.in b/package/omxplayer/Config.in
new file mode 100644
index 0000000..419b0be
--- /dev/null
+++ b/package/omxplayer/Config.in
@@ -0,0 +1,31 @@
+comment "omxplayer needs a toolchain w/ C++, threads, largefile, IPv6"
+	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS && BR2_LARGEFILE && BR2_INET_IPV6)
+	depends on BR2_arm
+
+config BR2_PACKAGE_OMXPLAYER
+	bool "omxplayer"
+	depends on BR2_arm
+	depends on BR2_INSTALL_LIBSTDCPP        # boost, rpi-userland
+	depends on BR2_TOOLCHAIN_HAS_THREADS    # boost, dbus, libusb, rpi-userland
+	depends on BR2_LARGEFILE                # boost, ffmpeg2, rpi-userland
+	depends on BR2_INET_IPV6                # ffmpeg2
+	depends on !BR2_PACKAGE_FFMPEG          # ffmpeg2
+	depends on BR2_USE_MMU                  # dbus
+	select BR2_PACKAGE_BOOST
+	select BR2_PACKAGE_DBUS
+	select BR2_PACKAGE_FFMPEG2
+	select BR2_PACKAGE_FFMPEG2_AVFILTER
+	select BR2_PACKAGE_FFMPEG2_SWRESAMPLE
+	select BR2_PACKAGE_FFMPEG2_SWSCALE
+	select BR2_PACKAGE_FREETYPE
+	select BR2_PACKAGE_LIBIDN
+	select BR2_PACKAGE_LIBUSB
+	select BR2_PACKAGE_PCRE
+	select BR2_PACKAGE_RPI_USERLAND
+	select BR2_PACKAGE_ZLIB
+	help
+	  OMXPlayer is a commandline OMX player for the Raspberry Pi. It was
+	  developed as a testbed for the XBMC Raspberry PI implementation
+	  and is quite handy to use standalone.
+
+	  https://github.com/popcornmix/omxplayer
diff --git a/package/omxplayer/omxplayer-0000-clean-up-Makefile.include.patch b/package/omxplayer/omxplayer-0000-clean-up-Makefile.include.patch
new file mode 100644
index 0000000..598500d
--- /dev/null
+++ b/package/omxplayer/omxplayer-0000-clean-up-Makefile.include.patch
@@ -0,0 +1,38 @@
+Makefile.include: clean up the cruft
+
+Most of the variables that Makefile.include tries to set (and fails to),
+are already available from Buildroot's variables:
+  - AR, AS, CC, CXX, OBJDUMP...
+  - CFLAGS, CXXFLAGS, CPPFLAGS...
+
+This leaves us with a few select variables that defines (include and
+library) paths local to the omxplayer package, plus a few optimisations.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+diff -durN omxplayer-37fd6fb.orig/Makefile.include omxplayer-37fd6fb/Makefile.include
+--- omxplayer-37fd6fb.orig/Makefile.include	2013-10-16 14:21:05.000000000 +0200
++++ omxplayer-37fd6fb/Makefile.include	2013-10-17 22:53:02.294062252 +0200
+@@ -20,21 +20,5 @@
+ 
+ JOBS=7
+ 
+-CFLAGS			:= -isystem$(PREFIX)/include
+-CXXFLAGS		:= $(CFLAGS)
+-CPPFLAGS		:= $(CFLAGS)
+-LDFLAGS			:= -L$(BUILDROOT)/lib
+-LD					:= $(TOOLCHAIN)/bin/$(HOST)-ld --sysroot=$(SYSROOT)
+-CC					:= $(TOOLCHAIN)/bin/$(HOST)-gcc --sysroot=$(SYSROOT)
+-CXX         := $(TOOLCHAIN)/bin/$(HOST)-g++ --sysroot=$(SYSROOT)
+-OBJDUMP			:= $(TOOLCHAIN)/bin/$(HOST)-objdump
+-RANLIB			:= $(TOOLCHAIN)/bin/$(HOST)-ranlib
+-STRIP				:= $(TOOLCHAIN)/bin/$(HOST)-strip
+-AR 					:= $(TOOLCHAIN)/bin/$(HOST)-ar
+-CXXCP 			:= $(CXX) -E
+-PATH 				:= $(PREFIX)/bin:$(BUILDROOT)/output/host/usr/bin:$(PATH)
+-
+-CFLAGS			+= -pipe -mfloat-abi=$(FLOAT) -mcpu=arm1176jzf-s -fomit-frame-pointer -mabi=aapcs-linux -mtune=arm1176jzf-s -mfpu=vfp -Wno-psabi -mno-apcs-stack-check -g -mstructure-size-boundary=32 -mno-sched-prolog
+-LDFLAGS			+= -L$(SDKSTAGE)/lib -L$(SDKSTAGE)/usr/lib -L$(SDKSTAGE)/opt/vc/lib/ -Lpcre/build
+-#INCLUDES		+= -isystem$(SDKSTAGE)/usr/include -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SYSROOT)/usr/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -isystem$(SDKSTAGE)/usr/include/freetype2
+-INCLUDES		+= -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SYSROOT)/usr/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -Ipcre/build -Iboost-trunk -Ifreetype2/include
++CFLAGS			+= -fomit-frame-pointer -Wno-psabi -mno-apcs-stack-check    \
++			   -mstructure-size-boundary=32 -mno-sched-prolog
diff --git a/package/omxplayer/omxplayer.mk b/package/omxplayer/omxplayer.mk
new file mode 100644
index 0000000..8b430d2
--- /dev/null
+++ b/package/omxplayer/omxplayer.mk
@@ -0,0 +1,44 @@
+################################################################################
+#
+# omxplayer
+#
+################################################################################
+
+OMXPLAYER_VERSION       = f666a5dfbec36e2af7cd965558ac8643c86277a6
+OMXPLAYER_SITE          = git://github.com/popcornmix/omxplayer.git
+OMXPLAYER_LICENSE       = GPLv2+
+OMXPLAYER_LICENSE_FILES = COPYING
+
+OMXPLAYER_DEPENDENCIES  = host-pkgconf boost dbus ffmpeg2 freetype libidn \
+			  libusb pcre rpi-userland zlib
+
+OMXPLAYER_EXTRA_CFLAGS =                                        \
+	-DTARGET_LINUX -DTARGET_POSIX                           \
+	$(shell $(PKG_CONFIG_HOST_BINARY) --cflags bcm_host)    \
+	$(shell $(PKG_CONFIG_HOST_BINARY) --cflags freetype2)   \
+	$(shell $(PKG_CONFIG_HOST_BINARY) --cflags dbus-1)      \
+
+# OMXplayer has support for building in Buildroot, but that
+# procedure is, well, tainted. Fix this by forcing the real,
+# correct values.
+OMXPLAYER_MAKE_ENV =                        \
+	USE_BUILDROOT=1                     \
+	BUILDROOT=$(TOP_DIR)                \
+	SDKSTAGE=$(STAGING_DIR)             \
+	TARGETFS=$(TARGET_DIR)              \
+	TOOLCHAIN=$(HOST_DIR)/usr           \
+	HOST=$(GNU_TARGET_NAME)             \
+	SYSROOT=$(STAGING_DIR)              \
+	JOBS=$(PARALLEL_JOBS)               \
+	$(TARGET_CONFIGURE_OPTS)            \
+	CFLAGS="$(TARGET_CFLAGS) $(OMXPLAYER_EXTRA_CFLAGS)"
+
+define OMXPLAYER_BUILD_CMDS
+	$(OMXPLAYER_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+define OMXPLAYER_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/omxplayer.bin $(TARGET_DIR)/usr/bin/omxplayer
+endef
+
+$(eval $(generic-package))
-- 
1.8.1.2

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 18:37 ` [Buildroot] [PATCH 1/2] package/ffmpeg2: new package Yann E. MORIN
@ 2014-01-20 19:05   ` Bernd Kuhls
  2014-01-20 20:25     ` Thomas De Schampheleire
  2014-01-20 21:27     ` Yann E. MORIN
  0 siblings, 2 replies; 16+ messages in thread
From: Bernd Kuhls @ 2014-01-20 19:05 UTC (permalink / raw)
  To: buildroot

"Yann E. MORIN" <yann.morin.1998@free.fr> wrote in
news:d4f3847e403c1e5c4e8733f75bbfccce6e0b4975.1390242867.git.yann.morin.199
8 at free.fr: 

> We package ffmpeg2 as a separate package from ffmpeg, instead of
> bumping the latter, since gstreamer-0.10's gst-ffmpeg still use an
> older version of ffmpeg.

Hi,

this is not true anymore:

gst-ffmpeg: Use internal libav instead of external ffmpeg: 
http://git.buildroot.net/buildroot/commit/?id=
6ea49a23df3fa950e253bf704188e87a583a8ba4

ffmpeg: Bump version to 1.2.5: http://git.buildroot.net/buildroot/commit/?id=
4b959fcb67675b9e0594dc6b12742e119c82c96e

Regards, Bernd

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 19:05   ` Bernd Kuhls
@ 2014-01-20 20:25     ` Thomas De Schampheleire
  2014-01-27  8:10       ` Thomas De Schampheleire
  2014-01-20 21:27     ` Yann E. MORIN
  1 sibling, 1 reply; 16+ messages in thread
From: Thomas De Schampheleire @ 2014-01-20 20:25 UTC (permalink / raw)
  To: buildroot

Hi Bernd,

On Mon, Jan 20, 2014 at 8:05 PM, Bernd Kuhls <berndkuhls@hotmail.com> wrote:
[..]
>
> this is not true anymore:
>
> gst-ffmpeg: Use internal libav instead of external ffmpeg:
> http://git.buildroot.net/buildroot/commit/?id=
> 6ea49a23df3fa950e253bf704188e87a583a8ba4


In fact, there is another patch in patchwork by Bogdan Radulescu that
removes gst-ffmpeg entirely in favor of gst-libav:
http://patchwork.ozlabs.org/patch/207431/

The conclusion from patchwork cleanup session #4 was that this patch
is still relevant. It seems that your patch (that has been included in
buildroot already) addresses the same problem, but in a different way.

It would be great if you and Bogdan could review the patch mentioned
above in the light of the current buildroot version, and assess which
parts of this patch still need to be applied, if any. For example, the
patch removes gst-dsp and gst-omapfb from gstreamer, but that was for
gstreamer1 and this is already addressed in current buildroot.

Thanks,
Thomas

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 19:05   ` Bernd Kuhls
  2014-01-20 20:25     ` Thomas De Schampheleire
@ 2014-01-20 21:27     ` Yann E. MORIN
  2014-01-22 22:33       ` Yann E. MORIN
  1 sibling, 1 reply; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-20 21:27 UTC (permalink / raw)
  To: buildroot

Bernd, All,

On 2014-01-20 20:05 +0100, Bernd Kuhls spake thusly:
> "Yann E. MORIN" <yann.morin.1998@free.fr> wrote in
> news:d4f3847e403c1e5c4e8733f75bbfccce6e0b4975.1390242867.git.yann.morin.199
> 8 at free.fr: 
> 
> > We package ffmpeg2 as a separate package from ffmpeg, instead of
> > bumping the latter, since gstreamer-0.10's gst-ffmpeg still use an
> > older version of ffmpeg.
> 
> Hi,
> 
> this is not true anymore:
> 
> gst-ffmpeg: Use internal libav instead of external ffmpeg: 
> http://git.buildroot.net/buildroot/commit/?id=
> 6ea49a23df3fa950e253bf704188e87a583a8ba4
> 
> ffmpeg: Bump version to 1.2.5: http://git.buildroot.net/buildroot/commit/?id=
> 4b959fcb67675b9e0594dc6b12742e119c82c96e

Ah, yes. This ffmpeg2 patch of mine I did some three months ago. I just
refreshed it yesterday, and forgot to re-check the compatibilty issue.

I'll double check what needs to be done, rework the commit log, and
resubmit later.

Thank you! :-)

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 2/2] package/omxplayer: new package
  2014-01-20 18:37 ` [Buildroot] [PATCH 2/2] package/omxplayer: " Yann E. MORIN
@ 2014-01-22  6:44   ` Peter Korsgaard
  0 siblings, 0 replies; 16+ messages in thread
From: Peter Korsgaard @ 2014-01-22  6:44 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > From: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > OMXplayer uses openMAX on the RPi to play videos with hardware acceleration.

 > Compared to using a gstreamer pipe, OMXplayer uses a complete "tunnel-mode",
 > in which the video is pipped (after demuxing) into the hardware, all the way

s/pipped/piped/

Otherwise it looks good to me.


-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 21:27     ` Yann E. MORIN
@ 2014-01-22 22:33       ` Yann E. MORIN
  2014-01-22 22:51         ` Peter Korsgaard
  0 siblings, 1 reply; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-22 22:33 UTC (permalink / raw)
  To: buildroot

Bernd, All,

On 2014-01-20 22:27 +0100, Yann E. MORIN spake thusly:
> On 2014-01-20 20:05 +0100, Bernd Kuhls spake thusly:
> > "Yann E. MORIN" <yann.morin.1998@free.fr> wrote in
> > news:d4f3847e403c1e5c4e8733f75bbfccce6e0b4975.1390242867.git.yann.morin.199
> > 8 at free.fr: 
> > 
> > > We package ffmpeg2 as a separate package from ffmpeg, instead of
> > > bumping the latter, since gstreamer-0.10's gst-ffmpeg still use an
> > > older version of ffmpeg.
> > 
> > Hi,
> > 
> > this is not true anymore:
> > 
> > gst-ffmpeg: Use internal libav instead of external ffmpeg: 
> > http://git.buildroot.net/buildroot/commit/?id=
> > 6ea49a23df3fa950e253bf704188e87a583a8ba4
> > 
> > ffmpeg: Bump version to 1.2.5: http://git.buildroot.net/buildroot/commit/?id=
> > 4b959fcb67675b9e0594dc6b12742e119c82c96e
> 
> Ah, yes. This ffmpeg2 patch of mine I did some three months ago. I just
> refreshed it yesterday, and forgot to re-check the compatibilty issue.
> 
> I'll double check what needs to be done, rework the commit log, and
> resubmit later.

The sets of files installed by each version has a non-null intersection,
especially the header files, and the .pc files.

The libraries have different versions, indeed, but we still can't
install both, as the .so links will point to the latest being installed,
which is not predictible.

Say for example:
  - package 'zzz' depends on ffmpeg (and is incompatible with ffmpeg2)
  - the Makefile builds the package in alphabetical order, so we'd build:
    ffmpeg -> ffmpeg2 -> zzz
  - zzz will see header and .pc files, and .so symlinks from ffmpeg2,
    not ffmpeg.

So, I still think we should consider ffmpeg2 to be clashing with ffmpeg1.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-22 22:33       ` Yann E. MORIN
@ 2014-01-22 22:51         ` Peter Korsgaard
  2014-01-23  5:58           ` Bernd Kuhls
  0 siblings, 1 reply; 16+ messages in thread
From: Peter Korsgaard @ 2014-01-22 22:51 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

Hi,

 >> Ah, yes. This ffmpeg2 patch of mine I did some three months ago. I just
 >> refreshed it yesterday, and forgot to re-check the compatibilty issue.
 >> 
 >> I'll double check what needs to be done, rework the commit log, and
 >> resubmit later.

 > The sets of files installed by each version has a non-null intersection,
 > especially the header files, and the .pc files.

 > The libraries have different versions, indeed, but we still can't
 > install both, as the .so links will point to the latest being installed,
 > which is not predictible.

 > Say for example:
 >   - package 'zzz' depends on ffmpeg (and is incompatible with ffmpeg2)

Do we have any examples of this?

If not, I would simply say that ffmpeg 2.x is the latest and greatest of
ffmpeg, so ffmpeg.mk should build 2.x (and we shouldn't have a
ffmpeg2.mk)

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-22 22:51         ` Peter Korsgaard
@ 2014-01-23  5:58           ` Bernd Kuhls
  2014-01-23  7:14             ` Yann E. MORIN
                               ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Bernd Kuhls @ 2014-01-23  5:58 UTC (permalink / raw)
  To: buildroot

Peter Korsgaard <jacmet@uclibc.org> wrote in
news:8738kfd40w.fsf at dell.be.48ers.dk: 

> If not, I would simply say that ffmpeg 2.x is the latest and greatest of
> ffmpeg, so ffmpeg.mk should build 2.x (and we shouldn't have a
> ffmpeg2.mk)

Hi,

atm xbmc gotham is incompatible with ffmpeg 2.x, therefore I sent ffmpeg 
1.2.5 for inclusion in buildroot.

@Yann: Does omxplayer also work with ffmpeg 1.2.5?

Regards, Bernd

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-23  5:58           ` Bernd Kuhls
@ 2014-01-23  7:14             ` Yann E. MORIN
  2014-01-23 17:52             ` Yann E. MORIN
  2014-02-04 19:51             ` Bernd Kuhls
  2 siblings, 0 replies; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-23  7:14 UTC (permalink / raw)
  To: buildroot

Bernd, All,

>Peter Korsgaard <jacmet@uclibc.org> wrote in
news:8738kfd40w.fsf at dell.be.48ers.dk: 

>> If not, I would simply say that ffmpeg 2.x is the latest and greatest of
>> ffmpeg, so ffmpeg.mk should build 2.x (and we shouldn't have a
>> ffmpeg2.mk)
>atm xbmc gotham is incompatible with ffmpeg 2.x, therefore I sent ffmpeg 
>1.2.5 for inclusion in buildroot.
>
>@Yann: Does omxplayer also work with ffmpeg 1.2.5?

Not as I know.

Their standard build ptocedure even git-clones ffmpeg2 explicitly.

Regarda,

Yann E. MORIN.

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-23  5:58           ` Bernd Kuhls
  2014-01-23  7:14             ` Yann E. MORIN
@ 2014-01-23 17:52             ` Yann E. MORIN
  2014-01-23 18:47               ` Bernd Kuhls
  2014-02-04 19:51             ` Bernd Kuhls
  2 siblings, 1 reply; 16+ messages in thread
From: Yann E. MORIN @ 2014-01-23 17:52 UTC (permalink / raw)
  To: buildroot

Bernd, All,

On 2014-01-23 06:58 +0100, Bernd Kuhls spake thusly:
> Peter Korsgaard <jacmet@uclibc.org> wrote in
> news:8738kfd40w.fsf at dell.be.48ers.dk: 
> 
> > If not, I would simply say that ffmpeg 2.x is the latest and greatest of
> > ffmpeg, so ffmpeg.mk should build 2.x (and we shouldn't have a
> > ffmpeg2.mk)
> 
> atm xbmc gotham is incompatible with ffmpeg 2.x, therefore I sent ffmpeg 
> 1.2.5 for inclusion in buildroot.

I've discussed with a guy that built XBMC Gotham (next release, from git
tree) with ffmpeg2. Here's what he said:
  - Gotham and ffmpeg 1.x      : builds and runs OK
  - Gotham and ffmpeg 2.0.x    : Builds and runs OK
  - Gotham and ffmpeg 2.1.{0,1}: builds OK, fails at runtime (broken VDPAU)
  - Gotham and ffpmeg 2.1.{2,3}: builds and runs OK
  - Gotham and ffmpeg master   : builds and runs OK

He also pointed me to this bug report:
    https://trac.ffmpeg.org/ticket/3133
and this comment stating it's been fixed:
    https://trac.ffmpeg.org/ticket/3133#comment:81

Since we're adding ffmpeg 2.1.3, we should be able to build Gotham with
our ffmpeg2 version.

Do you know of another reason why Gotham can't build with latest ffmpeg2
(that is, ffmpeg 2.1.3 or ffmpeg master)?

But even then, I'd favour keeping ffmpeg as 1.x, and add ffmpeg 2.x as
ffmpeg2. Unles Peter has a stong opinion against.

> @Yann: Does omxplayer also work with ffmpeg 1.2.5?

As I briefly answered this morning, no, they do require ffmpeg 2.1+.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-23 17:52             ` Yann E. MORIN
@ 2014-01-23 18:47               ` Bernd Kuhls
  0 siblings, 0 replies; 16+ messages in thread
From: Bernd Kuhls @ 2014-01-23 18:47 UTC (permalink / raw)
  To: buildroot

"Yann E. MORIN" <yann.morin.1998@free.fr> wrote in 
news:20140123175214.GA3446 at free.fr:

Hi,

> Do you know of another reason why Gotham can't build with latest ffmpeg2
> (that is, ffmpeg 2.1.3 or ffmpeg master)?

building gotham with ffmpeg git master is not the problem but last time I 
tried during runtime I had sound problems:
http://forum.xbmc.org/showthread.php?tid=180859&pid=1578887#pid1578887

Downgrading to ffmpeg 1.2.x, copying OpenELEC here, fixed the problem.
I still did not find the time to test the patch I mentioned on the xbmc forum 
though, maybe this weekend I find some time for this...

Btw, work seems to have started to support ffmpeg2 in xbmc:
https://github.com/FernetMenta/xbmc/commits/ffmpeg2

Regards, Bernd

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-20 20:25     ` Thomas De Schampheleire
@ 2014-01-27  8:10       ` Thomas De Schampheleire
  0 siblings, 0 replies; 16+ messages in thread
From: Thomas De Schampheleire @ 2014-01-27  8:10 UTC (permalink / raw)
  To: buildroot

Hi Bernd,

On Mon, Jan 20, 2014 at 9:25 PM, Thomas De Schampheleire
<patrickdepinguin@gmail.com> wrote:
> Hi Bernd,
>
> On Mon, Jan 20, 2014 at 8:05 PM, Bernd Kuhls <berndkuhls@hotmail.com> wrote:
> [..]
>>
>> this is not true anymore:
>>
>> gst-ffmpeg: Use internal libav instead of external ffmpeg:
>> http://git.buildroot.net/buildroot/commit/?id=
>> 6ea49a23df3fa950e253bf704188e87a583a8ba4
>
>
> In fact, there is another patch in patchwork by Bogdan Radulescu that
> removes gst-ffmpeg entirely in favor of gst-libav:
> http://patchwork.ozlabs.org/patch/207431/
>
> The conclusion from patchwork cleanup session #4 was that this patch
> is still relevant. It seems that your patch (that has been included in
> buildroot already) addresses the same problem, but in a different way.
>
> It would be great if you and Bogdan could review the patch mentioned
> above in the light of the current buildroot version, and assess which
> parts of this patch still need to be applied, if any. For example, the
> patch removes gst-dsp and gst-omapfb from gstreamer, but that was for
> gstreamer1 and this is already addressed in current buildroot.

Bogdan indicated that he does not have time shortly to look into the
differences with his patch.
Could you have a look maybe?

Thanks,
Thomas

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-01-23  5:58           ` Bernd Kuhls
  2014-01-23  7:14             ` Yann E. MORIN
  2014-01-23 17:52             ` Yann E. MORIN
@ 2014-02-04 19:51             ` Bernd Kuhls
  2014-02-06 21:38               ` Yann E. MORIN
  2 siblings, 1 reply; 16+ messages in thread
From: Bernd Kuhls @ 2014-02-04 19:51 UTC (permalink / raw)
  To: buildroot

Bernd Kuhls <berndkuhls@hotmail.com> wrote in 
news:skn6raxead.ln2 at ID-313208.user.individual.net:

> atm xbmc gotham is incompatible with ffmpeg 2.x, therefore I sent ffmpeg 
> 1.2.5 for inclusion in buildroot.

Hi,

xbmc devs are aiming to support ffmpeg 2.x after Gotham release, a repo 
containing the necessary code is already present:
http://forum.xbmc.org/showthread.php?tid=165707&pid=1618520#pid1618520

I am currently testing this code, first results look good. Because of this 
I think buildroot does not need to stick to ffmpeg 1.x, it can go forward 
to include ffmpeg 2.1.3 if other deps permit it.

FTR and only for test purposes here is the diff I am using, which includes 
some xbmc specific patches:

--- 29494.org/src/fbr/buildroot/package/ffmpeg/ffmpeg.mk 2014-02-03 
20:43:20.000000000 +0100
+++ 29494/src/fbr/buildroot/package/ffmpeg/ffmpeg.mk 2014-02-03 
21:11:14.325528814 +0100
@@ -4,9 +4,12 @@
 #
 
###########################################################################
#####
.
-FFMPEG_VERSION = 1.2.5
-FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.bz2
-FFMPEG_SITE = http://ffmpeg.org/releases
+FFMPEG_VERSION = 11086c540305ffb208e6fc17d301db989d3c4151
+FFMPEG_SITE = git://github.com/FernetMenta/FFmpeg.git
+
+#FFMPEG_VERSION = 1.2.5
+#FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.bz2
+#FFMPEG_SITE = http://ffmpeg.org/releases
 FFMPEG_INSTALL_STAGING = YES
.
 FFMPEG_LICENSE = LGPLv2.1+, libjpeg license

Regards, Bernd

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

* [Buildroot] [PATCH 1/2] package/ffmpeg2: new package
  2014-02-04 19:51             ` Bernd Kuhls
@ 2014-02-06 21:38               ` Yann E. MORIN
  0 siblings, 0 replies; 16+ messages in thread
From: Yann E. MORIN @ 2014-02-06 21:38 UTC (permalink / raw)
  To: buildroot

Bernd, All,

On 2014-02-04 20:51 +0100, Bernd Kuhls spake thusly:
> xbmc devs are aiming to support ffmpeg 2.x after Gotham release, a repo 
> containing the necessary code is already present:
> http://forum.xbmc.org/showthread.php?tid=165707&pid=1618520#pid1618520
> 
> I am currently testing this code, first results look good. Because of this 
> I think buildroot does not need to stick to ffmpeg 1.x, it can go forward 
> to include ffmpeg 2.1.3 if other deps permit it.

For now, we do have a few packages that depend on ffmpeg:
  - vlc
  - opencv
  - freerdp
  - mediastreamer
  - mpd

I don't know the state of each package wrt ffmpeg2 compatibility. So I
would prefer to stay on the safe side, and ad dffmpeg2 as a separate
package for now.

Also, XBMC Gotham is not released yet, and from what I understood from
the above, it will still use ffmpeg1, and only the next release will
(maybe) be using ffmpeg2. We do not know how long it will take before
Gotham is released, and even less when the next release will come.

Since we already have an XBMC patch right now, and I'd like it to go in
sooner than later, we'll have to stick with ffmpeg1 for a while, I'm
afraid.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

end of thread, other threads:[~2014-02-06 21:38 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-20 18:37 [Buildroot] [PATCH 0/2] [RFC] Add ffmpeg-2 and omxplayer Yann E. MORIN
2014-01-20 18:37 ` [Buildroot] [PATCH 1/2] package/ffmpeg2: new package Yann E. MORIN
2014-01-20 19:05   ` Bernd Kuhls
2014-01-20 20:25     ` Thomas De Schampheleire
2014-01-27  8:10       ` Thomas De Schampheleire
2014-01-20 21:27     ` Yann E. MORIN
2014-01-22 22:33       ` Yann E. MORIN
2014-01-22 22:51         ` Peter Korsgaard
2014-01-23  5:58           ` Bernd Kuhls
2014-01-23  7:14             ` Yann E. MORIN
2014-01-23 17:52             ` Yann E. MORIN
2014-01-23 18:47               ` Bernd Kuhls
2014-02-04 19:51             ` Bernd Kuhls
2014-02-06 21:38               ` Yann E. MORIN
2014-01-20 18:37 ` [Buildroot] [PATCH 2/2] package/omxplayer: " Yann E. MORIN
2014-01-22  6:44   ` Peter Korsgaard

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.