summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/mythtv/stable
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core-testing/mythtv/stable')
-rw-r--r--abs/core-testing/mythtv/stable/mythtv/PKGBUILD7
-rw-r--r--abs/core-testing/mythtv/stable/mythtv/mpegpspatch66
2 files changed, 71 insertions, 2 deletions
diff --git a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
index dc86f28..b638c61 100644
--- a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD
@@ -1,13 +1,13 @@
pkgname=mythtv
pkgver=0.21
-pkgrel=58
+pkgrel=59
pkgdesc="A Homebrew PVR project"
arch=('i686' 'x86_64')
depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \
'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883')
backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt usr/share/mythtv/is.xmlusr/share/mythtv/media_settings.xml )
source=(ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2 \
- mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch smolt_jump.patch pretty gnome_screensaver.patch)
+ mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch smolt_jump.patch pretty gnome_screensaver.patch mpegpspatch)
#md5sums=('e316ed18d7ac837cf8c4af54b1478793' '7ef6de58240e7aad389a0b13d91b1cf6'\
# 'a0ecb7f476cb71c0c1ac90d349fc7695')
@@ -30,6 +30,9 @@ build() {
patch -p0 < ../smolt_jump.patch
# patch -p0 < ../2.6.28_dvb_api_version.diff
patch -p0 < ../gnome_screensaver.patch
+ cd libs/libavformat
+ patch -p0 < $startdir/src/mpegpspatch
+ cd -
. /etc/profile.d/qt3.sh
# use QT3 qmake
diff --git a/abs/core-testing/mythtv/stable/mythtv/mpegpspatch b/abs/core-testing/mythtv/stable/mythtv/mpegpspatch
new file mode 100644
index 0000000..eed08eb
--- /dev/null
+++ b/abs/core-testing/mythtv/stable/mythtv/mpegpspatch
@@ -0,0 +1,66 @@
+--- orig_mpeg.c 2009-03-23 11:26:22.000000000 -0700
++++ mpeg.c 2009-03-23 11:28:09.000000000 -0700
+@@ -66,35 +66,40 @@
+
+ static int mpegps_probe(AVProbeData *p)
+ {
++ uint32_t code= -1;
++ int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0;
+ int i;
+- int size= FFMIN(2048, p->buf_size);
+- uint32_t code=0xFF;
++ int score=0;
+
+- /* we search the first start code. If it is a packet start code,
+- then we decide it is mpeg ps. We do not send highest value to
+- give a chance to mpegts */
+- /* NOTE: the search range was restricted to avoid too many false
+- detections */
+-
+- for (i = 0; i < size; i++) {
+- code = (code << 8) | p->buf[i];
++ for(i=0; i<p->buf_size; i++){
++ code = (code<<8) + p->buf[i];
+ if ((code & 0xffffff00) == 0x100) {
+- if (code == PACK_START_CODE ||
+- code == SYSTEM_HEADER_START_CODE ||
+- (code >= 0x1e0 && code <= 0x1ef) ||
+- (code >= 0x1c0 && code <= 0x1df) ||
+- code == PRIVATE_STREAM_2 ||
+- code == PROGRAM_STREAM_MAP ||
+- code == PRIVATE_STREAM_1 ||
+- code == PADDING_STREAM ||
+- code >= 0x100 && code <= 0x1b0)
+- return AVPROBE_SCORE_MAX - 2;
+- else
+- return 0;
++ int pes= check_pes(p->buf+i, p->buf+p->buf_size);
++
++ if(code == SYSTEM_HEADER_START_CODE) sys++;
++ else if(code == PRIVATE_STREAM_1) priv1++;
++ else if(code == PACK_START_CODE) pspack++;
++ else if((code & 0xf0) == VIDEO_ID && pes) vid++;
++ else if((code & 0xe0) == AUDIO_ID && pes) audio++;
++
++ else if((code & 0xf0) == VIDEO_ID && !pes) invalid++;
++ else if((code & 0xe0) == AUDIO_ID && !pes) invalid++;
+ }
+ }
+
+- return 0;
++ if(vid+audio > invalid) /* invalid VDR files nd short PES streams */
++ score= AVPROBE_SCORE_MAX/4;
++
++//av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d len:%d\n", sys, priv1, pspack,vid, audio, p->buf_size);
++ if(sys>invalid && sys*9 <= pspack*10)
++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
++ if(priv1 + vid + audio > invalid && (priv1+vid+audio)*9 <= pspack*10)
++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
++ if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048) /* PES stream */
++ return AVPROBE_SCORE_MAX/2+2;
++
++ //02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1
++ return score;
+ }
+
+ typedef struct MpegDemuxContext {