From defeb831ab4f4f16c6efe7bf85ea017324881b53 Mon Sep 17 00:00:00 2001
From: Cecil Hugh Watson <knoppmyth@gmail.com>
Date: Tue, 16 Jun 2009 00:15:32 -0700
Subject: Added myt2xvid3

---
 abs/core-testing/linhes-scripts/PKGBUILD | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core-testing/linhes-scripts/PKGBUILD b/abs/core-testing/linhes-scripts/PKGBUILD
index bd8279e..8875c69 100644
--- a/abs/core-testing/linhes-scripts/PKGBUILD
+++ b/abs/core-testing/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=1
-pkgrel=14
+pkgrel=15
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -14,7 +14,7 @@ source=(ftp://ftp.knoppmyth.net/R6/sources/linhes-scripts.tar.bz2)
 build() {
   cd $startdir/src/
   mkdir -p $startdir/pkg/usr/LH/bin
-  cp 770* idle.sh imp* myth* shoo* pau*sh mplayer* vdpau* screen* mplayer* $startdir/pkg/usr/LH/bin
+  install -D -m755 myt2* 770* idle.sh imp* myth* shoo* pau*sh mplayer* vdpau* screen* mplayer* $startdir/pkg/usr/LH/bin
   mkdir -p $startdir/pkg/etc/sv/pause-mythcommflag/supervise
   cp run $startdir/pkg/etc/sv/pause-mythcommflag/
   mkdir -p $startdir/pkg/etc/logrotate.d/
-- 
cgit v0.12


From 15437de691afabd283f305fdbe6ddf9ee5a878e7 Mon Sep 17 00:00:00 2001
From: Bob Igo <bob@stormlogic.com>
Date: Tue, 16 Jun 2009 13:54:21 -0400
Subject: Preliminary mplayer wrapper; basic functionality only

---
 abs/core-testing/mplayer-wrapper/PKGBUILD          |  16 ++
 .../mplayer-wrapper/bin/mplayer-resumer.pl         | 188 +++++++++++++++++++++
 .../mplayer-wrapper/bin/mplayer-wrapper.pl         | 110 ++++++++++++
 3 files changed, 314 insertions(+)
 create mode 100644 abs/core-testing/mplayer-wrapper/PKGBUILD
 create mode 100755 abs/core-testing/mplayer-wrapper/bin/mplayer-resumer.pl
 create mode 100755 abs/core-testing/mplayer-wrapper/bin/mplayer-wrapper.pl

diff --git a/abs/core-testing/mplayer-wrapper/PKGBUILD b/abs/core-testing/mplayer-wrapper/PKGBUILD
new file mode 100644
index 0000000..82f1082
--- /dev/null
+++ b/abs/core-testing/mplayer-wrapper/PKGBUILD
@@ -0,0 +1,16 @@
+pkgname=mplayer-wrapper
+pkgver=1
+pkgrel=1
+pkgdesc="wrapper for mplayer and mplayer derivatives"
+arch=('i686' 'x86_64')
+
+depends=('perl') 
+
+source=(mplayer-wrapper.pl)
+
+license=('GPL2')
+
+build() {
+   cd $startdir
+   install -m0777 -D bin/*  $startdir/pkg/usr/LH/bin/
+}
diff --git a/abs/core-testing/mplayer-wrapper/bin/mplayer-resumer.pl b/abs/core-testing/mplayer-wrapper/bin/mplayer-resumer.pl
new file mode 100755
index 0000000..c785a25
--- /dev/null
+++ b/abs/core-testing/mplayer-wrapper/bin/mplayer-resumer.pl
@@ -0,0 +1,188 @@
+#!/usr/bin/perl
+
+use Shell;
+use strict;
+use POSIX qw(floor);
+
+# Written by Bob Igo from the MythTV Store at http://MythiC.TV
+# Email: bob@stormlogic.com
+#
+# If you run into problems with this script, please send me email
+
+# PURPOSE:
+# --------------------------
+# This is a wrapper script to prove the concept of having MythTV
+# resume playback of previously-stopped video where you left off.
+# It's likely that a good solution will look different than this
+# initial code.
+
+# RATIONALE:
+# --------------------------
+# Watching 90% of a video and stopping causes you to return to the
+# beginning again the next time you watch it.  Remembering where
+# you were in the video and resuming at that position is a much nicer
+# behavior for the user.
+#
+# By default, mplayer spits out timecode information that tells you
+# where you are in the video, to the tenth of a second.  Mplayer also
+# supports a seek feature on the command-line.  We can make use of these
+# features to write an mplayer wrapper that will remember the last
+# position in a video file and resume to it on playback.
+
+# PARAMETERS:
+# --------------------------
+# see print_usage() below
+
+# FILES:
+# --------------------------
+# $infile, the video to play
+# $resumefile, the video's resume file (see get_resume_filename() below)
+
+# KNOWN ISSUES:
+# --------------------------
+# Mplayer misreports the timecodes on .nuv MPEG-2 files.  Currently, anything
+# captured via an HDTV tuner card and put into your /myth/video directory
+# will fail with this resumer.
+#
+# Current theories include the timecode having to do with the show's broadcast
+# time, recording time, or perhaps its upload time to the station that
+# broadcast it.
+
+# DESIGN LIMITATION:
+# -------------------------
+# If the video file to be played is on a read-only filesystem, or otherwise
+# lives in a location that cannot be written to, resume will fail.  This is
+# because the current implementation uses a file parallel to the video file
+# to store the timecode.
+#
+
+# CHANGE LOG:
+# 5/3/2006
+# Added last time started checking.
+# If this script is restarted within $tdiff (default 5 seconds)
+# then it will delete the file used to keep track of the videos
+# resume position.
+
+
+my $infile;
+my $resumefile;
+my $mplayer_parameters;
+my $fudge_factor=2; # number of additional seconds to skip back before playback
+my $tnow;    # Time now.
+my $tprev;   # Time the prog was last started. 
+             # Returned from the modification time of the xx.resume file.
+my $tdiff=5; # How many seconds before we should start from 
+             # the beginning of the movie
+#DEBUG
+#open(DEBUG,">/tmp/debug") || die "unable to open debug file";
+
+sub init () {
+    $tnow = time();
+    $infile = @ARGV[$#ARGV];
+
+    $resumefile = &get_resume_filename($infile);
+    # This returns the 9th element of the 13 element array 
+    # created by the stat function.
+    $tprev = (stat ($resumefile))[9]; 
+    # if this file is restarted in less than 5 seconds then 
+    # remove the .resume file
+    if ( ($tnow - $tprev) < $tdiff ) {
+        unlink($resumefile);
+    }
+
+    $mplayer_parameters = join(' ',@ARGV[0..$#ARGV-1]);
+}
+
+&init();
+&save_time_offset(&mplayer($mplayer_parameters,$infile), $resumefile);
+
+#close(DEBUG);
+
+# For $pathname, return $path.$filename.resume
+sub get_resume_filename () {
+    my($pathname)=@_;
+    
+    my $idx = rindex($pathname,"/");
+
+    if ($idx == -1) { # There was no "/" in $pathname
+	return ".".$pathname.".resume";
+    } else {
+	# Now we need to split out the path from the filename.
+	my $path = substr($pathname,0,$idx+1);
+	my $filename = substr($pathname,$idx+1);
+	return "$path.$filename.resume";
+    }
+}
+
+# Calls mplayer and returns the last known video position
+sub mplayer () {
+    my($parameters,$infile)=@_;
+    my $seconds=0;
+    my $timecode=&get_time_offset($infile);
+    my $command = "mplayer $parameters -ss $timecode \"$infile\" 2>&1 2>/dev/null |";
+
+    open(SHELL, $command);
+    # The kind of line we care about looks like this example:
+    # A:1215.2 V:1215.2 A-V:  0.006 ct:  0.210 207/201 13%  0%  1.9% 0 0 68%
+    # But all we care to look at is the first number.
+    
+    while (<SHELL>) {
+	#print DEBUG $_;
+	if (m/A: *[0-9]+\.[0-9]/) { # See if this line has timecodes on it
+	    my $last_timecode_line = &extract_last_timecode_line($_);
+	    if ($last_timecode_line =~ m/ *([0-9]+\.[0-9]) V/) {
+		$seconds=$1;
+	    }
+	}
+    }
+    close(SHELL);
+
+    return $seconds;
+
+    sub extract_last_timecode_line () {
+	my ($line)=@_;
+	my @lines=split('A:',$line);
+	return @lines[$#lines-1];
+    }
+}
+
+# Save the last known video position
+sub save_time_offset () {
+    my($seconds, $resumefile)=@_;
+
+    open(RESUMEFILE, ">$resumefile") || die "Unable to open $resumefile for writing";
+    print RESUMEFILE "$seconds";
+    close(RESUMEFILE);
+}
+
+# returns the number of seconds corresponding to the last known video position,
+# in hh:mm:ss format, compatible with the "-ss" parameter to mplayer
+sub get_time_offset () {
+    my($videofile)=@_;
+    my($resumefile) = &get_resume_filename($videofile);
+    my $seconds=0;
+    my $timecode;
+
+    open(RESUMEFILE, "<$resumefile") || return "00:00:00";
+    while(<RESUMEFILE>) {
+	$seconds=$_;
+    }
+    close(RESUMEFILE);
+
+    my $hours = floor($seconds/3600);
+    $seconds = $seconds - $hours*3600;
+
+    my $minutes = floor($seconds/60);
+    $seconds = int($seconds - $minutes*60) - $fudge_factor;
+
+    $timecode = sprintf "%02d:%02d:%02d",$hours,$minutes,$seconds;
+#    print "TIMECODE: $timecode\n";
+    return $timecode;
+}
+
+sub print_usage () {
+    print "USAGE:\n";
+    print "\t",$ARGV[0], "[mplayer parameters] video_file\n";
+    print "\t","e.g. ",$ARGV[0], "-fs -zoom my.mpg\n";
+    print "\t","Version 5/3/2006\n";
+}
diff --git a/abs/core-testing/mplayer-wrapper/bin/mplayer-wrapper.pl b/abs/core-testing/mplayer-wrapper/bin/mplayer-wrapper.pl
new file mode 100755
index 0000000..583786d
--- /dev/null
+++ b/abs/core-testing/mplayer-wrapper/bin/mplayer-wrapper.pl
@@ -0,0 +1,110 @@
+#!/usr/bin/perl
+
+use Shell;
+use strict;
+use POSIX qw(floor);
+
+# Written by Bob Igo from the MythTV Store at http://MythiC.TV
+# including some original code and contributions from Nick C.
+# and graysky.
+# Email: bob@stormlogic.com
+#
+# If you run into problems with this script, please send me email
+
+# PURPOSE:
+# --------------------------
+# This is a wrapper script that tries to find the best parameters
+# for calling an underlying video player.  The outer layer determines
+# the best playback parameters, while the inner layer picks the best
+# player to call.
+
+# RATIONALE:
+# --------------------------
+# Default video playback options are not optimal on all hardware or
+# for all video types.  In addition, common video players do not
+# offer to bookmark video so that you can resume where you left off.
+# Both of these problems can be addressed by this wrapper.
+
+# PARAMETERS:
+# --------------------------
+# The same parameters you'd use for mplayer, some of which may be
+# translated automatically for use with smplayer.
+
+# FILES:
+# --------------------------
+# $mediafile, the file to play
+
+sub run () {
+    my $mediafile = @ARGV[$#ARGV];
+    my $player = &pick_player();
+
+    my $player_parameters = join(' ',
+				 &translate_parameters($player,@ARGV[0..$#ARGV-1]),
+				 &dynamic_parameters($mediafile));
+    &player($player,$player_parameters,$mediafile);
+}
+
+&run();
+
+# Translates any parameters into ones that will be compatible with the given player.
+sub translate_parameters() {
+    my($player,@parameters)=@_;
+
+    if ($player eq "smplayer") {
+	# Stupidly, smplayer uses a different set of command-line parameters than generic
+	# mplayer, so we need to translate mplayer-centric ones into the few that are
+	# available in smplayer-ese.
+	my %smplayer_parameter_translation_array = (
+	    "-fs" => "-fullscreen",
+	    "-zoom" => " "
+	    );
+	
+	sub translate() {
+	    my($flag)=@_;
+	    return $smplayer_parameter_translation_array{$flag};
+	}
+	
+	return map(&translate($_), @parameters);
+    } else {
+	return @parameters;
+    }
+}
+
+# Returns an array of dynamic parameters based in part on the media.
+sub dynamic_parameters () {
+    my($mediafile)=@_;
+    return(); # ??? empty for now; further development required
+}
+
+# Find the best player for use on this system.  The script prefers smplayer,
+# which has built-in bookmarking, falling back to mplayer-resumer.pl, which
+# implements bookmarking as an mplayer wrapper, if smplayer cannot be found.
+# Finally, if no bookmarking players can be found, a barebones mplayer is used.
+sub pick_player () {
+    my @possible_players = ("smplayer", "mplayer-resumer.pl", "mplayer");
+    my $command;
+    my $candidate_player;
+    foreach (@possible_players) {
+	$candidate_player = $_;
+	$command = "which $candidate_player |";
+	open(SHELL, $command);
+	if (<SHELL>) {
+	    #print "player $candidate_player : $_\n";
+	    return $candidate_player;
+	}
+	close(SHELL);
+    }
+}
+
+# Calls player
+sub player () {
+    my($player,$parameters,$mediafile)=@_;
+    my $command = "$player $parameters \"$mediafile\" 2>&1 2>/dev/null |";
+
+    #print "DEBUG: command is:\n$command\n";
+    open(SHELL, $command);
+    while (<SHELL>) {
+	print $_;
+    }
+    close(SHELL);
+}
-- 
cgit v0.12


From f2af490d9405bd022455cbd81408fcd23b7cfe12 Mon Sep 17 00:00:00 2001
From: Bob Igo <bob@stormlogic.com>
Date: Tue, 16 Jun 2009 13:56:04 -0400
Subject: Modified Tweaker to work with new mysql.txt location.

---
 abs/core-testing/tweaker/PKGBUILD              | 2 +-
 abs/core-testing/tweaker/lib/Tweaker/Script.pm | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core-testing/tweaker/PKGBUILD b/abs/core-testing/tweaker/PKGBUILD
index 9617e49..44d8846 100644
--- a/abs/core-testing/tweaker/PKGBUILD
+++ b/abs/core-testing/tweaker/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=tweaker
 pkgver=1
-pkgrel=31
+pkgrel=32
 pkgdesc=""
 arch=('i686' 'x86_64')
 
diff --git a/abs/core-testing/tweaker/lib/Tweaker/Script.pm b/abs/core-testing/tweaker/lib/Tweaker/Script.pm
index 7dd2c8f..8474f0b 100644
--- a/abs/core-testing/tweaker/lib/Tweaker/Script.pm
+++ b/abs/core-testing/tweaker/lib/Tweaker/Script.pm
@@ -80,7 +80,7 @@ sub get_mythtv_connection_string {
     # we want something like mythconverg:localhost
     my $dbname = "";
     my $dbhostname = "";
-    open(MYSQLTXT, "< /usr/share/mythtv/mysql.txt");
+    open(MYSQLTXT, "< /usr/MythVantage/templates/mysql.txt");
     while(<MYSQLTXT>) {
 	if (/DBName=(.*)/) {
 	    $dbname=$1;
-- 
cgit v0.12


From a3cc7a8ca28ca1b58077963d46f6b18d8bb92fe0 Mon Sep 17 00:00:00 2001
From: Nathan Harris <nharris@eoimaging.com>
Date: Tue, 16 Jun 2009 14:56:28 -0400
Subject: mythtv-svn: updated to svn 20713 plus new HD-PVR patches

---
 abs/core-testing/mythtv/trunk/morethemes/PKGBUILD  |   7 +-
 abs/core-testing/mythtv/trunk/mp_all.sh            |   7 +-
 abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD |   7 +-
 abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD |   7 +-
 abs/core-testing/mythtv/trunk/mythflix/PKGBUILD    |   7 +-
 abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD |   7 +-
 abs/core-testing/mythtv/trunk/mythgame/PKGBUILD    |   7 +-
 abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD  |   7 +-
 abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD   |   7 +-
 abs/core-testing/mythtv/trunk/mythnews/PKGBUILD    |   7 +-
 abs/core-testing/mythtv/trunk/myththemes/PKGBUILD  |   7 +-
 .../trunk/mythtv/H264Parser-fixes-v1.1.patch       | 368 +++++++++++++++++++++
 abs/core-testing/mythtv/trunk/mythtv/PKGBUILD      |  12 +-
 .../mythtv/trunk/mythtv/hdpvr-signalmonitor.patch  | 292 ++++++++++++++++
 .../mythtv/trunk/mythtv/ringbuffer_reset_v2.diff   |  91 +++++
 abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD   |   7 +-
 abs/core-testing/mythtv/trunk/mythweather/PKGBUILD |   7 +-
 abs/core-testing/mythtv/trunk/mythweb/PKGBUILD     |   4 +-
 .../mythtv/trunk/mythzoneminder/PKGBUILD           |   7 +-
 19 files changed, 830 insertions(+), 35 deletions(-)
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv/H264Parser-fixes-v1.1.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv/hdpvr-signalmonitor.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv/ringbuffer_reset_v2.diff

diff --git a/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD b/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
index 5f12179..350cf2f 100644
--- a/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=morethemes-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Additional themes for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=themes
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr || return 1
 
diff --git a/abs/core-testing/mythtv/trunk/mp_all.sh b/abs/core-testing/mythtv/trunk/mp_all.sh
index 47f70ba..45ea44e 100755
--- a/abs/core-testing/mythtv/trunk/mp_all.sh
+++ b/abs/core-testing/mythtv/trunk/mp_all.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-_svnver=20684
+_svnver=20713
 
 # NOTE: Make sure to build and install mythtv first BEFORE building anything else
 buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes')
@@ -9,9 +9,8 @@ for i in `echo ${buildlist[@]:0}`
 do
 	echo "---------- building $i ----------"
 	cd ./$i
-	mp -f --holdver || exit 1
-	pacman -U /data/pkg_repo/i686/core-testing/$i-svn-$_svnver* || exit 1
-	rm -rf pkg src
+	mp -f -i --holdver || exit 1
+	rm -rf pkg
 	rm -f *~
 	cd ..
 done
diff --git a/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD b/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
index 917d741..14230b1 100644
--- a/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mytharchive-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mytharchive || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
index 466263b..3bd4d74 100644
--- a/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythbrowser-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Mini web browser for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythbrowser || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD b/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
index 7f12ef5..b3fa81c 100644
--- a/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythflix-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Netflix access plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythflix || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD b/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
index 77100ed..521a1e2 100644
--- a/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythgallery-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Image gallery plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythgallery || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD b/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
index 6bbd780..d6e8922 100644
--- a/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythgame-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Emulation plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythgame || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD b/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
index 6b6fc7c..8b9aeb1 100644
--- a/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythmovies-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Displays information about movies playing in the area."
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythmovies || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD b/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
index 4c255df..8754ba0 100644
--- a/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythmusic-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Music playing plugin for MythTV"
 url="http://www.mythtv.org"
@@ -21,7 +21,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -37,6 +37,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythmusic --enable-libvisual --enable-fftw --enable-sdl \
diff --git a/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD b/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
index 0bb3b5a..8bf0298 100644
--- a/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythnews-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="News checking plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythnews || return 1
diff --git a/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD b/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
index dd58a50..b031fde 100755
--- a/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=myththemes-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Themes for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=myththemes
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr || return 1
 
diff --git a/abs/core-testing/mythtv/trunk/mythtv/H264Parser-fixes-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv/H264Parser-fixes-v1.1.patch
new file mode 100644
index 0000000..f8e2100
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv/H264Parser-fixes-v1.1.patch
@@ -0,0 +1,368 @@
+Index: libs/libmythtv/mpeg/H264Parser.cpp
+===================================================================
+--- libs/libmythtv/mpeg/H264Parser.cpp.orig
++++ libs/libmythtv/mpeg/H264Parser.cpp
+@@ -3,7 +3,9 @@
+ 
+ extern "C" {
+ // from libavcodec
+-    extern const uint8_t *ff_find_start_code(const uint8_t * p, const uint8_t *end, uint32_t * state);
++    extern const uint8_t *ff_find_start_code(const uint8_t * p,
++                                             const uint8_t *end,
++                                             uint32_t * state);
+ #include "avcodec.h"
+ }
+ 
+@@ -88,19 +90,18 @@ static const float eps = 1E-5;
+ H264Parser::H264Parser(void)
+ {
+     Reset();
++    I_is_keyframe = false;
+ }
+ 
+ void H264Parser::Reset(void)
+ {
+     state_changed = false;
+-    seen_sps = seen_IDR = false;
++    seen_sps = false;
++    is_keyframe = false;
+ 
+     sync_accumulator = 0xffffffff;
+-    find_AU = false;
+     AU_pending = false;
+ 
+-    NAL_type = UNKNOWN;
+-
+     frame_num = prev_frame_num = -1;
+     slice_type = SLICE_UNDEF;
+     prev_pic_parameter_set_id = pic_parameter_set_id = -1;
+@@ -112,7 +113,7 @@ void H264Parser::Reset(void)
+     prev_delta_pic_order_cnt_bottom = delta_pic_order_cnt_bottom = 0;
+     prev_delta_pic_order_cnt[0] = delta_pic_order_cnt[0] = 0;
+     prev_delta_pic_order_cnt[1] = delta_pic_order_cnt[1] = 0;
+-    prev_nal_unit_type = nal_unit_type = 0;
++    prev_nal_unit_type = nal_unit_type = UNKNOWN;
+     prev_idr_pic_id = idr_pic_id = 0;
+ 
+     log2_max_frame_num = log2_max_pic_order_cnt_lsb = 0;
+@@ -136,8 +137,6 @@ void H264Parser::Reset(void)
+ 
+     AU_offset = frame_start_offset = keyframe_start_offset = 0;
+     on_frame = on_key_frame = false;
+-
+-    wait_for_IDR = false;
+ }
+ 
+ 
+@@ -214,13 +213,7 @@ bool H264Parser::new_AU(void)
+     {
+         // Need previous slice information for comparison
+ 
+-        if (NAL_type == AU_DELIMITER ||
+-            NAL_type == SPS ||
+-            NAL_type == PPS ||
+-            NAL_type == SEI ||
+-            (NAL_type > SPS_EXT && NAL_type < AUXILIARY_SLICE))
+-            result = true;
+-        else if (NAL_type != SLICE_IDR && frame_num != prev_frame_num)
++        if (nal_unit_type != SLICE_IDR && frame_num != prev_frame_num)
+             result = true;
+         else if (prev_pic_parameter_set_id != -1 &&
+                  pic_parameter_set_id != prev_pic_parameter_set_id)
+@@ -230,9 +223,6 @@ bool H264Parser::new_AU(void)
+         else if ((bottom_field_flag != -1 && prev_bottom_field_flag != -1) &&
+                  bottom_field_flag != prev_bottom_field_flag)
+             result = true;
+-        else if ((nal_ref_idc == 0 || prev_nal_ref_idc == 0) &&
+-                 nal_ref_idc != prev_nal_ref_idc)
+-            result = true;
+         else if ((pic_order_cnt_type == 0 && prev_pic_order_cnt_type == 0) &&
+                  (pic_order_cnt_lsb != prev_pic_order_cnt_lsb ||
+                   delta_pic_order_cnt_bottom !=
+@@ -256,7 +246,6 @@ bool H264Parser::new_AU(void)
+     prev_pic_parameter_set_id = pic_parameter_set_id;
+     prev_field_pic_flag = field_pic_flag;
+     prev_bottom_field_flag = bottom_field_flag;
+-    prev_nal_ref_idc = nal_ref_idc;
+     prev_pic_order_cnt_lsb = pic_order_cnt_lsb;
+     prev_delta_pic_order_cnt_bottom = delta_pic_order_cnt_bottom;
+     prev_delta_pic_order_cnt[0] = delta_pic_order_cnt[0];
+@@ -273,7 +262,7 @@ uint32_t H264Parser::addBytes(const uint
+ {
+     const uint8_t *byteP = bytes;
+     const uint8_t *endP = bytes + byte_count;
+-
++    const uint8_t *nalP;
+     uint8_t        first_byte;
+ 
+     state_changed = false;
+@@ -305,10 +294,11 @@ uint32_t H264Parser::addBytes(const uint
+   11 End of stream end_of_stream_rbsp( )
+ */
+             first_byte = *(byteP - 1);
+-            NAL_type = first_byte & 0x1f;
++            nal_unit_type = first_byte & 0x1f;
+             nal_ref_idc = (first_byte >> 5) & 0x3;
+ 
+-            if (NALisSlice(NAL_type) || NAL_type == SPS || NAL_type == PPS)
++            if (nal_unit_type == SPS || nal_unit_type == PPS ||
++                nal_unit_type == SEI || NALisSlice(nal_unit_type))
+             {
+                 /*
+                   bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE
+@@ -318,27 +308,51 @@ uint32_t H264Parser::addBytes(const uint
+                 {
+                     init_get_bits(&gb, byteP, 8 * (endP - byteP));
+ 
+-                    if (NAL_type == SPS)
++                    if (nal_unit_type == SEI)
++                    {
++                        nalP = ff_find_start_code(byteP+1, endP,
++                                                  &sync_accumulator) - 8;
++                        decode_SEI(&gb, (nalP - byteP) * 8);
++                        set_AU_pending(stream_offset);
++                    }
++                    else if (nal_unit_type == SPS)
++                    {
+                         decode_SPS(&gb);
+-                    else if (NAL_type == PPS)
++                        set_AU_pending(stream_offset);
++                    }
++                    else if (nal_unit_type == PPS)
++                    {
+                         decode_PPS(&gb);
++                        set_AU_pending(stream_offset);
++                    }
+                     else
+-                        find_AU = decode_Header(&gb);
++                    {
++                        decode_Header(&gb);
++                        if (new_AU())
++                            set_AU_pending(stream_offset);
++                    }
+ 
+                     byteP += (get_bits_count(&gb) / 8);
+                 }
+             }
+-
+-            if (find_AU && new_AU())
++            else if (!AU_pending)
+             {
+-                /* After finding a new AU, don't look for another one
+-                   until we decode a SLICE */
+-                find_AU = false;
+-                AU_pending = true;
+-                AU_offset = stream_offset;
++                if (nal_unit_type == AU_DELIMITER ||
++                    (nal_unit_type > SPS_EXT &&
++                     nal_unit_type < AUXILIARY_SLICE))
++                {
++                    AU_pending = true;
++                    AU_offset = stream_offset;
++                }
++                else if ((nal_ref_idc == 0 || prev_nal_ref_idc == 0) &&
++                         nal_ref_idc != prev_nal_ref_idc)
++                {
++                    AU_pending = true;
++                    AU_offset = stream_offset;
++                }
+             }
+-            
+-            if (AU_pending && NALisSlice(NAL_type))
++
++            if (AU_pending && NALisSlice(nal_unit_type))
+             {
+                 /* Once we know the slice type of a new AU, we can
+                  * determine if it is a keyframe or just a frame */
+@@ -349,10 +363,11 @@ uint32_t H264Parser::addBytes(const uint
+                 on_frame = true;
+                 frame_start_offset = AU_offset;
+ 
+-                if (isKeySlice(slice_type) && (!wait_for_IDR || seen_IDR))
++                if (is_keyframe)
+                 {
+                     on_key_frame = true;
+                     keyframe_start_offset = AU_offset;
++                    is_keyframe = false;
+                 }
+                 else
+                     on_key_frame = false;
+@@ -360,6 +375,8 @@ uint32_t H264Parser::addBytes(const uint
+             else
+                 on_frame = on_key_frame = false;
+ 
++            prev_nal_ref_idc = nal_ref_idc;
++
+             return byteP - bytes;
+         }
+     }
+@@ -440,8 +457,6 @@ bool H264Parser::decode_Header(GetBitCon
+     */
+ 
+     frame_num = get_bits(gb, log2_max_frame_num);
+-    if (NAL_type == SLICE_IDR || frame_num == 0)
+-        seen_IDR = true;
+ 
+     /*
+       field_pic_flag equal to 1 specifies that the slice is a slice of a
+@@ -475,8 +490,14 @@ bool H264Parser::decode_Header(GetBitCon
+       second such IDR access unit. The value of idr_pic_id shall be in
+       the range of 0 to 65535, inclusive.
+      */
++
+     if (nal_unit_type == SLICE_IDR)
++    {
++        is_keyframe = true;
+         idr_pic_id = get_ue_golomb(gb);
++    }
++    else
++        is_keyframe |= (I_is_keyframe && isKeySlice(slice_type));
+ 
+     /*
+       pic_order_cnt_lsb specifies the picture order count modulo
+@@ -806,6 +827,44 @@ void H264Parser::decode_PPS(GetBitContex
+ #endif
+ }
+ 
++void H264Parser::decode_SEI(GetBitContext * gb, int bitlen)
++{
++    int   recovery_frame_cnt = -1;
++    bool  exact_match_flag = false;
++    bool  broken_link_flag = false;
++    int   changing_group_slice_idc = -1;
++
++    while (get_bits_count(gb) < bitlen)
++    {
++        int type = 0, size = 0;
++
++        do {
++            type += show_bits(gb, 8);
++        } while (get_bits(gb, 8) == 255);
++
++        do {
++            size += show_bits(gb, 8);
++        } while (get_bits(gb, 8) == 255);
++
++        switch (type)
++        {
++          case SEI_TYPE_RECOVERY_POINT:
++            recovery_frame_cnt = get_ue_golomb(gb);
++            exact_match_flag = get_bits1(gb);
++            broken_link_flag = get_bits1(gb);
++            changing_group_slice_idc = get_bits(gb, 2);
++            is_keyframe |= (recovery_frame_cnt >= 0);
++            return;
++
++          default:
++            skip_bits(gb, size * 8);
++            break;
++        }
++
++        align_get_bits(gb);
++    }
++}
++
+ void H264Parser::vui_parameters(GetBitContext * gb)
+ {
+     /*
+Index: libs/libmythtv/mpeg/H264Parser.h
+===================================================================
+--- libs/libmythtv/mpeg/H264Parser.h.orig
++++ libs/libmythtv/mpeg/H264Parser.h
+@@ -53,6 +53,12 @@ class H264Parser {
+         AUXILIARY_SLICE = 19
+     };
+ 
++    enum SEI_type {
++        SEI_TYPE_PIC_TIMING             = 1,
++        SEI_TYPE_USER_DATA_UNREGISTERED = 5,
++        SEI_TYPE_RECOVERY_POINT         = 6
++    };
++
+     /*
+       slice_type values in the range 5..9 specify, in addition to the
+       coding type of the current slice, that all other slices of the
+@@ -90,9 +96,7 @@ class H264Parser {
+ 
+     bool stateChanged(void) const { return state_changed; }
+ 
+-    // seenIDR implies that a SPS has also been seen
+-    bool seenIDR(void) const { return seen_IDR; }
+-    uint8_t lastNALtype(void) const { return NAL_type; }
++    uint8_t lastNALtype(void) const { return nal_unit_type; }
+ 
+     frame_type FieldType(void) const
+         {
+@@ -130,29 +134,36 @@ class H264Parser {
+                     nal_type == SLICE_IDR);
+         }
+ 
+-    void waitForIDR(bool wait) { wait_for_IDR = wait; }
++    void use_I_forKeyframes(bool val) { I_is_keyframe = val; }
+ 
+   private:
+     enum constants {EXTENDED_SAR = 255};
+ 
+-    bool is_first_VCL_NAL_unit(void);
++    inline void set_AU_pending(const uint64_t & stream_offset)
++        {
++            if (!AU_pending)
++            {
++                AU_pending = true;
++                AU_offset = stream_offset;
++            }
++        }
++
+     bool new_AU(void);
+     bool decode_Header(GetBitContext *gb);
+     void decode_SPS(GetBitContext *gb);
+     void decode_PPS(GetBitContext * gb);
++    void decode_SEI(GetBitContext * gb, int len);
+     void vui_parameters(GetBitContext * gb);
+ 
+-    bool       find_AU;
+     bool       AU_pending;
+     bool       state_changed;
+     bool       seen_sps;
+-    bool       seen_IDR;
++    bool       is_keyframe;
++    bool       I_is_keyframe;
+ 
+     uint32_t   sync_accumulator;
+     GetBitContext gb;
+ 
+-    uint8_t    NAL_type;
+-
+     int        prev_frame_num, frame_num;
+     uint       slice_type;
+     int        prev_pic_parameter_set_id, pic_parameter_set_id;
+@@ -188,8 +199,6 @@ class H264Parser {
+ 
+     uint64_t   AU_offset, frame_start_offset, keyframe_start_offset;
+     bool       on_frame, on_key_frame;
+-
+-    bool       wait_for_IDR;
+ };
+ 
+ #endif /* H264PARSER_H */
+Index: libs/libmythtv/mpegrecorder.cpp
+===================================================================
+--- libs/libmythtv/mpegrecorder.cpp.orig
++++ libs/libmythtv/mpegrecorder.cpp
+@@ -423,6 +423,7 @@ bool MpegRecorder::OpenV4L2DeviceAsInput
+             bzero(_stream_id,  sizeof(_stream_id));
+             bzero(_pid_status, sizeof(_pid_status));
+             memset(_continuity_counter, 0xff, sizeof(_continuity_counter));
++            m_h264_parser.use_I_forKeyframes(true);
+         }
+         else
+         {
+@@ -1373,8 +1374,6 @@ void MpegRecorder::ResetForNewFile(void)
+     bzero(_stream_id,  sizeof(_stream_id));
+     bzero(_pid_status, sizeof(_pid_status));
+     memset(_continuity_counter, 0xff, sizeof(_continuity_counter));
+-
+-    m_h264_parser.waitForIDR(true);
+ }
+ 
+ void MpegRecorder::Reset(void)
diff --git a/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
index a4cbd8d..73842f5 100755
--- a/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythtv-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="A personal video recorder for Linux"
 url="http://www.mythtv.org"
@@ -16,7 +16,8 @@ groups=('pvr')
 #MAKEFLAGS="-j6"
 install='mythtv.install'
 
-patchs=('smolt_jump.patch' 'myththemedmenu.h.patch' 'myththemedmenu.cpp.patch')
+patchs=('smolt_jump.patch' 'myththemedmenu.h.patch' 'myththemedmenu.cpp.patch' 'H264Parser-fixes-v1.1.patch' \
+	'hdpvr-signalmonitor.patch' 'ringbuffer_reset_v2.diff' )
 #patchs=('svn_main_menu_popup.patch' 'smolt_jump.patch')
 source=('mythbackend' 'myth.sh' `echo ${patchs[@]:0}` 'mythbackend.lr' 'mythfrontend.lr' 'pretty')
 arch=('i686' 'x86_64')
@@ -27,11 +28,13 @@ _svnmod=mythtv
 
 build() {
 
+	# get clean copy from SVN repo
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/mythtv
 
+	# apply patches
 	echo "--------------------------applying patches----------------------------------------------------"
 	for i in `echo ${patchs[@]:0} `
 	do
@@ -46,6 +49,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up from last build
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --arch=${ARCH} \
 	--enable-vdpau --enable-xvmc --enable-xvmc-pro \
diff --git a/abs/core-testing/mythtv/trunk/mythtv/hdpvr-signalmonitor.patch b/abs/core-testing/mythtv/trunk/mythtv/hdpvr-signalmonitor.patch
new file mode 100644
index 0000000..2465cfe
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv/hdpvr-signalmonitor.patch
@@ -0,0 +1,292 @@
+Index: libs/libmythtv/analogsignalmonitor.cpp
+===================================================================
+--- libs/libmythtv/analogsignalmonitor.cpp.orig
++++ libs/libmythtv/analogsignalmonitor.cpp
+@@ -4,23 +4,92 @@
+ #include <cerrno>
+ #include <unistd.h>
+ #include <sys/ioctl.h>
++#include <poll.h>
+ 
+ #include "videodev_myth.h"
+ #include "mythcontext.h"
+ #include "analogsignalmonitor.h"
+ #include "v4lchannel.h"
+ 
+-#define LOC QString("AnalogSM: ").arg(channel->GetDevice())
+-#define LOC_ERR QString("AnalogSM, Error: ").arg(channel->GetDevice())
++#define LOC QString("AnalogSM: %1 ").arg(channel->GetDevice())
++#define LOC_ERR QString("AnalogSM, Error: %1 ").arg(channel->GetDevice())
+ 
+-AnalogSignalMonitor::AnalogSignalMonitor(
+-    int db_cardnum, V4LChannel *_channel, uint64_t _flags) :
++AnalogSignalMonitor::AnalogSignalMonitor(int db_cardnum, V4LChannel *_channel,
++                                         uint64_t _flags) :
+     SignalMonitor(db_cardnum, _channel, _flags),
+-    usingv4l2(false)
++    m_usingv4l2(false),
++    m_stage(0)
+ {
+     int videofd = channel->GetFd();
+     if (videofd >= 0)
+-        usingv4l2 = CardUtil::hasV4L2(videofd);
++    {
++        m_usingv4l2 = CardUtil::hasV4L2(videofd);
++        CardUtil::GetV4LInfo(videofd, m_card, m_driver, m_version);
++        VERBOSE(VB_RECORD, LOC + QString("card '%1' driver '%2' version '%3'")
++                .arg(m_card).arg(m_driver).arg(m_version));
++    }
++}
++
++bool AnalogSignalMonitor::handleHDPVR(int videofd)
++{
++    struct v4l2_encoder_cmd command;
++    struct pollfd polls;
++    int    idx;
++
++    if (m_stage == 0)
++    {
++        VERBOSE(VB_RECORD, LOC + "hd-pvr start encoding");
++        // Tell it to start encoding, then wait for it to actually feed us
++        // some data.
++        memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
++        command.cmd = V4L2_ENC_CMD_START;
++        if (ioctl(videofd, VIDIOC_ENCODER_CMD, &command) == 0)
++            m_stage = 1;
++        else
++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Start encoding failed" + ENO);
++    }
++
++    if (m_stage == 1)
++    {
++        VERBOSE(VB_RECORD, LOC + "hd-pvr wait for data");
++
++        polls.fd      = videofd;
++        polls.events  = POLLIN;
++        polls.revents = 0;
++
++        if (poll(&polls, 1, 1500) > 0)
++            m_stage = 2;
++        else
++        {
++            VERBOSE(VB_RECORD, LOC + "Poll timed-out.  Resetting");
++            memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
++            command.cmd = V4L2_ENC_CMD_STOP;
++            ioctl(videofd, VIDIOC_ENCODER_CMD, &command);
++            m_stage = 0;
++        }
++    }
++
++    if (m_stage == 2)
++    {
++        VERBOSE(VB_RECORD, LOC + "hd-pvr data ready.  Stop encoding");
++
++        command.cmd = V4L2_ENC_CMD_STOP;
++        if (ioctl(videofd, VIDIOC_ENCODER_CMD, &command) == 0)
++            m_stage = 3;
++    }
++
++    if (m_stage == 3)
++    {
++        struct v4l2_format vfmt;
++        memset(&vfmt, 0, sizeof(vfmt));
++        vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++            
++        VERBOSE(VB_RECORD, LOC + "hd-pvr waiting for valid resolution");
++        if ((ioctl(videofd, VIDIOC_G_FMT, &vfmt) == 0) && vfmt.fmt.pix.width)
++            m_stage = 4;
++    }
++
++    return (m_stage == 4);
+ }
+ 
+ void AnalogSignalMonitor::UpdateValues(void)
+@@ -33,19 +102,24 @@ void AnalogSignalMonitor::UpdateValues(v
+         return;
+ 
+     bool isLocked = false;
+-    if (usingv4l2)
++    if (m_usingv4l2)
+     {
+-        struct v4l2_tuner tuner;
+-        bzero(&tuner, sizeof(tuner));
+-
+-        if (ioctl(videofd, VIDIOC_G_TUNER, &tuner, 0) < 0)
+-        {
+-            VERBOSE(VB_IMPORTANT,
+-                    LOC_ERR + "Failed to probe signal (v4l2)" + ENO);
+-        }
++        if (m_driver == "hdpvr")
++            isLocked = handleHDPVR(videofd);
+         else
+         {
+-            isLocked = tuner.signal;
++            struct v4l2_tuner tuner;
++            bzero(&tuner, sizeof(tuner));
++
++            if (ioctl(videofd, VIDIOC_G_TUNER, &tuner, 0) < 0)
++            {
++                VERBOSE(VB_IMPORTANT,
++                        LOC_ERR + "Failed to probe signal (v4l2)" + ENO);
++            }
++            else
++            {
++                isLocked = tuner.signal;
++            }
+         }
+     }
+     else 
+Index: libs/libmythtv/analogsignalmonitor.h
+===================================================================
+--- libs/libmythtv/analogsignalmonitor.h.orig
++++ libs/libmythtv/analogsignalmonitor.h
+@@ -19,7 +19,13 @@ class AnalogSignalMonitor : public Signa
+     virtual void UpdateValues(void);
+ 
+   private:
+-    bool usingv4l2;
++    bool handleHDPVR(int videofd);
++
++    bool     m_usingv4l2;
++    QString  m_card;
++    QString  m_driver;
++    uint32_t m_version;
++    int      m_stage;
+ };
+ 
+ #endif // _ANALOG_SIGNAL_MONITOR_H_
+Index: libs/libmythtv/mpegrecorder.cpp
+===================================================================
+--- libs/libmythtv/mpegrecorder.cpp.orig
++++ libs/libmythtv/mpegrecorder.cpp
+@@ -1041,14 +1041,6 @@ void MpegRecorder::StartRecording(void)
+ 
+     if (driver == "hdpvr")
+     {
+-        if (curRecording->recgroup == "LiveTV")
+-        {
+-            // Don't bother checking resolution, always use best bitrate
+-            int maxbitrate = std::max(high_mpeg4peakbitrate,
+-                                      high_mpeg4avgbitrate);
+-            SetBitrate(high_mpeg4avgbitrate, maxbitrate, "LiveTV");
+-        }
+-
+         int progNum = 1;
+         MPEGStreamData *sd = new MPEGStreamData(progNum, true);
+         sd->SetRecordingType(_recording_type);
+@@ -1492,7 +1484,7 @@ bool MpegRecorder::StartEncoding(int fd)
+     memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
+     command.cmd = V4L2_ENC_CMD_START;
+ 
+-    if (driver == "hdpvr" && curRecording->recgroup != "LiveTV")
++    if (driver == "hdpvr")
+         HandleResolutionChanges();
+ 
+     VERBOSE(VB_RECORD, LOC + "StartEncoding");
+@@ -1615,64 +1607,6 @@ void MpegRecorder::HandleSingleProgramPM
+         DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i])));
+ }
+ 
+-/// After a resolution change, it can take the HD-PVR a few
+-/// seconds before it is usable again.
+-bool MpegRecorder::WaitFor_HDPVR(void)
+-{
+-    struct v4l2_encoder_cmd command;
+-    struct v4l2_format vfmt;
+-    struct pollfd polls;
+-    int    idx;
+-
+-    // Tell it to start encoding, then wait for it to actually feed us
+-    // some data.
+-    QMutexLocker locker(&start_stop_encoding_lock);
+-
+-    // Sleep any less than 1.5 seconds, and the HD-PVR will
+-    // return the old resolution, when the resolution is changing.
+-    usleep(1500 * 1000);
+-
+-    memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
+-    command.cmd = V4L2_ENC_CMD_START;
+-
+-    for (idx = 0; idx < 20; ++idx)
+-    {
+-        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0)
+-            break;
+-        usleep(100 * 1000);
+-    }
+-
+-    if (idx == 20)
+-        return false;
+-
+-    polls.fd      = readfd;
+-    polls.events  = POLLIN;
+-    polls.revents = 0;
+-
+-    if (poll(&polls, 1, 5000) <= 0)
+-        return false;
+-
+-    // HD-PVR should now be "ready"
+-    command.cmd = V4L2_ENC_CMD_STOP;
+-
+-    if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) < 0)
+-        return false;
+-
+-    memset(&vfmt, 0, sizeof(vfmt));
+-    vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+-
+-    for (idx = 0; idx < 20; ++idx)
+-    {
+-        if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt))
+-            return true;
+-        // Typically takes 0.9 seconds after a resolution change
+-        usleep(100 * 1000);
+-    }
+-
+-    VERBOSE(VB_RECORD, LOC + "WaitForHDPVR failed");
+-    return false;
+-}
+-
+ void MpegRecorder::SetBitrate(int bitrate, int maxbitrate,
+                               const QString & reason)
+ {
+@@ -1710,9 +1644,6 @@ void MpegRecorder::HandleResolutionChang
+     memset(&vfmt, 0, sizeof(vfmt));
+     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+             
+-    if (driver == "hdpvr")
+-        WaitFor_HDPVR();
+-
+     if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt))
+     {
+         VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2")
+Index: libs/libmythtv/mpegrecorder.h
+===================================================================
+--- libs/libmythtv/mpegrecorder.h.orig
++++ libs/libmythtv/mpegrecorder.h
+@@ -86,7 +86,6 @@ class MpegRecorder : public DTVRecorder,
+ 
+     void ResetForNewFile(void);
+ 
+-    bool WaitFor_HDPVR(void);
+     void SetBitrate(int bitrate, int maxbitrate, const QString & reason);
+     void HandleResolutionChanges(void);
+ 
+Index: libs/libmythtv/signalmonitor.h
+===================================================================
+--- libs/libmythtv/signalmonitor.h.orig
++++ libs/libmythtv/signalmonitor.h
+@@ -287,6 +287,7 @@ inline bool SignalMonitor::IsRequired(co
+     return (CardUtil::IsDVBCardType(cardtype) ||
+             (cardtype.toUpper() == "HDTV")      ||
+             (cardtype.toUpper() == "HDHOMERUN") ||
++            (cardtype.toUpper() == "HDPVR") ||
+             (cardtype.toUpper() == "FIREWIRE")  ||
+             (cardtype.toUpper() == "FREEBOX"));
+ }
+@@ -295,6 +296,7 @@ inline bool SignalMonitor::IsSupported(c
+ {
+     return (IsRequired(cardtype)        ||
+             (cardtype.toUpper() == "V4L") ||
++            (cardtype.toUpper() == "HDPVR") ||
+             (cardtype.toUpper() == "MPEG"));
+ }
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv/ringbuffer_reset_v2.diff b/abs/core-testing/mythtv/trunk/mythtv/ringbuffer_reset_v2.diff
new file mode 100644
index 0000000..7876a2e
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv/ringbuffer_reset_v2.diff
@@ -0,0 +1,91 @@
+Index: libs/libmythtv/recorderbase.cpp
+===================================================================
+--- libs/libmythtv/recorderbase.cpp	(revision 20635)
++++ libs/libmythtv/recorderbase.cpp	(working copy)
+@@ -241,6 +241,8 @@
+         rb_changed = true;
+ 
+         StartNewFile();
++
++        ResetStreamParser();
+     }
+     nextRingBufferLock.unlock();
+ 
+Index: libs/libmythtv/mpegrecorder.h
+===================================================================
+--- libs/libmythtv/mpegrecorder.h	(revision 20635)
++++ libs/libmythtv/mpegrecorder.h	(working copy)
+@@ -63,6 +63,9 @@
+     // ReaderPausedCB
+     virtual void ReaderPaused(int fd) { pauseWait.wakeAll(); }
+ 
++    // Reset stream parsers when necessary
++    virtual void ResetStreamParser(void);
++
+   private:
+     void SetIntOption(RecordingProfile *profile, const QString &name);
+     void SetStrOption(RecordingProfile *profile, const QString &name);
+Index: libs/libmythtv/recorderbase.h
+===================================================================
+--- libs/libmythtv/recorderbase.h	(revision 20635)
++++ libs/libmythtv/recorderbase.h	(working copy)
+@@ -212,6 +212,11 @@
+      */
+     virtual void CheckForRingBufferSwitch(void);
+ 
++    /** \brief Inherited method for the stream parser to be reset after
++               a ringbuffer change. Used mainly in mpegrecorder for H264Parser.
++     */
++    virtual void ResetStreamParser(void) { };
++
+     /** \brief Save the seektable to the DB
+      */
+     void SavePositionMap(bool force = false);
+Index: libs/libmythtv/mpegrecorder.cpp
+===================================================================
+--- libs/libmythtv/mpegrecorder.cpp	(revision 20635)
++++ libs/libmythtv/mpegrecorder.cpp	(working copy)
+@@ -1430,12 +1430,7 @@
+     {
+         VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause");
+ 
+-        if (driver == "hdpvr")
+-        {
+-            m_h264_parser.Reset();
+-            _wait_for_keyframe_option = true;
+-            _seen_sps = false;
+-        }
++        ResetStreamParser();
+ 
+         // Some drivers require streaming to be disabled before
+         // an input switch and other channel format setting.
+@@ -1500,12 +1495,7 @@
+ 
+     if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0)
+     {
+-        if (driver == "hdpvr")
+-        {
+-            m_h264_parser.Reset();
+-            _wait_for_keyframe_option = true;
+-            _seen_sps = false;
+-        }
++        ResetStreamParser();
+ 
+         VERBOSE(VB_RECORD, LOC + "Encoding started");
+         return true;
+@@ -1762,3 +1752,15 @@
+         SetBitrate(bitrate, maxbitrate, "New");
+     }
+ }
++
++void MpegRecorder::ResetStreamParser(void)               
++{        
++    if (driver == "hdpvr")      
++    {
++        m_h264_parser.Reset();
++        _wait_for_keyframe_option = true;
++        _seen_sps = false;
++    }
++
++    RecorderBase::ResetStreamParser();
++}
diff --git a/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD b/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
index 9611b87..43a5699 100644
--- a/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythvideo-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Video playback and browsing plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythvideo || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD b/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
index 675418c..d1f888f 100644
--- a/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythweather-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Weather checking plugin for MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythweather || return 1
diff --git a/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD b/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
index 11d02c0..9a7f892 100644
--- a/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythweb-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Web interface for MythTV's backend"
 url="http://www.mythtv.org"
