mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge remote-tracking branch 'upstream/master' into openelec-systemd
This commit is contained in:
commit
07b0cd1e0e
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="bcm2835-driver"
|
PKG_NAME="bcm2835-driver"
|
||||||
PKG_VERSION="d4f5315"
|
PKG_VERSION="f6bb324"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
PKG_NAME="xbmc-theme-Confluence"
|
PKG_NAME="xbmc-theme-Confluence"
|
||||||
PKG_VERSION="12.2-71eb528"
|
PKG_VERSION="12.2-71eb528"
|
||||||
if [ "$XBMC" = "master" ]; then
|
if [ "$XBMC" = "master" ]; then
|
||||||
PKG_VERSION="13.alpha-2435cf3"
|
PKG_VERSION="13.alpha-dcd897b"
|
||||||
elif [ "$XBMC" = "xbmc-aml" ]; then
|
elif [ "$XBMC" = "xbmc-aml" ]; then
|
||||||
PKG_VERSION="aml-frodo-d9119f2"
|
PKG_VERSION="aml-frodo-d9119f2"
|
||||||
fi
|
fi
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
PKG_NAME="xbmc"
|
PKG_NAME="xbmc"
|
||||||
PKG_VERSION="12.2-71eb528"
|
PKG_VERSION="12.2-71eb528"
|
||||||
if [ "$XBMC" = "master" ]; then
|
if [ "$XBMC" = "master" ]; then
|
||||||
PKG_VERSION="13.alpha-2435cf3"
|
PKG_VERSION="13.alpha-dcd897b"
|
||||||
elif [ "$XBMC" = "xbmc-aml" ]; then
|
elif [ "$XBMC" = "xbmc-aml" ]; then
|
||||||
PKG_VERSION="aml-frodo-d9119f2"
|
PKG_VERSION="aml-frodo-d9119f2"
|
||||||
fi
|
fi
|
||||||
|
@ -1,714 +0,0 @@
|
|||||||
From 70199b49c92d0ca58b09f948794e637ed1bc963c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Raue <stephan@openelec.tv>
|
|
||||||
Date: Tue, 3 Sep 2013 05:16:54 +0200
|
|
||||||
Subject: [PATCH 1/5] configure: add initial support for CC_FOR_BUILD,
|
|
||||||
CXX_FOR_BUILD, CFLAGS_FOR_BUILD, CXXFLAGS_FOR_BUILD, LDFLAGS_FOR_BUILD
|
|
||||||
|
|
||||||
---
|
|
||||||
Makefile.include.in | 5 ++
|
|
||||||
configure.in | 15 ++++--
|
|
||||||
m4/ax_prog_cc_for_build.m4 | 125 ++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
m4/ax_prog_cxx_for_build.m4 | 110 ++++++++++++++++++++++++++++++++++++++
|
|
||||||
4 files changed, 252 insertions(+), 3 deletions(-)
|
|
||||||
create mode 100644 m4/ax_prog_cc_for_build.m4
|
|
||||||
create mode 100644 m4/ax_prog_cxx_for_build.m4
|
|
||||||
|
|
||||||
diff --git a/Makefile.include.in b/Makefile.include.in
|
|
||||||
index 2b7b89a..2afe6ba 100644
|
|
||||||
--- a/Makefile.include.in
|
|
||||||
+++ b/Makefile.include.in
|
|
||||||
@@ -28,10 +28,15 @@ dvidir=@dvidir@
|
|
||||||
pdfdir=@pdfdir@
|
|
||||||
psdir=@psdir@
|
|
||||||
CXX=@CXX@
|
|
||||||
+CXX_FOR_BUILD=@CXX_FOR_BUILD@
|
|
||||||
CC=@CC@
|
|
||||||
+CC_FOR_BUILD=@CC_FOR_BUILD@
|
|
||||||
CXXFLAGS+=@CXXFLAGS@
|
|
||||||
+CXXFLAGS_FOR_BUILD+=@CXXFLAGS_FOR_BUILD@
|
|
||||||
CFLAGS+=@CFLAGS@
|
|
||||||
+CFLAGS_FOR_BUILD+=@CFLAGS_FOR_BUILD@
|
|
||||||
LDFLAGS+=@LDFLAGS@
|
|
||||||
+LDFLAGS_FOR_BUILD+=@LDFLAGS_FOR_BUILD@
|
|
||||||
INCLUDES+=-I@abs_top_srcdir@/lib
|
|
||||||
INCLUDES+=-I@abs_top_srcdir@/xbmc
|
|
||||||
INCLUDES+=-I@abs_top_srcdir@/addons/library.xbmc.gui
|
|
||||||
diff --git a/configure.in b/configure.in
|
|
||||||
index a6153ad..ef0e051 100644
|
|
||||||
--- a/configure.in
|
|
||||||
+++ b/configure.in
|
|
||||||
@@ -5,6 +5,8 @@ AC_PREREQ(2.59)
|
|
||||||
AC_INIT([xbmc], [12.9.8], [http://trac.xbmc.org])
|
|
||||||
AC_CONFIG_HEADERS([xbmc/config.h])
|
|
||||||
AH_TOP([#pragma once])
|
|
||||||
+m4_include([m4/ax_prog_cc_for_build.m4])
|
|
||||||
+m4_include([m4/ax_prog_cxx_for_build.m4])
|
|
||||||
m4_include([m4/ax_python_devel.m4])
|
|
||||||
m4_include([m4/xbmc_arch.m4])
|
|
||||||
|
|
||||||
@@ -579,13 +581,15 @@ if test "x$host_vendor" != "xapple"; then
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checks for programs.
|
|
||||||
+PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
|
|
||||||
+AC_PROG_CC
|
|
||||||
+AX_PROG_CC_FOR_BUILD
|
|
||||||
+CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
|
|
||||||
PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
|
|
||||||
AC_PROG_CXX
|
|
||||||
+AX_PROG_CXX_FOR_BUILD
|
|
||||||
CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
|
|
||||||
-PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
|
|
||||||
-AC_PROG_CC
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
-CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
|
|
||||||
AC_PROG_AWK
|
|
||||||
AC_PROG_LN_S
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
@@ -2467,6 +2471,11 @@ AC_SUBST(CFLAGS)
|
|
||||||
AC_SUBST(CXXFLAGS)
|
|
||||||
AC_SUBST(INCLUDES)
|
|
||||||
AC_SUBST(LDFLAGS)
|
|
||||||
+AC_SUBST(CXX_FOR_BUILD)
|
|
||||||
+AC_SUBST(CC_FOR_BUILD)
|
|
||||||
+AC_SUBST(CFLAGS_FOR_BUILD)
|
|
||||||
+AC_SUBST(CXXFLAGS_FOR_BUILD)
|
|
||||||
+AC_SUBST(LDFLAGS_FOR_BUILD)
|
|
||||||
AC_SUBST(SDL_DEFINES)
|
|
||||||
AC_SUBST(BUILD_DVDCSS)
|
|
||||||
AC_SUBST(DISABLE_WAVEFORM)
|
|
||||||
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..77fd346
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/m4/ax_prog_cc_for_build.m4
|
|
||||||
@@ -0,0 +1,125 @@
|
|
||||||
+# ===========================================================================
|
|
||||||
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
|
|
||||||
+# ===========================================================================
|
|
||||||
+#
|
|
||||||
+# SYNOPSIS
|
|
||||||
+#
|
|
||||||
+# AX_PROG_CC_FOR_BUILD
|
|
||||||
+#
|
|
||||||
+# DESCRIPTION
|
|
||||||
+#
|
|
||||||
+# This macro searches for a C compiler that generates native executables,
|
|
||||||
+# that is a C compiler that surely is not a cross-compiler. This can be
|
|
||||||
+# useful if you have to generate source code at compile-time like for
|
|
||||||
+# example GCC does.
|
|
||||||
+#
|
|
||||||
+# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
|
|
||||||
+# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
|
|
||||||
+# The value of these variables can be overridden by the user by specifying
|
|
||||||
+# a compiler with an environment variable (like you do for standard CC).
|
|
||||||
+#
|
|
||||||
+# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
|
|
||||||
+# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
|
|
||||||
+# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
|
|
||||||
+# substituted in the Makefile.
|
|
||||||
+#
|
|
||||||
+# LICENSE
|
|
||||||
+#
|
|
||||||
+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
|
|
||||||
+#
|
|
||||||
+# Copying and distribution of this file, with or without modification, are
|
|
||||||
+# permitted in any medium without royalty provided the copyright notice
|
|
||||||
+# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
+# warranty.
|
|
||||||
+
|
|
||||||
+#serial 8
|
|
||||||
+
|
|
||||||
+AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
|
|
||||||
+AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
|
|
||||||
+AC_REQUIRE([AC_PROG_CC])dnl
|
|
||||||
+AC_REQUIRE([AC_PROG_CPP])dnl
|
|
||||||
+AC_REQUIRE([AC_EXEEXT])dnl
|
|
||||||
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
||||||
+
|
|
||||||
+dnl Use the standard macros, but make them use other variable names
|
|
||||||
+dnl
|
|
||||||
+pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
|
|
||||||
+pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
|
|
||||||
+pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
|
|
||||||
+pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
|
|
||||||
+pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
|
|
||||||
+pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
|
|
||||||
+pushdef([ac_cv_objext], ac_cv_build_objext)dnl
|
|
||||||
+pushdef([ac_exeext], ac_build_exeext)dnl
|
|
||||||
+pushdef([ac_objext], ac_build_objext)dnl
|
|
||||||
+pushdef([CC], CC_FOR_BUILD)dnl
|
|
||||||
+pushdef([CPP], CPP_FOR_BUILD)dnl
|
|
||||||
+pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([host], build)dnl
|
|
||||||
+pushdef([host_alias], build_alias)dnl
|
|
||||||
+pushdef([host_cpu], build_cpu)dnl
|
|
||||||
+pushdef([host_vendor], build_vendor)dnl
|
|
||||||
+pushdef([host_os], build_os)dnl
|
|
||||||
+pushdef([ac_cv_host], ac_cv_build)dnl
|
|
||||||
+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
|
|
||||||
+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
|
|
||||||
+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
|
|
||||||
+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
|
|
||||||
+pushdef([ac_cpp], ac_build_cpp)dnl
|
|
||||||
+pushdef([ac_compile], ac_build_compile)dnl
|
|
||||||
+pushdef([ac_link], ac_build_link)dnl
|
|
||||||
+
|
|
||||||
+save_cross_compiling=$cross_compiling
|
|
||||||
+save_ac_tool_prefix=$ac_tool_prefix
|
|
||||||
+cross_compiling=no
|
|
||||||
+ac_tool_prefix=
|
|
||||||
+
|
|
||||||
+AC_PROG_CC
|
|
||||||
+AC_PROG_CPP
|
|
||||||
+AC_EXEEXT
|
|
||||||
+
|
|
||||||
+ac_tool_prefix=$save_ac_tool_prefix
|
|
||||||
+cross_compiling=$save_cross_compiling
|
|
||||||
+
|
|
||||||
+dnl Restore the old definitions
|
|
||||||
+dnl
|
|
||||||
+popdef([ac_link])dnl
|
|
||||||
+popdef([ac_compile])dnl
|
|
||||||
+popdef([ac_cpp])dnl
|
|
||||||
+popdef([ac_cv_host_os])dnl
|
|
||||||
+popdef([ac_cv_host_vendor])dnl
|
|
||||||
+popdef([ac_cv_host_cpu])dnl
|
|
||||||
+popdef([ac_cv_host_alias])dnl
|
|
||||||
+popdef([ac_cv_host])dnl
|
|
||||||
+popdef([host_os])dnl
|
|
||||||
+popdef([host_vendor])dnl
|
|
||||||
+popdef([host_cpu])dnl
|
|
||||||
+popdef([host_alias])dnl
|
|
||||||
+popdef([host])dnl
|
|
||||||
+popdef([LDFLAGS])dnl
|
|
||||||
+popdef([CPPFLAGS])dnl
|
|
||||||
+popdef([CFLAGS])dnl
|
|
||||||
+popdef([CPP])dnl
|
|
||||||
+popdef([CC])dnl
|
|
||||||
+popdef([ac_objext])dnl
|
|
||||||
+popdef([ac_exeext])dnl
|
|
||||||
+popdef([ac_cv_objext])dnl
|
|
||||||
+popdef([ac_cv_exeext])dnl
|
|
||||||
+popdef([ac_cv_prog_cc_g])dnl
|
|
||||||
+popdef([ac_cv_prog_cc_cross])dnl
|
|
||||||
+popdef([ac_cv_prog_cc_works])dnl
|
|
||||||
+popdef([ac_cv_prog_gcc])dnl
|
|
||||||
+popdef([ac_cv_prog_CPP])dnl
|
|
||||||
+
|
|
||||||
+dnl Finally, set Makefile variables
|
|
||||||
+dnl
|
|
||||||
+BUILD_EXEEXT=$ac_build_exeext
|
|
||||||
+BUILD_OBJEXT=$ac_build_objext
|
|
||||||
+AC_SUBST(BUILD_EXEEXT)dnl
|
|
||||||
+AC_SUBST(BUILD_OBJEXT)dnl
|
|
||||||
+AC_SUBST([CFLAGS_FOR_BUILD])dnl
|
|
||||||
+AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
|
|
||||||
+AC_SUBST([LDFLAGS_FOR_BUILD])dnl
|
|
||||||
+])
|
|
||||||
diff --git a/m4/ax_prog_cxx_for_build.m4 b/m4/ax_prog_cxx_for_build.m4
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..8cc0f73
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/m4/ax_prog_cxx_for_build.m4
|
|
||||||
@@ -0,0 +1,110 @@
|
|
||||||
+# ===========================================================================
|
|
||||||
+# http://www.gnu.org/software/autoconf-archive/ax_prog_cxx_for_build.html
|
|
||||||
+# ===========================================================================
|
|
||||||
+#
|
|
||||||
+# SYNOPSIS
|
|
||||||
+#
|
|
||||||
+# AX_PROG_CXX_FOR_BUILD
|
|
||||||
+#
|
|
||||||
+# DESCRIPTION
|
|
||||||
+#
|
|
||||||
+# This macro searches for a C++ compiler that generates native
|
|
||||||
+# executables, that is a C++ compiler that surely is not a cross-compiler.
|
|
||||||
+# This can be useful if you have to generate source code at compile-time
|
|
||||||
+# like for example GCC does.
|
|
||||||
+#
|
|
||||||
+# The macro sets the CXX_FOR_BUILD and CXXCPP_FOR_BUILD macros to anything
|
|
||||||
+# needed to compile or link (CXX_FOR_BUILD) and preprocess
|
|
||||||
+# (CXXCPP_FOR_BUILD). The value of these variables can be overridden by
|
|
||||||
+# the user by specifying a compiler with an environment variable (like you
|
|
||||||
+# do for standard CXX).
|
|
||||||
+#
|
|
||||||
+# LICENSE
|
|
||||||
+#
|
|
||||||
+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
|
|
||||||
+# Copyright (c) 2012 Avionic Design GmbH
|
|
||||||
+#
|
|
||||||
+# Based on the AX_PROG_CC_FOR_BUILD macro by Paolo Bonzini.
|
|
||||||
+#
|
|
||||||
+# Copying and distribution of this file, with or without modification, are
|
|
||||||
+# permitted in any medium without royalty provided the copyright notice
|
|
||||||
+# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
+# warranty.
|
|
||||||
+
|
|
||||||
+#serial 2
|
|
||||||
+
|
|
||||||
+AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
|
|
||||||
+AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
|
|
||||||
+AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl
|
|
||||||
+AC_REQUIRE([AC_PROG_CXX])dnl
|
|
||||||
+AC_REQUIRE([AC_PROG_CXXCPP])dnl
|
|
||||||
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
||||||
+
|
|
||||||
+dnl Use the standard macros, but make them use other variable names
|
|
||||||
+dnl
|
|
||||||
+pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl
|
|
||||||
+pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl
|
|
||||||
+pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl
|
|
||||||
+pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
|
|
||||||
+pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
|
|
||||||
+pushdef([CXX], CXX_FOR_BUILD)dnl
|
|
||||||
+pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
|
|
||||||
+pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
|
|
||||||
+pushdef([host], build)dnl
|
|
||||||
+pushdef([host_alias], build_alias)dnl
|
|
||||||
+pushdef([host_cpu], build_cpu)dnl
|
|
||||||
+pushdef([host_vendor], build_vendor)dnl
|
|
||||||
+pushdef([host_os], build_os)dnl
|
|
||||||
+pushdef([ac_cv_host], ac_cv_build)dnl
|
|
||||||
+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
|
|
||||||
+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
|
|
||||||
+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
|
|
||||||
+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
|
|
||||||
+pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
|
|
||||||
+pushdef([ac_compile], ac_build_compile)dnl
|
|
||||||
+pushdef([ac_link], ac_build_link)dnl
|
|
||||||
+
|
|
||||||
+save_cross_compiling=$cross_compiling
|
|
||||||
+save_ac_tool_prefix=$ac_tool_prefix
|
|
||||||
+cross_compiling=no
|
|
||||||
+ac_tool_prefix=
|
|
||||||
+
|
|
||||||
+AC_PROG_CXX
|
|
||||||
+AC_PROG_CXXCPP
|
|
||||||
+
|
|
||||||
+ac_tool_prefix=$save_ac_tool_prefix
|
|
||||||
+cross_compiling=$save_cross_compiling
|
|
||||||
+
|
|
||||||
+dnl Restore the old definitions
|
|
||||||
+dnl
|
|
||||||
+popdef([ac_link])dnl
|
|
||||||
+popdef([ac_compile])dnl
|
|
||||||
+popdef([ac_cxxcpp])dnl
|
|
||||||
+popdef([ac_cv_host_os])dnl
|
|
||||||
+popdef([ac_cv_host_vendor])dnl
|
|
||||||
+popdef([ac_cv_host_cpu])dnl
|
|
||||||
+popdef([ac_cv_host_alias])dnl
|
|
||||||
+popdef([ac_cv_host])dnl
|
|
||||||
+popdef([host_os])dnl
|
|
||||||
+popdef([host_vendor])dnl
|
|
||||||
+popdef([host_cpu])dnl
|
|
||||||
+popdef([host_alias])dnl
|
|
||||||
+popdef([host])dnl
|
|
||||||
+popdef([CXXCPPFLAGS])dnl
|
|
||||||
+popdef([CPPFLAGS])dnl
|
|
||||||
+popdef([CXXFLAGS])dnl
|
|
||||||
+popdef([CXXCPP])dnl
|
|
||||||
+popdef([CXX])dnl
|
|
||||||
+popdef([ac_cv_prog_cxx_g])dnl
|
|
||||||
+popdef([ac_cv_prog_cxx_cross])dnl
|
|
||||||
+popdef([ac_cv_prog_cxx_works])dnl
|
|
||||||
+popdef([ac_cv_prog_gxx])dnl
|
|
||||||
+popdef([ac_cv_prog_CXXCPP])dnl
|
|
||||||
+
|
|
||||||
+dnl Finally, set Makefile variables
|
|
||||||
+dnl
|
|
||||||
+AC_SUBST([CXXFLAGS_FOR_BUILD])dnl
|
|
||||||
+AC_SUBST([CXXCPPFLAGS_FOR_BUILD])dnl
|
|
||||||
+])
|
|
||||||
--
|
|
||||||
1.8.4
|
|
||||||
|
|
||||||
|
|
||||||
From 3a03d3cfc95f8d8b77a583d8556000fafce358c0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Raue <stephan@openelec.tv>
|
|
||||||
Date: Tue, 3 Sep 2013 05:31:39 +0200
|
|
||||||
Subject: [PATCH 2/5] configure/depends: rename 'USE_TEXTUREPACKER_NATIVE_ROOT'
|
|
||||||
to 'NATIVE_ROOT' for general usage to use with other hostbuilt tools. Add
|
|
||||||
$NATIVE_ROOT/lib to LDFLAGS_FOR_BUILD and $NATIVE_ROOT/include to
|
|
||||||
CFLAGS_FOR_BUILD and CXXFLAGS_FOR_BUILD
|
|
||||||
|
|
||||||
---
|
|
||||||
configure.in | 14 ++++++++++----
|
|
||||||
tools/TexturePacker/Makefile.in | 2 +-
|
|
||||||
tools/depends/target/config.site.in | 2 +-
|
|
||||||
tools/rbp/depends/depends.mk | 4 ++--
|
|
||||||
4 files changed, 14 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.in b/configure.in
|
|
||||||
index ef0e051..daf5477 100644
|
|
||||||
--- a/configure.in
|
|
||||||
+++ b/configure.in
|
|
||||||
@@ -695,7 +695,7 @@ case $host in
|
|
||||||
esac
|
|
||||||
AC_SUBST([ARCH])
|
|
||||||
|
|
||||||
-check_sdl_arch=[`file $USE_TEXTUREPACKER_NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
|
|
||||||
+check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
|
|
||||||
if test "x$check_sdl_arch" = "xi386" ; then
|
|
||||||
DARWIN_NATIVE_ARCH=-m32
|
|
||||||
elif test "x$check_sdl_arch" = "xx86_64" ; then
|
|
||||||
@@ -1960,6 +1960,12 @@ AC_C_BIGENDIAN
|
|
||||||
|
|
||||||
if test "$cross_compiling" = "yes"; then
|
|
||||||
final_message="$final_message\n Crosscomp.:\tYes"
|
|
||||||
+ if [[ -d "$NATIVE_ROOT" ]]; then
|
|
||||||
+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
|
|
||||||
+ CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
|
|
||||||
+ LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
|
|
||||||
+ final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
|
|
||||||
+ fi
|
|
||||||
else
|
|
||||||
final_message="$final_message\n Crosscomp.:\tNo"
|
|
||||||
fi
|
|
||||||
@@ -2103,8 +2109,8 @@ if test "x$use_texturepacker" != "xno"; then
|
|
||||||
USE_TEXTUREPACKER=1
|
|
||||||
if test "x$use_texturepacker_native" = "xyes"; then
|
|
||||||
USE_TEXTUREPACKER_NATIVE=1
|
|
||||||
- if [[ ! -d "$USE_TEXTUREPACKER_NATIVE_ROOT" ]]; then
|
|
||||||
- USE_TEXTUREPACKER_NATIVE_ROOT=
|
|
||||||
+ if [[ ! -d "$NATIVE_ROOT" ]]; then
|
|
||||||
+ NATIVE_ROOT=
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
@@ -2517,7 +2523,7 @@ AC_SUBST(USE_XRANDR)
|
|
||||||
AC_SUBST(USE_ALSA)
|
|
||||||
AC_SUBST(USE_TEXTUREPACKER)
|
|
||||||
AC_SUBST(USE_TEXTUREPACKER_NATIVE)
|
|
||||||
-AC_SUBST(USE_TEXTUREPACKER_NATIVE_ROOT)
|
|
||||||
+AC_SUBST(NATIVE_ROOT)
|
|
||||||
AC_SUBST(USE_AIRTUNES)
|
|
||||||
AC_SUBST(USE_LIBUDEV)
|
|
||||||
AC_SUBST(USE_LIBUSB)
|
|
||||||
diff --git a/tools/TexturePacker/Makefile.in b/tools/TexturePacker/Makefile.in
|
|
||||||
index 71e3d4a..343182c 100644
|
|
||||||
--- a/tools/TexturePacker/Makefile.in
|
|
||||||
+++ b/tools/TexturePacker/Makefile.in
|
|
||||||
@@ -12,7 +12,7 @@ CXXFLAGS+= \
|
|
||||||
RPATH=-Wl,-rpath=$(NATIVE_ROOT_PATH)/lib
|
|
||||||
|
|
||||||
ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
|
||||||
-NATIVE_ROOT_PATH=@USE_TEXTUREPACKER_NATIVE_ROOT@
|
|
||||||
+NATIVE_ROOT_PATH=@NATIVE_ROOT@
|
|
||||||
ifdef NATIVE_ROOT_PATH
|
|
||||||
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
|
|
||||||
DEFINES += -DTARGET_DARWIN
|
|
||||||
diff --git a/tools/depends/target/config.site.in b/tools/depends/target/config.site.in
|
|
||||||
index 7cc470d..207748a 100644
|
|
||||||
--- a/tools/depends/target/config.site.in
|
|
||||||
+++ b/tools/depends/target/config.site.in
|
|
||||||
@@ -39,7 +39,7 @@ PYTHON_LDFLAGS="-L@prefix@/@deps_dir@/lib -lpython${PYTHON_VERSION} -lc -ldl -lm
|
|
||||||
PYTHON_CPPFLAGS=-I@prefix@/@deps_dir@/include/python${PYTHON_VERSION}
|
|
||||||
PYTHON_SITE_PKG=@prefix@/@deps_dir@/lib/python${PYTHON_VERSION}/site-packages
|
|
||||||
PYTHON_NOVERSIONCHECK=no-check
|
|
||||||
-USE_TEXTUREPACKER_NATIVE_ROOT=@prefix@/@tool_dir@
|
|
||||||
+NATIVE_ROOT=@prefix@/@tool_dir@
|
|
||||||
|
|
||||||
#afps-ng and libomxil-bellagio
|
|
||||||
ac_cv_func_malloc_0_nonnull=yes
|
|
||||||
diff --git a/tools/rbp/depends/depends.mk b/tools/rbp/depends/depends.mk
|
|
||||||
index bafa99c..d805001 100644
|
|
||||||
--- a/tools/rbp/depends/depends.mk
|
|
||||||
+++ b/tools/rbp/depends/depends.mk
|
|
||||||
@@ -19,7 +19,7 @@ ifeq ($(USE_BUILDROOT),1)
|
|
||||||
export PKG_CONFIG_PATH=$(PREFIX)/lib/pkgconfig
|
|
||||||
export PYTHON_VERSION=2.7
|
|
||||||
export PATH:=$(PREFIX)/bin:$(BUILDROOT)/output/host/usr/bin:$(PATH)
|
|
||||||
- export USE_TEXTUREPACKER_NATIVE_ROOT=/usr
|
|
||||||
+ export NATIVE_ROOT=/usr
|
|
||||||
export PYTHON_LDFLAGS=-L$(SDKSTAGE)/usr/lib -lpython$(PYTHON_VERSION) -lpthread -ldl -lutil -lm
|
|
||||||
else
|
|
||||||
export CFLAGS=-pipe -O3 -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=softfp -mfpu=vfp -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated -Wno-deprecated-declarations
|
|
||||||
@@ -47,7 +47,7 @@ else
|
|
||||||
export PKG_CONFIG_PATH=$(PREFIX)/bin/pkg-config
|
|
||||||
export PYTHON_VERSION=2.6
|
|
||||||
export PATH:=${PREFIX}/bin:$(PATH):${TOOLCHAIN}/bin
|
|
||||||
- export USE_TEXTUREPACKER_NATIVE_ROOT=/usr
|
|
||||||
+ export NATIVE_ROOT=/usr
|
|
||||||
export PYTHON_LDFLAGS=-L$(SDKSTAGE)/usr/lib -lpython$(PYTHON_VERSION)
|
|
||||||
endif
|
|
||||||
export PYTHON_CPPFLAGS=-I$(SDKSTAGE)/usr/include/python$(PYTHON_VERSION)
|
|
||||||
--
|
|
||||||
1.8.4
|
|
||||||
|
|
||||||
|
|
||||||
From 59109579ecfe7622fea2283d1391ca4da07aa9a7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Raue <stephan@openelec.tv>
|
|
||||||
Date: Tue, 3 Sep 2013 05:37:05 +0200
|
|
||||||
Subject: [PATCH 3/5] libsquish: rework to support native builds with
|
|
||||||
*_FOR_BUILD
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/libsquish/Makefile.in | 22 ++++++++++------------
|
|
||||||
1 file changed, 10 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/libsquish/Makefile.in b/lib/libsquish/Makefile.in
|
|
||||||
index 34f93bd..ef57bb8 100644
|
|
||||||
--- a/lib/libsquish/Makefile.in
|
|
||||||
+++ b/lib/libsquish/Makefile.in
|
|
||||||
@@ -11,26 +11,24 @@ SRCS= \
|
|
||||||
singlecolourfit.cpp \
|
|
||||||
squish.cpp
|
|
||||||
|
|
||||||
-CXXFLAGS+=-I.
|
|
||||||
-
|
|
||||||
-LIB=libsquish.a
|
|
||||||
-
|
|
||||||
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
|
||||||
-NATIVE_LIB=libsquish-native.so
|
|
||||||
-CLEAN_FILES+=$(NATIVE_LIB)
|
|
||||||
+CXXFLAGS += -I.
|
|
||||||
+CXXFLAGS_FOR_BUILD += -I.
|
|
||||||
+LIB = libsquish.a
|
|
||||||
+NATIVE_LIB = libsquish-native.so
|
|
||||||
+CLEAN_FILES += $(NATIVE_LIB)
|
|
||||||
|
|
||||||
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
|
|
||||||
-NATIVE_ARCH=@DARWIN_NATIVE_ARCH@
|
|
||||||
+ CXXFLAGS_FOR_BUILD += @DARWIN_NATIVE_ARCH@
|
|
||||||
endif
|
|
||||||
|
|
||||||
-all: $(LIB) $(NATIVE_LIB)
|
|
||||||
+all: $(LIB)
|
|
||||||
+
|
|
||||||
# TexturePacker links to libsquish and needs to run on build system, so make a native flavor.
|
|
||||||
$(NATIVE_LIB): $(SRCS)
|
|
||||||
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
|
|
||||||
- g++ $(NATIVE_ARCH) -I. $(SRCS) -dynamiclib -install_name `pwd`/libsquish-native.so -o $@
|
|
||||||
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(SRCS) -dynamiclib -install_name `pwd`/$(NATIVE_LIB) -o $@
|
|
||||||
else
|
|
||||||
- g++ -I. $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/libsquish-native.so -o $@
|
|
||||||
-endif
|
|
||||||
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/$(NATIVE_LIB) -o $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
include ../../Makefile.include
|
|
||||||
--
|
|
||||||
1.8.4
|
|
||||||
|
|
||||||
|
|
||||||
From 2108f29aa7f60ed03afea65b262cec5ca1ed5ab9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Raue <stephan@openelec.tv>
|
|
||||||
Date: Tue, 3 Sep 2013 05:44:33 +0200
|
|
||||||
Subject: [PATCH 4/5] Texturepacker: rework to support native builds with
|
|
||||||
*_FOR_BUILD, Texturepacker builds always against libsquish-native.so, which
|
|
||||||
is ok because CXX_FOR_BUILD=CXX, CXXFLAGS_FOR_BUILD=CXXFLAGS and
|
|
||||||
LDFLAGS_FOR_BUILD=LDFLAGS on non crosscompiled builds, sothere
|
|
||||||
libsquish-native is the same like libsquish
|
|
||||||
|
|
||||||
---
|
|
||||||
Makefile.in | 2 +-
|
|
||||||
configure.in | 3 ++
|
|
||||||
tools/TexturePacker/Makefile.in | 62 +++++++++++++----------------------------
|
|
||||||
3 files changed, 23 insertions(+), 44 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.in b/Makefile.in
|
|
||||||
index 8162f64..3b21d50 100644
|
|
||||||
--- a/Makefile.in
|
|
||||||
+++ b/Makefile.in
|
|
||||||
@@ -520,7 +520,7 @@ else
|
|
||||||
$(SILENT_LD) $(CC) $(CFLAGS) $(LDFLAGS) -o xbmc-xrandr xbmc-xrandr.c -lXrandr -lX11 -lm
|
|
||||||
endif
|
|
||||||
|
|
||||||
-tools/TexturePacker/TexturePacker: lib/libsquish/libsquish.a xbmc/guilib/XBTF.h
|
|
||||||
+tools/TexturePacker/TexturePacker: xbmc/guilib/XBTF.h
|
|
||||||
$(MAKE) -C tools/TexturePacker/
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/configure.in b/configure.in
|
|
||||||
index daf5477..dda18ea 100644
|
|
||||||
--- a/configure.in
|
|
||||||
+++ b/configure.in
|
|
||||||
@@ -1964,6 +1964,9 @@ if test "$cross_compiling" = "yes"; then
|
|
||||||
CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
|
|
||||||
CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
|
|
||||||
LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
|
|
||||||
+ if test "$host_vendor" != "apple" ; then
|
|
||||||
+ LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
|
|
||||||
+ fi
|
|
||||||
final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
diff --git a/tools/TexturePacker/Makefile.in b/tools/TexturePacker/Makefile.in
|
|
||||||
index 343182c..4f0b610 100644
|
|
||||||
--- a/tools/TexturePacker/Makefile.in
|
|
||||||
+++ b/tools/TexturePacker/Makefile.in
|
|
||||||
@@ -1,61 +1,37 @@
|
|
||||||
-DEFINES += -DTARGET_POSIX -DUSE_LZO_PACKING
|
|
||||||
+DEFINES += -DTARGET_POSIX -DUSE_LZO_PACKING
|
|
||||||
ifneq ($(or $(findstring powerpc,@ARCH@),$(findstring ppc, @ARCH@)),)
|
|
||||||
-DEFINES += -DHOST_BIGENDIAN
|
|
||||||
+DEFINES += -DHOST_BIGENDIAN
|
|
||||||
endif
|
|
||||||
|
|
||||||
-CXXFLAGS+= \
|
|
||||||
+SRCS = \
|
|
||||||
+ md5.cpp \
|
|
||||||
+ SDL_anigif.cpp \
|
|
||||||
+ XBTFWriter.cpp \
|
|
||||||
+ XBMCTex.cpp \
|
|
||||||
+ @abs_top_srcdir@/xbmc/guilib/XBTF.cpp
|
|
||||||
+
|
|
||||||
+TARGET = TexturePacker
|
|
||||||
+CLEAN_FILES = $(TARGET)
|
|
||||||
+
|
|
||||||
+CXXFLAGS_FOR_BUILD += \
|
|
||||||
-I. \
|
|
||||||
-I@abs_top_srcdir@/lib \
|
|
||||||
-I@abs_top_srcdir@/xbmc \
|
|
||||||
-I@abs_top_srcdir@/xbmc/linux
|
|
||||||
|
|
||||||
-RPATH=-Wl,-rpath=$(NATIVE_ROOT_PATH)/lib
|
|
||||||
+LDFLAGS_FOR_BUILD += -lSDL_image -lSDL -llzo2
|
|
||||||
+LDFLAGS_FOR_BUILD += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
|
|
||||||
|
|
||||||
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
|
||||||
-NATIVE_ROOT_PATH=@NATIVE_ROOT@
|
|
||||||
-ifdef NATIVE_ROOT_PATH
|
|
||||||
ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
|
|
||||||
DEFINES += -DTARGET_DARWIN
|
|
||||||
NATIVE_ARCH=@DARWIN_NATIVE_ARCH@
|
|
||||||
-RPATH=
|
|
||||||
-endif
|
|
||||||
-NATIVE_CXXFLAGS+= -I. \
|
|
||||||
- -I$(NATIVE_ROOT_PATH)/include \
|
|
||||||
- -I@abs_top_srcdir@/lib \
|
|
||||||
- -I@abs_top_srcdir@/xbmc \
|
|
||||||
- -I@abs_top_srcdir@/xbmc/linux
|
|
||||||
-NATIVE_LIBS += -L$(NATIVE_ROOT_PATH)/lib
|
|
||||||
-endif
|
|
||||||
-NATIVE_LIBS += -lSDL_image -lSDL -llzo2
|
|
||||||
-NATIVE_LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
|
|
||||||
-else
|
|
||||||
-LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish
|
|
||||||
endif
|
|
||||||
|
|
||||||
-LIBS += -lSDL_image -lSDL -llzo2
|
|
||||||
-
|
|
||||||
-SRCS = \
|
|
||||||
- md5.cpp \
|
|
||||||
- SDL_anigif.cpp \
|
|
||||||
- XBTFWriter.cpp \
|
|
||||||
- XBMCTex.cpp \
|
|
||||||
- @abs_top_srcdir@/xbmc/guilib/XBTF.cpp
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-TARGET = TexturePacker
|
|
||||||
-CLEAN_FILES=$(TARGET)
|
|
||||||
-
|
|
||||||
all: $(TARGET)
|
|
||||||
|
|
||||||
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
|
||||||
-# TexturePacker run native on build system, build it with native tools
|
|
||||||
$(TARGET): $(SRCS) @abs_top_srcdir@/xbmc/guilib/XBTF.h
|
|
||||||
- g++ $(DEFINES) $(NATIVE_ARCH) $(NATIVE_CXXFLAGS) $(SRCS) $(NATIVE_LIBS) $(RPATH) -o $(TARGET)
|
|
||||||
-clean:
|
|
||||||
- rm -f $(TARGET)
|
|
||||||
-else
|
|
||||||
-include @abs_top_srcdir@/Makefile.include
|
|
||||||
+# TexturePacker run native on build system, build it with native tools
|
|
||||||
+ make -C @abs_top_srcdir@/lib/libsquish/ libsquish-native.so
|
|
||||||
+ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $(DEFINES) $(NATIVE_ARCH) $(SRCS) $(LDFLAGS_FOR_BUILD) -o $(TARGET)
|
|
||||||
|
|
||||||
-$(TARGET): $(SRCS) @abs_top_srcdir@/xbmc/guilib/XBTF.h
|
|
||||||
- $(CXX) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(SRCS) $(LDFLAGS) $(LIBS) -o $(TARGET)
|
|
||||||
-endif
|
|
||||||
+include @abs_top_srcdir@/Makefile.include
|
|
||||||
--
|
|
||||||
1.8.4
|
|
||||||
|
|
||||||
|
|
||||||
From ed1cd08fd1e93f3af283eb522082c8c8dbaf2ee7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephan Raue <stephan@openelec.tv>
|
|
||||||
Date: Tue, 3 Sep 2013 05:55:37 +0200
|
|
||||||
Subject: [PATCH 5/5] configure: cleanup, we dont need
|
|
||||||
'use_texturepacker_native' anymore and dont need to force 'use_texturepacker'
|
|
||||||
(its enabled by default).
|
|
||||||
|
|
||||||
---
|
|
||||||
configure.in | 15 ---------------
|
|
||||||
1 file changed, 15 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.in b/configure.in
|
|
||||||
index dda18ea..0337705 100644
|
|
||||||
--- a/configure.in
|
|
||||||
+++ b/configure.in
|
|
||||||
@@ -637,7 +637,6 @@ case $host in
|
|
||||||
use_dvdcss=no
|
|
||||||
use_gles=yes
|
|
||||||
use_cpu=cortex-a8
|
|
||||||
- use_texturepacker_native=yes
|
|
||||||
ARCH="arm-osx"
|
|
||||||
use_arch="arm"
|
|
||||||
PYTHON_VERSION="2.6"
|
|
||||||
@@ -649,7 +648,6 @@ case $host in
|
|
||||||
*86*-apple-darwin*)
|
|
||||||
use_joystick=no
|
|
||||||
use_vtbdecoder=no
|
|
||||||
- use_texturepacker_native=yes
|
|
||||||
ARCH="x86-osx"
|
|
||||||
;;
|
|
||||||
powerpc-apple-darwin*)
|
|
||||||
@@ -666,7 +664,6 @@ case $host in
|
|
||||||
ARCH="powerpc64-linux"
|
|
||||||
;;
|
|
||||||
arm*-*-linux-gnu*)
|
|
||||||
- use_texturepacker=no
|
|
||||||
ARCH="arm"
|
|
||||||
use_arch="arm"
|
|
||||||
ffmpeg_target_os=linux
|
|
||||||
@@ -705,7 +702,6 @@ AC_SUBST([DARWIN_NATIVE_ARCH])
|
|
||||||
|
|
||||||
if test "$target_platform" = "target_android" ; then
|
|
||||||
USE_ANDROID=1
|
|
||||||
- use_texturepacker_native=yes
|
|
||||||
webserver_checkdepends=yes
|
|
||||||
CFLAGS="$CFLAGS -Wno-psabi"
|
|
||||||
CXXFLAGS="$CXXFLAGS -Wno-psabi"
|
|
||||||
@@ -716,8 +712,6 @@ case $use_platform in
|
|
||||||
raspberry-pi)
|
|
||||||
target_platform=target_raspberry_pi
|
|
||||||
use_neon=no
|
|
||||||
- use_texturepacker=yes
|
|
||||||
- use_texturepacker_native=yes
|
|
||||||
use_arch="arm"
|
|
||||||
use_cpu=arm1176jzf-s
|
|
||||||
use_hardcoded_tables="yes"
|
|
||||||
@@ -2106,16 +2100,9 @@ else
|
|
||||||
final_message="$final_message\n Bluray:\tNo"
|
|
||||||
fi
|
|
||||||
|
|
||||||
-USE_TEXTUREPACKER_NATIVE=0
|
|
||||||
if test "x$use_texturepacker" != "xno"; then
|
|
||||||
final_message="$final_message\n TexturePacker:Yes"
|
|
||||||
USE_TEXTUREPACKER=1
|
|
||||||
- if test "x$use_texturepacker_native" = "xyes"; then
|
|
||||||
- USE_TEXTUREPACKER_NATIVE=1
|
|
||||||
- if [[ ! -d "$NATIVE_ROOT" ]]; then
|
|
||||||
- NATIVE_ROOT=
|
|
||||||
- fi
|
|
||||||
- fi
|
|
||||||
else
|
|
||||||
final_message="$final_message\n TexturePacker:No"
|
|
||||||
USE_TEXTUREPACKER=0
|
|
||||||
@@ -2525,8 +2512,6 @@ AC_SUBST(USE_PULSE)
|
|
||||||
AC_SUBST(USE_XRANDR)
|
|
||||||
AC_SUBST(USE_ALSA)
|
|
||||||
AC_SUBST(USE_TEXTUREPACKER)
|
|
||||||
-AC_SUBST(USE_TEXTUREPACKER_NATIVE)
|
|
||||||
-AC_SUBST(NATIVE_ROOT)
|
|
||||||
AC_SUBST(USE_AIRTUNES)
|
|
||||||
AC_SUBST(USE_LIBUDEV)
|
|
||||||
AC_SUBST(USE_LIBUSB)
|
|
||||||
--
|
|
||||||
1.8.4
|
|
||||||
|
|
@ -0,0 +1,151 @@
|
|||||||
|
From 67933a247943afe83bb885a5c3881bf03ce0b03b Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Sat, 7 Sep 2013 18:32:58 +0100
|
||||||
|
Subject: [PATCH 1/2] [rendercapture] Fix passthrough rendercapture interface
|
||||||
|
|
||||||
|
The RenderCapture function doesn't behave correctly for passthough video renderers,
|
||||||
|
and in fact segfaults on Pi when setting a bookmark.
|
||||||
|
|
||||||
|
There is no need to do a glReadPixels to get a video snapshot in the passthrough case,
|
||||||
|
so provide a shortcut.
|
||||||
|
---
|
||||||
|
xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
index f9f5aa4..ee03b2f 100644
|
||||||
|
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
@@ -1421,6 +1421,14 @@ bool CLinuxRendererGLES::RenderCapture(CRenderCapture* capture)
|
||||||
|
if (!m_bValidated)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
+ // If rendered directly by the hardware
|
||||||
|
+ if (m_renderMethod & RENDER_BYPASS)
|
||||||
|
+ {
|
||||||
|
+ capture->BeginRender();
|
||||||
|
+ capture->EndRender();
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// save current video rect
|
||||||
|
CRect saveSize = m_destRect;
|
||||||
|
saveRotatedCoords();//backup current m_rotatedDestCoords
|
||||||
|
--
|
||||||
|
1.8.4
|
||||||
|
|
||||||
|
|
||||||
|
From c02a7e15bfdba2743c9300fa8375cf22a908e8e7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Sat, 7 Sep 2013 18:33:32 +0100
|
||||||
|
Subject: [PATCH 2/2] [rbp] Support grabbing just the video layer through
|
||||||
|
rendercapture
|
||||||
|
|
||||||
|
As the bookmark snapshot doesn't want the OSD (and neither does boblight)
|
||||||
|
allow video, or video + GUI to be selectable.
|
||||||
|
|
||||||
|
While we're there, making the GPU do the red/blue swap and stride packing saves some cpu.
|
||||||
|
|
||||||
|
Requires updated firmware
|
||||||
|
---
|
||||||
|
xbmc/linux/RBP.cpp | 37 ++++++++++---------------------------
|
||||||
|
xbmc/linux/RBP.h | 2 +-
|
||||||
|
xbmc/utils/Screenshot.cpp | 2 +-
|
||||||
|
3 files changed, 12 insertions(+), 29 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp
|
||||||
|
index 21b1e8c..b68fce6 100644
|
||||||
|
--- a/xbmc/linux/RBP.cpp
|
||||||
|
+++ b/xbmc/linux/RBP.cpp
|
||||||
|
@@ -89,7 +89,7 @@ void CRBP::GetDisplaySize(int &width, int &height)
|
||||||
|
vc_dispmanx_display_close(display );
|
||||||
|
}
|
||||||
|
|
||||||
|
-unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue)
|
||||||
|
+unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue, bool video_only)
|
||||||
|
{
|
||||||
|
DISPMANX_DISPLAY_HANDLE_T display;
|
||||||
|
DISPMANX_RESOURCE_HANDLE_T resource;
|
||||||
|
@@ -97,6 +97,14 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
|
||||||
|
unsigned char *image = NULL;
|
||||||
|
uint32_t vc_image_ptr;
|
||||||
|
int stride;
|
||||||
|
+ uint32_t flags = 0;
|
||||||
|
+
|
||||||
|
+ if (video_only)
|
||||||
|
+ flags |= DISPMANX_SNAPSHOT_NO_RGB|DISPMANX_SNAPSHOT_FILL;
|
||||||
|
+ if (swap_red_blue)
|
||||||
|
+ flags |= DISPMANX_SNAPSHOT_SWAP_RED_BLUE;
|
||||||
|
+ if (!pstride)
|
||||||
|
+ flags |= DISPMANX_SNAPSHOT_PACK;
|
||||||
|
|
||||||
|
display = vc_dispmanx_display_open( 0 /*screen*/ );
|
||||||
|
stride = ((width + 15) & ~15) * 4;
|
||||||
|
@@ -106,37 +114,12 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
|
||||||
|
{
|
||||||
|
resource = vc_dispmanx_resource_create( VC_IMAGE_RGBA32, width, height, &vc_image_ptr );
|
||||||
|
|
||||||
|
- vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)0);
|
||||||
|
+ vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)flags);
|
||||||
|
|
||||||
|
vc_dispmanx_rect_set(&rect, 0, 0, width, height);
|
||||||
|
vc_dispmanx_resource_read_data(resource, &rect, image, stride);
|
||||||
|
vc_dispmanx_resource_delete( resource );
|
||||||
|
vc_dispmanx_display_close(display );
|
||||||
|
-
|
||||||
|
- // we need to save in BGRA order so Swap RGBA -> BGRA
|
||||||
|
- if (swap_red_blue)
|
||||||
|
- {
|
||||||
|
- for (int y = 0; y < height; y++)
|
||||||
|
- {
|
||||||
|
- unsigned char *p = image + y * stride;
|
||||||
|
- for (int x = 0; x < width; x++, p+=4)
|
||||||
|
- {
|
||||||
|
- unsigned char t = p[0];
|
||||||
|
- p[0] = p[2];
|
||||||
|
- p[2] = t;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- // assume we need to pack image if caller doesn't want stride
|
||||||
|
- if (!pstride && stride > width*4)
|
||||||
|
- {
|
||||||
|
- for (int y = 0; y < height; y++)
|
||||||
|
- {
|
||||||
|
- unsigned char *in = image + y * stride;
|
||||||
|
- unsigned char *out = image + y * width * 4;
|
||||||
|
- memmove(out, in, width*4);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
if (pstride)
|
||||||
|
*pstride = stride;
|
||||||
|
diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h
|
||||||
|
index 58cdf57..58b6f05 100644
|
||||||
|
--- a/xbmc/linux/RBP.h
|
||||||
|
+++ b/xbmc/linux/RBP.h
|
||||||
|
@@ -51,7 +51,7 @@ class CRBP
|
||||||
|
int GetGpuMem() { return m_gpu_mem; }
|
||||||
|
void GetDisplaySize(int &width, int &height);
|
||||||
|
// stride can be null for packed output
|
||||||
|
- unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue);
|
||||||
|
+ unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true);
|
||||||
|
|
||||||
|
private:
|
||||||
|
DllBcmHost *m_DllBcmHost;
|
||||||
|
diff --git a/xbmc/utils/Screenshot.cpp b/xbmc/utils/Screenshot.cpp
|
||||||
|
index 05404c9..824c003 100644
|
||||||
|
--- a/xbmc/utils/Screenshot.cpp
|
||||||
|
+++ b/xbmc/utils/Screenshot.cpp
|
||||||
|
@@ -62,7 +62,7 @@ bool CScreenshotSurface::capture()
|
||||||
|
{
|
||||||
|
#if defined(TARGET_RASPBERRY_PI)
|
||||||
|
g_RBP.GetDisplaySize(m_width, m_height);
|
||||||
|
- m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true);
|
||||||
|
+ m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true, false);
|
||||||
|
if (!m_buffer)
|
||||||
|
return false;
|
||||||
|
#elif defined(HAS_DX)
|
||||||
|
--
|
||||||
|
1.8.4
|
||||||
|
|
@ -0,0 +1,290 @@
|
|||||||
|
From 4bdcd85735abd6e6948f2842501d2d949f57b405 Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Wed, 21 Aug 2013 23:48:56 +0100
|
||||||
|
Subject: [PATCH] [rbp/omxplayer] Avoid too many calls to GPU
|
||||||
|
|
||||||
|
We currently read the media time once per packet received from demuxer to determine gpu underrun.
|
||||||
|
We've found that TrueHD audio in particular produces ~1000 packets per second (whether it is the active track or not).
|
||||||
|
The cost of reading media time (from gpu) is high enough that 1000 calls per second makes us fail to keep up.
|
||||||
|
So, cache the media time, and only read it at most 50 times per second.
|
||||||
|
---
|
||||||
|
xbmc/cores/omxplayer/OMXPlayer.cpp | 209 +++++++++++++++++++------------------
|
||||||
|
xbmc/cores/omxplayer/OMXPlayer.h | 2 +
|
||||||
|
2 files changed, 110 insertions(+), 101 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
index 6c13e35..12122e5 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||||
|
@@ -474,6 +474,8 @@ void COMXSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer)
|
||||||
|
m_stepped = false;
|
||||||
|
m_video_fifo = 0;
|
||||||
|
m_audio_fifo = 0;
|
||||||
|
+ m_last_check_time = 0.0;
|
||||||
|
+ m_stamp = 0.0;
|
||||||
|
|
||||||
|
memset(&m_SpeedState, 0, sizeof(m_SpeedState));
|
||||||
|
|
||||||
|
@@ -1114,117 +1116,121 @@ void COMXPlayer::Process()
|
||||||
|
|
||||||
|
while (!m_bAbortRequest)
|
||||||
|
{
|
||||||
|
- const bool m_Pause = m_playSpeed == DVD_PLAYSPEED_PAUSE;
|
||||||
|
- const bool not_accepts_data = (!m_omxPlayerAudio.AcceptsData() && m_CurrentAudio.id >= 0) ||
|
||||||
|
- (!m_omxPlayerVideo.AcceptsData() && m_CurrentVideo.id >= 0);
|
||||||
|
- /* when the video/audio fifos are low, we pause clock, when high we resume */
|
||||||
|
- double stamp = m_av_clock.OMXMediaTime();
|
||||||
|
- double audio_pts = floor(m_omxPlayerAudio.GetCurrentPts());
|
||||||
|
- double video_pts = floor(m_omxPlayerVideo.GetCurrentPts());
|
||||||
|
-
|
||||||
|
- float audio_fifo = audio_pts / DVD_TIME_BASE - stamp * 1e-6;
|
||||||
|
- float video_fifo = video_pts / DVD_TIME_BASE - stamp * 1e-6;
|
||||||
|
- float threshold = 0.1f;
|
||||||
|
- bool audio_fifo_low = false, video_fifo_low = false, audio_fifo_high = false, video_fifo_high = false;
|
||||||
|
-
|
||||||
|
- // if deinterlace setting has changed, we should close and open video
|
||||||
|
- if (current_deinterlace != CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode)
|
||||||
|
+ double now = m_clock.GetAbsoluteClock();
|
||||||
|
+ if (m_last_check_time == 0.0 || m_last_check_time + DVD_MSEC_TO_TIME(20) <= now)
|
||||||
|
{
|
||||||
|
- int iStream = m_CurrentVideo.id, source = m_CurrentVideo.source;
|
||||||
|
- CloseVideoStream(false);
|
||||||
|
- OpenVideoStream(iStream, source);
|
||||||
|
- if (m_State.canseek)
|
||||||
|
- m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
|
||||||
|
- current_deinterlace = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
|
||||||
|
- }
|
||||||
|
+ m_last_check_time = now;
|
||||||
|
+ m_stamp = m_av_clock.OMXMediaTime();
|
||||||
|
+ const bool m_Pause = m_playSpeed == DVD_PLAYSPEED_PAUSE;
|
||||||
|
+ const bool not_accepts_data = (!m_omxPlayerAudio.AcceptsData() && m_CurrentAudio.id >= 0) ||
|
||||||
|
+ (!m_omxPlayerVideo.AcceptsData() && m_CurrentVideo.id >= 0);
|
||||||
|
+ /* when the video/audio fifos are low, we pause clock, when high we resume */
|
||||||
|
+ double audio_pts = floor(m_omxPlayerAudio.GetCurrentPts());
|
||||||
|
+ double video_pts = floor(m_omxPlayerVideo.GetCurrentPts());
|
||||||
|
+
|
||||||
|
+ float audio_fifo = audio_pts / DVD_TIME_BASE - m_stamp * 1e-6;
|
||||||
|
+ float video_fifo = video_pts / DVD_TIME_BASE - m_stamp * 1e-6;
|
||||||
|
+ float threshold = 0.1f;
|
||||||
|
+ bool audio_fifo_low = false, video_fifo_low = false, audio_fifo_high = false, video_fifo_high = false;
|
||||||
|
+
|
||||||
|
+ // if deinterlace setting has changed, we should close and open video
|
||||||
|
+ if (current_deinterlace != CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode)
|
||||||
|
+ {
|
||||||
|
+ int iStream = m_CurrentVideo.id, source = m_CurrentVideo.source;
|
||||||
|
+ CloseVideoStream(false);
|
||||||
|
+ OpenVideoStream(iStream, source);
|
||||||
|
+ if (m_State.canseek)
|
||||||
|
+ m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true, true, true));
|
||||||
|
+ current_deinterlace = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- m_video_fifo = (int)(100.0*(m_omxPlayerVideo.GetDecoderBufferSize()-m_omxPlayerVideo.GetDecoderFreeSpace())/m_omxPlayerVideo.GetDecoderBufferSize());
|
||||||
|
- m_audio_fifo = (int)(100.0*audio_fifo/m_omxPlayerAudio.GetCacheTotal());
|
||||||
|
+ m_video_fifo = (int)(100.0*(m_omxPlayerVideo.GetDecoderBufferSize()-m_omxPlayerVideo.GetDecoderFreeSpace())/m_omxPlayerVideo.GetDecoderBufferSize());
|
||||||
|
+ m_audio_fifo = (int)(100.0*audio_fifo/m_omxPlayerAudio.GetCacheTotal());
|
||||||
|
|
||||||
|
- #ifdef _DEBUG
|
||||||
|
- static unsigned count;
|
||||||
|
- if ((count++ & 15) == 0)
|
||||||
|
- {
|
||||||
|
- char response[80];
|
||||||
|
- if (m_omxPlayerVideo.GetDecoderBufferSize() && m_omxPlayerAudio.GetCacheTotal())
|
||||||
|
- vc_gencmd(response, sizeof response, "render_bar 4 video_fifo %d %d %d %d",
|
||||||
|
- m_video_fifo,
|
||||||
|
- (int)(100.0*video_fifo/m_omxPlayerAudio.GetCacheTotal()),
|
||||||
|
- 0, 100);
|
||||||
|
- if (m_omxPlayerAudio.GetCacheTotal())
|
||||||
|
- vc_gencmd(response, sizeof response, "render_bar 5 audio_fifo %d %d %d %d",
|
||||||
|
- m_audio_fifo,
|
||||||
|
- (int)(100.0*m_omxPlayerAudio.GetDelay()/m_omxPlayerAudio.GetCacheTotal()),
|
||||||
|
- 0, 100);
|
||||||
|
- vc_gencmd(response, sizeof response, "render_bar 6 video_queue %d %d %d %d",
|
||||||
|
- m_omxPlayerVideo.GetLevel(), 0, 0, 100);
|
||||||
|
- vc_gencmd(response, sizeof response, "render_bar 7 audio_queue %d %d %d %d",
|
||||||
|
- m_omxPlayerAudio.GetLevel(), 0, 0, 100);
|
||||||
|
- }
|
||||||
|
- #endif
|
||||||
|
- if (audio_pts != DVD_NOPTS_VALUE)
|
||||||
|
- {
|
||||||
|
- audio_fifo_low = m_HasAudio && audio_fifo < threshold;
|
||||||
|
- audio_fifo_high = audio_pts != DVD_NOPTS_VALUE && audio_fifo >= m_threshold;
|
||||||
|
- }
|
||||||
|
- if (video_pts != DVD_NOPTS_VALUE)
|
||||||
|
- {
|
||||||
|
- video_fifo_low = m_HasVideo && video_fifo < threshold;
|
||||||
|
- video_fifo_high = video_pts != DVD_NOPTS_VALUE && video_fifo >= m_threshold;
|
||||||
|
- }
|
||||||
|
- if (!m_HasAudio && m_HasVideo)
|
||||||
|
- audio_fifo_high = true;
|
||||||
|
- if (!m_HasVideo && m_HasAudio)
|
||||||
|
- video_fifo_high = true;
|
||||||
|
-
|
||||||
|
- #ifdef _DEBUG
|
||||||
|
- CLog::Log(LOGDEBUG, "%s - M:%.6f-%.6f (A:%.6f V:%.6f) PEF:%d%d%d S:%.2f A:%.2f V:%.2f/T:%.2f (A:%d%d V:%d%d) A:%d%% V:%d%% (%.2f,%.2f)", __FUNCTION__,
|
||||||
|
- stamp*1e-6, m_av_clock.OMXClockAdjustment()*1e-6, audio_pts*1e-6, video_pts*1e-6, m_av_clock.OMXIsPaused(), bOmxSentEOFs, not_accepts_data, m_playSpeed * (1.0f/DVD_PLAYSPEED_NORMAL),
|
||||||
|
- audio_pts == DVD_NOPTS_VALUE ? 0.0:audio_fifo, video_pts == DVD_NOPTS_VALUE ? 0.0:video_fifo, m_threshold,
|
||||||
|
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high,
|
||||||
|
- m_omxPlayerAudio.GetLevel(), m_omxPlayerVideo.GetLevel(), m_omxPlayerAudio.GetDelay(), (float)m_omxPlayerAudio.GetCacheTotal());
|
||||||
|
- #endif
|
||||||
|
-
|
||||||
|
- if (TP(m_playSpeed))
|
||||||
|
- {
|
||||||
|
- if (m_CurrentVideo.started)
|
||||||
|
+ #ifdef _DEBUG
|
||||||
|
+ static unsigned count;
|
||||||
|
+ if ((count++ & 7) == 0)
|
||||||
|
{
|
||||||
|
- if (stamp == 0.0)
|
||||||
|
- {
|
||||||
|
- /* trickplay modes progress by stepping */
|
||||||
|
- CLog::Log(LOGDEBUG, "COMXPlayer::Process - Seeking step speed:%.2f last:%.2f v:%.2f", (double)m_playSpeed / DVD_PLAYSPEED_NORMAL, m_SpeedState.lastpts*1e-6, video_pts*1e-6);
|
||||||
|
- m_av_clock.OMXStep();
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
+ char response[80];
|
||||||
|
+ if (m_omxPlayerVideo.GetDecoderBufferSize() && m_omxPlayerAudio.GetCacheTotal())
|
||||||
|
+ vc_gencmd(response, sizeof response, "render_bar 4 video_fifo %d %d %d %d",
|
||||||
|
+ m_video_fifo,
|
||||||
|
+ (int)(100.0*video_fifo/m_omxPlayerAudio.GetCacheTotal()),
|
||||||
|
+ 0, 100);
|
||||||
|
+ if (m_omxPlayerAudio.GetCacheTotal())
|
||||||
|
+ vc_gencmd(response, sizeof response, "render_bar 5 audio_fifo %d %d %d %d",
|
||||||
|
+ m_audio_fifo,
|
||||||
|
+ (int)(100.0*m_omxPlayerAudio.GetDelay()/m_omxPlayerAudio.GetCacheTotal()),
|
||||||
|
+ 0, 100);
|
||||||
|
+ vc_gencmd(response, sizeof response, "render_bar 6 video_queue %d %d %d %d",
|
||||||
|
+ m_omxPlayerVideo.GetLevel(), 0, 0, 100);
|
||||||
|
+ vc_gencmd(response, sizeof response, "render_bar 7 audio_queue %d %d %d %d",
|
||||||
|
+ m_omxPlayerAudio.GetLevel(), 0, 0, 100);
|
||||||
|
+ }
|
||||||
|
+ #endif
|
||||||
|
+ if (audio_pts != DVD_NOPTS_VALUE)
|
||||||
|
+ {
|
||||||
|
+ audio_fifo_low = m_HasAudio && audio_fifo < threshold;
|
||||||
|
+ audio_fifo_high = audio_pts != DVD_NOPTS_VALUE && audio_fifo >= m_threshold;
|
||||||
|
+ }
|
||||||
|
+ if (video_pts != DVD_NOPTS_VALUE)
|
||||||
|
+ {
|
||||||
|
+ video_fifo_low = m_HasVideo && video_fifo < threshold;
|
||||||
|
+ video_fifo_high = video_pts != DVD_NOPTS_VALUE && video_fifo >= m_threshold;
|
||||||
|
+ }
|
||||||
|
+ if (!m_HasAudio && m_HasVideo)
|
||||||
|
+ audio_fifo_high = true;
|
||||||
|
+ if (!m_HasVideo && m_HasAudio)
|
||||||
|
+ video_fifo_high = true;
|
||||||
|
+
|
||||||
|
+ #ifdef _DEBUG
|
||||||
|
+ CLog::Log(LOGDEBUG, "%s - M:%.6f-%.6f (A:%.6f V:%.6f) PEF:%d%d%d S:%.2f A:%.2f V:%.2f/T:%.2f (A:%d%d V:%d%d) A:%d%% V:%d%% (%.2f,%.2f)", __FUNCTION__,
|
||||||
|
+ m_stamp*1e-6, m_av_clock.OMXClockAdjustment()*1e-6, audio_pts*1e-6, video_pts*1e-6, m_av_clock.OMXIsPaused(), bOmxSentEOFs, not_accepts_data, m_playSpeed * (1.0f/DVD_PLAYSPEED_NORMAL),
|
||||||
|
+ audio_pts == DVD_NOPTS_VALUE ? 0.0:audio_fifo, video_pts == DVD_NOPTS_VALUE ? 0.0:video_fifo, m_threshold,
|
||||||
|
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high,
|
||||||
|
+ m_omxPlayerAudio.GetLevel(), m_omxPlayerVideo.GetLevel(), m_omxPlayerAudio.GetDelay(), (float)m_omxPlayerAudio.GetCacheTotal());
|
||||||
|
+ #endif
|
||||||
|
+
|
||||||
|
+ if (TP(m_playSpeed))
|
||||||
|
+ {
|
||||||
|
+ if (m_CurrentVideo.started)
|
||||||
|
{
|
||||||
|
- m_av_clock.OMXMediaTime(0.0);
|
||||||
|
- m_stepped = true;
|
||||||
|
+ if (m_stamp == 0.0 && (!m_stepped || m_playSpeed > 0))
|
||||||
|
+ {
|
||||||
|
+ /* trickplay modes progress by stepping */
|
||||||
|
+ CLog::Log(LOGDEBUG, "COMXPlayer::Process - Seeking step speed:%.2f last:%.2f v:%.2f", (double)m_playSpeed / DVD_PLAYSPEED_NORMAL, m_SpeedState.lastpts*1e-6, video_pts*1e-6);
|
||||||
|
+ m_av_clock.OMXStep();
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ m_av_clock.OMXMediaTime(0.0);
|
||||||
|
+ m_last_check_time = 0.0;
|
||||||
|
+ m_stepped = true;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
- else if(!m_Pause && (bOmxSentEOFs || not_accepts_data || (audio_fifo_high && video_fifo_high)))
|
||||||
|
- {
|
||||||
|
- if (m_av_clock.OMXIsPaused())
|
||||||
|
+ else if(!m_Pause && (bOmxSentEOFs || not_accepts_data || (audio_fifo_high && video_fifo_high)))
|
||||||
|
{
|
||||||
|
- CLog::Log(LOGDEBUG, "Resume %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
|
||||||
|
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
|
||||||
|
- m_av_clock.OMXStateExecute();
|
||||||
|
- m_av_clock.OMXResume();
|
||||||
|
+ if (m_av_clock.OMXIsPaused())
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGDEBUG, "Resume %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
|
||||||
|
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
|
||||||
|
+ m_av_clock.OMXStateExecute();
|
||||||
|
+ m_av_clock.OMXResume();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
- else if (m_Pause || audio_fifo_low || video_fifo_low)
|
||||||
|
- {
|
||||||
|
- if (!m_av_clock.OMXIsPaused() && !TPA(m_playSpeed))
|
||||||
|
+ else if (m_Pause || audio_fifo_low || video_fifo_low)
|
||||||
|
{
|
||||||
|
- if (!m_Pause)
|
||||||
|
- m_threshold = std::min(2.0f*m_threshold, 16.0f);
|
||||||
|
- CLog::Log(LOGDEBUG, "Pause %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
|
||||||
|
- audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
|
||||||
|
- m_av_clock.OMXPause();
|
||||||
|
+ if (!m_av_clock.OMXIsPaused() && !TPA(m_playSpeed))
|
||||||
|
+ {
|
||||||
|
+ if (!m_Pause)
|
||||||
|
+ m_threshold = std::min(2.0f*m_threshold, 16.0f);
|
||||||
|
+ CLog::Log(LOGDEBUG, "Pause %.2f,%.2f (A:%d%d V:%d%d) EOF:%d FULL:%d T:%.2f\n", audio_fifo, video_fifo,
|
||||||
|
+ audio_fifo_low, audio_fifo_high, video_fifo_low, video_fifo_high, bOmxSentEOFs, not_accepts_data, m_threshold);
|
||||||
|
+ m_av_clock.OMXPause();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- // handle messages send to this thread, like seek or demuxer reset requests
|
||||||
|
HandleMessages();
|
||||||
|
|
||||||
|
if(m_bAbortRequest)
|
||||||
|
@@ -2294,6 +2300,7 @@ void COMXPlayer::HandleMessages()
|
||||||
|
FlushBuffers(!msg.GetFlush(), start, msg.GetAccurate());
|
||||||
|
// mark mediatime as invalid
|
||||||
|
m_av_clock.OMXMediaTime(0.0);
|
||||||
|
+ m_last_check_time = 0.0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CLog::Log(LOGWARNING, "error while seeking");
|
||||||
|
@@ -3044,7 +3051,7 @@ int64_t COMXPlayer::GetTime()
|
||||||
|
if(offset > limit) offset = limit;
|
||||||
|
if(offset < -limit) offset = -limit;
|
||||||
|
}
|
||||||
|
- //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)m_State.time, (double)m_State.timestamp, (int)DVD_TIME_TO_MSEC(m_State.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_av_clock.OMXMediaTime()), (int)m_playSpeed, (int)m_caching, llrint(m_State.time + DVD_TIME_TO_MSEC(offset)));}
|
||||||
|
+ //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)m_State.time, (double)m_State.timestamp, (int)DVD_TIME_TO_MSEC(m_State.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_stamp), (int)m_playSpeed, (int)m_caching, llrint(m_State.time + DVD_TIME_TO_MSEC(offset)));}
|
||||||
|
return llrint(m_State.time + DVD_TIME_TO_MSEC(offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4300,7 +4307,7 @@ void COMXPlayer::UpdatePlayState(double timeout)
|
||||||
|
state.cache_bytes = 0;
|
||||||
|
|
||||||
|
state.timestamp = m_clock.GetAbsoluteClock();
|
||||||
|
- //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)state.time, (double)state.timestamp, (int)DVD_TIME_TO_MSEC(state.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_av_clock.OMXMediaTime()), (int)m_playSpeed, (int)m_caching, llrint(state.time + DVD_TIME_TO_MSEC(offset)));}
|
||||||
|
+ //{CLog::Log(LOGINFO, "%s: time:%.2f stamp:%.2f dts:%d m:%d (p:%d,c:%d) =%llu", __func__, (double)state.time, (double)state.timestamp, (int)DVD_TIME_TO_MSEC(state.dts + m_offset_pts), (int)DVD_TIME_TO_MSEC(m_stamp), (int)m_playSpeed, (int)m_caching, llrint(state.time + DVD_TIME_TO_MSEC(offset)));}
|
||||||
|
|
||||||
|
CSingleLock lock(m_StateSection);
|
||||||
|
m_StateInput = state;
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h
|
||||||
|
index 6f0c148..f0e5216 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayer.h
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayer.h
|
||||||
|
@@ -378,6 +378,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||||
|
bool m_stepped;
|
||||||
|
int m_video_fifo;
|
||||||
|
int m_audio_fifo;
|
||||||
|
+ double m_last_check_time; // we periodically check for gpu underrun
|
||||||
|
+ double m_stamp; // last media stamp
|
||||||
|
|
||||||
|
CDVDOverlayContainer m_overlayContainer;
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.4
|
||||||
|
|
@ -0,0 +1,256 @@
|
|||||||
|
From 9d6e3524ec14401961f64376f01eaca596ae39da Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Wed, 28 Aug 2013 23:24:51 +0100
|
||||||
|
Subject: [PATCH] [rbp/omxplayer] Avoid audio codec when in passthrough modes
|
||||||
|
|
||||||
|
There is no need to open the ffmpeg audio codec when in passthrough mode.
|
||||||
|
Also there is no need to close/open the OMXAudio component when parameters (like number of channels) change in passthough.
|
||||||
|
This avoids an unpleasant stutter
|
||||||
|
---
|
||||||
|
xbmc/cores/omxplayer/OMXPlayerAudio.cpp | 137 ++++++++++++--------------------
|
||||||
|
xbmc/cores/omxplayer/OMXPlayerAudio.h | 1 -
|
||||||
|
2 files changed, 53 insertions(+), 85 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
|
||||||
|
index 4121300..ec60dce 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
|
||||||
|
@@ -104,22 +104,11 @@ bool OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints)
|
||||||
|
if(!m_DllBcmHost.Load())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- m_bad_state = false;
|
||||||
|
-
|
||||||
|
- COMXAudioCodecOMX *codec = new COMXAudioCodecOMX();
|
||||||
|
-
|
||||||
|
- if(!codec || !codec->Open(hints))
|
||||||
|
- {
|
||||||
|
- CLog::Log(LOGERROR, "Unsupported audio codec");
|
||||||
|
- delete codec; codec = NULL;
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if(m_messageQueue.IsInited())
|
||||||
|
- m_messageQueue.Put(new COMXMsgAudioCodecChange(hints, codec), 0);
|
||||||
|
+ m_messageQueue.Put(new COMXMsgAudioCodecChange(hints, NULL), 0);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- OpenStream(hints, codec);
|
||||||
|
+ OpenStream(hints, NULL);
|
||||||
|
m_messageQueue.Init();
|
||||||
|
CLog::Log(LOGNOTICE, "Creating audio thread");
|
||||||
|
Create();
|
||||||
|
@@ -128,30 +117,56 @@ bool OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints, COMXAudioCodecOMX *codec)
|
||||||
|
+void OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints, COMXAudioCodecOMX *dummy)
|
||||||
|
{
|
||||||
|
- SAFE_DELETE(m_pAudioCodec);
|
||||||
|
+ bool codec_change = false;
|
||||||
|
+
|
||||||
|
+ m_bad_state = false;
|
||||||
|
+ m_use_passthrough = (CSettings::Get().GetInt("audiooutput.mode") == AUDIO_HDMI &&
|
||||||
|
+ !CSettings::Get().GetBool("audiooutput.dualaudio")) ? true : false ;
|
||||||
|
+ m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
|
||||||
|
+ m_format.m_dataFormat = GetDataFormat(hints);
|
||||||
|
+
|
||||||
|
+ if (m_hints.codec != hints.codec || m_hints.samplerate != hints.samplerate || !m_passthrough )
|
||||||
|
+ codec_change = true;
|
||||||
|
+
|
||||||
|
+ if (codec_change)
|
||||||
|
+ {
|
||||||
|
+ delete m_pAudioCodec;
|
||||||
|
+ m_pAudioCodec = NULL;
|
||||||
|
+
|
||||||
|
+ m_format.m_sampleRate = 0;
|
||||||
|
+ m_format.m_channelLayout = 0;
|
||||||
|
+ m_speed = DVD_PLAYSPEED_NORMAL;
|
||||||
|
+ m_audioClock = DVD_NOPTS_VALUE;
|
||||||
|
+ m_hw_decode = false;
|
||||||
|
+ m_silence = false;
|
||||||
|
+ m_started = false;
|
||||||
|
+ m_flush = false;
|
||||||
|
+ m_nChannels = 0;
|
||||||
|
+ m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!m_passthrough && !m_pAudioCodec)
|
||||||
|
+ {
|
||||||
|
+ m_pAudioCodec = new COMXAudioCodecOMX();
|
||||||
|
+
|
||||||
|
+ if(!m_pAudioCodec || !m_pAudioCodec->Open(hints))
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGERROR, "Unsupported audio codec");
|
||||||
|
+ delete m_pAudioCodec; m_pAudioCodec = NULL;
|
||||||
|
+ m_bad_state = true;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
m_hints = hints;
|
||||||
|
- m_pAudioCodec = codec;
|
||||||
|
|
||||||
|
if(m_hints.bitspersample == 0)
|
||||||
|
m_hints.bitspersample = 16;
|
||||||
|
|
||||||
|
- m_speed = DVD_PLAYSPEED_NORMAL;
|
||||||
|
- m_audioClock = DVD_NOPTS_VALUE;
|
||||||
|
- m_hw_decode = false;
|
||||||
|
- m_silence = false;
|
||||||
|
- m_started = false;
|
||||||
|
- m_flush = false;
|
||||||
|
- m_nChannels = 0;
|
||||||
|
- m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
|
||||||
|
- m_use_passthrough = (CSettings::Get().GetInt("audiooutput.mode") == AUDIO_HDMI &&
|
||||||
|
- !CSettings::Get().GetBool("audiooutput.dualaudio")) ? true : false ;
|
||||||
|
- m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
|
||||||
|
- m_format.m_dataFormat = GetDataFormat(m_hints);
|
||||||
|
- m_format.m_sampleRate = 0;
|
||||||
|
- m_format.m_channelLayout = 0;
|
||||||
|
+ if (codec_change)
|
||||||
|
+ m_DecoderOpen = OpenDecoder();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OMXPlayerAudio::CloseStream(bool bWaitForBuffers)
|
||||||
|
@@ -190,38 +205,9 @@ void OMXPlayerAudio::OnExit()
|
||||||
|
CLog::Log(LOGNOTICE, "thread end: OMXPlayerAudio::OnExit()");
|
||||||
|
}
|
||||||
|
|
||||||
|
-bool OMXPlayerAudio::CodecChange()
|
||||||
|
-{
|
||||||
|
- unsigned int old_bitrate = m_hints.bitrate;
|
||||||
|
- unsigned int new_bitrate = m_hints_current.bitrate;
|
||||||
|
-
|
||||||
|
- if(m_pAudioCodec)
|
||||||
|
- {
|
||||||
|
- m_hints.channels = m_pAudioCodec->GetChannels();
|
||||||
|
- m_hints.samplerate = m_pAudioCodec->GetSampleRate();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* only check bitrate changes on AV_CODEC_ID_DTS, AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3 */
|
||||||
|
- if(m_hints.codec != AV_CODEC_ID_DTS && m_hints.codec != AV_CODEC_ID_AC3 && m_hints.codec != AV_CODEC_ID_EAC3)
|
||||||
|
- new_bitrate = old_bitrate = 0;
|
||||||
|
-
|
||||||
|
- if(m_hints_current.codec != m_hints.codec ||
|
||||||
|
- m_hints_current.channels != m_hints.channels ||
|
||||||
|
- m_hints_current.samplerate != m_hints.samplerate ||
|
||||||
|
- m_hints_current.bitspersample != m_hints.bitspersample ||
|
||||||
|
- old_bitrate != new_bitrate ||
|
||||||
|
- !m_DecoderOpen)
|
||||||
|
- {
|
||||||
|
- m_hints_current = m_hints;
|
||||||
|
- return true;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return false;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
|
||||||
|
{
|
||||||
|
- if(!pkt || m_bad_state || !m_pAudioCodec)
|
||||||
|
+ if(!pkt || m_bad_state)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(pkt->dts != DVD_NOPTS_VALUE)
|
||||||
|
@@ -230,7 +216,7 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
|
||||||
|
const uint8_t *data_dec = pkt->pData;
|
||||||
|
int data_len = pkt->iSize;
|
||||||
|
|
||||||
|
- if(!OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
|
||||||
|
+ if(m_pAudioCodec && !OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
|
||||||
|
{
|
||||||
|
while(!m_bStop && data_len > 0)
|
||||||
|
{
|
||||||
|
@@ -254,13 +240,6 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
|
||||||
|
|
||||||
|
m_audioStats.AddSampleBytes(decoded_size);
|
||||||
|
|
||||||
|
- if(CodecChange())
|
||||||
|
- {
|
||||||
|
- m_DecoderOpen = OpenDecoder();
|
||||||
|
- if(!m_DecoderOpen)
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
while(!m_bStop)
|
||||||
|
{
|
||||||
|
// discard if flushing as clocks may be stopped and we'll never submit it
|
||||||
|
@@ -292,15 +271,8 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- else if(!bDropPacket)
|
||||||
|
+ else if(OMX_IS_RAW(m_format.m_dataFormat) && !bDropPacket)
|
||||||
|
{
|
||||||
|
- if(CodecChange())
|
||||||
|
- {
|
||||||
|
- m_DecoderOpen = OpenDecoder();
|
||||||
|
- if(!m_DecoderOpen)
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
while(!m_bStop)
|
||||||
|
{
|
||||||
|
if(m_flush)
|
||||||
|
@@ -473,6 +445,7 @@ void OMXPlayerAudio::Process()
|
||||||
|
else if (pMsg->IsType(CDVDMsg::GENERAL_STREAMCHANGE))
|
||||||
|
{
|
||||||
|
COMXMsgAudioCodecChange* msg(static_cast<COMXMsgAudioCodecChange*>(pMsg));
|
||||||
|
+ CLog::Log(LOGDEBUG, "COMXPlayerAudio - CDVDMsg::GENERAL_STREAMCHANGE");
|
||||||
|
OpenStream(msg->m_hints, msg->m_codec);
|
||||||
|
msg->m_codec = NULL;
|
||||||
|
}
|
||||||
|
@@ -520,7 +493,6 @@ AEDataFormat OMXPlayerAudio::GetDataFormat(CDVDStreamInfo hints)
|
||||||
|
m_hw_decode = false;
|
||||||
|
|
||||||
|
/* check our audio capabilties */
|
||||||
|
-
|
||||||
|
/* pathrought is overriding hw decode*/
|
||||||
|
if(AUDIO_IS_BITSTREAM(CSettings::Get().GetInt("audiooutput.mode")) && m_use_passthrough)
|
||||||
|
{
|
||||||
|
@@ -565,10 +537,6 @@ AEDataFormat OMXPlayerAudio::GetDataFormat(CDVDStreamInfo hints)
|
||||||
|
|
||||||
|
bool OMXPlayerAudio::OpenDecoder()
|
||||||
|
{
|
||||||
|
- m_nChannels = m_hints.channels;
|
||||||
|
- m_passthrough = false;
|
||||||
|
- m_hw_decode = false;
|
||||||
|
-
|
||||||
|
if(m_DecoderOpen)
|
||||||
|
{
|
||||||
|
WaitCompletion();
|
||||||
|
@@ -576,13 +544,14 @@ bool OMXPlayerAudio::OpenDecoder()
|
||||||
|
m_DecoderOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ m_nChannels = m_hints.channels;
|
||||||
|
+ m_format.m_dataFormat = GetDataFormat(m_hints);
|
||||||
|
+
|
||||||
|
/* setup audi format for audio render */
|
||||||
|
m_format.m_sampleRate = m_hints.samplerate;
|
||||||
|
- /* GetDataFormat is setting up evrything */
|
||||||
|
- m_format.m_dataFormat = GetDataFormat(m_hints);
|
||||||
|
|
||||||
|
m_format.m_channelLayout.Reset();
|
||||||
|
- if (m_pAudioCodec && !m_passthrough)
|
||||||
|
+ if (m_pAudioCodec)
|
||||||
|
m_format.m_channelLayout = m_pAudioCodec->GetChannelMap();
|
||||||
|
else if (m_passthrough)
|
||||||
|
{
|
||||||
|
diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.h b/xbmc/cores/omxplayer/OMXPlayerAudio.h
|
||||||
|
index 19f50f7..394f309 100644
|
||||||
|
--- a/xbmc/cores/omxplayer/OMXPlayerAudio.h
|
||||||
|
+++ b/xbmc/cores/omxplayer/OMXPlayerAudio.h
|
||||||
|
@@ -55,7 +55,6 @@ class OMXPlayerAudio : public CThread
|
||||||
|
bool m_use_hw_decode;
|
||||||
|
bool m_hw_decode;
|
||||||
|
AEAudioFormat m_format;
|
||||||
|
- CAEChannelInfo m_channelLayout;
|
||||||
|
COMXAudioCodecOMX *m_pAudioCodec;
|
||||||
|
int m_speed;
|
||||||
|
bool m_silence;
|
||||||
|
--
|
||||||
|
1.8.4
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1 +0,0 @@
|
|||||||
KERNEL=="fuse", MODE="0666",OWNER="root",GROUP="root"
|
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="bcm2835-bootloader"
|
PKG_NAME="bcm2835-bootloader"
|
||||||
PKG_VERSION="d4f5315"
|
PKG_VERSION="f6bb324"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="arm"
|
PKG_ARCH="arm"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="xf86-video-intel"
|
PKG_NAME="xf86-video-intel"
|
||||||
PKG_VERSION="2.99.901"
|
PKG_VERSION="2.99.902"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="i386 x86_64"
|
PKG_ARCH="i386 x86_64"
|
||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
@ -37,11 +37,11 @@ PKG_AUTORECONF="yes"
|
|||||||
|
|
||||||
PKG_CONFIGURE_OPTS_TARGET="--enable-udev \
|
PKG_CONFIGURE_OPTS_TARGET="--enable-udev \
|
||||||
--enable-dri \
|
--enable-dri \
|
||||||
--enable-kms-only \
|
--enable-kms --enable-kms-only \
|
||||||
--disable-xvmc \
|
--disable-ums --disable-ums-only \
|
||||||
--disable-ums-only \
|
|
||||||
--enable-sna \
|
--enable-sna \
|
||||||
--enable-uxa \
|
--enable-uxa \
|
||||||
|
--disable-xvmc \
|
||||||
--disable-glamor \
|
--disable-glamor \
|
||||||
--disable-xaa \
|
--disable-xaa \
|
||||||
--disable-dga \
|
--disable-dga \
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
diff -Naur xf86-video-intel-2.99.902/configure.ac xf86-video-intel-2.99.902.patch/configure.ac
|
||||||
|
--- xf86-video-intel-2.99.902/configure.ac 2013-09-07 09:47:33.000000000 +0200
|
||||||
|
+++ xf86-video-intel-2.99.902.patch/configure.ac 2013-09-07 22:55:59.418980080 +0200
|
||||||
|
@@ -394,9 +394,6 @@
|
||||||
|
AC_MSG_CHECKING([whether to include DRI2 support])
|
||||||
|
AM_CONDITIONAL(DRI2, test "x$DRI2" = "xyes")
|
||||||
|
AC_MSG_RESULT([$DRI2])
|
||||||
|
-if test "x$enable_dri" = "xyes" -a "x$KMS" = "xyes"; then
|
||||||
|
- AC_MSG_ERROR([DRI2 requested but prerequisites not found])
|
||||||
|
-fi
|
||||||
|
if test "x$DRI2" != "xno"; then
|
||||||
|
AC_DEFINE(HAVE_DRI2,1,[Enable DRI2 driver support])
|
||||||
|
dri_msg="$dri_msg DRI2"
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="util-macros"
|
PKG_NAME="util-macros"
|
||||||
PKG_VERSION="1.17"
|
PKG_VERSION="1.17.1"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user