From 4aa9339bc64b5477b022a786670be5437815b90b Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 16 Dec 2013 17:45:45 -0600
Subject: mythtv & mythplugins: update to latest fixes. refs #933.

update mythburn.py aspect ratio patch for .27
---
 abs/core/mythtv/stable-0.27/git_src/git_hash       |   2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD   |   7 +-
 .../mythplugins/mythburn.py-aspectratio.patch      | 138 +++++++++++++++++++++
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD        |   2 +-
 4 files changed, 144 insertions(+), 5 deletions(-)
 create mode 100644 abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index 53e3e8d..fd8badd 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-f7852552a089a87d7dd53b5da59958205fbae6fd
+39171be37ab8d63f0f44e5dbd5a78ca6893ceafa
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index 196f8be..8fe13bb 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=6
+pkgrel=7
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
@@ -19,7 +19,7 @@ makedepends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' 'flac' 'libexif'
              'perl-json' 'perl-libwww' 'perl-soap-lite' 'perl-xml-sax'
              'perl-xml-simple' 'perl-xml-xpath' 'python-oauth' 'python-imaging'
              'python-pycurl' 'zlib')
-source=()
+source=('mythburn.py-aspectratio.patch')
 
 build() {
     if [ -e ${srcdir}/mythplugins ]
@@ -48,6 +48,7 @@ package_mytharchive() {
     depends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' "mythtv>=${pkgver}"
              'python-imaging')
     cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
+    patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py-aspectratio.patch || return 1
     make INSTALL_ROOT="${pkgdir}" install || return 1
 }
 
@@ -112,4 +113,4 @@ package_mythzoneminder() {
     make INSTALL_ROOT="${pkgdir}" install || return 1
 }
 