@@ -21,7 +21,7 @@ DOCROOT=/data/srv/httpd/htdocs/mythweb
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
diff --git a/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD b/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
index c01bef8..4403524 100644
--- a/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
@@ -1,5 +1,5 @@
 pkgname=mythzoneminder-svn
-pkgver=20684
+pkgver=20713
 pkgrel=1
 pkgdesc="Integrates ZoneMinder into MythTV"
 url="http://www.mythtv.org"
@@ -19,7 +19,7 @@ _svnmod=mythplugins
 build() {
 
 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
-#	svn co $_svntrunk --config-dir ./ $_svnmod
+	svn revert -R $_svnmod
 
 	cd $startdir/src/$_svnmod
 
@@ -35,6 +35,9 @@ build() {
 	[ "$CARCH" = "i686"   ] && ARCH="i686"
 	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
 
+	# clean up
+	make distclean
+
 	# configure
 	./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
 	--enable-mythzoneminder || return 1
-- 
cgit v0.12


From dd91ca69386ad656407707148bb9242cf861b0a1 Mon Sep 17 00:00:00 2001
From: Nathan Harris <nharris@eoimaging.com>
Date: Wed, 17 Jun 2009 08:38:53 -0400
Subject: xbmc-svn: updated to svn 20948

---
 abs/extra-testing/community/xbmc-svn/CHANGELOG     | 30 +++++++++
 abs/extra-testing/community/xbmc-svn/PKGBUILD      | 72 +++++++++++++---------
 .../community/xbmc-svn/libcurl-not-in-lib64.patch  |  2 +-
 .../xbmc-svn/libfaad2-enable-AC_PROG_CXX.patch     | 13 ----
 .../community/xbmc-svn/xbmc-safe-fullscreen.patch  | 16 ++++-
 .../community/xbmc-svn/xbmc-svn.install            |  4 ++
 6 files changed, 92 insertions(+), 45 deletions(-)
 delete mode 100644 abs/extra-testing/community/xbmc-svn/libfaad2-enable-AC_PROG_CXX.patch

diff --git a/abs/extra-testing/community/xbmc-svn/CHANGELOG b/abs/extra-testing/community/xbmc-svn/CHANGELOG
index 170990b..258e5ef 100644
--- a/abs/extra-testing/community/xbmc-svn/CHANGELOG
+++ b/abs/extra-testing/community/xbmc-svn/CHANGELOG
@@ -1,5 +1,35 @@
 xbmc-svn Change log:
 --------------------
+3rd June 2009
+20896   haggy: enabled external libs for every lib supported despite python and ffmpeg
+               enabling external python breaks python support in xbmc due to Arch's python
+               compiled with UCS2 support whereas xbmc expects UCS4. Enabling external ffmpeg
+               disables VDPAU and we don't want that for sure.
+
+               IMPORTANT NOTE: If compilation breaks at configure step with some message about
+               not being able to compute the size of int or size_t, try running makepkg as root
+               with 'sudo makepkg --asroot'. This is a known issue and happens only on systems
+               linked to nvidia's libgl which causes binaries to segfault within a fakeroot
+               environment. pacman 3.3 will fix this by splitting configure and installation steps.
+
+1st June 2009
+20818   haggy: this is the last revision before external-libs-support got patched
+               in. Unfortunately this will not compile with fakeroot. waiting for
+               pacman 3.3 which can split up configure and make install steps.
+
+30th May 2009
+20793   haggy: removed gcc44-fixes.patch - got merged into svn
+
+29th May 2009
+20755   haggy: pushed rev as requested
+
+27th May 2009
+20705   haggy: added a patch which fixed compilation with GCC 4.4.
+
+21th May 2009
+20509   haggy: xbmc got updates on goom due to the jaunty build system update. i
+               i wiped all goom specific hacks from the PKGBUILD and it compiled
+               fine, so let's see what you guys achieve.
 
 19th May 2009
 20449-1 richy: 1. Removed the autoreconf line as it didn't seem to help
diff --git a/abs/extra-testing/community/xbmc-svn/PKGBUILD b/abs/extra-testing/community/xbmc-svn/PKGBUILD
index e583600..57efdca 100644
--- a/abs/extra-testing/community/xbmc-svn/PKGBUILD
+++ b/abs/extra-testing/community/xbmc-svn/PKGBUILD
@@ -5,7 +5,7 @@
 # for his xbmc-vdpau-vdr PKGBUILD at https://archvdr.svn.sourceforge.net/svnroot/archvdr/trunk/archvdr/xbmc-vdpau-vdr/PKGBUILD
 
 pkgname=xbmc-svn
-pkgver=20449
+pkgver=20948
 pkgrel=1
 pkgdesc="XBMC Media Center from SVN (linuxport branch)"
 provides=('xbmc')
@@ -13,10 +13,12 @@ conflicts=('xbmc' 'xbmc-smoothvideo' 'xbmc-vdpau')
 arch=('i686' 'x86_64')
 url="http://xbmc.org"
 license=('GPL' 'LGPL')
-depends=('alsa-lib' 'curl' 'enca' 'faac' 'freetype2' 'fribidi' 'gawk' 'glew' \
-         'hal' 'jasper' 'libgl' 'libjpeg>=6b-5' 'libmad' 'libmysqlclient' \
-         'libxinerama' 'libxrandr' 'lzo2' 'sdl_image' 'sdl_mixer' 'sqlite3' \
-         'tre' 'unzip' 'libcdio' 'libsamplerate' 'python')
+depends=('alsa-lib' 'curl' 'enca' 'faac' 'freetype2' 'fribidi' 'gawk' 'glew'
+         'hal' 'jasper' 'libgl' 'libjpeg>=6b-5' 'libmad' 'libmysqlclient'
+         'libxinerama' 'libxrandr' 'lzo2' 'sdl_image' 'sdl_mixer' 'sqlite3'
+         'tre' 'unzip' 'libcdio' 'libsamplerate' 'python' 'avahi' 'libmad' 
+         'a52dec' 'libdca' 'faad2' 'libmpeg2' 'libvorbis' 'libogg' 
+         'libmpcdec' 'flac' 'wavpack' 'xorg-utils')
 makedepends=('subversion' 'autoconf' 'automake' 'boost' 'cmake' 'gcc' 'gperf' 
              'libtool>=2.2.6a-1' 'make' 'nasm' 'patch' 'pkgconfig' 'zip' 'flex' 'bison')
 optdepends=('lirc: remote controller support'
@@ -24,17 +26,14 @@ optdepends=('lirc: remote controller support'
             'smbclient: access windows shares'
             'unrar: access compressed files without unpacking them')
 install=("${pkgname}.install")
-source=('libcurl-not-in-lib64.patch' \
-        'libfaad2-enable-AC_PROG_CXX.patch' \
+source=('libcurl-not-in-lib64.patch'
         'xbmc-safe-fullscreen.patch'
 	'Lircmap.xml')
-noextract=('libcurl-not-in-lib64.patch' \
-           'libfaad2-enable-AC_PROG_CXX.patch' \
-           'xbmc-safe-fullscreen.patch')
-
-md5sums=('96636ee964e37b78ca62235eb10d29c1'
-         '6864778d6adc3ccc79130c294f2fffd9'
-         'c4d53522773846d8670884cc38f94aa0'
+noextract=('libcurl-not-in-lib64.patch'
+           'xbmc-safe-fullscreen.patch'
+	   'Lircmap.xml')
+md5sums=('ac1244a5b4aad0e7d59e86a0d318df1b'
+         '809c684287b68621d3b19923bb57adfe'
 	 '3f93186f1ea4aad73011d00754c7265a')
 
 options=(!makeflags)
@@ -60,36 +59,48 @@ build() {
 
     # Experimental safe fullscreen patch from the forums (by motd2k)
     msg "Patching with xbmc-safe-fullscreen.patch"
-    patch --quiet -p0 < "$srcdir/xbmc-safe-fullscreen.patch" || return 1
+    patch -p0 < "$srcdir/xbmc-safe-fullscreen.patch" || return 1
 
     # Arch's libcurl lives in /usr/lib, not /usr/lib64 - fix the path:
     msg "Patching with libcurl-not-in-lib64.patch" 
-    patch --quiet -p0 < "$srcdir/libcurl-not-in-lib64.patch" || return 1
-
-    # libfaad2 complains about a missing AC_PROG_CXX - add it and bootstrap:
-    msg "Patching with libfaad2-enable-AC_PROG_CXX.patch" 
-    patch --quiet -p0 < "$srcdir/libfaad2-enable-AC_PROG_CXX.patch" || return 1
-    autoreconf -vif xbmc/cores/dvdplayer/Codecs/libfaad2
-
-    # libass needs a bootstrap due to newer autotools in Arch Linux
-    autoreconf -vif xbmc/lib/libass
-
-    # Another autotools mismatch between Arch and Ubuntu (xbmc-linuxport is developed against Ubuntu)
-    autoreconf -vif "$srcdir/$_svnmod/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss"
+    patch -p0 < "$srcdir/libcurl-not-in-lib64.patch" || return 1
 
     # Goom also needs a fixup due to newer autotools
     cd "$srcdir/$_svnmod/xbmc/visualizations/Goom/goom2k4-0"
     aclocal
     libtoolize --copy --force
     ./autogen.sh --enable-static --with-pic
-    
+
     # Configure XBMC
+    #
+    # Note on external-libs:
+    #   - We cannot use external python because Arch's python was built with
+    #     UCS2 unicode support, whereas xbmc expects UCS4 support
+    #   - We cannot use external ffmpeg as we would loose VDPAU functionality
+    #     because Arch's ffmpeg package does not support VDPAU
+    #   - We don't want to rely on AUR packages, so we also don't use libass
+    #     as long as it's in AUR
+    msg "Configuring XBMC" 
     cd "$srcdir/$_svnmod"
     make distclean
     ./configure --prefix=${_prefix} \
+                --enable-external-libmad \
+                --enable-external-liba52 \
+                --enable-external-libdts \
+                --enable-external-libfaad \
+                --enable-external-libmpeg2 \
+                --enable-external-libvorbis \
+                --enable-external-libogg \
+                --enable-external-libmpcdec \
+                --enable-external-libflac \
+                --enable-external-libwavpack \
+                --disable-external-libass \
+                --disable-external-python \
+                --disable-external-ffmpeg \
                 --disable-debug || return 1
     
     # Fix false negative detections of realloc that happens some times
+    msg "Fixing false negative detections of realloc" 
     if grep -q 'HAVE_REALLOC 0' config.h; then
       sed -e 's|#define HAVE_REALLOC 0|#define HAVE_REALLOC 1|' \
           -e 's|#define realloc rpl_realloc|/* #define realloc rpl_realloc */|' \
@@ -97,11 +108,14 @@ build() {
     fi
 
     # XBMCTex will segfault on systems with nvidia installed if linked to OpenGL
+    msg "Fixing XBMCTex on systems using the nvidia driver blob" 
     sed -e 's/-lGLU -lGLEW -lGL//' \
         -i ${srcdir}/$_svnmod/tools/XBMCTex/Makefile
 
     # Now (finally) build
+    msg "Running make" 
     make || return 1
+    msg "Running make install" 
     make prefix=${pkgdir}${_prefix} install || return 1
 
     # Install 
@@ -127,5 +141,5 @@ build() {
     done
 
     # Use custom Lircmap to support StreamZap remote
-    cp $srcdir/Lircmap.xml ${pkgdir}${_prefix}/share/xbmc/system/Lircmap.xml
+    cp ${srcdir}/Lircmap.xml ${pkgdir}${_prefix}/share/xbmc/system/Lircmap.xml
 }
diff --git a/abs/extra-testing/community/xbmc-svn/libcurl-not-in-lib64.patch b/abs/extra-testing/community/xbmc-svn/libcurl-not-in-lib64.patch
index b89db5a..54402ab 100644
--- a/abs/extra-testing/community/xbmc-svn/libcurl-not-in-lib64.patch
+++ b/abs/extra-testing/community/xbmc-svn/libcurl-not-in-lib64.patch
@@ -2,7 +2,7 @@ Index: Makefile.include.in
 ===================================================================
 --- Makefile.include.in	(revision 20149)
 +++ Makefile.include.in	(working copy)
-@@ -24,7 +24,7 @@
+@@ -30,7 +30,7 @@
  
  ifeq (linux,$(findstring linux, $(ARCH)))
  ifeq ($(ARCH), x86_64-linux)
diff --git a/abs/extra-testing/community/xbmc-svn/libfaad2-enable-AC_PROG_CXX.patch b/abs/extra-testing/community/xbmc-svn/libfaad2-enable-AC_PROG_CXX.patch
deleted file mode 100644
index 89d7497..0000000
--- a/abs/extra-testing/community/xbmc-svn/libfaad2-enable-AC_PROG_CXX.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: xbmc/cores/dvdplayer/Codecs/libfaad2/configure.in
-===================================================================
---- xbmc/cores/dvdplayer/Codecs/libfaad2/configure.in	(revision 19486)
-+++ xbmc/cores/dvdplayer/Codecs/libfaad2/configure.in	(working copy)
-@@ -18,7 +18,7 @@
- AC_PROG_CC
- AC_PROG_CPP
- dnl disable for mpeg4ip plugin
--dnl AC_PROG_CXX
-+AC_PROG_CXX
- AC_PROG_INSTALL
- AC_PROG_LN_S
- AC_PROG_MAKE_SET
diff --git a/abs/extra-testing/community/xbmc-svn/xbmc-safe-fullscreen.patch b/abs/extra-testing/community/xbmc-svn/xbmc-safe-fullscreen.patch
index d112e52..2da0c91 100644
--- a/abs/extra-testing/community/xbmc-svn/xbmc-safe-fullscreen.patch
+++ b/abs/extra-testing/community/xbmc-svn/xbmc-safe-fullscreen.patch
@@ -2,7 +2,7 @@ Index: xbmc/Application.cpp
 ===================================================================
 --- xbmc/Application.cpp	(revision 20059)
 +++ xbmc/Application.cpp	(working copy)
-@@ -873,6 +873,8 @@
+@@ -877,6 +877,8 @@
  #endif
  
    // set GUI res and force the clear of the screen
@@ -11,7 +11,7 @@ Index: xbmc/Application.cpp
    g_graphicsContext.SetVideoResolution(g_guiSettings.m_LookAndFeelResolution, TRUE, true);
  
  #ifdef _WIN32PC
-@@ -949,6 +951,9 @@
+@@ -953,6 +955,9 @@
    time(&seconds);
    srand((unsigned int)seconds);
  
@@ -21,3 +21,15 @@ Index: xbmc/Application.cpp
    return CXBApplicationEx::Create(hWnd);
  }
  
+Index: GUISettings.cpp
+===================================================================
+--- xbmc/GUISettings.cpp	(revision 20824)
++++ xbmc/GUISettings.cpp	(working copy)
+@@ -651,6 +651,7 @@
+ #else
+   AddInt(6, "videoscreen.vsync", 13105, DEFAULT_VSYNC, VSYNC_DISABLED, 1, VSYNC_DRIVER, SPIN_CONTROL_TEXT);
+ #endif
++  AddBool(7, "videoscreen.safefull", 13121, false);
+   AddCategory(7, "filelists", 14018);
+   AddBool(1, "filelists.hideparentdiritems", 13306, false);
+   AddBool(2, "filelists.hideextensions", 497, false);
diff --git a/abs/extra-testing/community/xbmc-svn/xbmc-svn.install b/abs/extra-testing/community/xbmc-svn/xbmc-svn.install
index 9316bc8..acf409c 100644
--- a/abs/extra-testing/community/xbmc-svn/xbmc-svn.install
+++ b/abs/extra-testing/community/xbmc-svn/xbmc-svn.install
@@ -3,6 +3,10 @@ post_install() {
   echo ">> so that your display depth is at least 24-bit. Eg: change "
   echo ">> \"DefaultDepth 16\" under the \"Screen\" section so it says 24 instead"
   echo ">> of 16."
+  echo ">> If you have problems or suggestions for this PKGBUILD, have a look at its"
+  echo ">> dedicated forum thread: http://bbs.archlinux.org/viewtopic.php?pid=559107"
+  echo ">> or the wiki: http://xbmc.org/wiki/?title=XBMC_on_Arch_Linux_(Unofficial)"
+  echo
   /bin/true
 }
 
-- 
cgit v0.12

