diff options
Diffstat (limited to 'abs/core-testing/mythtv/trunk/mythtv-svn')
27 files changed, 0 insertions, 4289 deletions
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch deleted file mode 100644 index 5bb713f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch +++ /dev/null @@ -1,219 +0,0 @@ -Index: libs/libmythtv/DeviceReadBuffer.h -=================================================================== ---- libs/libmythtv/DeviceReadBuffer.h (revision 18515) -+++ libs/libmythtv/DeviceReadBuffer.h (working copy) -@@ -59,7 +59,7 @@ - void IncrReadPointer(uint len); - - bool HandlePausing(void); -- bool Poll(void) const; -+ bool Poll(void); - uint WaitForUnused(uint bytes_needed) const; - uint WaitForUsed (uint bytes_needed) const; - -Index: libs/libmythtv/DeviceReadBuffer.cpp -=================================================================== ---- libs/libmythtv/DeviceReadBuffer.cpp (revision 18515) -+++ libs/libmythtv/DeviceReadBuffer.cpp (working copy) -@@ -90,9 +90,14 @@ - - void DeviceReadBuffer::Start(void) - { -- lock.lock(); -- bool was_running = running; -- lock.unlock(); -+ bool was_running; -+ -+ { -+ QMutexLocker locker(&lock); -+ was_running = running; -+ error = false; -+ } -+ - if (was_running) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running."); -@@ -104,6 +109,8 @@ - { - VERBOSE(VB_IMPORTANT, - LOC_ERR + QString("Start(): pthread_create failed.") + ENO); -+ -+ QMutexLocker locker(&lock); - error = true; - } - } -@@ -118,21 +125,25 @@ - used = 0; - readPtr = buffer; - writePtr = buffer; -+ -+ error = false; - } - - void DeviceReadBuffer::Stop(void) - { - bool was_running = IsRunning(); -- lock.lock(); -- run = false; -- lock.unlock(); - - if (!was_running) - { -- VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running."); -+ VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running."); - return; - } - -+ { -+ QMutexLocker locker(&lock); -+ run = false; -+ } -+ - pthread_join(thread, NULL); - } - -@@ -229,10 +240,11 @@ - { - uint errcnt = 0; - -- lock.lock(); -- run = true; -- running = true; -- lock.unlock(); -+ { -+ QMutexLocker locker(&lock); -+ run = true; -+ running = true; -+ } - - while (run) - { -@@ -248,6 +260,15 @@ - if (using_poll && !Poll()) - continue; - -+ { -+ QMutexLocker locker(&lock); -+ if (error) -+ { -+ VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state"); -+ break; -+ } -+ } -+ - // Limit read size for faster return from read - size_t read_size = - min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE)); -@@ -268,9 +289,10 @@ - } - } - -- lock.lock(); -- running = false; -- lock.unlock(); -+ { -+ QMutexLocker locker(&lock); -+ running = false; -+ } - } - - bool DeviceReadBuffer::HandlePausing(void) -@@ -293,7 +315,7 @@ - return true; - } - --bool DeviceReadBuffer::Poll(void) const -+bool DeviceReadBuffer::Poll(void) - { - #ifdef USING_MINGW - #warning mingw DeviceReadBuffer::Poll -@@ -302,31 +324,53 @@ - return false; - #else - bool retval = true; -- while (true) -+ uint timeout_cnt = 0; -+ -+ for (;;) - { - struct pollfd polls; - polls.fd = _stream_fd; - polls.events = POLLIN; - polls.revents = 0; - -- int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/); -- if (IsPauseRequested() || !IsOpen() || !run) -+ int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/); -+ -+ if (polls.revents & (POLLERR | POLLHUP | POLLNVAL)) - { -+ VERBOSE(VB_IMPORTANT, LOC + "poll error"); -+ error = true; -+ return true; -+ } -+ -+ if (!run || !IsOpen() || IsPauseRequested()) -+ { - retval = false; - break; // are we supposed to pause, stop, etc. - } - - if (ret > 0) - break; // we have data to read :) -- if ((-1 == ret) && (EOVERFLOW == errno)) -- break; // we have an error to handle -- -- if ((-1 == ret) && ((EAGAIN == errno) || (EINTR == errno))) -- continue; // errors that tell you to try again -- if (ret == 0) -- continue; // timed out, try again -- -- usleep(2500); -+ if (ret < 0) -+ { -+ if ((EOVERFLOW == errno)) -+ break; // we have an error to handle -+ if ((EAGAIN == errno) || (EINTR == errno)) -+ continue; // errors that tell you to try again -+ usleep(2500); -+ } -+ else // ret == 0 -+ { -+ if (++timeout_cnt > 9) -+ { -+ VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up"); -+ QMutexLocker locker(&lock); -+ error = true; -+ return true; -+ } -+ if (timeout_cnt % 2) -+ VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)") -+ .arg(timeout_cnt)); -+ } - } - return retval; - #endif //!USING_MINGW -@@ -360,9 +404,9 @@ - - if (++errcnt > 5) - { -- lock.lock(); -+ QMutexLocker locker(&lock); -+ VERBOSE(VB_RECORD, LOC + "Too many errors."); - error = true; -- lock.unlock(); - return false; - } - -@@ -376,10 +420,8 @@ - VERBOSE(VB_IMPORTANT, LOC + - QString("End-Of-File? fd(%1)").arg(_stream_fd)); - -- lock.lock(); -+ QMutexLocker locker(&lock); - eof = true; -- lock.unlock(); -- - return false; - } - usleep(500); diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD deleted file mode 100755 index b5dc31d..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD +++ /dev/null @@ -1,78 +0,0 @@ -pkgname=mythtv-svn -pkgver=19295 -pkgrel=1 -pkgdesc="A personal video recorder for Linux" -url="http://www.mythtv.org" -license="GPL" -depends=('lame' 'libmysqlclient' 'alsa-lib' 'wget' 'qt' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883') -makedepends=('subversion') -conflicts=(mythtv) -replaces=() -backup=() -options=(!strip) -MAKEFLAGS="-j6" -install='mythtv.install' - -patchs=('DeviceReadBuffer-polltimeout.2.patch' 'hdpvr-v4lchannel-tweak.patch' 'mpegrecorder-hdpvr-v1.1.patch' 'mythcommflag-avidemux.2.patch') -source=('mythbackend' 'myth.sh' 'smolt_jump.patch' 'svn_main_menu_popup.patch' `echo ${patchs[@]:0}` ) -arch=('i686') -md5sums=() - - - -_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv -_svnmod=mythtv - -build() { - - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythtv - echo "--------------------------applying patches----------------------------------------------------" - patch -Np0 -i $startdir/src/smolt_jump.patch #|| return 1 - patch -Np0 -i $startdir/src/svn_main_menu_popup.patch #||return 1 - - for i in `echo ${patchs[@]:0} ` - do - echo applying $i - echo "------------" - patch -Np0 -i ${startdir}/src/$i #|| return 1 - done - echo "--------------------------done applying patches----------------------------------------------------" - sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro - make distclean - ./configure --prefix=/usr --enable-xvmc --enable-xvmc-pro --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr - . /etc/profile - make - make INSTALL_ROOT=$startdir/pkg install - - #Patch the xml LinHES style - cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv - cd $startdir/pkg/usr/share/mythtv - patch -p0 < $startdir/menu-xml/mainmenu.xml.patch - patch -p0 < $startdir/menu-xml/optical_menu.xml.patch - patch -p0 < $startdir/menu-xml/library.xml.patch - - # mkdir -p $startdir/pkg/usr/share/mythtv/contrib - # mkdir -p $startdir/pkg/etc/rc.d - # mkdir -p $startdir/pkg/var/log/mythtv - # mkdir -p $startdir/pkg/etc/profile.d - # install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/ - - # install contrib - # mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1 - # cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib - # echo "-release-fixes" > $startdir/pkg/usr/local/share/mythtv/.releasetype - # install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/ - - - # mkdir -p $startdir/pkg/usr/lib/ - # mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5 - # cd $startdir/src/mythtv/contrib - # gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394 - # install -m0755 firewire_tester $startdir/pkg/usr/local/bin/firewire_tester - #install -m0755 $startdir/pkg/usr/local/share/mythtv/contrib/optimize_mythdb.pl $startdir/pkg/usr/local/bin/optimize_mythdb.pl - # cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl - # install -m0755 $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl $startdir/pkg/usr/local/bin/myth.find_orphans.pl - - -} diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch deleted file mode 100644 index 8796eb4..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- mythmusic/mythmusic/aacdecoder.cpp.orig 2008-11-19 12:51:48.000000000 -0500 -+++ mythmusic/mythmusic/aacdecoder.cpp 2008-11-19 12:52:42.000000000 -0500 -@@ -17,6 +17,9 @@ - #define FAAD_MODIFIED - #endif - -+// LinHES need this undefined -+#undef FAAD_MODIFIED -+ - // ANSI C headers - #include <cstdlib> - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch deleted file mode 100644 index 3535310..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch +++ /dev/null @@ -1,139 +0,0 @@ -Index: libs/libmythtv/v4lchannel.h -=================================================================== ---- libs/libmythtv/v4lchannel.h (revision 18874) -+++ libs/libmythtv/v4lchannel.h (working copy) -@@ -103,6 +103,8 @@ - VidModV4L2 videomode_v4l2; ///< Current video mode if 'usingv4l2' is true - - int defaultFreqTable; -+ int prev_inputNumV4L; -+ v4l2_std_id prev_vid_mode; - }; - - #endif -Index: libs/libmythtv/v4lchannel.cpp -=================================================================== ---- libs/libmythtv/v4lchannel.cpp (revision 18874) -+++ libs/libmythtv/v4lchannel.cpp (working copy) -@@ -40,7 +40,8 @@ - device_name(QString::null), driver_name(QString::null), - curList(NULL), totalChannels(0), - currentFormat(""), is_dtv(false), -- usingv4l2(false), defaultFreqTable(1) -+ usingv4l2(false), defaultFreqTable(1), -+ prev_inputNumV4L(-1), prev_vid_mode(-1) - { - } - -@@ -795,62 +796,75 @@ - { - VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)"); - -- int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ int ioctlval; -+ bool streamingDisabled = false; -+ int streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -- // ConvertX (wis-go7007) requires streaming to be disabled -- // before an input switch, do this if initial switch failed. -- bool streamingDisabled = false; -- int streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if ((ioctlval < 0) && (errno == EBUSY)) -+ if (prev_inputNumV4L != inputNumV4L) - { -- ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); -+ ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ -+ // ConvertX (wis-go7007) requires streaming to be disabled -+ // before an input switch, do this if initial switch failed. -+ if ((ioctlval < 0) && (errno == EBUSY)) -+ { -+ ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); -+ if (ioctlval < 0) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -+ "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); -+ -+ ok = false; -+ ioctlval = 0; -+ } -+ else -+ { -+ streamingDisabled = true; -+ -+ // Resend the input switch ioctl. -+ ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ } -+ } -+ - if (ioctlval < 0) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); -+ "\n\t\t\twhile setting input (v4l v2)" + ENO); - - ok = false; -- ioctlval = 0; - } -- else -- { -- streamingDisabled = true; - -- // Resend the input switch ioctl. -- ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -- } -+ prev_inputNumV4L = inputNumV4L; - } - -- if (ioctlval < 0) -- { -- VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile setting input (v4l v2)" + ENO); -- -- ok = false; -- } -- - v4l2_std_id vid_mode = format_to_mode(newFmt, 2); -- ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); -- if (ioctlval < 0) -- { -- VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile setting format (v4l v2)" + ENO); - -- ok = false; -- } -- -- // ConvertX (wis-go7007) requires streaming to be disabled -- // before an input switch, here we try to re-enable streaming. -- if (streamingDisabled) -+ if (prev_vid_mode != vid_mode) - { -- ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); -+ ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); - if (ioctlval < 0) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO); -+ "\n\t\t\twhile setting format (v4l v2)" + ENO); - - ok = false; - } -+ -+ // ConvertX (wis-go7007) requires streaming to be disabled -+ // before an input switch, here we try to re-enable streaming. -+ if (streamingDisabled) -+ { -+ ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); -+ if (ioctlval < 0) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -+ "\n\t\t\twhile reenabling streaming (v4l v2)" + -+ ENO); -+ -+ ok = false; -+ } -+ } -+ prev_vid_mode = vid_mode; - } - } - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml deleted file mode 100644 index f257920..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml +++ /dev/null @@ -1,87 +0,0 @@ -<mythmenu name="HOST_SETTINGS"> - - <button> - <type>MV_NETWORK_SETUP_MENU</type> - <text>Network Settings</text> - <action>EXEC mythinstall -s network </action> - </button> - - <button> - <type>MV_SYSTEM_SETUP_MENU</type> - <text>System type</text> - <action>EXEC mythinstall -s hostype </action> - </button> - - <button> - <type>MV_MISC_SETUP_MENU</type> - <text>Misc Settings</text> - <action>EXEC mythinstall -s misc </action> - </button> - - <button> - <type>MV_SOFTWARE_MENU</type> - <text>Software</text> - <action>EXEC mythinstall -s plugins </action> - </button> - - <button> - <type>MV_SHUTDOWN_SETUP_MENU</type> - <text>Shutdown settings</text> - <action>EXEC mythinstall -s sleep </action> - </button> - - -<button> - <type>MV_ADVANCED_X_SETUP_MENU</type> - <text>Display</text> - <action>EXEC mythinstall -s advancedX</action> -</button> - -<button> - <type>MV_ADVANCED_SETUP_MENU</type> - <text>Advanced settings</text> - <action>EXEC mythinstall -s advanced</action> -</button> - - -<button> - <type>MV_AUDIO_SETUP_MENU</type> - <text>Audio settings</text> - <action>EXEC mythinstall -s sound </action> -</button> - - -<button> - <type>MV_ACCESS_SETUP_MENU</type> - <text>Access</text> - <action>EXEC mythinstall -s accesscontrol </action> -</button> - -<button> - <type>MV_USER_SETUP_MENU</type> - <text>Password </text> - <action>EXEC mythinstall -s user </action> -</button> - -<button> - <type>MV_WEBACCESS_SETUP_MENU</type> - <text>Web security</text> - <action>EXEC mythinstall -s webuser </action> -</button> - - - - - <!-- - <button> - <type>SETUP_MENU</type> - <text>Settings profile manager</text> - <action>EXEC mythinstall -t </action> - - </button> - --> - - - - -</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml deleted file mode 100644 index 65935cf..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml +++ /dev/null @@ -1,33 +0,0 @@ -<mythmenu name="Internet Steams"> - <button> - <type>MOVIETIMES</type> - <text>Apple Trailers</text> - <action>MENU appletrailer.xml</action> - </button> - - <button> - <type>STREAM</type> - <text>MythStream</text> - <action>PLUGIN mythstream</action> - <depends>mythstream</depends> - </button> - - <button> - <type>STREAM</type> - <text>Miro Player</text> - <action>EXEC /usr/bin/democracyplayer</action> - </button> - - <button> - <type>KnoppMyth</type> - <text>Sirius Satellite Radio</text> - <action>MENU siriusmenu.xml</action> - </button> - - <button> - <type>KnoppMyth</type> - <text>XM Satellite Radio</text> - <action>MENU xmmenu.xml</action> - </button> - -</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml deleted file mode 100644 index 8aa6134..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml +++ /dev/null @@ -1,55 +0,0 @@ -<mythmenu name="KnoppMyth"> - - <button> - <type>BACKUP</type> - <text>Backup KnoppMyth</text> - <action>MENU mythbackup.xml</action> - </button> - - <button> - <type>RESTORE</type> - <text>Restore KnoppMyth</text> - <action>MENU mythrestore.xml</action> - </button> - - <button> - <type>Motion</type> - <text>Motion</text> - <action>MENU motion.xml</action> - </button> -<!-- - <button> - <type>POWER</type> - <text>Power Off </text> - <action>EXEC /usr/bin/sudo halt</action> - </button> - - <button> - <type>POWER</type> - <text>Reboot</text> - <action>EXEC /usr/bin/sudo reboot</action> - </button> - - <button> - <type>VERSION</type> - <text>Version</text> - <action>EXEC /usr/local/bin/ver.sh</action> - </button> ---> - - <button> - <type>MV_SETUP_MENU</type> - <text>MythVantage Settings</text> - <action>MENU HOST_SETTINGS.xml</action> - - </button> -<!-- - <button> - <type>MV_TEMPLATE</type> - <text>Settings profile manager</text> - <action>EXEC mythinstall -t </action> - - </button> ---> -</mythmenu> - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch deleted file mode 100644 index ef08f0c..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- library.xml.orig 2008-11-13 11:26:10.000000000 -0500 -+++ library.xml 2008-11-19 11:55:55.000000000 -0500 -@@ -120,9 +120,7 @@ - <button> - <type>STREAM</type> - <text>Play Online Streams</text> -- <text lang="HE">נגן מדיה מכוונת</text> -- <action>PLUGIN mythstream</action> -- <depends>mythstream</depends> -+ <action>MENU is.xml</action> - </button> - - <button> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch deleted file mode 100644 index f4f57f1..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- mainmenu.xml.orig 2008-11-13 11:26:10.000000000 -0500 -+++ mainmenu.xml 2008-11-19 12:01:57.000000000 -0500 -@@ -188,6 +188,13 @@ - <action>MENU util_menu.xml</action> - </button> - -+ -+ <button> -+ <type>MENU_UTILITIES_SETUP</type> -+ <text>Service Menu</text> -+ <action>MENU knoppmyth.xml</action> -+ </button> -+ - <!-- <button> - <type>SHUTDOWN</type> - <text>Shutdown</text> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml deleted file mode 100644 index 23ebfe2..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml +++ /dev/null @@ -1,20 +0,0 @@ -<mythmenu name="Motion"> - - <button> - <type>MOTION</type> - <text>Start Motion</text> - <action>EXEC sudo /etc/init.d/motion start</action> - </button> - - <button> - <type>MOTION</type> - <text>Stop Motion</text> - <action>EXEC sudo /etc/init.d/motion stop</action> - </button> - - <button> - <type>MOTION</type> - <text>Clear Motion</text> - <action>EXEC /usr/local/bin/cm.sh</action> - </button> -</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch deleted file mode 100644 index 7e016a5..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- optical_menu.xml.orig 2008-11-19 11:52:44.000000000 -0500 -+++ optical_menu.xml 2008-11-19 12:32:19.000000000 -0500 -@@ -129,6 +129,12 @@ - </button> - - <button> -+ <type>DVD_RIP</type> -+ <text>Import video files from DVD</text> -+ <action>EXEC /usr/local/bin/importfiles.sh</action> -+ </button> -+ -+ <button> - <type>EJECT</type> - <text>Eject media</text> - <text lang="IT">Espelli Media</text> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml deleted file mode 100644 index f56bb6f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml +++ /dev/null @@ -1,111 +0,0 @@ -<mythmenu name="MAIN"> - - <button> - <type>SETUP_GENERAL</type> - <text>1. General</text> - <text lang="IT">1. Generale</text> - <text lang="PT">1. Geral</text> - <text lang="SV">1. Generellt</text> - <text lang="JA">1. 一般</text> - <text lang="DE">1. Allgemeines</text> - <text lang="FI">1. Yleiset</text> - <text lang="FR">1. Général</text> - <text lang="SI">1. Splošno</text> - <text lang="ET">1. Üldine</text> - <text lang="NB">1 Generelt</text> - <text lang="DK">1. Generelt</text> - <text lang="ES">1. General</text> - <text lang="CZ">1. Obecný</text> - <text lang="RU">1. Общие</text> - <action>GENERAL</action> - </button> - - <button> - <type>SETUP_CAPTURE_CARDS</type> - <text>2. Capture cards</text> - <text lang="IT">2. Schede di Acquisizione</text> - <text lang="PT">2. Placas de Captura</text> - <text lang="SV">2. TV-kort</text> - <text lang="JA">2. キャプチャカード</text> - <text lang="DE">2. TV-Karten</text> - <text lang="FI">2. TV-kortit</text> - <text lang="FR">2. Cartes d'acquisition</text> - <text lang="SI">2. Kartice za zajem</text> - <text lang="ET">2. TV-kaardid</text> - <text lang="NB">2 TV-kort</text> - <text lang="DK">2. TV-kort</text> - <text lang="ES">2. Capturadoras</text> - <text lang="CZ">2. Zachytávací karty</text> - <text lang="RU">2. Карты захвата</text> - <action>CAPTURE CARDS</action> - </button> - - <button> - <type>SETUP_VIDEO_SOURCES</type> - <text>3. Video sources</text> - <text lang="IT">3. Fonte Video</text> - <text lang="PT">3. Fontes de Vídeo</text> - <text lang="SV">3. Videokällor</text> - <text lang="JA">3. ビデオソース</text> - <text lang="DE">3. Videoquellen</text> - <text lang="FI">3. Kuvanlähteet</text> - <text lang="FR">3. Sources vidéo</text> - <text lang="SI">3. Video viri</text> - <text lang="ET">3. Videosisendid</text> - <text lang="NB">3 Videokilder</text> - <text lang="DK">3. Videokilder</text> - <text lang="ES">3. Fuentes de Vídeo</text> - <text lang="CZ">3. Zdroje obrazu</text> - <text lang="RU">3. Видео источники</text> - <action>VIDEO SOURCES</action> - </button> - - <button> - <type>SETUP_INPUT_CONNECTIONS</type> - <text>4. Input connections</text> - <text lang="IT">4. Connessioni di Ingresso</text> - <text lang="PT">4. Ligações de Entrada</text> - <text lang="SV">4. Anslutningar</text> - <text lang="JA">4. 入力とソースの接続</text> - <text lang="DE">4. Verknüpfungen</text> - <text lang="FI">4. Sisääntuloasetukset</text> - <text lang="FR">4. Entrées Vidéos</text> - <text lang="SI">4. Vhodne povezave</text> - <text lang="ET">4. Sisendite ühendused</text> - <text lang="NB">4 Inndata</text> - <text lang="DK">4. Indgange</text> - <text lang="ES">4. Conexiones</text> - <text lang="CZ">4. Připojení vstupů</text> - <text lang="RU">4. Соединение входов</text> - <action>CARD INPUTS</action> - </button> - - <button> - <type>SETUP_CHANNEL_EDITOR</type> - <text>5. Channel Editor</text> - <text lang="IT">5. Modifica Canali</text> - <text lang="SV">5. Kanaleditor</text> - <text lang="JA">5. チャンネル設定</text> - <text lang="DE">5. Sender bearbeiten</text> - <text lang="FI">5. Kanavanviritys</text> - <text lang="FR">5. Editeur de chaînes</text> - <text lang="SI">5. Urejanje kanalov</text> - <text lang="ET">5. Kanaliredaktor</text> - <text lang="NB">5 Kanalredigerer</text> - <text lang="DK">5. Kanal opsætning</text> - <text lang="ES">5. Editor Canales</text> - <text lang="CZ">5. Editor kanálů</text> - <text lang="RU">5. Редактор каналов</text> - <action>CHANNEL EDITOR</action> - </button> - - <button> - <type>SETUP_STORAGE_GROUPS</type> - <text>6. Storage Directories</text> - <text lang="IT">6. Cartelle</text> - <text lang="FI">Tallennusryhmät</text> - <text lang="SV">Lagringsgrupper</text> - <action>STORAGE GROUPS</action> - </button> - -</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml deleted file mode 100644 index e317b36..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml +++ /dev/null @@ -1,419 +0,0 @@ -<mythmenu name="SIRIUS"> - <button> - <type>MUSIC</type> - <text>Sirius Hits 1</text> - <action>EXEC /usr/bin/cliSipie siriushits1</action> - </button> - <button> - <type>MUSIC</type> - <text>StarLite</text> - <action>EXEC /usr/bin/cliSipie starlite</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius Love</text> - <action>EXEC /usr/bin/cliSipie siriuslove</action> - </button> - <button> - <type>MUSIC</type> - <text>Movin EZ</text> - <action>EXEC /usr/bin/cliSipie movineasy</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius Gold</text> - <action>EXEC /usr/bin/cliSipie siriusgold</action> - </button> - <button> - <type>MUSIC</type> - <text>'60s Vibrations</text> - <action>EXEC /usr/bin/cliSipie 60svibrations</action> - </button> - <button> - <type>MUSIC</type> - <text>Totally '70s</text> - <action>EXEC /usr/bin/cliSipie totally70s</action> - </button> - <button> - <type>MUSIC</type> - <text>Big '80s</text> - <action>EXEC /usr/bin/cliSipie big80s</action> - </button> - <button> - <type>MUSIC</type> - <text>ThePulse</text> - <action>EXEC /usr/bin/cliSipie thepulse</action> - </button> - <button> - <type>MUSIC</type> - <text>Bridge</text> - <action>EXEC /usr/bin/cliSipie thebridge</action> - </button> - <button> - <type>MUSIC</type> - <text>BBC Radio 1</text> - <action>EXEC /usr/bin/cliSipie bbcradio1</action> - </button> - <button> - <type>MUSIC</type> - <text>Super Shuffle</text> - <action>EXEC /usr/bin/cliSipie supershuffle</action> - </button> - <button> - <type>MUSIC</type> - <text>Elvis Radio</text> - <action>EXEC /usr/bin/cliSipie elvisradio</action> - </button> - <button> - <type>MUSIC</type> - <text>Classic Vinyl</text> - <action>EXEC /usr/bin/cliSipie classicvinyl</action> - </button> - <button> - <type>MUSIC</type> - <text>Classic Rewind</text> - <action>EXEC /usr/bin/cliSipie classicrewind</action> - </button> - <button> - <type>MUSIC</type> - <text>TheVault</text> - <action>EXEC /usr/bin/cliSipie thevault</action> - </button> - <button> - <type>MUSIC</type> - <text>Jam_ON</text> - <action>EXEC /usr/bin/cliSipie jamon</action> - </button> - <button> - <type>MUSIC</type> - <text>Spectrum</text> - <action>EXEC /usr/bin/cliSipie thespectrum</action> - </button> - <button> - <type>MUSIC</type> - <text>BuzzSaw</text> - <action>EXEC /usr/bin/cliSipie buzzsaw</action> - </button> - <button> - <type>MUSIC</type> - <text>Octane</text> - <action>EXEC /usr/bin/cliSipie octane</action> - </button> - <button> - <type>MUSIC</type> - <text>Alt Nation</text> - <action>EXEC /usr/bin/cliSipie altnation</action> - </button> - <button> - <type>MUSIC</type> - <text>1st Wave</text> - <action>EXEC /usr/bin/cliSipie firstwave</action> - </button> - <button> - <type>MUSIC</type> - <text>Hair Nation</text> - <action>EXEC /usr/bin/cliSipie hairnation</action> - </button> - <button> - <type>MUSIC</type> - <text>'90s Alternative</text> - <action>EXEC /usr/bin/cliSipie 90salternative</action> - </button> - <button> - <type>MUSIC</type> - <text>Garage</text> - <action>EXEC /usr/bin/cliSipie undergroundgarage</action> - </button> - <button> - <type>MUSIC</type> - <text>Left of Center</text> - <action>EXEC /usr/bin/cliSipie leftofcenter</action> - </button> - <button> - <type>MUSIC</type> - <text>Hard Attack</text> - <action>EXEC /usr/bin/cliSipie hardattack</action> - </button> - <button> - <type>MUSIC</type> - <text>Faction</text> - <action>EXEC /usr/bin/cliSipie faction</action> - </button> - <button> - <type>MUSIC</type> - <text>Punk</text> - <action>EXEC /usr/bin/cliSipie punk</action> - </button> - <button> - <type>MUSIC</type> - <text>The Coffee House</text> - <action>EXEC /usr/bin/cliSipie coffeehouse</action> - </button> - <button> - <type>MUSIC</type> - <text>Margaritaville</text> - <action>EXEC /usr/bin/cliSipie radiomargaritaville</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius Disorder</text> - <action>EXEC /usr/bin/cliSipie siriusdisorder</action> - </button> - <button> - <type>MUSIC</type> - <text>Reggae</text> - <action>EXEC /usr/bin/cliSipie reggaerhythms</action> - </button> - <button> - <type>MUSIC</type> - <text>Area 33</text> - <action>EXEC /usr/bin/cliSipie area33</action> - </button> - <button> - <type>MUSIC</type> - <text>Boombox</text> - <action>EXEC /usr/bin/cliSipie boombox</action> - </button> - <button> - <type>MUSIC</type> - <text>Chill</text> - <action>EXEC /usr/bin/cliSipie chill</action> - </button> - <button> - <type>MUSIC</type> - <text>The Beat</text> - <action>EXEC /usr/bin/cliSipie thebeat</action> - </button> - <button> - <type>MUSIC</type> - <text>Strobe</text> - <action>EXEC /usr/bin/cliSipie thestrobe</action> - </button> - <button> - <type>MUSIC</type> - <text>Hip-Hop Nation</text> - <action>EXEC /usr/bin/cliSipie hiphopnation</action> - </button> - <button> - <type>MUSIC</type> - <text>BackSpin</text> - <action>EXEC /usr/bin/cliSipie backspin</action> - </button> - <button> - <type>MUSIC</type> - <text>Shade 45</text> - <action>EXEC /usr/bin/cliSipie shade45</action> - </button> - <button> - <type>MUSIC</type> - <text>Hot Jamz</text> - <action>EXEC /usr/bin/cliSipie hotjamz</action> - </button> - <button> - <type>MUSIC</type> - <text>Heart & Soul</text> - <action>EXEC /usr/bin/cliSipie heartandsoul</action> - </button> - <button> - <type>MUSIC</type> - <text>SoulTown</text> - <action>EXEC /usr/bin/cliSipie soultown</action> - </button> - <button> - <type>MUSIC</type> - <text>New Country</text> - <action>EXEC /usr/bin/cliSipie newcountry</action> - </button> - <button> - <type>MUSIC</type> - <text>Prime Country</text> - <action>EXEC /usr/bin/cliSipie primecountry</action> - </button> - <button> - <type>MUSIC</type> - <text>Roadhouse</text> - <action>EXEC /usr/bin/cliSipie theroadhouse</action> - </button> - <button> - <type>MUSIC</type> - <text>Outlaw Country</text> - <action>EXEC /usr/bin/cliSipie outlawcountry</action> - </button> - <button> - <type>MUSIC</type> - <text>Bluegrass</text> - <action>EXEC /usr/bin/cliSipie bluegrass</action> - </button> - <button> - <type>MUSIC</type> - <text>Spirit</text> - <action>EXEC /usr/bin/cliSipie spirit</action> - </button> - <button> - <type>MUSIC</type> - <text>Praise</text> - <action>EXEC /usr/bin/cliSipie praise</action> - </button> - <button> - <type>MUSIC</type> - <text>Planet Jazz</text> - <action>EXEC /usr/bin/cliSipie planetjazz</action> - </button> - <button> - <type>MUSIC</type> - <text>JazzCafe</text> - <action>EXEC /usr/bin/cliSipie jazzcafe</action> - </button> - <button> - <type>MUSIC</type> - <text>PureJazz</text> - <action>EXEC /usr/bin/cliSipie purejazz</action> - </button> - <button> - <type>MUSIC</type> - <text>Spa 73</text> - <action>EXEC /usr/bin/cliSipie spa73</action> - </button> - <button> - <type>MUSIC</type> - <text>Blues</text> - <action>EXEC /usr/bin/cliSipie siriusblues</action> - </button> - <button> - <type>MUSIC</type> - <text>Siriusly Sinatra</text> - <action>EXEC /usr/bin/cliSipie siriuslysinatra</action> - </button> - <button> - <type>MUSIC</type> - <text>Broadway's Best</text> - <action>EXEC /usr/bin/cliSipie broadwaysbest</action> - </button> - <button> - <type>MUSIC</type> - <text>Symphony Hall</text> - <action>EXEC /usr/bin/cliSipie symphonyhall</action> - </button> - <button> - <type>MUSIC</type> - <text>Met Opera Radio</text> - <action>EXEC /usr/bin/cliSipie metropolitanopera</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius Pops</text> - <action>EXEC /usr/bin/cliSipie siriuspops</action> - </button> - <button> - <type>MUSIC</type> - <text>Universo Latino</text> - <action>EXEC /usr/bin/cliSipie universolatino</action> - </button> - <button> - <type>MUSIC</type> - <text>Rumbon</text> - <action>EXEC /usr/bin/cliSipie rumbon</action> - </button> - <button> - <type>MUSIC</type> - <text>Martha Stewart</text> - <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius Stars</text> - <action>EXEC /usr/bin/cliSipie siriusstars</action> - </button> - <button> - <type>MUSIC</type> - <text>OutQ Gay Radio</text> - <action>EXEC /usr/bin/cliSipie siriusoutq</action> - </button> - <button> - <type>MUSIC</type> - <text>Patriot</text> - <action>EXEC /usr/bin/cliSipie siriuspatriot</action> - </button> - <button> - <type>MUSIC</type> - <text>Left</text> - <action>EXEC /usr/bin/cliSipie siriusleft</action> - </button> - <button> - <type>MUSIC</type> - <text>CNN</text> - <action>EXEC /usr/bin/cliSipie cnn</action> - </button> - <button> - <type>MUSIC</type> - <text>wrn</text> - <action>EXEC /usr/bin/cliSipie wrn</action> - </button> - <button> - <type>MUSIC</type> - <text>Blue Collar Comedy</text> - <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action> - </button> - <button> - <type>MUSIC</type> - <text>Raw Dog Comedy</text> - <action>EXEC /usr/bin/cliSipie rawdog</action> - </button> - <button> - <type>MUSIC</type> - <text>Laugh Break Comedy</text> - <action>EXEC /usr/bin/cliSipie laughbreak</action> - </button> - <button> - <type>MUSIC</type> - <text>thefoxxhole</text> - <action>EXEC /usr/bin/cliSipie thefoxxhole</action> - </button> - <button> - <type>MUSIC</type> - <text>lime</text> - <action>EXEC /usr/bin/cliSipie lime</action> - </button> - <button> - <type>MUSIC</type> - <text>Kids Stuff</text> - <action>EXEC /usr/bin/cliSipie kidsstuff</action> - </button> - <button> - <type>MUSIC</type> - <text>Catholic Channel</text> - <action>EXEC /usr/bin/cliSipie thecatholicchannel</action> - </button> - <button> - <type>MUSIC</type> - <text>EWTN</text> - <action>EXEC /usr/bin/cliSipie ewtnglobal</action> - </button> - <button> - <type>MUSIC</type> - <text>christiantalk</text> - <action>EXEC /usr/bin/cliSipie christiantalk</action> - </button> - <button> - <type>MUSIC</type> - <text>Sirius NFL Radio</text> - <action>EXEC /usr/bin/cliSipie siriusnflradio</action> - </button> - <button> - <type>MUSIC</type> - <text>Maxim Radio</text> - <action>EXEC /usr/bin/cliSipie maximradio</action> - </button> - <button> - <type>MUSIC</type> - <text>Cosmo Radio</text> - <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action> - </button> - <button> - <type>TV_DELETE</type> - <text>Stop Listening</text> - <action>EXEC /usr/bin/sipie_kill</action> - </button> - -</mythmenu> - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml deleted file mode 100644 index 6b26d11..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml +++ /dev/null @@ -1,574 +0,0 @@ -<!-- Current as of April 25, 2007 --> -<mythmenu name="XM"> - - <button> - <type>MUSIC</type> - <text>The '40s</text> - <action>EXEC /usr/bin/xamp kill 4</action> - </button> - - <button> - <type>MUSIC</type> - <text>The '50s</text> - <action>EXEC /usr/bin/xamp kill 5</action> - </button> - - <button> - <type>MUSIC</type> - <text>The '60s</text> - <action>EXEC /usr/bin/xamp kill 6</action> - </button> - - <button> - <type>MUSIC</type> - <text>The '70s</text> - <action>EXEC /usr/bin/xamp kill 7</action> - </button> - - <button> - <type>MUSIC</type> - <text>The '80s</text> - <action>EXEC /usr/bin/xamp kill 8</action> - </button> - - <button> - <type>MUSIC</type> - <text>The '90s</text> - <action>EXEC /usr/bin/xamp kill 9</action> - </button> - - <button> - <type>MUSIC</type> - <text>America</text> - <action>EXEC /usr/bin/xamp kill 10</action> - </button> - - <button> - <type>MUSIC</type> - <text>X Country</text> - <action>EXEC /usr/bin/xamp kill 12</action> - </button> - - <button> - <type>MUSIC</type> - <text>Willie's Place</text> - <action>EXEC /usr/bin/xamp kill 13</action> - </button> - - <button> - <type>MUSIC</type> - <text>Bluegrass Junction</text> - <action>EXEC /usr/bin/xamp kill 14</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Village</text> - <action>EXEC /usr/bin/xamp kill 15</action> - </button> - - <button> - <type>MUSIC</type> - <text>Highway 16</text> - <action>EXEC /usr/bin/xamp kill 16</action> - </button> - - <button> - <type>MUSIC</type> - <text>US Country</text> - <action>EXEC /usr/bin/xamp kill 17</action> - </button> - - <button> - <type>MUSIC</type> - <text>20 on 20</text> - <action>EXEC /usr/bin/xamp kill 20</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Heart</text> - <action>EXEC /usr/bin/xamp kill 23</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Blend</text> - <action>EXEC /usr/bin/xamp kill 25</action> - </button> - - <button> - <type>MUSIC</type> - <text>Flight 26</text> - <action>EXEC /usr/bin/xamp kill 26</action> - </button> - - <button> - <type>MUSIC</type> - <text>Cinemagic</text> - <action>EXEC /usr/bin/xamp kill 27</action> - </button> - - <button> - <type>MUSIC</type> - <text>On Broadway</text> - <action>EXEC /usr/bin/xamp kill 28</action> - </button> - - <button> - <type>MUSIC</type> - <text>U-Pop</text> - <action>EXEC /usr/bin/xamp kill 29</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Hitlist</text> - <action>EXEC /usr/bin/xamp kill 30</action> - </button> - - <button> - <type>MUSIC</type> - <text>Torch</text> - <action>EXEC /usr/bin/xamp kill 31</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Message</text> - <action>EXEC /usr/bin/xamp kill 32</action> - </button> - - <button> - <type>MUSIC</type> - <text>Spirit</text> - <action>EXEC /usr/bin/xamp kill 33</action> - </button> - - <button> - <type>MUSIC</type> - <text>enLighten</text> - <action>EXEC /usr/bin/xamp kill 34</action> - </button> - - <button> - <type>MUSIC</type> - <text>Deep Tracks</text> - <action>EXEC /usr/bin/xamp kill 40</action> - </button> - - <button> - <type>MUSIC</type> - <text>Boneyard</text> - <action>EXEC /usr/bin/xamp kill 41</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Liquid Metal</text> - <action>EXEC /usr/bin/xamp kill 42</action> - </button> - - <button> - <type>MUSIC</type> - <text>XMU</text> - <action>EXEC /usr/bin/xamp kill 43</action> - </button> - - <button> - <type>MUSIC</type> - <text>Fred</text> - <action>EXEC /usr/bin/xamp kill 44</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Cafe</text> - <action>EXEC /usr/bin/xamp kill 45</action> - </button> - - <button> - <type>MUSIC</type> - <text>Top Tracks</text> - <action>EXEC /usr/bin/xamp kill 46</action> - </button> - - <button> - <type>MUSIC</type> - <text>Ethel</text> - <action>EXEC /usr/bin/xamp kill 47</action> - </button> - - <button> - <type>MUSIC</type> - <text>Squizz</text> - <action>EXEC /usr/bin/xamp kill 48</action> - </button> - - <button> - <type>MUSIC</type> - <text>Big Tracks</text> - <action>EXEC /usr/bin/xamp kill 49</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Loft</text> - <action>EXEC /usr/bin/xamp kill 50</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Music Lab</text> - <action>EXEC /usr/bin/xamp kill 51</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Verge</text> - <action>EXEC /usr/bin/xamp kill 52</action> - </button> - - <button> - <type>MUSIC</type> - <text>Fungus</text> - <action>EXEC /usr/bin/xamp kill 53</action> - </button> - - <button> - <type>MUSIC</type> - <text>Lucy</text> - <action>EXEC /usr/bin/xamp kill 54</action> - </button> - - <button> - <type>MUSIC</type> - <text>Soul Street</text> - <action>EXEC /usr/bin/xamp kill 60</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Flow</text> - <action>EXEC /usr/bin/xamp kill 61</action> - </button> - - <button> - <type>MUSIC</type> - <text>Suite 62</text> - <action>EXEC /usr/bin/xamp kill 62</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Groove</text> - <action>EXEC /usr/bin/xamp kill 64</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Rhyme</text> - <action>EXEC /usr/bin/xamp kill 65</action> - </button> - - <button> - <type>MUSIC</type> - <text>RAW</text> - <action>EXEC /usr/bin/xamp kill 66</action> - </button> - - <button> - <type>MUSIC</type> - <text>The City</text> - <action>EXEC /usr/bin/xamp kill 67</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Heat</text> - <action>EXEC /usr/bin/xamp kill 68</action> - </button> - - <button> - <type>MUSIC</type> - <text>Real Jazz</text> - <action>EXEC /usr/bin/xamp kill 70</action> - </button> - - <button> - <type>MUSIC</type> - <text>Watercolors</text> - <action>EXEC /usr/bin/xamp kill 71</action> - </button> - - <button> - <type>MUSIC</type> - <text>Beyond Jazz</text> - <action>EXEC /usr/bin/xamp kill 72</action> - </button> - - <button> - <type>MUSIC</type> - <text>High Standards</text> - <action>EXEC /usr/bin/xamp kill 73</action> - </button> - - <button> - <type>MUSIC</type> - <text>Bluesville</text> - <action>EXEC /usr/bin/xamp kill 74</action> - </button> - - <button> - <type>MUSIC</type> - <text>Hear Music</text> - <action>EXEC /usr/bin/xamp kill 75</action> - </button> - - <button> - <type>MUSIC</type> - <text>Fine Tuning</text> - <action>EXEC /usr/bin/xamp kill 76</action> - </button> - - <button> - <type>MUSIC</type> - <text>Audio Visions</text> - <action>EXEC /usr/bin/xamp kill 77</action> - </button> - - <button> - <type>MUSIC</type> - <text>Escape</text> - <action>EXEC /usr/bin/xamp kill 78</action> - </button> - - <button> - <type>MUSIC</type> - <text>On The Rocks</text> - <action>EXEC /usr/bin/xamp kill 79</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Move</text> - <action>EXEC /usr/bin/xamp kill 80</action> - </button> - - <button> - <type>MUSIC</type> - <text>BPM</text> - <action>EXEC /usr/bin/xamp kill 81</action> - </button> - - <button> - <type>MUSIC</type> - <text>The System</text> - <action>EXEC /usr/bin/xamp kill 82</action> - </button> - - <button> - <type>MUSIC</type> - <text>Chrome</text> - <action>EXEC /usr/bin/xamp kill 83</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM-Chill</text> - <action>EXEC /usr/bin/xamp kill 84</action> - </button> - - <button> - <type>MUSIC</type> - <text>Fuego</text> - <action>EXEC /usr/bin/xamp kill 90</action> - </button> - - <button> - <type>MUSIC</type> - <text>Viva</text> - <action>EXEC /usr/bin/xamp kill 91</action> - </button> - - <button> - <type>MUSIC</type> - <text>Aguila</text> - <action>EXEC /usr/bin/xamp kill 92</action> - </button> - - <button> - <type>MUSIC</type> - <text>Caliente</text> - <action>EXEC /usr/bin/xamp kill 94</action> - </button> - - <button> - <type>MUSIC</type> - <text>Luna</text> - <action>EXEC /usr/bin/xamp kill 95</action> - </button> - - <button> - <type>MUSIC</type> - <text>Air Musique</text> - <action>EXEC /usr/bin/xamp kill 100</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Joint</text> - <action>EXEC /usr/bin/xamp kill 101</action> - </button> - - <button> - <type>MUSIC</type> - <text>Sur La Route</text> - <action>EXEC /usr/bin/xamp kill 102</action> - </button> - - <button> - <type>MUSIC</type> - <text>World Zone</text> - <action>EXEC /usr/bin/xamp kill 103</action> - </button> - - <button> - <type>MUSIC</type> - <text>Ngoma</text> - <action>EXEC /usr/bin/xamp kill 104</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Classics</text> - <action>EXEC /usr/bin/xamp kill 110</action> - </button> - - <button> - <type>MUSIC</type> - <text>Vox</text> - <action>EXEC /usr/bin/xamp kill 112</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Pops</text> - <action>EXEC /usr/bin/xamp kill 113</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Kids</text> - <action>EXEC /usr/bin/xamp kill 116</action> - </button> - - <button> - <type>MUSIC</type> - <text>Bob Edwards Show</text> - <action>EXEC /usr/bin/xamp kill 133</action> - </button> - - <button> - <type>MUSIC</type> - <text>XM Comedy</text> - <action>EXEC /usr/bin/xamp kill 150</action> - </button> - - <button> - <type>MUSIC</type> - <text>Laugh USA</text> - <action>EXEC /usr/bin/xamp kill 151</action> - </button> - - <button> - <type>MUSIC</type> - <text>Special X</text> - <action>EXEC /usr/bin/xamp kill 154</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Agenda</text> - <action>EXEC /usr/bin/xamp kill 134</action> - </button> - - <button> - <type>MUSIC</type> - <text>Oprah and Friends</text> - <action>EXEC /usr/bin/xamp kill 156</action> - </button> - - <button> - <type>MUSIC</type> - <text>The Virus</text> - <action>EXEC /usr/bin/xamp kill 202</action> - </button> - - <button> - <type>MUSIC</type> - <text>1 Hit Wonders</text> - <action>EXEC /usr/bin/xamp kill 300</action> - </button> - - <button> - <type>MUSIC</type> - <text>Metalcore</text> - <action>EXEC /usr/bin/xamp kill 301</action> - </button> - - <button> - <type>MUSIC</type> - <text>New Indie First</text> - <action>EXEC /usr/bin/xamp kill 302</action> - </button> - - <button> - <type>MUSIC</type> - <text>Late Night Mix</text> - <action>EXEC /usr/bin/xamp kill 303</action> - </button> - - <button> - <type>MUSIC</type> - <text>Sessions@AOL</text> - <action>EXEC /usr/bin/xamp kill 304</action> - </button> - - <button> - <type>MUSIC</type> - <text>Shuffle</text> - <action>EXEC /usr/bin/xamp kill 305</action> - </button> - - <button> - <type>MUSIC</type> - <text>New Rock First</text> - <action>EXEC /usr/bin/xamp kill 306</action> - </button> - - <button> - <type>MUSIC</type> - <text>New Country First</text> - <action>EXEC /usr/bin/xamp kill 307</action> - </button> - - <button> - <type>MUSIC</type> - <text>New Hip Hop First</text> - <action>EXEC /usr/bin/xamp kill 308</action> - </button> - - <button> - <type>MUSIC</type> - <text>New Pop First</text> - <action>EXEC /usr/bin/xamp kill 309</action> - </button> - - <button> - <type>TV_DELETE</type> - <text>Stop Listening</text> - <action>EXEC /usr/bin/xamp kill</action> - </button> - -</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch deleted file mode 100644 index f292b7f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch +++ /dev/null @@ -1,658 +0,0 @@ -Index: libs/libmythtv/mpegrecorder.h -=================================================================== ---- libs/libmythtv/mpegrecorder.h (revision 19056) -+++ libs/libmythtv/mpegrecorder.h (working copy) -@@ -80,11 +80,13 @@ - uint GetFilteredAudioLayer(void) const; - uint GetFilteredAudioBitRate(uint audio_layer) const; - -+ void RestartEncoding(void); - bool StartEncoding(int fd); - bool StopEncoding(int fd); - - void ResetForNewFile(void); - -+ bool WaitFor_HDPVR(void); - void HandleResolutionChanges(void); - - inline bool CheckCC(uint pid, uint cc); -@@ -104,7 +106,6 @@ - // State - bool recording; - bool encoding; -- bool needs_resolution; - mutable QMutex start_stop_encoding_lock; - QMutex recording_wait_lock; - QWaitCondition recording_wait; -@@ -113,7 +114,7 @@ - bool cleartimeonpause; - - // Encoding info -- int width, height; -+ uint width, height; - int bitrate, maxbitrate, streamtype, aspectratio; - int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3; - int audvolume; -Index: libs/libmythtv/mpegrecorder.cpp -=================================================================== ---- libs/libmythtv/mpegrecorder.cpp (revision 19056) -+++ libs/libmythtv/mpegrecorder.cpp (working copy) -@@ -19,6 +19,7 @@ - #include <sys/stat.h> - #include <sys/ioctl.h> - #include <sys/time.h> -+#include <sys/poll.h> - - // avlib headers - extern "C" { -@@ -86,7 +87,7 @@ - requires_special_pause(false), - // State - recording(false), encoding(false), -- needs_resolution(false), start_stop_encoding_lock(QMutex::Recursive), -+ start_stop_encoding_lock(QMutex::Recursive), - recording_wait_lock(), recording_wait(), - // Pausing state - cleartimeonpause(false), -@@ -487,13 +488,21 @@ - - bool MpegRecorder::SetFormat(int chanfd) - { -+ uint idx; - struct v4l2_format vfmt; - bzero(&vfmt, sizeof(vfmt)); - - vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -- if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 10) -+ { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO); - return false; - } -@@ -501,8 +510,15 @@ - vfmt.fmt.pix.width = width; - vfmt.fmt.pix.height = height; - -- if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO); - return false; - } -@@ -513,10 +529,19 @@ - /// Set audio language mode - bool MpegRecorder::SetLanguageMode(int chanfd) - { -+ uint idx; - struct v4l2_tuner vt; - bzero(&vt, sizeof(struct v4l2_tuner)); -- if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO); - return false; - } -@@ -549,8 +574,15 @@ - success = false; - } - -- if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO); - success = false; - } -@@ -561,10 +593,19 @@ - bool MpegRecorder::SetRecordingVolume(int chanfd) - { - // Get volume min/max values -+ uint idx; - struct v4l2_queryctrl qctrl; - qctrl.id = V4L2_CID_AUDIO_VOLUME; -- if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to get recording volume parameters(max/min)" + ENO + - "\n\t\t\tusing default range [0,65535]."); -@@ -582,8 +623,15 @@ - ctrl.id = V4L2_CID_AUDIO_VOLUME; - ctrl.value = ctrl_volume; - -- if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to set recording volume" + ENO + "\n\t\t\t" + - "If you are using an AverMedia M179 card this is normal."); -@@ -765,6 +813,7 @@ - - for (uint i = 0; i < ext_ctrls.size(); i++) - { -+ uint idx; - struct v4l2_ext_controls ctrls; - bzero(&ctrls, sizeof(struct v4l2_ext_controls)); - -@@ -774,8 +823,15 @@ - ctrls.count = 1; - ctrls.controls = &ext_ctrls[i]; - -- if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - QMutexLocker locker(&control_description_lock); - VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") + - QString("Could not set %1 to %2") -@@ -814,6 +870,30 @@ - { - maxbitrate = high_mpeg4peakbitrate; - bitrate = high_mpeg4avgbitrate; -+ -+ // query supported audio codecs and prefer AC3 -+ uint idx; -+ struct v4l2_queryctrl qctrl; -+ qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { -+ if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_WARN + -+ "Unable to get supported audio codecs." + ENO); -+ } -+ else -+ { -+ if (qctrl.minimum != qctrl.maximum) -+ add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING, -+ qctrl.maximum); -+ } - } - maxbitrate = std::max(maxbitrate, bitrate); - -@@ -837,19 +917,36 @@ - int audioinput = audiodevice.toUInt(&ok); - if (ok) - { -+ uint idx; - struct v4l2_audio ain; - bzero(&ain, sizeof(ain)); - ain.index = audioinput; -- if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to get audio input."); - } - else - { - ain.index = audioinput; -- if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to set audio input."); - } -@@ -1036,17 +1133,26 @@ - if (deviceIsMpegFile) - elapsedTimer.start(); - else if (_device_read_buffer) -- _device_read_buffer->Start(); -+ { -+ VERBOSE(VB_RECORD, LOC + "Initial startup of recorder"); - -- needs_resolution = (driver == "hdpvr"); -+ if (StartEncoding(readfd)) -+ _device_read_buffer->Start(); -+ else -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording"); -+ recording = false; -+ QMutexLocker locker(&recording_wait_lock); -+ recording_wait.wakeAll(); -+ _error = true; -+ } -+ } - - QByteArray vdevice = videodevice.toAscii(); - while (encoding && !_error) - { - if (PauseAndWait(100)) - continue; -- -- HandleResolutionChanges(); - - if (deviceIsMpegFile) - { -@@ -1090,35 +1196,7 @@ - { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected"); - -- _device_read_buffer->Stop(); -- -- QMutexLocker locker(&start_stop_encoding_lock); -- -- StopEncoding(readfd); -- -- // Make sure the next things in the file are a PAT & PMT -- if (_stream_data->PATSingleProgram() && -- _stream_data->PMTSingleProgram()) -- { -- bool tmp = _wait_for_keyframe_option; -- _wait_for_keyframe_option = false; -- HandleSingleProgramPAT(_stream_data->PATSingleProgram()); -- HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); -- _wait_for_keyframe_option = tmp; -- } -- -- if (StartEncoding(readfd)) -- { -- _device_read_buffer->Start(); -- } -- else -- { -- if (0 != close(readfd)) -- VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); -- -- // Force card to be reopened on next iteration.. -- readfd = -1; -- } -+ RestartEncoding(); - } - else if (_device_read_buffer->IsEOF()) - { -@@ -1216,6 +1294,8 @@ - } - } - -+ VERBOSE(VB_RECORD, LOC + "StartRecording finishing up"); -+ - if (_device_read_buffer) - { - if (_device_read_buffer->IsRunning()) -@@ -1224,6 +1304,7 @@ - delete _device_read_buffer; - _device_read_buffer = NULL; - } -+ - StopEncoding(readfd); - - FinishRecording(); -@@ -1373,52 +1454,95 @@ - - if (!paused) - { -+ VERBOSE(VB_RECORD, LOC + "PauseAndWait pause"); -+ -+ // Some drivers require streaming to be disabled before -+ // an input switch and other channel format setting. -+ if (requires_special_pause) -+ StopEncoding(readfd); -+ - if (_device_read_buffer) - { - QMutex drb_lock; - drb_lock.lock(); -- - _device_read_buffer->SetRequestPause(true); -- - pauseWait.wait(&drb_lock, timeout); - } - else -- { -- paused = true; - pauseWait.wakeAll(); -- } - -- // Some drivers require streaming to be disabled before -- // an input switch and other channel format setting. -- if (requires_special_pause) -- StopEncoding(readfd); -- -+ paused = true; - if (tvrec) - tvrec->RecorderPaused(); - } - - unpauseWait.wait(&waitlock, timeout); - } -- if (!request_pause) -+ -+ if (!request_pause && paused) - { -- if (paused) -+ VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause"); -+ -+ if (driver == "hdpvr") - { -- // Some drivers require streaming to be disabled before -- // an input switch and other channel format setting. -- if (requires_special_pause) -- StartEncoding(readfd); -+ m_h264_parser.Reset(); -+ _wait_for_keyframe_option = true; -+ _seen_sps = false; - -- if (_device_read_buffer) -- _device_read_buffer->SetRequestPause(false); -+ // Sleep any less than 1.5 seconds, and the HD-PVR will -+ // return the old resolution, when the resolution is changing. -+ usleep(1500 * 1000); -+ } - -- if (_stream_data) -- _stream_data->Reset(_stream_data->DesiredProgram()); -- } -+ // Some drivers require streaming to be disabled before -+ // an input switch and other channel format setting. -+ if (requires_special_pause) -+ StartEncoding(readfd); -+ -+ if (_device_read_buffer) -+ _device_read_buffer->SetRequestPause(false); -+ -+ if (_stream_data) -+ _stream_data->Reset(_stream_data->DesiredProgram()); -+ - paused = false; - } -+ - return paused; - } - -+void MpegRecorder::RestartEncoding(void) -+{ -+ VERBOSE(VB_RECORD, LOC + "RestartEncoding"); -+ -+ _device_read_buffer->Stop(); -+ -+ QMutexLocker locker(&start_stop_encoding_lock); -+ -+ StopEncoding(readfd); -+ -+ // Make sure the next things in the file are a PAT & PMT -+ if (_stream_data->PATSingleProgram() && -+ _stream_data->PMTSingleProgram()) -+ { -+ _wait_for_keyframe_option = false; -+ HandleSingleProgramPAT(_stream_data->PATSingleProgram()); -+ HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); -+ } -+ -+ if (StartEncoding(readfd)) -+ { -+ _device_read_buffer->Start(); -+ } -+ else -+ { -+ if (0 != close(readfd)) -+ VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); -+ -+ readfd = -1; -+ } -+} -+ - bool MpegRecorder::StartEncoding(int fd) - { - QMutexLocker locker(&start_stop_encoding_lock); -@@ -1427,13 +1551,22 @@ - memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); - command.cmd = V4L2_ENC_CMD_START; - -+ if (driver == "hdpvr") -+ HandleResolutionChanges(); -+ - VERBOSE(VB_RECORD, LOC + "StartEncoding"); -- needs_resolution = (driver == "hdpvr"); - -- for (int idx = 0; idx < 10; ++idx) -+ for (int idx = 0; idx < 20; ++idx) - { - if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) - { -+ if (driver == "hdpvr") -+ { -+ m_h264_parser.Reset(); -+ _wait_for_keyframe_option = true; -+ _seen_sps = false; -+ } -+ - VERBOSE(VB_RECORD, LOC + "Encoding started"); - return true; - } -@@ -1444,7 +1577,7 @@ - return false; - } - -- usleep(250 * 1000); -+ usleep(100 * 1000); - } - - VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO); -@@ -1461,9 +1594,8 @@ - - VERBOSE(VB_RECORD, LOC + "StopEncoding"); - -- for (int idx = 0; idx < 10; ++idx) -+ for (int idx = 0; idx < 20; ++idx) - { -- - if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) - { - VERBOSE(VB_RECORD, LOC + "Encoding stopped"); -@@ -1476,7 +1608,7 @@ - return false; - } - -- usleep(250 * 1000); -+ usleep(100 * 1000); - } - - VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO); -@@ -1544,7 +1676,7 @@ - void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt) - { - if (!pmt) --{ -+ { - return; - } - -@@ -1564,27 +1696,89 @@ - DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i]))); - } - -+bool MpegRecorder::WaitFor_HDPVR(void) -+{ -+ // After a resolution change, it can take the HD-PVR a few -+ // seconds before it is usable again. -+ -+ // Tell it to start encoding, then wait for it to actually feed us -+ // some data. -+ QMutexLocker locker(&start_stop_encoding_lock); -+ -+ struct v4l2_encoder_cmd command; -+ struct pollfd polls; -+ int idx; -+ -+ 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; -+ -+ for (idx = 0; idx < 10; ++idx) -+ { -+ if (poll(&polls, 1, 250) > 0) -+ break; -+ } -+ -+ if (idx == 10) -+ return false; -+ -+ // HD-PVR should now be "ready" -+ command.cmd = V4L2_ENC_CMD_STOP; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { -+ if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) -+ return true; -+ usleep(100 * 1000); -+ } -+ -+ return false; -+} -+ - void MpegRecorder::HandleResolutionChanges(void) - { -- if (!needs_resolution) -- return; -- - VERBOSE(VB_RECORD, LOC + "Checking Resolution"); - struct v4l2_format vfmt; - memset(&vfmt, 0, sizeof(vfmt)); - vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -+ if (driver == "hdpvr") -+ WaitFor_HDPVR(); -+ -+ uint idx; - uint pix = 0; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { - if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt)) - { - VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2") - .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height)); - pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height; -- needs_resolution = false; -+ break; -+ } -+ // Typically takes 0.9 seconds after a resolution change -+ usleep(100 * 1000); - } - - if (!pix) -+ { -+ VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution"); - return; // nothing to do, we don't have a resolution yet -+ } - - int old_max = maxbitrate, old_avg = bitrate; - if (pix <= 768*568) -@@ -1609,13 +1803,14 @@ - if (old_max == old_avg) - { - VERBOSE(VB_RECORD, LOC + -- QString("Old bitrate %1 CBR").arg(old_avg)); -+ QString("Old bitrate %1 CBR for %2x%3") -+ .arg(old_avg).arg(width).arg(height)); - } - else - { - VERBOSE(VB_RECORD, LOC + -- QString("Old bitrate %1/%2 VBR") -- .arg(old_avg).arg(old_max)); -+ QString("Old bitrate %1/%2 VBR for %3x%4") -+ .arg(old_avg).arg(old_max).arg(width).arg(height)); - } - - if (maxbitrate == bitrate) -@@ -1642,12 +1837,6 @@ - maxbitrate * 1000); - - set_ctrls(readfd, ext_ctrls); -+ - } -- -- // Restart streaming. Shouldn't be needed? seems to be with current driver. -- QMutexLocker locker(&start_stop_encoding_lock); -- StopEncoding(readfd); -- StartEncoding(readfd); -- -- needs_resolution = false; - } diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh deleted file mode 100755 index fb7122c..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh +++ /dev/null @@ -1,4 +0,0 @@ -export PATH=$PATH:/usr/local/bin -# set core file size to 0 -ulimit -c 0 -export MALLOC_CHECK_=0
\ No newline at end of file diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend deleted file mode 100755 index f96c6b7..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions - -PID=`pidof -o %PPID /usr/bin/mythbackend` -case "$1" in - start) - stat_busy "Starting MythTV Backend" - [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit - [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet - if [ $? -gt 0 ]; then - stat_fail - else - echo $PID > /var/run/mythbackend.pid - add_daemon mythbackend - stat_done - fi - ;; - stop) - stat_busy "Stopping MythTV Backend" - [ ! -z "$PID" ] && kill $PID &>/dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon mythbackend - stat_done - fi - ;; - restart) - $0 stop - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac -exit 0 diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh deleted file mode 100755 index e7a7b70..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/bash -# -# /etc/rc.d/init.d/mythbackend -# -# Starts the mythbackend as a daemon -# -# chkconfig: 345 90 10 -# description: Starts the mythbackend process as a daemon after the XWindows \ -# system is started, in runlevel 5. This allows scheduled \ -# recordings to occur without manual intervention. -# processname: mythbackend - -# Copyright (c) by Michael Thomson <linux at m-thomson dot net> -# With thanks to Stu Tomlinson <stu at nosnilmot dot com> -# -# 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 - -# Default values to use if none are supplied in the config file. -# User who should start the mythbackend processes -MBE_USER="root" -# Directory holding the mythbackend binary -MBE_LOCATION="/usr/local/bin/" -# Name of mythbackend binary -MBE_PROG="mythbackend" -# Full path to mythbackend log file -MBE_LOGFILE="/var/log/mythtv/mythbackend.log" - -# Source function library. -. /etc/init.d/functions - -# Source config file if available -if [ -f "/etc/sysconfig/mythbackend" ]; then - . /etc/sysconfig/mythbackend -fi - -test -x ${MBE_LOCATION}${MBE_PROG} || exit 0 - -RETVAL=0 - -# -# See how we were called. -# - -start() { - # Check if mythbackend is already running - if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then - echo -n "Starting ${MBE_PROG}: " - # /usr/local/bin/mythbackend -d -l /some/log/file - #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} - ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG} - echo - fi - return $RETVAL -} - -stop() { - echo -n "Stopping ${MBE_PROG}: " - killproc ${MBE_LOCATION}${MBE_PROG} - RETVAL=$? - [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG} - echo - return $RETVAL -} - - -restart() { - stop - start -} - -reload() { - restart -} - -status_at() { - status ${MBE_LOCATION}${MBE_PROG} -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload|restart) - restart - ;; -condrestart) - if [ -f /var/lock/subsys/${MBE_PROG} ]; then - restart - fi - ;; -status) - status_at - ;; -*) - echo "Usage: $0 {start|stop|restart|condrestart|status}" - exit 1 -esac - -exit $? -exit $RETVAL diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch deleted file mode 100644 index d26645f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch +++ /dev/null @@ -1,179 +0,0 @@ -Index: programs/mythcommflag/main.cpp -=================================================================== ---- programs/mythcommflag/main.cpp (revision 18596) -+++ programs/mythcommflag/main.cpp (working copy) -@@ -300,6 +300,132 @@ - return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; - } - -+int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename) -+{ -+ QMap<long long, int> cutlist; -+ QMap<long long, int>::Iterator it; -+ QString result; -+ int startValue = 0; -+ long long myTotalFrames; -+ long long myFrameRate; -+ -+ ProgramInfo *pginfo = -+ ProgramInfo::GetProgramFromRecorded(chanid, starttime); -+ -+ NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo); -+ -+ myFrameRate = (long long)(nvp->GetFrameRate() * 1000); -+ myTotalFrames = 1000000; //nvp->GetTotalFrameCount(); -+ -+ if (!pginfo) -+ { -+ VERBOSE(VB_IMPORTANT, -+ QString("No program data exists for channel %1 at %2") -+ .arg(chanid).arg(starttime)); -+ return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA; -+ } -+ -+ QString filename = pginfo->GetPlaybackURL(TRUE); -+ -+ if (list == "cutlist") -+ pginfo->GetCutList(cutlist); -+ else -+ pginfo->GetCommBreakList(cutlist); -+ -+// Formatting of output data -+ -+ for (it = cutlist.begin(); it != cutlist.end(); ++it) -+ { -+ if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame, -+ { -+ ++it; -+ startValue = it.key(); -+ } -+ -+ if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame -+ { -+ result += QString("app.addSegment(0,0,%1);").arg(it.key()); -+ startValue = it.key(); -+ } -+ else -+ { -+ if ((*it == MARK_COMM_END) && (startValue != 0) || -+ (*it == MARK_CUT_END) && (startValue != 0)) -+ { -+ if (result != "") -+ result += "\n"; -+ startValue = it.key(); -+ result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value -+ } -+ else -+ { -+ result += QString("%1);").arg(it.key() - startValue); // Value is an end value -+ } -+ } -+ } -+ -+if (it.key() != myTotalFrames) -+ { -+ result += QString("%1);").arg(myTotalFrames); -+ } -+ -+// Governs the file output: -+ -+ QString tmp = ""; -+ ostream *out = &cout; -+ -+ if (outputfilename != "-"){ -+ QByteArray tmp = outputfilename.toLocal8Bit(); -+ out = new fstream(tmp.constData(), ios::app | ios::out ); -+ } -+ -+ if (outputfilename == ""){ -+ VERBOSE(VB_IMPORTANT, -+ QString("Error: AVIDemux output requires the use of the --outputfile option.")); -+ return COMMFLAG_EXIT_INVALID_CMDLINE; -+ } -+ -+ tmp = QString("//AD <- Needed to identify//\n" -+ "//--automatically built--\n" -+ "//--Project:\n\n" -+ "var app = new Avidemux();\n\n" -+ "//** Video **\n" -+ "// 01 videos source\n" -+ "app.load(\"%1\");\n\n" -+ "app.clearSegments();\n\n" -+ "%2\n" -+ "app.markerA=0;\n" -+ "app.markerB=%3;\n" -+ "app.rebuildIndex();\n\n" -+ "//** Postproc **\n" -+ "app.video.setPostProc(3,3,0);\n\n" -+ "app.video.setFps1000(%4);\n\n" -+ "//** Filters **\n\n" -+ "//** Video Codec conf **\n" -+ "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n" -+ "//** Audio **\n" -+ "app.audio.reset();\n" -+ "app.audio.codec(\"copy\",128,0,\"\");\n" -+ "app.audio.normalizeMode=0;\n" -+ "app.audio.normalizeValue=0;\n" -+ "app.audio.delay=0;\n" -+ "app.audio.mixer(\"NONE\");\n" -+ "app.setContainer(\"AVI\");\n" -+ "setSuccess(1);\n" -+ "//app.Exit();\n\n" -+ "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData(); -+ -+ const QByteArray tmp2 = tmp.toLocal8Bit(); -+ *out << tmp2.constData() << endl; -+ -+ VERBOSE(VB_IMPORTANT, -+ QString("AVIDemux Project generated for %1 at %2 with filename %3.") -+ .arg(chanid).arg(starttime).arg(outputfilename)); -+ -+ return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; -+} -+ -+ - void streamOutCommercialBreakList( - ostream &output, const QMap<long long, int> &commercialBreakList) - { -@@ -811,6 +937,8 @@ - bool clearCutlist = false; - bool getCutlist = false; - bool getSkipList = false; -+ bool getAviDemuxCutlist = false; -+ bool getAviDemuxSkiplist = false; - QString newCutList = QString::null; - QMap<QString, QString> settingsOverride; - -@@ -960,6 +1088,10 @@ - getCutlist = true; - else if (!strcmp(a.argv()[argpos], "--getskiplist")) - getSkipList = true; -+ else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux")) -+ getAviDemuxCutlist = true; -+ else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux")) -+ getAviDemuxSkiplist = true; - else if (!strcmp(a.argv()[argpos], "--setcutlist")) - newCutList = (a.argv()[++argpos]); - else if (!strcmp(a.argv()[argpos], "-j")) -@@ -1111,6 +1243,8 @@ - " #-#[,#-#]... (ie, 1-100,1520-3012,4091-5094\n" - "--getcutlist Display the current cutlist\n" - "--getskiplist Display the current Commercial Skip list\n" -+ "--getcutlist-avidemux Export cutlist as AVIDemux Project File\n" -+ "--getskiplist-avidemux Export skiplist as AVIDemux Project File\n" - "-v or --verbose debug-level Use '-v help' for level info\n" - "--queue Insert flagging job into the JobQueue rather than\n" - " running flagging in the foreground\n" -@@ -1223,6 +1357,12 @@ - if (!newCutList.isNull()) - return SetCutList(chanid, starttime, newCutList); - -+ if (getAviDemuxCutlist) -+ return GetAviDemux("cutlist", chanid, starttime, outputfilename); -+ -+ if (getAviDemuxSkiplist) -+ return GetAviDemux("commflag", chanid, starttime, outputfilename); -+ - if (getCutlist) - return GetMarkupList("cutlist", chanid, starttime); - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install b/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install deleted file mode 100755 index 513852a..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install +++ /dev/null @@ -1,55 +0,0 @@ - -# arg 1: the new package version -pre_install () { - echo "backing up the database" - dbver=`pacman -Q mythtv-svn | awk ' { print $2 } '` - if [ ! -e /data/databases_backup ] - then - mkdir -p /data/database_backup - fi - mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql -} - -post_install() { - mkdir -p /data/home - /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv - /usr/sbin/usermod -G users,video,audio,optical mythtv -# mkdir /var/log/mythtv -# chown -R mythtv:users /var/log/mythtv - dbver=`pacman -Q mythtv-svn | awk ' { print $2 } '` - if [ ! -e /data/database_backup ] - then - mkdir -p /data/database_backup - fi - chown mythtv:nobody /data/database_backup - chmod g+s /data/database_backup - - mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql - - -} -pre_upgrade () { - pre_install -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - post_install - - /bin/true -} - -# arg 1: the old package version -pre_remove() { - /bin/true -} - -# arg 1: the old package version -post_remove() { -/bint/true -} - -op=$1 -shift -$op $* diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch deleted file mode 100644 index 5bb713f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch +++ /dev/null @@ -1,219 +0,0 @@ -Index: libs/libmythtv/DeviceReadBuffer.h -=================================================================== ---- libs/libmythtv/DeviceReadBuffer.h (revision 18515) -+++ libs/libmythtv/DeviceReadBuffer.h (working copy) -@@ -59,7 +59,7 @@ - void IncrReadPointer(uint len); - - bool HandlePausing(void); -- bool Poll(void) const; -+ bool Poll(void); - uint WaitForUnused(uint bytes_needed) const; - uint WaitForUsed (uint bytes_needed) const; - -Index: libs/libmythtv/DeviceReadBuffer.cpp -=================================================================== ---- libs/libmythtv/DeviceReadBuffer.cpp (revision 18515) -+++ libs/libmythtv/DeviceReadBuffer.cpp (working copy) -@@ -90,9 +90,14 @@ - - void DeviceReadBuffer::Start(void) - { -- lock.lock(); -- bool was_running = running; -- lock.unlock(); -+ bool was_running; -+ -+ { -+ QMutexLocker locker(&lock); -+ was_running = running; -+ error = false; -+ } -+ - if (was_running) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running."); -@@ -104,6 +109,8 @@ - { - VERBOSE(VB_IMPORTANT, - LOC_ERR + QString("Start(): pthread_create failed.") + ENO); -+ -+ QMutexLocker locker(&lock); - error = true; - } - } -@@ -118,21 +125,25 @@ - used = 0; - readPtr = buffer; - writePtr = buffer; -+ -+ error = false; - } - - void DeviceReadBuffer::Stop(void) - { - bool was_running = IsRunning(); -- lock.lock(); -- run = false; -- lock.unlock(); - - if (!was_running) - { -- VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running."); -+ VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running."); - return; - } - -+ { -+ QMutexLocker locker(&lock); -+ run = false; -+ } -+ - pthread_join(thread, NULL); - } - -@@ -229,10 +240,11 @@ - { - uint errcnt = 0; - -- lock.lock(); -- run = true; -- running = true; -- lock.unlock(); -+ { -+ QMutexLocker locker(&lock); -+ run = true; -+ running = true; -+ } - - while (run) - { -@@ -248,6 +260,15 @@ - if (using_poll && !Poll()) - continue; - -+ { -+ QMutexLocker locker(&lock); -+ if (error) -+ { -+ VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state"); -+ break; -+ } -+ } -+ - // Limit read size for faster return from read - size_t read_size = - min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE)); -@@ -268,9 +289,10 @@ - } - } - -- lock.lock(); -- running = false; -- lock.unlock(); -+ { -+ QMutexLocker locker(&lock); -+ running = false; -+ } - } - - bool DeviceReadBuffer::HandlePausing(void) -@@ -293,7 +315,7 @@ - return true; - } - --bool DeviceReadBuffer::Poll(void) const -+bool DeviceReadBuffer::Poll(void) - { - #ifdef USING_MINGW - #warning mingw DeviceReadBuffer::Poll -@@ -302,31 +324,53 @@ - return false; - #else - bool retval = true; -- while (true) -+ uint timeout_cnt = 0; -+ -+ for (;;) - { - struct pollfd polls; - polls.fd = _stream_fd; - polls.events = POLLIN; - polls.revents = 0; - -- int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/); -- if (IsPauseRequested() || !IsOpen() || !run) -+ int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/); -+ -+ if (polls.revents & (POLLERR | POLLHUP | POLLNVAL)) - { -+ VERBOSE(VB_IMPORTANT, LOC + "poll error"); -+ error = true; -+ return true; -+ } -+ -+ if (!run || !IsOpen() || IsPauseRequested()) -+ { - retval = false; - break; // are we supposed to pause, stop, etc. - } - - if (ret > 0) - break; // we have data to read :) -- if ((-1 == ret) && (EOVERFLOW == errno)) -- break; // we have an error to handle -- -- if ((-1 == ret) && ((EAGAIN == errno) || (EINTR == errno))) -- continue; // errors that tell you to try again -- if (ret == 0) -- continue; // timed out, try again -- -- usleep(2500); -+ if (ret < 0) -+ { -+ if ((EOVERFLOW == errno)) -+ break; // we have an error to handle -+ if ((EAGAIN == errno) || (EINTR == errno)) -+ continue; // errors that tell you to try again -+ usleep(2500); -+ } -+ else // ret == 0 -+ { -+ if (++timeout_cnt > 9) -+ { -+ VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up"); -+ QMutexLocker locker(&lock); -+ error = true; -+ return true; -+ } -+ if (timeout_cnt % 2) -+ VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)") -+ .arg(timeout_cnt)); -+ } - } - return retval; - #endif //!USING_MINGW -@@ -360,9 +404,9 @@ - - if (++errcnt > 5) - { -- lock.lock(); -+ QMutexLocker locker(&lock); -+ VERBOSE(VB_RECORD, LOC + "Too many errors."); - error = true; -- lock.unlock(); - return false; - } - -@@ -376,10 +420,8 @@ - VERBOSE(VB_IMPORTANT, LOC + - QString("End-Of-File? fd(%1)").arg(_stream_fd)); - -- lock.lock(); -+ QMutexLocker locker(&lock); - eof = true; -- lock.unlock(); -- - return false; - } - usleep(500); diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch deleted file mode 100644 index 8796eb4..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- mythmusic/mythmusic/aacdecoder.cpp.orig 2008-11-19 12:51:48.000000000 -0500 -+++ mythmusic/mythmusic/aacdecoder.cpp 2008-11-19 12:52:42.000000000 -0500 -@@ -17,6 +17,9 @@ - #define FAAD_MODIFIED - #endif - -+// LinHES need this undefined -+#undef FAAD_MODIFIED -+ - // ANSI C headers - #include <cstdlib> - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch deleted file mode 100644 index 3535310..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch +++ /dev/null @@ -1,139 +0,0 @@ -Index: libs/libmythtv/v4lchannel.h -=================================================================== ---- libs/libmythtv/v4lchannel.h (revision 18874) -+++ libs/libmythtv/v4lchannel.h (working copy) -@@ -103,6 +103,8 @@ - VidModV4L2 videomode_v4l2; ///< Current video mode if 'usingv4l2' is true - - int defaultFreqTable; -+ int prev_inputNumV4L; -+ v4l2_std_id prev_vid_mode; - }; - - #endif -Index: libs/libmythtv/v4lchannel.cpp -=================================================================== ---- libs/libmythtv/v4lchannel.cpp (revision 18874) -+++ libs/libmythtv/v4lchannel.cpp (working copy) -@@ -40,7 +40,8 @@ - device_name(QString::null), driver_name(QString::null), - curList(NULL), totalChannels(0), - currentFormat(""), is_dtv(false), -- usingv4l2(false), defaultFreqTable(1) -+ usingv4l2(false), defaultFreqTable(1), -+ prev_inputNumV4L(-1), prev_vid_mode(-1) - { - } - -@@ -795,62 +796,75 @@ - { - VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)"); - -- int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ int ioctlval; -+ bool streamingDisabled = false; -+ int streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -- // ConvertX (wis-go7007) requires streaming to be disabled -- // before an input switch, do this if initial switch failed. -- bool streamingDisabled = false; -- int streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if ((ioctlval < 0) && (errno == EBUSY)) -+ if (prev_inputNumV4L != inputNumV4L) - { -- ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); -+ ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ -+ // ConvertX (wis-go7007) requires streaming to be disabled -+ // before an input switch, do this if initial switch failed. -+ if ((ioctlval < 0) && (errno == EBUSY)) -+ { -+ ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); -+ if (ioctlval < 0) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -+ "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); -+ -+ ok = false; -+ ioctlval = 0; -+ } -+ else -+ { -+ streamingDisabled = true; -+ -+ // Resend the input switch ioctl. -+ ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -+ } -+ } -+ - if (ioctlval < 0) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); -+ "\n\t\t\twhile setting input (v4l v2)" + ENO); - - ok = false; -- ioctlval = 0; - } -- else -- { -- streamingDisabled = true; - -- // Resend the input switch ioctl. -- ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); -- } -+ prev_inputNumV4L = inputNumV4L; - } - -- if (ioctlval < 0) -- { -- VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile setting input (v4l v2)" + ENO); -- -- ok = false; -- } -- - v4l2_std_id vid_mode = format_to_mode(newFmt, 2); -- ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); -- if (ioctlval < 0) -- { -- VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile setting format (v4l v2)" + ENO); - -- ok = false; -- } -- -- // ConvertX (wis-go7007) requires streaming to be disabled -- // before an input switch, here we try to re-enable streaming. -- if (streamingDisabled) -+ if (prev_vid_mode != vid_mode) - { -- ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); -+ ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); - if (ioctlval < 0) - { - VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -- "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO); -+ "\n\t\t\twhile setting format (v4l v2)" + ENO); - - ok = false; - } -+ -+ // ConvertX (wis-go7007) requires streaming to be disabled -+ // before an input switch, here we try to re-enable streaming. -+ if (streamingDisabled) -+ { -+ ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); -+ if (ioctlval < 0) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + msg + -+ "\n\t\t\twhile reenabling streaming (v4l v2)" + -+ ENO); -+ -+ ok = false; -+ } -+ } -+ prev_vid_mode = vid_mode; - } - } - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch deleted file mode 100644 index f292b7f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch +++ /dev/null @@ -1,658 +0,0 @@ -Index: libs/libmythtv/mpegrecorder.h -=================================================================== ---- libs/libmythtv/mpegrecorder.h (revision 19056) -+++ libs/libmythtv/mpegrecorder.h (working copy) -@@ -80,11 +80,13 @@ - uint GetFilteredAudioLayer(void) const; - uint GetFilteredAudioBitRate(uint audio_layer) const; - -+ void RestartEncoding(void); - bool StartEncoding(int fd); - bool StopEncoding(int fd); - - void ResetForNewFile(void); - -+ bool WaitFor_HDPVR(void); - void HandleResolutionChanges(void); - - inline bool CheckCC(uint pid, uint cc); -@@ -104,7 +106,6 @@ - // State - bool recording; - bool encoding; -- bool needs_resolution; - mutable QMutex start_stop_encoding_lock; - QMutex recording_wait_lock; - QWaitCondition recording_wait; -@@ -113,7 +114,7 @@ - bool cleartimeonpause; - - // Encoding info -- int width, height; -+ uint width, height; - int bitrate, maxbitrate, streamtype, aspectratio; - int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3; - int audvolume; -Index: libs/libmythtv/mpegrecorder.cpp -=================================================================== ---- libs/libmythtv/mpegrecorder.cpp (revision 19056) -+++ libs/libmythtv/mpegrecorder.cpp (working copy) -@@ -19,6 +19,7 @@ - #include <sys/stat.h> - #include <sys/ioctl.h> - #include <sys/time.h> -+#include <sys/poll.h> - - // avlib headers - extern "C" { -@@ -86,7 +87,7 @@ - requires_special_pause(false), - // State - recording(false), encoding(false), -- needs_resolution(false), start_stop_encoding_lock(QMutex::Recursive), -+ start_stop_encoding_lock(QMutex::Recursive), - recording_wait_lock(), recording_wait(), - // Pausing state - cleartimeonpause(false), -@@ -487,13 +488,21 @@ - - bool MpegRecorder::SetFormat(int chanfd) - { -+ uint idx; - struct v4l2_format vfmt; - bzero(&vfmt, sizeof(vfmt)); - - vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -- if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 10) -+ { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO); - return false; - } -@@ -501,8 +510,15 @@ - vfmt.fmt.pix.width = width; - vfmt.fmt.pix.height = height; - -- if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO); - return false; - } -@@ -513,10 +529,19 @@ - /// Set audio language mode - bool MpegRecorder::SetLanguageMode(int chanfd) - { -+ uint idx; - struct v4l2_tuner vt; - bzero(&vt, sizeof(struct v4l2_tuner)); -- if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO); - return false; - } -@@ -549,8 +574,15 @@ - success = false; - } - -- if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO); - success = false; - } -@@ -561,10 +593,19 @@ - bool MpegRecorder::SetRecordingVolume(int chanfd) - { - // Get volume min/max values -+ uint idx; - struct v4l2_queryctrl qctrl; - qctrl.id = V4L2_CID_AUDIO_VOLUME; -- if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to get recording volume parameters(max/min)" + ENO + - "\n\t\t\tusing default range [0,65535]."); -@@ -582,8 +623,15 @@ - ctrl.id = V4L2_CID_AUDIO_VOLUME; - ctrl.value = ctrl_volume; - -- if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to set recording volume" + ENO + "\n\t\t\t" + - "If you are using an AverMedia M179 card this is normal."); -@@ -765,6 +813,7 @@ - - for (uint i = 0; i < ext_ctrls.size(); i++) - { -+ uint idx; - struct v4l2_ext_controls ctrls; - bzero(&ctrls, sizeof(struct v4l2_ext_controls)); - -@@ -774,8 +823,15 @@ - ctrls.count = 1; - ctrls.controls = &ext_ctrls[i]; - -- if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - QMutexLocker locker(&control_description_lock); - VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") + - QString("Could not set %1 to %2") -@@ -814,6 +870,30 @@ - { - maxbitrate = high_mpeg4peakbitrate; - bitrate = high_mpeg4avgbitrate; -+ -+ // query supported audio codecs and prefer AC3 -+ uint idx; -+ struct v4l2_queryctrl qctrl; -+ qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { -+ if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { -+ VERBOSE(VB_IMPORTANT, LOC_WARN + -+ "Unable to get supported audio codecs." + ENO); -+ } -+ else -+ { -+ if (qctrl.minimum != qctrl.maximum) -+ add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING, -+ qctrl.maximum); -+ } - } - maxbitrate = std::max(maxbitrate, bitrate); - -@@ -837,19 +917,36 @@ - int audioinput = audiodevice.toUInt(&ok); - if (ok) - { -+ uint idx; - struct v4l2_audio ain; - bzero(&ain, sizeof(ain)); - ain.index = audioinput; -- if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to get audio input."); - } - else - { - ain.index = audioinput; -- if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0) -+ -+ for (idx = 0; idx < 20; ++idx) - { -+ if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0) -+ break; -+ usleep(100 * 1000); -+ } -+ -+ if (idx == 20) -+ { - VERBOSE(VB_IMPORTANT, LOC_WARN + - "Unable to set audio input."); - } -@@ -1036,17 +1133,26 @@ - if (deviceIsMpegFile) - elapsedTimer.start(); - else if (_device_read_buffer) -- _device_read_buffer->Start(); -+ { -+ VERBOSE(VB_RECORD, LOC + "Initial startup of recorder"); - -- needs_resolution = (driver == "hdpvr"); -+ if (StartEncoding(readfd)) -+ _device_read_buffer->Start(); -+ else -+ { -+ VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording"); -+ recording = false; -+ QMutexLocker locker(&recording_wait_lock); -+ recording_wait.wakeAll(); -+ _error = true; -+ } -+ } - - QByteArray vdevice = videodevice.toAscii(); - while (encoding && !_error) - { - if (PauseAndWait(100)) - continue; -- -- HandleResolutionChanges(); - - if (deviceIsMpegFile) - { -@@ -1090,35 +1196,7 @@ - { - VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected"); - -- _device_read_buffer->Stop(); -- -- QMutexLocker locker(&start_stop_encoding_lock); -- -- StopEncoding(readfd); -- -- // Make sure the next things in the file are a PAT & PMT -- if (_stream_data->PATSingleProgram() && -- _stream_data->PMTSingleProgram()) -- { -- bool tmp = _wait_for_keyframe_option; -- _wait_for_keyframe_option = false; -- HandleSingleProgramPAT(_stream_data->PATSingleProgram()); -- HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); -- _wait_for_keyframe_option = tmp; -- } -- -- if (StartEncoding(readfd)) -- { -- _device_read_buffer->Start(); -- } -- else -- { -- if (0 != close(readfd)) -- VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); -- -- // Force card to be reopened on next iteration.. -- readfd = -1; -- } -+ RestartEncoding(); - } - else if (_device_read_buffer->IsEOF()) - { -@@ -1216,6 +1294,8 @@ - } - } - -+ VERBOSE(VB_RECORD, LOC + "StartRecording finishing up"); -+ - if (_device_read_buffer) - { - if (_device_read_buffer->IsRunning()) -@@ -1224,6 +1304,7 @@ - delete _device_read_buffer; - _device_read_buffer = NULL; - } -+ - StopEncoding(readfd); - - FinishRecording(); -@@ -1373,52 +1454,95 @@ - - if (!paused) - { -+ VERBOSE(VB_RECORD, LOC + "PauseAndWait pause"); -+ -+ // Some drivers require streaming to be disabled before -+ // an input switch and other channel format setting. -+ if (requires_special_pause) -+ StopEncoding(readfd); -+ - if (_device_read_buffer) - { - QMutex drb_lock; - drb_lock.lock(); -- - _device_read_buffer->SetRequestPause(true); -- - pauseWait.wait(&drb_lock, timeout); - } - else -- { -- paused = true; - pauseWait.wakeAll(); -- } - -- // Some drivers require streaming to be disabled before -- // an input switch and other channel format setting. -- if (requires_special_pause) -- StopEncoding(readfd); -- -+ paused = true; - if (tvrec) - tvrec->RecorderPaused(); - } - - unpauseWait.wait(&waitlock, timeout); - } -- if (!request_pause) -+ -+ if (!request_pause && paused) - { -- if (paused) -+ VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause"); -+ -+ if (driver == "hdpvr") - { -- // Some drivers require streaming to be disabled before -- // an input switch and other channel format setting. -- if (requires_special_pause) -- StartEncoding(readfd); -+ m_h264_parser.Reset(); -+ _wait_for_keyframe_option = true; -+ _seen_sps = false; - -- if (_device_read_buffer) -- _device_read_buffer->SetRequestPause(false); -+ // Sleep any less than 1.5 seconds, and the HD-PVR will -+ // return the old resolution, when the resolution is changing. -+ usleep(1500 * 1000); -+ } - -- if (_stream_data) -- _stream_data->Reset(_stream_data->DesiredProgram()); -- } -+ // Some drivers require streaming to be disabled before -+ // an input switch and other channel format setting. -+ if (requires_special_pause) -+ StartEncoding(readfd); -+ -+ if (_device_read_buffer) -+ _device_read_buffer->SetRequestPause(false); -+ -+ if (_stream_data) -+ _stream_data->Reset(_stream_data->DesiredProgram()); -+ - paused = false; - } -+ - return paused; - } - -+void MpegRecorder::RestartEncoding(void) -+{ -+ VERBOSE(VB_RECORD, LOC + "RestartEncoding"); -+ -+ _device_read_buffer->Stop(); -+ -+ QMutexLocker locker(&start_stop_encoding_lock); -+ -+ StopEncoding(readfd); -+ -+ // Make sure the next things in the file are a PAT & PMT -+ if (_stream_data->PATSingleProgram() && -+ _stream_data->PMTSingleProgram()) -+ { -+ _wait_for_keyframe_option = false; -+ HandleSingleProgramPAT(_stream_data->PATSingleProgram()); -+ HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); -+ } -+ -+ if (StartEncoding(readfd)) -+ { -+ _device_read_buffer->Start(); -+ } -+ else -+ { -+ if (0 != close(readfd)) -+ VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); -+ -+ readfd = -1; -+ } -+} -+ - bool MpegRecorder::StartEncoding(int fd) - { - QMutexLocker locker(&start_stop_encoding_lock); -@@ -1427,13 +1551,22 @@ - memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); - command.cmd = V4L2_ENC_CMD_START; - -+ if (driver == "hdpvr") -+ HandleResolutionChanges(); -+ - VERBOSE(VB_RECORD, LOC + "StartEncoding"); -- needs_resolution = (driver == "hdpvr"); - -- for (int idx = 0; idx < 10; ++idx) -+ for (int idx = 0; idx < 20; ++idx) - { - if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) - { -+ if (driver == "hdpvr") -+ { -+ m_h264_parser.Reset(); -+ _wait_for_keyframe_option = true; -+ _seen_sps = false; -+ } -+ - VERBOSE(VB_RECORD, LOC + "Encoding started"); - return true; - } -@@ -1444,7 +1577,7 @@ - return false; - } - -- usleep(250 * 1000); -+ usleep(100 * 1000); - } - - VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO); -@@ -1461,9 +1594,8 @@ - - VERBOSE(VB_RECORD, LOC + "StopEncoding"); - -- for (int idx = 0; idx < 10; ++idx) -+ for (int idx = 0; idx < 20; ++idx) - { -- - if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) - { - VERBOSE(VB_RECORD, LOC + "Encoding stopped"); -@@ -1476,7 +1608,7 @@ - return false; - } - -- usleep(250 * 1000); -+ usleep(100 * 1000); - } - - VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO); -@@ -1544,7 +1676,7 @@ - void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt) - { - if (!pmt) --{ -+ { - return; - } - -@@ -1564,27 +1696,89 @@ - DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i]))); - } - -+bool MpegRecorder::WaitFor_HDPVR(void) -+{ -+ // After a resolution change, it can take the HD-PVR a few -+ // seconds before it is usable again. -+ -+ // Tell it to start encoding, then wait for it to actually feed us -+ // some data. -+ QMutexLocker locker(&start_stop_encoding_lock); -+ -+ struct v4l2_encoder_cmd command; -+ struct pollfd polls; -+ int idx; -+ -+ 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; -+ -+ for (idx = 0; idx < 10; ++idx) -+ { -+ if (poll(&polls, 1, 250) > 0) -+ break; -+ } -+ -+ if (idx == 10) -+ return false; -+ -+ // HD-PVR should now be "ready" -+ command.cmd = V4L2_ENC_CMD_STOP; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { -+ if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) -+ return true; -+ usleep(100 * 1000); -+ } -+ -+ return false; -+} -+ - void MpegRecorder::HandleResolutionChanges(void) - { -- if (!needs_resolution) -- return; -- - VERBOSE(VB_RECORD, LOC + "Checking Resolution"); - struct v4l2_format vfmt; - memset(&vfmt, 0, sizeof(vfmt)); - vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - -+ if (driver == "hdpvr") -+ WaitFor_HDPVR(); -+ -+ uint idx; - uint pix = 0; -+ -+ for (idx = 0; idx < 20; ++idx) -+ { - if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt)) - { - VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2") - .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height)); - pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height; -- needs_resolution = false; -+ break; -+ } -+ // Typically takes 0.9 seconds after a resolution change -+ usleep(100 * 1000); - } - - if (!pix) -+ { -+ VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution"); - return; // nothing to do, we don't have a resolution yet -+ } - - int old_max = maxbitrate, old_avg = bitrate; - if (pix <= 768*568) -@@ -1609,13 +1803,14 @@ - if (old_max == old_avg) - { - VERBOSE(VB_RECORD, LOC + -- QString("Old bitrate %1 CBR").arg(old_avg)); -+ QString("Old bitrate %1 CBR for %2x%3") -+ .arg(old_avg).arg(width).arg(height)); - } - else - { - VERBOSE(VB_RECORD, LOC + -- QString("Old bitrate %1/%2 VBR") -- .arg(old_avg).arg(old_max)); -+ QString("Old bitrate %1/%2 VBR for %3x%4") -+ .arg(old_avg).arg(old_max).arg(width).arg(height)); - } - - if (maxbitrate == bitrate) -@@ -1642,12 +1837,6 @@ - maxbitrate * 1000); - - set_ctrls(readfd, ext_ctrls); -+ - } -- -- // Restart streaming. Shouldn't be needed? seems to be with current driver. -- QMutexLocker locker(&start_stop_encoding_lock); -- StopEncoding(readfd); -- StartEncoding(readfd); -- -- needs_resolution = false; - } diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch deleted file mode 100644 index d26645f..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch +++ /dev/null @@ -1,179 +0,0 @@ -Index: programs/mythcommflag/main.cpp -=================================================================== ---- programs/mythcommflag/main.cpp (revision 18596) -+++ programs/mythcommflag/main.cpp (working copy) -@@ -300,6 +300,132 @@ - return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; - } - -+int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename) -+{ -+ QMap<long long, int> cutlist; -+ QMap<long long, int>::Iterator it; -+ QString result; -+ int startValue = 0; -+ long long myTotalFrames; -+ long long myFrameRate; -+ -+ ProgramInfo *pginfo = -+ ProgramInfo::GetProgramFromRecorded(chanid, starttime); -+ -+ NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo); -+ -+ myFrameRate = (long long)(nvp->GetFrameRate() * 1000); -+ myTotalFrames = 1000000; //nvp->GetTotalFrameCount(); -+ -+ if (!pginfo) -+ { -+ VERBOSE(VB_IMPORTANT, -+ QString("No program data exists for channel %1 at %2") -+ .arg(chanid).arg(starttime)); -+ return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA; -+ } -+ -+ QString filename = pginfo->GetPlaybackURL(TRUE); -+ -+ if (list == "cutlist") -+ pginfo->GetCutList(cutlist); -+ else -+ pginfo->GetCommBreakList(cutlist); -+ -+// Formatting of output data -+ -+ for (it = cutlist.begin(); it != cutlist.end(); ++it) -+ { -+ if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame, -+ { -+ ++it; -+ startValue = it.key(); -+ } -+ -+ if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame -+ { -+ result += QString("app.addSegment(0,0,%1);").arg(it.key()); -+ startValue = it.key(); -+ } -+ else -+ { -+ if ((*it == MARK_COMM_END) && (startValue != 0) || -+ (*it == MARK_CUT_END) && (startValue != 0)) -+ { -+ if (result != "") -+ result += "\n"; -+ startValue = it.key(); -+ result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value -+ } -+ else -+ { -+ result += QString("%1);").arg(it.key() - startValue); // Value is an end value -+ } -+ } -+ } -+ -+if (it.key() != myTotalFrames) -+ { -+ result += QString("%1);").arg(myTotalFrames); -+ } -+ -+// Governs the file output: -+ -+ QString tmp = ""; -+ ostream *out = &cout; -+ -+ if (outputfilename != "-"){ -+ QByteArray tmp = outputfilename.toLocal8Bit(); -+ out = new fstream(tmp.constData(), ios::app | ios::out ); -+ } -+ -+ if (outputfilename == ""){ -+ VERBOSE(VB_IMPORTANT, -+ QString("Error: AVIDemux output requires the use of the --outputfile option.")); -+ return COMMFLAG_EXIT_INVALID_CMDLINE; -+ } -+ -+ tmp = QString("//AD <- Needed to identify//\n" -+ "//--automatically built--\n" -+ "//--Project:\n\n" -+ "var app = new Avidemux();\n\n" -+ "//** Video **\n" -+ "// 01 videos source\n" -+ "app.load(\"%1\");\n\n" -+ "app.clearSegments();\n\n" -+ "%2\n" -+ "app.markerA=0;\n" -+ "app.markerB=%3;\n" -+ "app.rebuildIndex();\n\n" -+ "//** Postproc **\n" -+ "app.video.setPostProc(3,3,0);\n\n" -+ "app.video.setFps1000(%4);\n\n" -+ "//** Filters **\n\n" -+ "//** Video Codec conf **\n" -+ "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n" -+ "//** Audio **\n" -+ "app.audio.reset();\n" -+ "app.audio.codec(\"copy\",128,0,\"\");\n" -+ "app.audio.normalizeMode=0;\n" -+ "app.audio.normalizeValue=0;\n" -+ "app.audio.delay=0;\n" -+ "app.audio.mixer(\"NONE\");\n" -+ "app.setContainer(\"AVI\");\n" -+ "setSuccess(1);\n" -+ "//app.Exit();\n\n" -+ "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData(); -+ -+ const QByteArray tmp2 = tmp.toLocal8Bit(); -+ *out << tmp2.constData() << endl; -+ -+ VERBOSE(VB_IMPORTANT, -+ QString("AVIDemux Project generated for %1 at %2 with filename %3.") -+ .arg(chanid).arg(starttime).arg(outputfilename)); -+ -+ return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; -+} -+ -+ - void streamOutCommercialBreakList( - ostream &output, const QMap<long long, int> &commercialBreakList) - { -@@ -811,6 +937,8 @@ - bool clearCutlist = false; - bool getCutlist = false; - bool getSkipList = false; -+ bool getAviDemuxCutlist = false; -+ bool getAviDemuxSkiplist = false; - QString newCutList = QString::null; - QMap<QString, QString> settingsOverride; - -@@ -960,6 +1088,10 @@ - getCutlist = true; - else if (!strcmp(a.argv()[argpos], "--getskiplist")) - getSkipList = true; -+ else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux")) -+ getAviDemuxCutlist = true; -+ else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux")) -+ getAviDemuxSkiplist = true; - else if (!strcmp(a.argv()[argpos], "--setcutlist")) - newCutList = (a.argv()[++argpos]); - else if (!strcmp(a.argv()[argpos], "-j")) -@@ -1111,6 +1243,8 @@ - " #-#[,#-#]... (ie, 1-100,1520-3012,4091-5094\n" - "--getcutlist Display the current cutlist\n" - "--getskiplist Display the current Commercial Skip list\n" -+ "--getcutlist-avidemux Export cutlist as AVIDemux Project File\n" -+ "--getskiplist-avidemux Export skiplist as AVIDemux Project File\n" - "-v or --verbose debug-level Use '-v help' for level info\n" - "--queue Insert flagging job into the JobQueue rather than\n" - " running flagging in the foreground\n" -@@ -1223,6 +1357,12 @@ - if (!newCutList.isNull()) - return SetCutList(chanid, starttime, newCutList); - -+ if (getAviDemuxCutlist) -+ return GetAviDemux("cutlist", chanid, starttime, outputfilename); -+ -+ if (getAviDemuxSkiplist) -+ return GetAviDemux("commflag", chanid, starttime, outputfilename); -+ - if (getCutlist) - return GetMarkupList("cutlist", chanid, starttime); - diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch deleted file mode 100644 index 0fc452a..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch +++ /dev/null @@ -1,30 +0,0 @@ -Index: programs/mythfrontend/networkcontrol.cpp -=================================================================== ---- programs/mythfrontend/networkcontrol.cpp (revision 19291) -+++ programs/mythfrontend/networkcontrol.cpp (working copy) -@@ -83,6 +83,7 @@ - jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; - jumpMap["zoneminderevents"] = "ZoneMinder Events"; - jumpMap["snapshot"] = "ScreenShot"; -+ jumpMap["mythsmolt"] = "MythSmolt"; - - // These jump point names match the (lowercased) locations from gContext - jumpMap["channelrecpriority"] = "Channel Recording Priorities"; -@@ -191,7 +192,7 @@ - pthread_create(&command_thread, NULL, CommandThread, this); - - gContext->addListener(this); -- -+ - connect(this, SIGNAL(newConnection()), this, SLOT(newConnection())); - } - -@@ -307,7 +308,7 @@ - cs = new QTextStream(s); - cs->setCodec("UTF-8"); - } -- -+ - if (client) - { - closedOldConn = true; diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch deleted file mode 100644 index 5556683..0000000 --- a/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch +++ /dev/null @@ -1,211 +0,0 @@ -Index: libs/libmythui/myththemedmenu.h -=================================================================== ---- libs/libmythui/myththemedmenu.h (revision 19291) -+++ libs/libmythui/myththemedmenu.h (working copy) -@@ -2,6 +2,7 @@ - #define MYTHTHEMEDMENU_H_ - - #include "mythscreentype.h" -+#include "mythdialogbox.h" - #include "mythuistatetype.h" - #include "mythuibuttonlist.h" - #include "xmlparsebase.h" -@@ -77,6 +78,11 @@ - void ReloadExitKey(void); - virtual void aboutToShow(void); - -+ void doMenu(); -+ void aboutScreen(); -+ MythDialogBox *m_menuPopup; -+ void customEvent(QEvent *event); -+ - protected: - virtual bool keyPressEvent(QKeyEvent *e); - -Index: libs/libmythui/myththemedmenu.cpp -=================================================================== ---- libs/libmythui/myththemedmenu.cpp (revision 19291) -+++ libs/libmythui/myththemedmenu.cpp (working copy) -@@ -32,6 +32,7 @@ - m_callbackdata = NULL; - - m_killable = false; -+ - } - - MythThemedMenuState::~MythThemedMenuState() -@@ -95,7 +96,7 @@ - m_exitModifier = -1; - m_menumode = ""; - m_buttonList = NULL; -- -+ m_menuPopup = NULL; - if (!m_state) - { - m_state = new MythThemedMenuState(parent, "themedmenustate"); -@@ -271,6 +272,10 @@ - m_wantpop = true; - } - } -+ else if (action == "MENU") -+ { -+ doMenu(); -+ } - else - handled = false; - } -@@ -292,6 +297,154 @@ - updateLCD(); - } - -+void MythThemedMenu::doMenu() -+{ -+ -+ if (m_menuPopup) -+ return; -+ int allowsd = GetMythDB()->GetNumSetting("AllowQuitShutdown"); -+ int override_menu = GetMythDB()->GetNumSetting("OverRideExitMenu"); -+ QString label = "System Menu"; -+ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); -+ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); -+ if (m_menuPopup->Create()) -+ mainStack->AddScreen(m_menuPopup); -+ if ( override_menu == 0 ) -+ { -+ if ( allowsd != 0 && allowsd !=4 ) -+ { -+ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); -+ m_menuPopup->AddButton("Shutdown"); -+ m_menuPopup->AddButton("Reboot"); -+ } -+ else -+ { -+ m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); -+ } -+ } -+ if ( override_menu == 5 ) -+ { // reboot -+ m_menuPopup->SetReturnEvent(this,"popmenu_reboot"); -+ m_menuPopup->AddButton("Reboot"); -+ } -+ else if ( override_menu == 2 || override_menu == 4 ) -+ { // shutdown -+ m_menuPopup->SetReturnEvent(this,"popmenu_shutdown"); -+ m_menuPopup->AddButton("Shutdown"); -+ } -+ else if ( override_menu == 3 || override_menu == 6 ) -+ { // both -+ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); -+ m_menuPopup->AddButton("Shutdown"); -+ m_menuPopup->AddButton("Reboot"); -+ } -+ else -+ { -+ m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); -+ } -+ -+ m_menuPopup->AddButton("About"); -+ m_menuPopup->AddButton("Cancel"); -+ -+} -+void MythThemedMenu::aboutScreen() -+{ -+ -+ extern const char *myth_source_version; -+ extern const char *myth_source_path; -+ QString distro_line; -+ distro_line=""; -+ -+ QFile file("/etc/os_myth_release"); -+ if ( file.open(QFile::ReadOnly)) -+ { -+ QTextStream t( &file ); // use a text stream -+ distro_line = t.readLine(); -+ file.close(); -+ } -+ -+ QString label = ""; -+ label.append(QObject::tr("Revision: ") + myth_source_version + " \n Branch:" + myth_source_path + "\n" + distro_line ); -+ -+ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); -+ m_menuPopup = new MythDialogBox(label, mainStack, "About"); -+ if (m_menuPopup->Create()) -+ mainStack->AddScreen(m_menuPopup); -+ -+ m_menuPopup->SetReturnEvent(this,"About"); -+ m_menuPopup->AddButton("OK!"); -+ -+} -+ -+void MythThemedMenu::customEvent(QEvent *event) -+{ -+ if (event->type() == kMythDialogBoxCompletionEventType) -+ { -+ DialogCompletionEvent *dce = -+ dynamic_cast<DialogCompletionEvent*>(event); -+ QString resultid= dce->GetId(); -+ int buttonnum = dce->GetResult(); -+ QString halt_cmd=GetMythDB()->GetSetting("HaltCommand"); -+ QString reboot_cmd=GetMythDB()->GetSetting("RebootCommand"); -+ -+ if (resultid == "popmenu_exit") -+ { -+ if (buttonnum == 0) -+ { -+ if (!halt_cmd.isEmpty() ) -+ system(halt_cmd.toAscii()); -+ } -+ -+ if (buttonnum == 1) -+ { -+ if (!reboot_cmd.isEmpty() ) -+ system(reboot_cmd.toAscii()); -+ } -+ -+ if (buttonnum == 2) -+ { -+ aboutScreen(); -+ } -+ } -+ -+ if (resultid == "popmenu_noexit") -+ { -+ if (buttonnum == 0) -+ aboutScreen(); -+ } -+ -+ if (resultid == "popmenu_reboot") -+ { -+ if (buttonnum == 0) -+ { -+ if (!reboot_cmd.isEmpty() ) -+ system(reboot_cmd.toAscii()); -+ } -+ -+ if (buttonnum == 1) -+ { -+ aboutScreen(); -+ } -+ } -+ -+ if (resultid == "popmenu_shutdown") -+ { -+ if (buttonnum == 0) -+ { -+ if (!halt_cmd.isEmpty() ) -+ system(halt_cmd.toAscii()); -+ } -+ -+ if (buttonnum == 1) -+ { -+ aboutScreen(); -+ } -+ } -+ -+ m_menuPopup = NULL; -+ } -+} -+ - /** \brief Parses the element's tags and set the ThemeButton's type, - * text, depends, and action, then adds the button. - * |