From d03e905f54857600b3c36af9b221c34ccb11074f Mon Sep 17 00:00:00 2001 From: root Date: Tue, 25 Oct 2011 23:14:56 +0000 Subject: Tue Oct 25 23:14:56 UTC 2011 --- community-testing/mythtv/PKGBUILD | 82 +++ community-testing/mythtv/build.patch | 13 + community-testing/mythtv/mythbackend.conf | 92 ++++ community-testing/mythtv/mythbackend.rc | 82 +++ community-testing/mythtv/mythtv-v4l2-fix.patch | 724 +++++++++++++++++++++++++ community-testing/mythtv/mythtv.install | 11 + 6 files changed, 1004 insertions(+) create mode 100644 community-testing/mythtv/PKGBUILD create mode 100644 community-testing/mythtv/build.patch create mode 100644 community-testing/mythtv/mythbackend.conf create mode 100644 community-testing/mythtv/mythbackend.rc create mode 100644 community-testing/mythtv/mythtv-v4l2-fix.patch create mode 100644 community-testing/mythtv/mythtv.install (limited to 'community-testing/mythtv') diff --git a/community-testing/mythtv/PKGBUILD b/community-testing/mythtv/PKGBUILD new file mode 100644 index 000000000..3808740f3 --- /dev/null +++ b/community-testing/mythtv/PKGBUILD @@ -0,0 +1,82 @@ +# $Id: PKGBUILD 57241 2011-10-24 20:33:41Z andrea $ +# Maintainer: Jonathan Conder +# Contributor: Giovanni Scafora +# Contributor: Juergen Hoetzel +# Contributor: +# Contributor: dorphell + +pkgname=mythtv +pkgver=0.24.1 +pkgrel=3 +epoch=1 +pkgdesc="A Homebrew PVR project" +arch=('i686' 'x86_64') +url="http://www.mythtv.org/" +license=('GPL') +depends=('lame' 'libavc1394' 'libiec61883' 'libpulse' 'libvdpau' 'libxinerama' + 'libxvmc' 'lirc-utils' 'mesa' 'mysql-clients' 'mysql-python' + 'perl-dbd-mysql' 'perl-libwww' 'perl-net-upnp' 'python-lxml' 'qt' + 'qtwebkit' 'wget') +makedepends=('yasm') +optdepends=('xmltv: to download tv listings') +backup=('etc/conf.d/mythbackend') +install='mythtv.install' +source=("ftp://ftp.osuosl.org/pub/$pkgname/$pkgname-$pkgver.tar.bz2" + 'mythbackend.rc' + 'mythbackend.conf' + 'mythtv-v4l2-fix.patch' + 'build.patch') +md5sums=('6870c679619ec58456e76839745411d8' + 'feadcc9ad064d93d6dceab1efc0bd9ed' + 'bb8e4033d82428d827570fae9ba15e6a' + 'ba5c91df80f0d3f7563a873e71a3725c' + '3188962917e98c4e07818dccd64bc423') + +build() { + cd "$srcdir/$pkgname-$pkgver" + find 'bindings/python' 'contrib' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@' + + patch -Np2 -i ${srcdir}/mythtv-v4l2-fix.patch + patch -Np1 -i ${srcdir}/build.patch + + ARCH="${CARCH/_/-}" + ./configure --prefix=/usr --cpu="$ARCH" \ + --enable-mmx \ + --enable-audio-oss \ + --enable-audio-alsa \ + --disable-audio-jack \ + --enable-audio-pulse \ + --disable-altivec \ + --disable-distcc \ + --disable-ccache \ + --enable-vdpau \ + --enable-dvb \ + --dvb-path=/usr/include \ + --enable-lirc \ + --enable-joystick-menu \ + --enable-v4l \ + --enable-ivtv \ + --enable-xvmc \ + --enable-xvmcw \ + --enable-xvmc-vld \ + --enable-firewire \ + --enable-opengl-vsync \ + --enable-xrandr \ + --enable-xv \ + --enable-x11 \ + --with-bindings=perl,python \ + --python=python2 + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make INSTALL_ROOT="$pkgdir" install + + install -D -m755 "$srcdir/mythbackend.rc" "$pkgdir/etc/rc.d/mythbackend" + install -D -m644 "$srcdir/mythbackend.conf" "$pkgdir/etc/conf.d/mythbackend" + install -D -m644 'database/mc.sql' "$pkgdir/usr/share/mythtv/mc.sql" + + mkdir -p "$pkgdir/usr/share/mythtv" + cp -R 'contrib' "$pkgdir/usr/share/mythtv" +} diff --git a/community-testing/mythtv/build.patch b/community-testing/mythtv/build.patch new file mode 100644 index 000000000..35dccd618 --- /dev/null +++ b/community-testing/mythtv/build.patch @@ -0,0 +1,13 @@ +diff -Nru a/libs/libmythui/mythrender_opengl.cpp b/libs/libmythui/mythrender_opengl.cpp +--- a/libs/libmythui/mythrender_opengl.cpp 2011-05-16 08:57:52.000000000 +1200 ++++ b/libs/libmythui/mythrender_opengl.cpp 2011-10-23 15:05:33.178392264 +1300 +@@ -2,6 +2,8 @@ + #include "mythrender_opengl.h" + #include "mythxdisplay.h" + ++#include ++ + #define LOC QString("OpenGL: ") + #define LOC_ERR QString("OpenGL Error: ") + +Binary files a/libs/libmythui/.mythrender_opengl.cpp.swp and b/libs/libmythui/.mythrender_opengl.cpp.swp differ diff --git a/community-testing/mythtv/mythbackend.conf b/community-testing/mythtv/mythbackend.conf new file mode 100644 index 000000000..e004ae5bd --- /dev/null +++ b/community-testing/mythtv/mythbackend.conf @@ -0,0 +1,92 @@ +#!/bin/bash +# +# Rename this file to: +# +# /etc/config.d/mythbackend +# +############################################################################### +# +# Copyright (c) by the MythTV Development Team. +# +# Derived from work by: +# +# Michael Thomson +# Stu Tomlinson +# Axel Thimm +# Adopted for ArchLinux: +# Jürgen Hoetzel +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +############################################################################### +# +# Config variables for the mythbackend startup script, which is usually +# located in /etc/rc.d/mythbackend +# +# When the startup script is executed, it sources this file if it exists, +# otherwise it will fall back on default values. +# +# Leave variables commented out to use default values in init script +# (/etc/rc.d/mythbackend). +# +# To override defaults, uncomment the relevant variable definition and +# edit as required. +# + +# +# User who should start the mythbackend processes +# +# Running mythbackend as non-root requires you to ensure that audio/video +# devices used for recording have suitable user permissions. One way +# to achieve this is to modify existing or create new udev rules which +# assign these devices to a non-root group with rw permissions and add +# your mythbackend user to that group. Be aware that console.perms can +# also affect device permissions and may need additional configuration. +# Running as non-root may also introduce increased process latency. +# +# MBE_USER='root' + +# +# Directory holding the mythbackend binary (empty means autodetect). +# +# MBE_DIR='' + +# +# Name of mythbackend binary. +# +# MBE_PROG='mythbackend' + +# +# Other startup options for mythbackend (see 'mythbackend --help' for a list). +# +# MBE_OPTIONS='' + +# +# Directory holding the mythbackend log file +# +# LOG_DIR='/var/log/mythtv' + +# +# Name of mythbackend log file. +# +# NOTE: If you are running as non-root take care to ensure the mythbackend user +# has permission to write to this log file. +# +# LOG_FILE='mythbackend.log' + +# +# Logging options for mythbackend (see 'mythbackend -v help' for a list) +# +# LOG_OPTS='' diff --git a/community-testing/mythtv/mythbackend.rc b/community-testing/mythtv/mythbackend.rc new file mode 100644 index 000000000..410e8de41 --- /dev/null +++ b/community-testing/mythtv/mythbackend.rc @@ -0,0 +1,82 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +# Default values to use if none are supplied in the config file. + +# Running mythbackend as non-root requires you to ensure that audio/video +# devices used for recording have suitable user permissions. One way +# to achieve this is to modify existing or create new udev rules which +# assign these devices to a non-root group with rw permissions and add +# your mythbackend user to that group. Be aware that console.perms can +# also affect device permissions and may need additional configuration. +# Running as non-root may also introduce increased process latency. +# +# User who should start the mythbackend processes +MBE_USER='root' + +# Startup options for mythbackend +MBE_OPTIONS='' + +# Name of mythbackend log file +LOG_FILE='/var/log/mythbackend.log' + +# Logging options for mythbackend (empty means '-v important,general') +LOG_OPTS='' + +############################################################################### + +CONFIG_FILE=/etc/conf.d/mythbackend +PIDFILE=/var/run/mythbackend.pid + +if [[ -f ${CONFIG_FILE} ]]; then + . ${CONFIG_FILE} +fi + +pid="$(cat ${PIDFILE} 2>/dev/null || pidof mythbackend)"; + +# fix FS#11890 +mbe_user_home="$(getent passwd ${MBE_USER}|cut -d : -f 6)" + +case "$1" in + start) + stat_busy "Starting MythTV Backend" + + # already running ? + if [[ "${pid}" -gt 0 ]] && kill -0 "${pid}"; then + stat_fail + exit 1; + fi + touch ${PIDFILE} ${LOG_FILE} + chown "$MBE_USER" ${PIDFILE} ${LOG_FILE} + if su "$MBE_USER" -c "HOME=${mbe_user_home} mythbackend \ + --daemon \ + --logfile $LOG_FILE $LOG_OPTS \ + --pidfile ${PIDFILE} $MBE_OPTIONS"; + then + add_daemon mythbackend + stat_done + else + stat_fail + fi + ;; + + stop) + stat_busy "Stopping MythTV Backend" + if [[ "${pid}" -gt 0 ]] && kill $pid &>/dev/null; then + rm_daemon mythbackend + stat_done + rm ${PIDFILE} 2>/dev/null + else + stat_fail + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/community-testing/mythtv/mythtv-v4l2-fix.patch b/community-testing/mythtv/mythtv-v4l2-fix.patch new file mode 100644 index 000000000..e26e16615 --- /dev/null +++ b/community-testing/mythtv/mythtv-v4l2-fix.patch @@ -0,0 +1,724 @@ +diff --git a/mythtv/configure b/mythtv/configure +index 1efe803..7bcdf06 100755 +--- a/mythtv/configure ++++ b/mythtv/configure +@@ -109,7 +109,8 @@ Advanced options (experts only): + --disable-iptv disable support for recording RTSP/UDP/RTP streams + --disable-hdhomerun disable support for HDHomeRun boxes + --disable-v4l disable Video4Linux support +- --disable-ivtv disable ivtv support (PVR-x50) req. v4l support ++ --disable-v4l2 disable Video4Linux2 support ++ --disable-ivtv disable ivtv support (PVR-x50) req. v4l2 support + --disable-hdpvr disable HD-PVR support + --disable-dvb disable DVB support + --dvb-path=HDRLOC location of directory containing +@@ -1315,6 +1316,7 @@ MYTHTV_CONFIG_LIST=' + qtwebkit + quartz_video + v4l ++ v4l2 + valgrind + x11 + xrandr +@@ -1706,8 +1708,8 @@ audio_oss_deps_any="soundcard_h sys_soundcard_h" + dvb_deps="backend" + firewire_deps="backend" + iptv_deps="backend" +-ivtv_deps="backend v4l" +-hdpvr_deps="backend v4l" ++ivtv_deps="backend v4l2" ++hdpvr_deps="backend v4l2" + hdhomerun_deps="backend" + mpegtsraw_demuxer_deps="merge_libavformat_mpegts_c" + mythtranscode_deps="backend frontend" +@@ -1715,6 +1717,7 @@ opengl_deps_any="agl_h GL_gl_h darwin windows x11" + opengl_video_deps="opengl" + opengl_vsync_deps="opengl" + v4l_deps="backend linux_videodev_h linux_videodev2_h" ++v4l2_deps="backend linux_videodev2_h" + vdpau_deps="opengl vdpau_vdpau_h vdpau_vdpau_x11_h" + xrandr_deps="x11" + xv_deps="x11" +@@ -1933,6 +1936,7 @@ enable opengl_vsync + enable opengl_video + enable quartz_video + enable v4l ++enable v4l2 + enable x11 + enable xrandr + enable xv +@@ -3062,6 +3066,7 @@ EOF + fi + disable opengl_vsync + disable v4l ++ disable v4l2 + disable x11 + # Workaround compile errors from missing gmtime_r/localtime_r/uint def + CFLAGS=`echo $CFLAGS | sed 's/-D_POSIX_C_SOURCE=200112//'` +@@ -3106,6 +3111,7 @@ EOF + fi + disable symver + disable v4l ++ disable v4l2 + enable windows + disable x11 + ###### Standard ffmpeg configure stuff follows: +@@ -4375,6 +4381,7 @@ enabled stripping || strip="echo skipping strip" + + if enabled backend; then + echo "Video4Linux sup. ${v4l-no}" ++ echo "Video4Linux2 sup. ${v4l2-no}" + echo "ivtv support ${ivtv-no}" + echo "HD-PVR support ${hdpvr-no}" + echo "FireWire support ${firewire-no}" +diff --git a/mythtv/libs/libmythtv/NuppelVideoRecorder.cpp b/mythtv/libs/libmythtv/NuppelVideoRecorder.cpp +index 739634d..39e5956 100644 +--- a/mythtv/libs/libmythtv/NuppelVideoRecorder.cpp ++++ b/mythtv/libs/libmythtv/NuppelVideoRecorder.cpp +@@ -42,9 +42,13 @@ extern "C" { + #include "libswscale/swscale.h" + } + ++#if defined(USING_V4L) || defined(USING_V4L2) + #ifdef USING_V4L + #include ++#endif ++#ifdef USING_V4L2 + #include ++#endif + + #include "go7007_myth.h" + +@@ -55,9 +59,9 @@ extern "C" { + extern "C" { + #include "vbitext/vbi.h" + } +-#else // USING_V4l ++#else // USING_V4L || USING_V4L2 + #define VT_WIDTH 0 +-#endif // USING_V4l ++#endif // USING_V4l || USING_V4L2 + + #define KEYFRAMEDIST 30 + +@@ -1019,7 +1023,7 @@ bool NuppelVideoRecorder::Open(void) + + void NuppelVideoRecorder::ProbeV4L2(void) + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + usingv4l2 = true; + + struct v4l2_capability vcap; +@@ -1049,7 +1053,7 @@ void NuppelVideoRecorder::ProbeV4L2(void) + QString driver = (char *)vcap.driver; + if (driver == "go7007") + go7007 = true; +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + } + + void NuppelVideoRecorder::StartRecording(void) +@@ -2460,7 +2464,7 @@ void NuppelVideoRecorder::doAudioThread(void) + audio_device->Close(); + } + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + struct VBIData + { + NuppelVideoRecorder *nvr; +@@ -2634,9 +2638,9 @@ void NuppelVideoRecorder::FormatTeletextSubtitles(struct VBIData *vbidata) + act_text_buffer = 0; + textbuffer[act]->freeToEncode = 1; + } +-#else // USING_V4L ++#else // USING_V4L || USING_V4L2 + void NuppelVideoRecorder::FormatTeletextSubtitles(struct VBIData *vbidata) {} +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + + void NuppelVideoRecorder::FormatCC(struct cc *cc) + { +@@ -2863,7 +2867,7 @@ void NuppelVideoRecorder::doVbiThread(void) + //VERBOSE(VB_RECORD, LOC + "vbi end"); + } + +-#else // USING_V4L ++#else // USING_V4L + void NuppelVideoRecorder::doVbiThread(void) { } + #endif // USING_V4L + +diff --git a/mythtv/libs/libmythtv/analogsignalmonitor.cpp b/mythtv/libs/libmythtv/analogsignalmonitor.cpp +index 2a4f4c5..fa5823a 100644 +--- a/mythtv/libs/libmythtv/analogsignalmonitor.cpp ++++ b/mythtv/libs/libmythtv/analogsignalmonitor.cpp +@@ -6,7 +6,9 @@ + #include + #include + ++#ifdef USING_V4L + #include ++#endif + + #include "mythverbose.h" + #include "analogsignalmonitor.h" +@@ -151,6 +153,7 @@ void AnalogSignalMonitor::UpdateValues(void) + } + else + { ++#ifdef USING_V4L + struct video_tuner tuner; + bzero(&tuner, sizeof(tuner)); + +@@ -163,6 +166,7 @@ void AnalogSignalMonitor::UpdateValues(void) + { + isLocked = tuner.signal; + } ++#endif + } + + { +diff --git a/mythtv/libs/libmythtv/cardutil.cpp b/mythtv/libs/libmythtv/cardutil.cpp +index 8852682..494f48a 100644 +--- a/mythtv/libs/libmythtv/cardutil.cpp ++++ b/mythtv/libs/libmythtv/cardutil.cpp +@@ -4,7 +4,7 @@ + + #include + +-#if defined(USING_V4L) || defined(USING_DVB) ++#if defined(USING_V4L) || defined(USING_V4L2) || defined(USING_DVB) + #include + #endif + +@@ -28,6 +28,8 @@ + + #ifdef USING_V4L + #include ++#endif ++#ifdef USING_V4L2 + #include + #endif + +@@ -1455,15 +1457,15 @@ uint CardUtil::GetQuickTuning(uint cardid, const QString &input_name) + bool CardUtil::hasV4L2(int videofd) + { + (void) videofd; +-#ifdef USING_V4L ++#ifdef USING_V4L2 + struct v4l2_capability vcap; + bzero(&vcap, sizeof(vcap)); + + return ((ioctl(videofd, VIDIOC_QUERYCAP, &vcap) >= 0) && + (vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE)); +-#else // if !USING_V4L ++#else // if !USING_V4L2 + return false; +-#endif // !USING_V4L ++#endif // !USING_V4L2 + } + + bool CardUtil::GetV4LInfo( +@@ -1475,7 +1477,7 @@ bool CardUtil::GetV4LInfo( + if (videofd < 0) + return false; + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + // First try V4L2 query + struct v4l2_capability capability; + bzero(&capability, sizeof(struct v4l2_capability)); +@@ -1487,11 +1489,13 @@ bool CardUtil::GetV4LInfo( + } + else // Fallback to V4L1 query + { ++#ifdef USING_V4L + struct video_capability capability; + if (ioctl(videofd, VIDIOCGCAP, &capability) >= 0) + card = QString::fromAscii((const char*)capability.name); ++#endif //USING_V4L + } +-#endif // !USING_V4L ++#endif // !USING_V4L || USING_V4L2 + + if (!driver.isEmpty()) + driver.remove( QRegExp("\\[[0-9]\\]$") ); +@@ -1506,9 +1510,9 @@ InputNames CardUtil::ProbeV4LVideoInputs(int videofd, bool &ok) + InputNames list; + ok = false; + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + bool usingv4l2 = hasV4L2(videofd); +- ++#ifdef USING_V4L2 + // V4L v2 query + struct v4l2_input vin; + bzero(&vin, sizeof(vin)); +@@ -1523,8 +1527,10 @@ InputNames CardUtil::ProbeV4LVideoInputs(int videofd, bool &ok) + ok = true; + return list; + } ++#endif + + // V4L v1 query ++#ifdef USING_V4L + struct video_capability vidcap; + bzero(&vidcap, sizeof(vidcap)); + if (ioctl(videofd, VIDIOCGCAP, &vidcap) != 0) +@@ -1552,15 +1558,15 @@ InputNames CardUtil::ProbeV4LVideoInputs(int videofd, bool &ok) + + list[i] = test.name; + } +- ++#endif + // Create an input on single input cards that don't advertise input + if (!list.size()) + list[0] = "Television"; + + ok = true; +-#else // if !USING_V4L ++#else // if !USING_V4L || USING_V4L2 + list[-1] += QObject::tr("ERROR, Compile with V4L support to query inputs"); +-#endif // !USING_V4L ++#endif // !USING_V4L || USING_V4L2 + return list; + } + +diff --git a/mythtv/libs/libmythtv/channelscan/channelscan_sm.cpp b/mythtv/libs/libmythtv/channelscan/channelscan_sm.cpp +index 832d0a8..e35b186 100644 +--- a/mythtv/libs/libmythtv/channelscan/channelscan_sm.cpp ++++ b/mythtv/libs/libmythtv/channelscan/channelscan_sm.cpp +@@ -1394,7 +1394,7 @@ const DVBChannel *ChannelScanSM::GetDVBChannel(void) const + + V4LChannel *ChannelScanSM::GetV4LChannel(void) + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + return dynamic_cast(channel); + #else + return NULL; +diff --git a/mythtv/libs/libmythtv/channelscan/channelscanner.cpp b/mythtv/libs/libmythtv/channelscan/channelscanner.cpp +index 1595d6a..4d2b2cf 100644 +--- a/mythtv/libs/libmythtv/channelscan/channelscanner.cpp ++++ b/mythtv/libs/libmythtv/channelscan/channelscanner.cpp +@@ -342,7 +342,7 @@ void ChannelScanner::PreScanCommon( + channel = new DVBChannel(device); + #endif + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + if (("V4L" == card_type) || ("MPEG" == card_type)) + channel = new V4LChannel(NULL, device); + #endif +diff --git a/mythtv/libs/libmythtv/channelscan/scanwizardconfig.cpp b/mythtv/libs/libmythtv/channelscan/scanwizardconfig.cpp +index 00fd9d3..70e3469 100644 +--- a/mythtv/libs/libmythtv/channelscan/scanwizardconfig.cpp ++++ b/mythtv/libs/libmythtv/channelscan/scanwizardconfig.cpp +@@ -27,14 +27,14 @@ static QString card_types(void) + cardTypes += "'DVB'"; + #endif // USING_DVB + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + if (!cardTypes.isEmpty()) + cardTypes += ","; + cardTypes += "'V4L'"; + # ifdef USING_IVTV + cardTypes += ",'MPEG'"; + # endif // USING_IVTV +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + + #ifdef USING_IPTV + if (!cardTypes.isEmpty()) +diff --git a/mythtv/libs/libmythtv/libmythtv.pro b/mythtv/libs/libmythtv/libmythtv.pro +index 3d26e0a..ea06ee7 100644 +--- a/mythtv/libs/libmythtv/libmythtv.pro ++++ b/mythtv/libs/libmythtv/libmythtv.pro +@@ -119,7 +119,7 @@ cygwin:DEFINES += _WIN32 + using_valgrind:DEFINES += USING_VALGRIND + + # old libvbitext (Caption decoder) +-using_v4l { ++using_v4l || using_v4l2 { + HEADERS += vbitext/cc.h vbitext/dllist.h vbitext/hamm.h vbitext/lang.h + HEADERS += vbitext/vbi.h vbitext/vt.h + SOURCES += vbitext/cc.cpp vbitext/vbi.c vbitext/hamm.c vbitext/lang.c +@@ -471,11 +471,17 @@ using_backend { + SOURCES += channelchangemonitor.cpp + + # Support for Video4Linux devices +- using_v4l { ++ using_v4l || using_v4l2 { + HEADERS += v4lchannel.h analogsignalmonitor.h + SOURCES += v4lchannel.cpp analogsignalmonitor.cpp + +- DEFINES += USING_V4L ++ using_v4l { ++ DEFINES += USING_V4L ++ } ++ ++ using_v4l2 { ++ DEFINES += USING_V4L2 ++ } + } + + # Support for cable boxes that provide Firewire out +diff --git a/mythtv/libs/libmythtv/signalmonitor.cpp b/mythtv/libs/libmythtv/signalmonitor.cpp +index 221efef..c199b3b 100644 +--- a/mythtv/libs/libmythtv/signalmonitor.cpp ++++ b/mythtv/libs/libmythtv/signalmonitor.cpp +@@ -23,7 +23,7 @@ extern "C" { + # include "dvbchannel.h" + #endif + +-#ifdef USING_V4L ++#ifdef USING_V4L2 + # include "analogsignalmonitor.h" + # include "v4lchannel.h" + #endif +@@ -95,7 +95,7 @@ SignalMonitor *SignalMonitor::Init(QString cardtype, int db_cardnum, + } + #endif + +-#ifdef USING_V4L ++#ifdef USING_V4L2 + if ((cardtype.toUpper() == "HDPVR")) + { + V4LChannel *chan = dynamic_cast(channel); +diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp +index b885eaa..3d9c7ad 100644 +--- a/mythtv/libs/libmythtv/tv_rec.cpp ++++ b/mythtv/libs/libmythtv/tv_rec.cpp +@@ -57,7 +57,7 @@ using namespace std; + + #include "channelgroup.h" + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + #include "v4lchannel.h" + #endif + +@@ -206,7 +206,7 @@ bool TVRec::CreateChannel(const QString &startchannel) + } + else // "V4L" or "MPEG", ie, analog TV + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + channel = new V4LChannel(this, genOpt.videodev); + if (!channel->Open()) + return false; +@@ -1082,11 +1082,11 @@ bool TVRec::SetupRecorder(RecordingProfile &profile) + } + else + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + // V4L/MJPEG/GO7007 from here on + recorder = new NuppelVideoRecorder(this, channel); + recorder->SetOption("skipbtaudio", genOpt.skip_btaudio); +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + } + + if (recorder) +@@ -1292,11 +1292,11 @@ FirewireChannel *TVRec::GetFirewireChannel(void) + + V4LChannel *TVRec::GetV4LChannel(void) + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + return dynamic_cast(channel); + #else + return NULL; +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + } + + /** \fn TVRec::EventThread(void*) +@@ -4137,7 +4137,7 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) + channel->GetCurrentName()); + } + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + if (GetV4LChannel()) + { + channel->InitPictureAttributes(); +diff --git a/mythtv/libs/libmythtv/v4lchannel.cpp b/mythtv/libs/libmythtv/v4lchannel.cpp +index bc82b49..7aa47ef 100644 +--- a/mythtv/libs/libmythtv/v4lchannel.cpp ++++ b/mythtv/libs/libmythtv/v4lchannel.cpp +@@ -16,8 +16,12 @@ + #include + using namespace std; + ++#ifdef USING_V4L + #include ++#endif ++#ifdef USING_V4L2 + #include ++#endif + + // MythTV headers + #include "v4lchannel.h" +@@ -150,8 +154,10 @@ static int format_to_mode(const QString &fmt, int v4l_version) + { + if (fmt == "NTSC-JP") + return 6; ++#ifdef USING_V4L + else if (fmt.left(5) == "SECAM") + return VIDEO_MODE_SECAM; ++#endif + else if (fmt == "PAL-NC") + return 3; + else if (fmt == "PAL-M") +@@ -159,6 +165,7 @@ static int format_to_mode(const QString &fmt, int v4l_version) + else if (fmt == "PAL-N") + return 5; + // generics... ++#ifdef USING_V4L + else if (fmt.left(3) == "PAL") + return VIDEO_MODE_PAL; + else if (fmt.left(4) == "NTSC") +@@ -166,6 +173,7 @@ static int format_to_mode(const QString &fmt, int v4l_version) + else if (fmt.left(4) == "ATSC") + return VIDEO_MODE_NTSC; // We've dropped V4L ATSC support... + return VIDEO_MODE_NTSC; ++#endif + } + + VERBOSE(VB_IMPORTANT, +@@ -237,6 +245,7 @@ static QString mode_to_format(int mode, int v4l_version) + } + else if (1 == v4l_version) + { ++#ifdef USING_V4L + if (mode == VIDEO_MODE_NTSC) + return "NTSC"; + else if (mode == VIDEO_MODE_PAL) +@@ -249,6 +258,7 @@ static QString mode_to_format(int mode, int v4l_version) + return "PAL-N"; + else if (mode == 6) + return "NTSC-JP"; ++#endif + } + else + { +@@ -676,6 +686,7 @@ bool V4LChannel::Tune(uint frequency, QString inputname, + return true; + } + ++#ifdef USING_V4L + // Video4Linux version 1 tuning + uint freq = frequency / 62500; + ioctlval = ioctl(videofd, VIDIOCSFREQ, &freq); +@@ -687,6 +698,7 @@ bool V4LChannel::Tune(uint frequency, QString inputname, + .arg(device).arg(ioctlval).arg(strerror(errno))); + return false; + } ++#endif + + SetSIStandard(si_std); + +@@ -858,6 +870,7 @@ bool V4LChannel::SetInputAndFormat(int inputNum, QString newFmt) + + if (usingv4l1) + { ++#ifdef USING_V4L + VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v1)"); + + // read in old settings +@@ -875,8 +888,9 @@ bool V4LChannel::SetInputAndFormat(int inputNum, QString newFmt) + { + VERBOSE(VB_IMPORTANT, LOC_ERR + msg + + "\n\t\t\twhile setting format (v4l v1)" + ENO); +- } +- else if (usingv4l2) ++ } else ++#endif ++ if (usingv4l2) + { + VERBOSE(VB_IMPORTANT, LOC + msg + + "\n\t\t\tSetting video mode with v4l version 1 worked"); +@@ -951,6 +965,7 @@ bool V4LChannel::SwitchToInput(int inputnum, bool setstarting) + return ok; + } + ++#ifdef USING_V4L + static unsigned short *get_v4l1_field( + int v4l2_attrib, struct video_picture &vid_pic) + { +@@ -970,6 +985,7 @@ static unsigned short *get_v4l1_field( + } + return NULL; + } ++#endif + + static int get_v4l2_attribute(const QString &db_col_name) + { +@@ -1067,6 +1083,7 @@ bool V4LChannel::InitPictureAttribute(const QString db_col_name) + } + + // V4L1 ++#ifdef USING_V4L + unsigned short *setfield; + struct video_picture vid_pic; + bzero(&vid_pic, sizeof(vid_pic)); +@@ -1087,7 +1104,7 @@ bool V4LChannel::InitPictureAttribute(const QString db_col_name) + VERBOSE(VB_IMPORTANT, loc_err + "failed to set controls." + ENO); + return false; + } +- ++#endif + return true; + } + +@@ -1154,6 +1171,7 @@ static int get_v4l2_attribute_value(int videofd, int v4l2_attrib) + + static int get_v4l1_attribute_value(int videofd, int v4l2_attrib) + { ++#ifdef USING_V4L + struct video_picture vid_pic; + bzero(&vid_pic, sizeof(vid_pic)); + +@@ -1167,6 +1185,7 @@ static int get_v4l1_attribute_value(int videofd, int v4l2_attrib) + unsigned short *setfield = get_v4l1_field(v4l2_attrib, vid_pic); + if (setfield) + return *setfield; ++#endif + + return -1; + } +@@ -1210,6 +1229,7 @@ static int set_v4l2_attribute_value(int videofd, int v4l2_attrib, int newvalue) + + static int set_v4l1_attribute_value(int videofd, int v4l2_attrib, int newvalue) + { ++#ifdef USING_V4L + unsigned short *setfield; + struct video_picture vid_pic; + bzero(&vid_pic, sizeof(vid_pic)); +@@ -1236,7 +1256,7 @@ static int set_v4l1_attribute_value(int videofd, int v4l2_attrib, int newvalue) + // ??? + return -1; + } +- ++#endif + return 0; + } + +diff --git a/mythtv/libs/libmythtv/v4lchannel.h b/mythtv/libs/libmythtv/v4lchannel.h +index b059c64..aa6d934 100644 +--- a/mythtv/libs/libmythtv/v4lchannel.h ++++ b/mythtv/libs/libmythtv/v4lchannel.h +@@ -4,11 +4,11 @@ + #define CHANNEL_H + + #include "dtvchannel.h" +-#ifdef USING_V4L ++#ifdef USING_V4L2 + #include // needed for v4l2_std_id type + #else + typedef uint64_t v4l2_std_id; +-#endif //USING_V4L ++#endif //USING_V4L2 + + using namespace std; + +diff --git a/mythtv/libs/libmythtv/vbitext/vbi.c b/mythtv/libs/libmythtv/vbitext/vbi.c +index 15f8d85..4c50e8d 100644 +--- a/mythtv/libs/libmythtv/vbitext/vbi.c ++++ b/mythtv/libs/libmythtv/vbitext/vbi.c +@@ -14,8 +14,12 @@ + // compiling with -std=c99. We could remove this in the .pro file, + // but that would disable it for all .c files. + #undef __STRICT_ANSI__ ++#ifdef USING_V4L + #include ++#endif ++#ifdef USING_V4L2 + #include ++#endif + + // vbitext headers + #include "vt.h" +@@ -29,8 +33,13 @@ static int rawbuf_size; // its current size + + + /***** bttv api *****/ ++#ifdef USING_V4L + #define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int) +- ++#else // !USING_V4L ++#ifdef USING_V4L2 ++#define BTTV_VBISIZE _IOR('v' , BASE_VIDIOC_PRIVATE+8, int) ++#endif // USING_V4L2 ++#endif // !USING_V4L + + static void + error(const char *str, ...) +diff --git a/mythtv/libs/libmythtv/videosource.cpp b/mythtv/libs/libmythtv/videosource.cpp +index 5d7a508..635faeb 100644 +--- a/mythtv/libs/libmythtv/videosource.cpp ++++ b/mythtv/libs/libmythtv/videosource.cpp +@@ -45,7 +45,7 @@ using namespace std; + #include "dvbtypes.h" + #endif + +-#ifdef USING_V4L ++#ifdef USING_V4L2 + #include + #endif + +@@ -2012,7 +2012,7 @@ CaptureCardGroup::CaptureCardGroup(CaptureCard &parent) : + setTrigger(cardtype); + setSaveAll(false); + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + addTarget("V4L", new V4LConfigurationGroup(parent)); + # ifdef USING_IVTV + addTarget("MPEG", new MPEGConfigurationGroup(parent)); +@@ -2020,7 +2020,7 @@ CaptureCardGroup::CaptureCardGroup(CaptureCard &parent) : + # ifdef USING_HDPVR + addTarget("HDPVR", new HDPVRConfigurationGroup(parent)); + # endif // USING_HDPVR +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + + #ifdef USING_DVB + addTarget("DVB", new DVBConfigurationGroup(parent)); +@@ -2201,7 +2201,7 @@ CardType::CardType(const CaptureCard &parent) : + + void CardType::fillSelections(SelectSetting* setting) + { +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + setting->addSelection( + QObject::tr("Analog V4L capture card"), "V4L"); + setting->addSelection( +@@ -2214,7 +2214,7 @@ void CardType::fillSelections(SelectSetting* setting) + setting->addSelection( + QObject::tr("H.264 encoder card (HD-PVR)"), "HDPVR"); + # endif // USING_HDPVR +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + + #ifdef USING_DVB + setting->addSelection( +@@ -2226,11 +2226,11 @@ void CardType::fillSelections(SelectSetting* setting) + QObject::tr("FireWire cable box"), "FIREWIRE"); + #endif // USING_FIREWIRE + +-#ifdef USING_V4L ++#if defined(USING_V4L) || defined(USING_V4L2) + setting->addSelection( + QObject::tr("USB MPEG-4 encoder box (Plextor ConvertX, etc)"), + "GO7007"); +-#endif // USING_V4L ++#endif // USING_V4L || USING_V4L2 + + #ifdef USING_HDHOMERUN + setting->addSelection( diff --git a/community-testing/mythtv/mythtv.install b/community-testing/mythtv/mythtv.install new file mode 100644 index 000000000..c29a53454 --- /dev/null +++ b/community-testing/mythtv/mythtv.install @@ -0,0 +1,11 @@ +post_install() { + echo "See \"MythTV\" on the Archlinux Wiki for installation information - Extensive!!" +} + +post_upgrade() { + return +} + +post_remove() { + echo -e "NOTE: mysql database was not removed. To remove run:\nmysql -u root -e 'drop database mythconverg;'" +} -- cgit v1.2.3-54-g00ecf