-md5sums=()
+md5sums=('e98c2a09bcb051fdde959fb4bb2e5ab2')
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch b/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch
new file mode 100644
index 0000000..377de95
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch
@@ -0,0 +1,138 @@
+--- mythburn.py.orig	2013-12-16 22:41:31.532703825 +0000
++++ mythburn.py	2013-12-16 22:40:52.191109409 +0000
+@@ -98,6 +98,7 @@
+ from fcntl import ioctl
+ import CDROM
+ from shutil import copy
++from subprocess import Popen, PIPE
+ 
+ import MythTV
+ from MythTV import datetime
+@@ -440,7 +441,7 @@
+                 os.remove(os.path.join(root, name))
+ 
+ #############################################################
+-# Romoves all the objects from a directory
++# Removes all the objects from a directory
+ 
+ def deleteEverythingInFolder(folder):
+     for root, dirs, files in os.walk(folder, topdown=False):
+@@ -666,14 +667,14 @@
+ # Gets the aspect ratio of a video file from its stream info file
+ 
+ def getAspectRatioOfVideo(index):
+-    """Returns the aspect ratio of the video file (1.333, 1.778, etc)"""
++    """Returns the aspect ratio of the original video file (1.333, 1.778, etc)"""
+ 
+     #open the XML containing information about this file
+-    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+ 
+     #error out if its the wrong XML
+     if infoDOM.documentElement.tagName != "file":
+-        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+     video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
+     if video.attributes["aspectratio"].value != 'N/A':
+         aspect_ratio = float(video.attributes["aspectratio"].value)
+@@ -1695,6 +1696,37 @@
+         fatalError("Failed while running mytharchivehelper to get stream information.\n"
+                    "Result: %d, Command was %s" % (result, command))
+ 
++    #open the XML containing information about this file
++    infoDOM = xml.dom.minidom.parse(xmlFilename)
++    
++    #error out if its the wrong XML
++    if infoDOM.documentElement.tagName != "file":
++        fatalError("This info file doesn't look right (%s)." % xmlFilename)
++    
++    file = infoDOM.getElementsByTagName("file")[0]
++    video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
++    
++    #use ffmpeg to get display aspect ratio (DAR) of video
++    cmd = "mythffmpeg -i " + quoteCmdArg(file.attributes["filename"].value) + " 2>&1"
++    aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
++    if "DAR" in aspect_ratio:
++        #clean DAR string
++        aspect_ratio = aspect_ratio.split("DAR ")[-1].split(",")[0]
++        aspect_ratio = ''.join([c for c in aspect_ratio if c in '1234567890:']).split(":")
++    else:
++        #calculate aspect from video size
++        aspect_ratio = getVideoSize(xmlFilename)
++
++    #convert to decimal+
++    aspect_ratio = float(aspect_ratio[0]) / float(aspect_ratio[1])
++
++    write("Video %s aspect ratio is: %s" % (filename, aspect_ratio))
++
++    #set aspect ratio
++    video.setAttribute("aspectratio",str(aspect_ratio))
++    
++    WriteXMLToFile (infoDOM,xmlFilename)
++
+     # print out the streaminfo.xml file to the log
+     infoDOM = xml.dom.minidom.parse(xmlFilename)
+     write(xmlFilename + ":-\n" + infoDOM.toprettyxml("    ", ""), False)
+@@ -2010,7 +2042,7 @@
+ #############################################################
+ # Re-encodes a file to mpeg2
+ 
+-def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile):
++def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile):
+     """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use mythffmpeg"""
+ 
+     profileNode = findEncodingProfile(profile)
+@@ -2035,6 +2067,35 @@
+             value = quoteCmdArg(destvideofile)
+         if value == "%aspect":
+             value = aspectratio
++        if value == "720x480" or value == "720x576":
++            videores, fps, videoAR = getVideoParams(folder)
++            videoWidth = int(videores.split("x")[0])
++            videoHeight = int(videores.split("x")[1])
++            
++            #add padding to correct for aspects > than 1.9:1
++            if float(videoAR) >= 1.9:
++                #check which video type and set the correct height
++                if videomode == "ntsc":
++                    videoModeHeight = 480
++                else:
++                    videoModeHeight = 576
++ 
++                #calculate the video height based on the aspect ratio of the video
++                #multiply by 1.185 to compensate for dvds non-square pixels
++                calVideoHeight = int(round((720 / float(videoAR)) * 1.185))
++                if calVideoHeight % 2 == 1:
++                    calVideoHeight = calVideoHeight + 1
++                #write("calVideoHeight: %s" % calVideoHeight)
++                
++                #use original video height if the calculated video height is close
++                if (calVideoHeight + 20 < videoHeight) or (calVideoHeight - 20 > videoHeight):
++                     videoHeight = calVideoHeight
++
++                cropPixels = videoModeHeight - videoHeight
++
++                write("Crop Pixels Total: %s" % cropPixels)
++                name = "-vf"
++                value = "\"scale=720:%d, setsar=1:1, pad=720:%d:0:%d:black\"" % (videoModeHeight - cropPixels, videoModeHeight, cropPixels / 2)
+ 
+         # only re-encode the audio if it is not already in AC3 format
+         if audio1[AUDIO_CODEC] == "AC3":
+@@ -4608,7 +4669,7 @@
+ 
+             #do the re-encode 
+             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+-                            audio1, audio2, aspectratio, profile)
++                            folder, audio1, audio2, aspectratio, profile)
+             mediafile = os.path.join(folder, 'newfile2.mpg')
+ 
+             #remove the old mediafile that was run through mythtranscode
+@@ -4762,7 +4823,7 @@
+ 
+             #do the re-encode 
+             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+-                            audio1, audio2, aspectratio, profile)
++                            folder, audio1, audio2, aspectratio, profile)
+             mediafile = os.path.join(folder, 'newfile2.mpg')
+ 
+     #remove an intermediate file
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index 59aa538..9a7e954 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=6
+pkgrel=7
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
-- 
cgit v0.12

