aboutsummaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authorChernov <manbornofwoman@gmail.com>2017-02-17 22:10:57 +0000
committerDavid Spencer <idlemoor@slackbuilds.org>2017-02-17 22:11:34 +0000
commitd6f4243bd6e0a7092a4ff5fb90f7f7db4d3dc7d1 (patch)
treee69b3005f847abe67bce3ea4805bdbb070dd41e6 /multimedia
parent7f2cfeef0d9bd72792bcc32fa22bda2e64fa0fd2 (diff)
multimedia/sinthgunt: Fixed download, applied patch.
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/sinthgunt/README6
-rw-r--r--multimedia/sinthgunt/sinthgunt.SlackBuild38
-rw-r--r--multimedia/sinthgunt/sinthgunt.info4
-rw-r--r--multimedia/sinthgunt/sinthgunt.patch1927
4 files changed, 1961 insertions, 14 deletions
diff --git a/multimedia/sinthgunt/README b/multimedia/sinthgunt/README
index 7579ae919e77a..ea941fa1abf3e 100644
--- a/multimedia/sinthgunt/README
+++ b/multimedia/sinthgunt/README
@@ -1,5 +1,5 @@
Sinthgunt is an open source graphical user interface for
ffmpeg, a computer program that can convert digital audio and
-video into numerous formats. Using pre-configured conversion
-settings, it makes the task of converting between different
-media formates very easy.
+video into numerous formats. Using the pre-configured conversion
+settings file /usr/share/sinthgunt/presets.xml, it makes
+the task of converting between different media formats very easy.
diff --git a/multimedia/sinthgunt/sinthgunt.SlackBuild b/multimedia/sinthgunt/sinthgunt.SlackBuild
index 30bd23dd44db9..3b0ef5b86e843 100644
--- a/multimedia/sinthgunt/sinthgunt.SlackBuild
+++ b/multimedia/sinthgunt/sinthgunt.SlackBuild
@@ -2,16 +2,34 @@
# Slackware build script for sinthgunt
-# Written by Chernov V. V. manbornofwoman@gmail.com
+# Copyright 2017
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=sinthgunt
VERSION=${VERSION:-2.1.0}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -22,8 +40,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -46,10 +64,12 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -p1 < $CWD/$PRGNAM.patch
python setup.py install --root=$PKG
diff --git a/multimedia/sinthgunt/sinthgunt.info b/multimedia/sinthgunt/sinthgunt.info
index bd272d0a203e0..7ed2cc12ceb6d 100644
--- a/multimedia/sinthgunt/sinthgunt.info
+++ b/multimedia/sinthgunt/sinthgunt.info
@@ -1,10 +1,10 @@
PRGNAM="sinthgunt"
VERSION="2.1.0"
HOMEPAGE="http://code.google.com/p/sinthgunt/"
-DOWNLOAD="http://sinthgunt.googlecode.com/files/sinthgunt-2.1.0.tar.gz"
+DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sinthgunt/sinthgunt-2.1.0.tar.gz"
MD5SUM="a7f18b5d490dad16d99eb24ee8ba22d7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="ffmpeg"
-MAINTAINER="Chernov V. V."
+MAINTAINER="Chernov"
EMAIL="manbornofwoman@gmail.com"
diff --git a/multimedia/sinthgunt/sinthgunt.patch b/multimedia/sinthgunt/sinthgunt.patch
new file mode 100644
index 0000000000000..647357c7de6a0
--- /dev/null
+++ b/multimedia/sinthgunt/sinthgunt.patch
@@ -0,0 +1,1927 @@
+diff -u3r a/Sinthgunt/app.py b/Sinthgunt/app.py
+--- a/Sinthgunt/app.py 2010-11-22 21:27:55.000000000 +0300
++++ b/Sinthgunt/app.py 2017-02-17 22:03:35.886000000 +0300
+@@ -1,4 +1,5 @@
+ #!/usr/bin/python
++# -*- coding: utf-8 -*-
+ # $Id: app.py 196 2010-11-22 18:27:50Z kare1234 $
+
+ ####################
+@@ -35,17 +36,21 @@
+ # Import Python Libraries
+ ####################
+ import os
++import errno
+ import sys
+ import pygtk; pygtk.require("2.0")
+ import gtk.glade
+ import subprocess
+ import gobject
+ import time
+-import sys
+-import urllib
+ from xml.etree import ElementTree as etree
+
+-
++def logfile_remove(self):
++ try:
++ os.remove(self)
++ except OSError as e: # this would be "except OSError, e:" before Python 2.6
++ if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
++ raise # re-raise exception if a different error occurred
+
+ def main():
+ ####################
+@@ -58,14 +63,15 @@
+ print('It seems, that ffmpeg is not installed on this computer. \nSee http://www.sinthgunt.org for installation instructions.') # Display error message, then carry on
+
+ # Define data and temp directories
+- DATA_DIR="/usr/share/sinthgunt/"
+- TEMP_DIR="/tmp/"
++ DATA_DIR = "/usr/share/sinthgunt/"
++ TEMP_DIR = "/tmp/"
+ # Opens the log file and write the name and curent data and time
+ logfile_filename = os.path.expanduser("~/.sinthgunt.log")
++ logfile_remove(logfile_filename)
+ logfile = open(logfile_filename, 'a')
+- logfile.writelines('****** Sinthgunt log file START - '+
+- str(time.ctime())+' *******\n')
+- logo_filename=DATA_DIR+"logo.png"
++ logfile.writelines('\n****** Sinthgunt log file START - '+
++ str(time.ctime())+' *******\n\n')
++ logo_filename = DATA_DIR+"logo.png"
+
+ # Carry over variables to class
+ sinthgunt.logo_filename = logo_filename
+@@ -98,7 +104,7 @@
+ # -
+ ####################
+
+- def ResetSinthgunt(self,widget):
++ def ResetSinthgunt(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -112,10 +118,10 @@
+ #
+ ####################
+ # Write default stuff to gui
+- self.labelGuide.set_text('Input file(s):')
++ self.labelGuide.set_text("Input file(s):")
+ self.labelOperation.set_text('')
+ context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,"Welcome to sinthgunt!")
++ self.statusbar.push(context_id, "Welcome to sinthgunt!")
+ self.labelInput.set_text('')
+
+ # Load the logo
+@@ -143,8 +149,8 @@
+ # Load XML config file
+ self.parseXML()
+ # Local variables
+- categorylist=self.categorylist # List of categories
+- presetlist=self.presetlist # List of presets in the categories
++ categorylist = self.categorylist # List of categories
++ presetlist = self.presetlist # List of presets in the categories
+ # Connect to menu
+ actionmenu = self.wTree.get_widget("menu2")
+ # Constants
+@@ -154,7 +160,7 @@
+ counter2 = 0 # Counter that keeps track of the codecs in the self.preset_enabled list
+
+ # Create first, dummy item in group. All later items are attached to this group
+- item = gtk.RadioMenuItem(group=None,label='')
++ item = gtk.RadioMenuItem(group = None, label = '')
+ # Initialise presetmenuheaderholder, a holder for the submenues
+ self.presetmenu1headerholder = []
+ self.preset_enabled = []
+@@ -170,32 +176,32 @@
+ if presetlist[i][0] == categorylist[counter]:
+ self.preset_enabled.append('')
+ # Create radio button for the preset
+- item = gtk.RadioMenuItem(group=item,label=presetlist[i][1])
++ item = gtk.RadioMenuItem(group = item, label = presetlist[i][1])
+ # What to do when the radiobutton is clicked
+ item.connect("activate", self.menuradiobuttonselect)
+ # Check to see if the codecs required by the preset are supported by the users version of ffmpeg
+ for requiredcodec in self.presetlist[i][4]:
+- flag =0
++ flag = 0
+ notfound = 1
+ for codec in self.codecs:
+ # If encoding true
+- if requiredcodec==codec[0] and codec[1]==True and flag==0: # preset will work
++ if requiredcodec == codec[0] and codec[1] == True and flag == 0: # preset will work
+ notfound = 0
+- self.preset_enabled[counter2]=True
++ self.preset_enabled[counter2] = True
+ # if encoding false
+- if requiredcodec==codec[0] and codec[1]==False:
++ if requiredcodec == codec[0] and codec[1] == False:
+ label = item.get_children()[0]
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#888888')) # preset will not work - grayed out
+ notfound = 0
+- flag=1
++ flag = 1
+ item.set_tooltip_text('Your version of ffmpeg does not support this preset.')
+- self.preset_enabled[counter2]=False
++ self.preset_enabled[counter2] = False
+ # if codec was not found
+- if notfound==1 and flag==0:
++ if notfound == 1 and flag == 0:
+ label = item.get_children()[0]
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#888888')) # preset might work - grayed out
+ item.set_tooltip_text('Your version of ffmpeg does not support this preset.')
+- self.preset_enabled[counter2]=False
++ self.preset_enabled[counter2] = False
+ counter2 = counter2+1
+ # add item to the headerholder
+ self.presetmenu1headerholder[counter].append(item)
+@@ -219,41 +225,42 @@
+ # ===============
+ #
+ ####################
+- context_id = self.statusbar.get_context_id("Activation")
++ context_id = self.statusbar.get_context_id("Activation")
+ output = ''
+ try:
+ output_raw = str(self.process.stdout.read(80))
+- output = output_raw.replace('\n','')
++ output = output_raw.replace('\n', '').replace('\r', '').replace('fps=', 'fps= ')
+ except:
+ pass
+- self.logfile.writelines('Conversion status: '+output+'\n')
++ self.logfile.writelines('Output: '+output+'\n')
+ output_split = output.split(' ')
+- N=len(output_split)
++ N = len(output_split)
+
+ # get the number of frames converted
+ for i in range(N):
+- if i>=2 and output_split[i]=='fps=':
+- file_frames_completed = output_split[i-1]
+- self.logfile.writelines('Frames completed: '+file_frames_completed+'\n')
+- # update progressbar and statusbar
+- try:
+- context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,'Frames converted: '+str(file_frames_completed))
+- except:
+- pass
+- try:
+- self.progressbar.set_fraction(float(\
+- file_frames_completed)/float(self.file_frames))
+- self.progressbar.set_text(str(file_frames_completed)+\
+- ' of '+str(self.file_frames)+' frames converted.')
+- except:
+- pass
++ if i >= 2 and output_split[i] == 'fps=':
++ file_frames_completed = output_split[i-1]
++ split_file_frames_completed = file_frames_completed.replace('frame=', '')
++ # update progressbar and statusbar
++ try:
++ context_id = self.statusbar.get_context_id("Activation")
++ self.statusbar.push(context_id, 'Frames converted: '+str(split_file_frames_completed))
++ except:
++ pass
++ try:
++ self.progressbar.set_fraction(float(\
++ split_file_frames_completed)/float(self.file_frames))
++ #self.progressbar.set_text(str(split_file_frames_completed)+\
++ #' of '+str(self.file_frames)+' frames converted.')
++ self.progressbar.set_text('Converting '+self.input[self.NextInputFileToConvert])
++ except:
++ pass
+
+ # Look for Classic errors. This should be done in a separate function sometime soon
+ # "Must supply at least one output file"
+ for i in range(N-1):
+- if i>=2 and output_split[i]=='Must=' and output_split[i+1]=='supply': # an error has occured
+- self.statusbar.push(context_id,'An error has occured. See the log file for details.')
++ if i >= 2 and output_split[i] == 'Must=' and output_split[i+1] == 'supply': # an error has occured
++ self.statusbar.push(context_id, 'An error has occured. See the log file for details.')
+ self.progressbar.set_fraction(0.0)
+ self.progressbar.set_text('')
+ return False
+@@ -261,24 +268,25 @@
+
+
+ # if no output detected, stop watching the process and write to statusbar
+- if output =='':
+- self.statusbar.push(context_id,'Conversion completed!')
++ if output == '':
++ self.statusbar.push(context_id, 'Conversion completed!')
++ self.progressbar.set_text('')
+ self.progressbar.set_fraction(0.99999)
+ # We are now done with the current file. Move on to next one if there are any left
+ if self.NextInputFileToConvert <= len(self.input) - 2:
+ self.NextInputFileToConvert = self.NextInputFileToConvert + 1
+ self.activate(self.window)
+ else:
+- self.NextInputFileToConvert = 0
++ #self.NextInputFileToConvert = 0
+ self.ResetSinthgunt(self.window)
+- self.statusbar.push(context_id,'Conversion completed!')
++ self.statusbar.push(context_id, 'Conversion completed!')
+ return False
+ else:
+ return True
+
+
+
+- def menuopenfile(self,widget):
++ def menuopenfile(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -322,6 +330,8 @@
+ filter.add_pattern("*.3G2")
+ filter.add_pattern("*.mts")
+ filter.add_pattern("*.MTS")
++ filter.add_pattern("*.mkv")
++ filter.add_pattern("*.MKV")
+ fc.add_filter(filter)
+ # all files
+ filter = gtk.FileFilter()
+@@ -357,7 +367,7 @@
+ #
+ ####################
+ # generate thumbnail from input file
+- self.thumbnail_filename=self.generateThumbnail(self.input[-1])
++ self.thumbnail_filename = self.generateThumbnail(self.input[-1])
+
+ # update thumbnail
+ try:
+@@ -369,20 +379,19 @@
+
+ # fill label with file info
+ self.labelInput.set_text('')
+- self.labelInput.set_text('Codec info for '+self.input[-1]+'\n\n'\
+- 'Audio codec: '+str(self.audio_codec[0])+'\n'\
+- 'Audio bitrate: '+str(self.audio_codec[4])+' kb/s\n'\
+- +'Video codec: '+ str(self.video_codec[0])\
+- +'\nVideo resolution: '+ str(self.video_codec[2])\
+- +'\nVideo bitrate: '+ str(self.video_codec[3])\
+- +'\n'+'Number of frames: '+str(self.file_frames))
+- self.ListOfInputFiles='\n'
++ self.labelInput.set_text('Codec info for\n'\
++ + self.input[-1] +'\n\n'\
++ 'Audio codec: '+ str(self.audio_codec[0]) +'\n'\
++ 'Video codec: '+ str(self.video_codec[0]) +'\n'\
++ 'Bitrate: '+ str(self.video_codec[1])+'\n'
++ 'Number of frames: '+str(self.file_frames)+'\n')
++ self.ListOfInputFiles = '\n'
+ for i in range(len(self.input)):
+- StringToAdd=str(i+1)+'. '+self.input[i]+'\n'
+- self.ListOfInputFiles=self.ListOfInputFiles+StringToAdd
++ StringToAdd = str(i+1)+'. '+self.input[i]+'\n'
++ self.ListOfInputFiles = self.ListOfInputFiles+StringToAdd
+ self.labelGuide.set_text('Input file(s): '+self.ListOfInputFiles)
+
+- def RemoveInputFile(self,widget):
++ def RemoveInputFile(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -398,7 +407,7 @@
+ #
+ ####################
+ #base this on a message dialog
+- dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,gtk.MESSAGE_QUESTION,gtk.BUTTONS_OK_CANCEL,None)
++ dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
+ dialog.set_markup('Enter the number of the input file you wish to remove')
+ #create the text input field
+ entry = gtk.Entry()
+@@ -414,18 +423,17 @@
+ dialog.vbox.pack_end(hbox, True, True, 0)
+ dialog.show_all()
+ #go go go
+- Response=dialog.run()
++ Response = dialog.run()
+ if Response == gtk.RESPONSE_OK:
+ try:
+ InputFileToRemove = int(entry.get_text())-1
+- # Clear everything if we are removing the last tile
++ # Clear everything if we are removing the last tile
+ if len(self.input) >= 2:
+ del self.input[InputFileToRemove]
+ self.setinput(widget)
+ self.NextInputFileToConvert = 0
+ else:
+ self.ResetSinthgunt(widget)
+- self.ResetSinthgunt(widget)
+ except:
+ pass
+
+@@ -447,25 +455,20 @@
+ # This function uses ffmpeg to generate a thumbnail.
+ ####################
+
+- # get file base name
+- temp = videoFile.split('/')
+- N = len(temp)
+- videoFileBaseName = temp[N-1]
+- # set thumbnail filename
+- thumbnailFileName = sinthgunt.TEMP_DIR+str(videoFileBaseName)+".jpg"
++ thumbnailFileName = sinthgunt.TEMP_DIR+"videothumbnail.jpg"
+
+ # ffmpeg command line
+- subcommand = ['ffmpeg', '-y', '-itsoffset', '-5' ,'-i' ,videoFile,\
+- "-vcodec","mjpeg","-vframes", "1", "-an", "-f", "rawvideo", "-s", "170x128",\
+- thumbnailFileName]
++ subcommand = ['ffmpeg', '-v', 'warning', '-y', '-itsoffset', '-5', '-i', videoFile, \
++ '-vcodec', 'mjpeg', '-vframes', '1', '-an', '-f', 'rawvideo', '-s', '172x129', \
++ '-vf', 'crop=4/3*in_h:in_h', thumbnailFileName]
+
+- thumbProcess = subprocess.Popen(args=subcommand,
+- stdout=subprocess.PIPE,stdin=subprocess.PIPE,
+- stderr=subprocess.STDOUT,shell=False)
++ thumbProcess = subprocess.Popen(args = subcommand,
++ stdout = subprocess.PIPE, stdin = subprocess.PIPE,
++ stderr = subprocess.STDOUT, shell = False)
+
+ # Read output from thumbnail process and write it to the log file
+ output = str(thumbProcess.stdout.read(100))
+- self.logfile.writelines('Thumbnail process status: '+output+'\n')
++ self.logfile.writelines('\n\nThumbnail process status: '+output+'\n')
+
+ # Wait for thumbnail process to complete
+ thumbProcess.wait()
+@@ -474,7 +477,7 @@
+ return thumbnailFileName
+
+
+- def generatePreview(self,widget):
++ def generatePreview(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -495,17 +498,17 @@
+ try:
+ operation = self.operation_radiobutton
+ context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,'Creating preview of '+self.input[-1]+'. You can view it using the Play menu.')
++ self.statusbar.push(context_id, 'Creating preview of '+self.input[-1]+'. You can view it using the Play menu.')
+
+ #for now, operate on last input file
+- InputFileName=self.input[-1]
++ InputFileName = self.input[-1]
+ for i in range(self.Npreset):
+ if operation == self.presetlist[i][1]:
+ # generate command line in subprocess syntax
+- subcommand = ['/usr/bin/ffmpeg','-y','-i']
++ subcommand = ['/usr/bin/ffmpeg', '-y', '-i']
+ subcommand.extend([InputFileName])
+- subcommand.extend(['-t','5'])
+- temp1=self.presetlist[i][2].split(' ')
++ subcommand.extend(['-t', '5'])
++ temp1 = self.presetlist[i][2].split(' ')
+ # remove empty entries ('') from the array
+ for ii in range(20):
+ try:
+@@ -514,19 +517,19 @@
+ pass
+ temp1.extend([str(InputFileName+"_preview."+self.presetlist[i][3])])
+ # path to output file
+- self.output=str(InputFileName+"_preview."+self.presetlist[i][3])
++ self.output = str(InputFileName+"_preview."+self.presetlist[i][3])
+ subcommand.extend(temp1)
+ # Start converting
+- self.process = subprocess.Popen(args=subcommand,
+- stdout=subprocess.PIPE,stdin=subprocess.PIPE,
+- stderr=subprocess.STDOUT,shell=False)
++ self.process = subprocess.Popen(args = subcommand,
++ stdout = subprocess.PIPE, stdin = subprocess.PIPE,
++ stderr = subprocess.STDOUT, shell = False)
+
+- self.logfile.writelines('Conversion command: '+str(subcommand)+'\n')
++ self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n')
+ except:
+ self.no_file_selected_dialog(widget)
+
+
+- def BeginConversion(self,widget,InputFileIndex):
++ def BeginConversion(self, widget, InputFileIndex):
+ ####################
+ # Description
+ # ===========
+@@ -542,7 +545,7 @@
+ ####################
+
+
+- def activate(self,widget):
++ def activate(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -563,17 +566,17 @@
+ operation = self.operation_radiobutton
+ self.progressbar.set_fraction(0.01)
+ context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,'Converting '+self.input[self.NextInputFileToConvert])
++ self.statusbar.push(context_id, 'Converting '+self.input[self.NextInputFileToConvert])
+
+ #start watching output
+- self.source_id = gobject.timeout_add(500, self.checkfile)
+- InputFileName=self.input[self.NextInputFileToConvert]
++ self.source_id = gobject.timeout_add(300, self.checkfile)
++ InputFileName = self.input[self.NextInputFileToConvert]
+ for i in range(self.Npreset):
+ if operation == self.presetlist[i][1]:
+ # generate command line in subprocess syntax
+- subcommand = ['/usr/bin/ffmpeg','-y','-i']
++ subcommand = ['/usr/bin/ffmpeg', '-y', '-i']
+ subcommand.extend([InputFileName])
+- temp1=self.presetlist[i][2].split(' ')
++ temp1 = self.presetlist[i][2].split(' ')
+ # remove empty entries ('') from the array
+ for ii in range(20):
+ try:
+@@ -582,19 +585,19 @@
+ pass
+ temp1.extend([str(InputFileName+"."+self.presetlist[i][3])])
+ # path to output file
+- self.output=str(InputFileName+"."+self.presetlist[i][3])
++ self.output = str(InputFileName+"."+self.presetlist[i][3])
+ subcommand.extend(temp1)
+ # Start converting
+- self.process = subprocess.Popen(args=subcommand,
+- stdout=subprocess.PIPE,stdin=subprocess.PIPE,
+- stderr=subprocess.STDOUT,shell=False)
++ self.process = subprocess.Popen(args = subcommand,
++ stdout = subprocess.PIPE, stdin = subprocess.PIPE,
++ stderr = subprocess.STDOUT, shell = False)
+
+- self.logfile.writelines('Conversion command: '+str(subcommand)+'\n')
++ self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n')
+ except:
+ self.no_file_selected_dialog(widget)
+
+
+- def stop(self,widget):
++ def stop(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -608,19 +611,19 @@
+ #
+ ####################
+ try:
+- os.kill(self.process.pid,9)
++ os.kill(self.process.pid, 9)
+ gobject.source_remove(self.source_id)
+ self.progressbar.set_fraction(0.0)
+ self.progressbar.set_text('')
+- self.logfile.writelines('Conversion aborted by user\n')
++ self.logfile.writelines('\nConversion aborted by user\n')
+ context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,'Conversion aborted!')
++ self.statusbar.push(context_id, 'Conversion aborted!')
+ except:
+ pass
+
+
+
+- def quit_program(self,widget):
++ def quit_program(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -634,7 +637,7 @@
+ #
+ ####################
+ self.stop
+- self.logfile.writelines('****** Sinthgunt log file STOP - '+str(time.ctime())+' *******\n')
++ self.logfile.writelines('\n****** Sinthgunt log file STOP - '+str(time.ctime())+' *******\n\n')
+ self.logfile.close
+ gtk.main_quit()
+
+@@ -653,17 +656,17 @@
+ # ===============
+ #
+ ####################
+- self.audio_codec = ['N/A','N/A','N/A','N/A','N/A']
+- self.video_codec = ['N/A','N/A','N/A','N/A','N/A']
++ self.audio_codec = ['N/A']
++ self.video_codec = ['N/A', 'N/A']
+ self.file_frames = 0
+- InputFileName=self.input[-1]
+- command = ["ffmpeg","-i",InputFileName]
++ InputFileName = self.input[-1]
++ command = ['ffmpeg', '-i', InputFileName]
+
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
++ process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
++ stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
+
+ flag = 1
+- counter=0
++ counter = 0
+ try:
+ while flag == 1:
+ try:
+@@ -674,56 +677,50 @@
+ if output != '\n' and output != '':
+ self.logfile.writelines('Get file info status: '+output+'\n')
+ output_split = output.split(' ')
+- N=len(output_split)
++ N = len(output_split)
+ for i in range(N):
+
+ # Find length of audio/video file in seconds
+- if output_split[i]=='Duration:':
+- file_length_min=output_split[i+1]
+- file_length_min_split=file_length_min.split(':')
++ if output_split[i] == 'Duration:':
++ file_length_min = output_split[i+1]
++ file_length_min_split = file_length_min.split(':')
+ temp = file_length_min_split[2].split('.')
+- file_length_min_split[2]=temp[0]
++ file_length_min_split[2] = temp[0]
+ # Calculate length of file in seconds
+- file_length_sec=3600*float(file_length_min_split[0])+\
++ file_length_sec = 3600*float(file_length_min_split[0])+\
+ 60*float(file_length_min_split[1])+\
+ float(file_length_min_split[2])
+
+ # Find video codec
+- if output_split[i]=='Video:':
++ if output_split[i] == 'Video:':
+ self.video_codec[0] = output_split[i+1].strip(',')
+- self.video_codec[1] = output_split[i+2].strip(',')
+- self.video_codec[2] = output_split[i+3].strip(',')
+
+ # Find video bitrate
+- if output_split[i]=='bitrate:':
+- self.video_codec[3] = output_split[i+1].strip(',')+' kb/s'
++ if output_split[i] == 'bitrate:':
++ self.video_codec[1] = output_split[i+1].strip(',')+' kb/s'
+
+ # Find frames pr. second in the file
+- if i>=2 and (output_split[i]=='tb(r)\n' or output_split[i]=='tb(r)\nMust' or output_split[i]=='tbr,'):
+- file_fps=output_split[i-1]
++ if i >= 2 and (output_split[i] == 'tb(r)\n' or output_split[i] == 'tb(r)\nMust' or output_split[i] == 'tbr,'):
++ file_fps = output_split[i-1]
+ # Calculate total number of frames
+ self.file_frames = int(file_length_sec*float(file_fps))
+
+ # Find audio codec
+- if output_split[i]=='Audio:':
+- self.audio_codec = [output_split[i+1].strip(','),
+- output_split[i+2].strip(','),
+- output_split[i+3].strip(','),
+- output_split[i+4].strip(','),
+- output_split[i+5]]
++ if output_split[i] == 'Audio:':
++ self.audio_codec = [output_split[i+1].strip(',')]
+ #flag = 0
+
+ # Stop if we reach the end of ffmpeg's output
+- if counter >= 1000 or output_spilt[i]=='file\n':
++ if counter >= 1000 or output_split[i] == 'file\n':
+ flag = 0
+ counter = counter+1
+ except:
+ pass
+ self.logfile.writelines('Audio codec: '+str(self.audio_codec)+'\n')
+ self.logfile.writelines('Video codec: '+str(self.video_codec)+'\n')
+- self.logfile.writelines('Number of frames: '+str(self.file_frames)+'\n')
++ self.logfile.writelines('Number of frames: '+str(self.file_frames)+'\n') #self.logfile.writelines(''+str(file_fps)+'\n')
+
+- def aboutdialog(self,widget):
++ def aboutdialog(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -746,9 +743,9 @@
+ \nConvert button in the main window.\
+ \n\nPlease visit http://www.sinthgunt.org\
+ \nfor more info."
+- self.InformationDialog(widget,dialogtext)
++ self.InformationDialog(widget, dialogtext)
+
+- def no_file_selected_dialog(self,widget):
++ def no_file_selected_dialog(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -761,11 +758,11 @@
+ # ===============
+ #
+ ####################
+- dialogtext = "You have to select a file and/or a preset before you \
++ dialogtext = "\n You have to select a file and/or a preset before you \
+ \ncan begin converting!"
+- self.ErrorDialog(widget,dialogtext)
++ self.ErrorDialog(widget, dialogtext)
+
+- def unsupported_codec_dialog(self,widget):
++ def unsupported_codec_dialog(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -778,13 +775,13 @@
+ # ===============
+ #
+ ####################
+- dialogtext = "You have selected a preset which is (probably) not supported by your version of ffmpeg. \
++ dialogtext = " You have selected a preset which is (probably) not supported by your version of ffmpeg. \
+ To upgrade ffmpeg, please check your distribution documentation. \
+-\n If you want, you may disregard this warning and check the log file (sinthgunt.log) \
++\n If you want, you may disregard this warning and check the log file (~/.sinthgunt.log) \
+ after pressing the convert button"
+- self.ErrorDialog(widget,dialogtext)
++ self.ErrorDialog(widget, dialogtext)
+
+- def ErrorDialog(self,widget,dialogtext):
++ def ErrorDialog(self, widget, dialogtext):
+ ####################
+ # Description
+ # ===========
+@@ -802,10 +799,10 @@
+ gtk.BUTTONS_NONE, dialogtext)
+ message.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
+ resp = message.run()
+- if resp == gtk.RESPONSE_CLOSE:
++ if resp == gtk.RESPONSE_CLOSE or gtk.STOCK_CLOSE:
+ message.destroy()
+
+- def InformationDialog(self,widget,dialogtext):
++ def InformationDialog(self, widget, dialogtext):
+ ####################
+ # Description
+ # ===========
+@@ -821,13 +818,13 @@
+ message = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, dialogtext)
+ message.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
+ resp = message.run()
+- if resp == gtk.RESPONSE_CLOSE:
++ if resp == gtk.RESPONSE_CLOSE or gtk.STOCK_CLOSE:
+ message.destroy()
+
+
+
+
+- def menuradiobuttonselect(self,widget):
++ def menuradiobuttonselect(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -840,16 +837,16 @@
+ #
+ ####################
+ self.operation_radiobutton = ''
+- counter=0
++ counter = 0
+ for presetmenu1header in self.presetmenu1headerholder:
+ for item in presetmenu1header:
+ if item.get_active() == True:
+ self.operation_radiobutton = self.presetlist[counter][1]
+ self.labelOperation.set_text('Output to '+self.presetlist[counter][1])
+ # if preset is not supported, display unsupported_codec_dialog
+- if self.preset_enabled[counter]==False:
++ if self.preset_enabled[counter] == False:
+ self.unsupported_codec_dialog(widget)
+- self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+'\n(Preset not supported by ffmpeg)')
++ self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+'\n(Preset not supported)')
+ #item.set_active(True)
+ counter = counter + 1
+
+@@ -877,48 +874,48 @@
+ xml_file = os.path.dirname(xml_file) # load xml file
+ xml_file = os.path.join(xml_file, self.DATA_DIR+"presets.xml")
+ optionsXML = etree.parse(xml_file)
+- presets=[]
+- row = [' ',' ',' ',' ',[]]
++ presets = []
++ row = [' ', ' ', ' ', ' ', []]
+
+- # Iterate through presets in xml file
++ # Iterate through presets in xml file
+ for child in optionsXML.getiterator():
+ if child.tag == 'label': # preset name
+- row[1]=child.text
++ row[1] = child.text
+
+ if child.tag == 'params': # preset ffmpeg command line options
+- row[2]=child.text
++ row[2] = child.text
+
+ if child.tag == 'extension': # output file extension
+- row[3]=child.text.strip(' ')
++ row[3] = child.text.strip(' ')
+
+ if child.tag == 'category': # preset category
+- row[0]=child.text
++ row[0] = child.text
+
+ if child.tag == 'codecs': # encoding codecs required by preset
+- row[4]=child.text.split(',')
++ row[4] = child.text.split(',')
+ presets.append(row)
+- row = [' ',' ',' ',' ',[]]
++ row = [' ', ' ', ' ', ' ', []]
+ # (planned): Test if codec will work
+
+
+- # Sort by category name
+- presets.sort(lambda x, y: cmp(x[0],y[0]))
++ # Sort by category name
++ presets.sort(lambda x, y: cmp(x[0], y[0]))
+
+- # find category list
+- categories=[presets[0][0]]
+- for row in presets:
+- if row[0]!=categories[-1]:
+- categories.append(row[0])
++ # find category list
++ categories = [presets[0][0]]
++ for row in presets:
++ if row[0] != categories[-1]:
++ categories.append(row[0])
+
+ # make lists global
+- self.presetlist=presets
+- self.categorylist=categories
++ self.presetlist = presets
++ self.categorylist = categories
+
+ # Get codecs and check if encoding and/or decoding is avaliable
+ self.ffmpeg_getcodecs()
+
+
+- def ffmpeg_getinfo(self,widget):
++ def ffmpeg_getinfo(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -936,16 +933,16 @@
+ #
+ ####################
+ self.ffmpeg_getcodecs()
+- command = ["ffmpeg","-version"]
++ command = ['ffmpeg', '-version']
+ output = ''
+ try:
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
++ process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
++ stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
+ output = str(process.stdout.read(10000))
+ except:
+ None
+- dialogtext=output
+- self.InformationDialog(widget,dialogtext)
++ dialogtext = output
++ self.InformationDialog(widget, dialogtext)
+
+ def ffmpeg_getcodecs(self):
+ ####################
+@@ -960,224 +957,73 @@
+ # ===============
+ #
+ ####################
+- command = ["ffmpeg","-formats"]
++ command = ['ffmpeg', '-v', 'warning', '-formats']
+ output = ''
+
+ try:
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
++ process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
++ stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
+ output = str(process.stdout.read(20000))
+ except:
+ None
+- #self.logfile.writelines('ffmpeg_getformats output: '+str(output))
+
+- command = ["ffmpeg","-codecs"]
++ command = ['ffmpeg', '-v', 'warning', '-codecs']
+
+ try:
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
++ process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
++ stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
+ output += str(process.stdout.read(20000))
+ except:
+ None
+- self.logfile.writelines('ffmpeg_getcodecs output: '+str(output))
++ self.logfile.writelines('\nCodecs output:\n'+str(output)+'\n')
+
+- output_lines=output.split('\n')
+- codecs_raw=[]
+- Ncodecs=0
++ output_lines = output.split('\n')
++ codecs_raw = []
++ Ncodecs = 0
+ for line in output_lines:
+- line_split=line.split(' ')
+- line_codec=line_split[0:7]
++ line_split = line.split(' ')
++ line_codec = line_split[0:7]
+ for i in range(20):
+ try:
+ line_codec.remove('')
+ except:
+ pass
+ codecs_raw.append(line_codec)
+- Ncodecs=Ncodecs+1
+- self.logfile.writelines('ffmpeg_getcodecs codecs_raw: '+str(codecs_raw))
++ Ncodecs = Ncodecs+1
++ self.logfile.writelines('\nRaw codecs:\n'+str(codecs_raw)+'\n')
+ # look for encoding
+- self.codecs=[]
++ self.codecs = []
+ for i in range(Ncodecs):
+- flag = 0
++ flagA = 0
++ flagB = 0
+ try:
+ # row: codec name, encode, decode
+- row = ['',False,False]
++ row = ['', False, False]
+ # Check to see if we can encode
+- if codecs_raw[i][0].find('E')== 0 or codecs_raw[i][0].find('E')== 1:
+- row[0]=codecs_raw[i][-1]
+- row[1]=True
+- flag = 1
++ if codecs_raw[i][0].find('E') == 0 or codecs_raw[i][0].find('E') == 1:
++ row[0] = codecs_raw[i][-1]
++ row[1] = True
++ flagA = 1
+ # Check to see if we can decode
+- if codecs_raw[i][0].find('D')== 0 or codecs_raw[i][0].find('D')== 1:
+- row[0]=codecs_raw[i][-1]
+- row[2]=True
+- flag =1
++ if codecs_raw[i][0].find('D') == 0 or codecs_raw[i][0].find('D') == 1:
++ row[0] = codecs_raw[i][-1]
++ row[2] = True
++ flagB = 1
+ # Only add codec if we can either encode or decode
+- if flag==1:
++ if flagA and flagB == 1:
+ self.codecs.append(row)
+ except:
+ pass
+ # Debugging codec row
+- row = ['debugcodec',True,True]
++ row = ['debugcodec', True, True]
+ self.codecs.append(row)
+- self.logfile.writelines('ffmpeg_getcodecs self.codecs: '+str(self.codecs))
+-
+-
+-#####################
+-## YouTube functions
+-#####################
+- def menuopenyoutube(self,widget):
+- ####################
+- # Description
+- # ===========
+- """ Dialog that allows the user to enter a YouTube url.
+- Once the user presses the 'ok' button, the download will begin"""
+- # Arguments
+- # =========
+- #
+- # Further Details
+- # ===============
+- #
+- ####################
+- #base this on a message dialog
+- dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,gtk.MESSAGE_QUESTION,gtk.BUTTONS_OK_CANCEL,None)
+- dialog.set_markup('Please enter a link to a video file, eg.')
+- #create the text input field
+- entry = gtk.Entry()
+- #allow the user to press enter to do ok
+- #entry.connect("activate", dialog.response(response), dialog, gtk.RESPONSE_OK)
+- #create a horizontal box to pack the entry and a label
+- hbox = gtk.HBox()
+- hbox.pack_start(gtk.Label("URL:"), False, 5, 5)
+- hbox.pack_end(entry)
+- #some secondary text
+- dialog.format_secondary_markup("<i>http://www.youtube.com/watch?v=LkCNJRfSZBU</i>\n\n\
+-Sinthgunt supports YouTube, Metacafe, Google Video, Photobucket and Yahoo! Video.")
+- #add it and show it
+- dialog.vbox.pack_end(hbox, True, True, 0)
+- dialog.show_all()
+- # Start dialog.
+- Response = dialog.run()
+- self.youtubeurl = entry.get_text()
+- dialog.destroy()
+- dialog.destroy()
+- # Did we press Ok? If yes, proceed
+- if Response == gtk.RESPONSE_OK:
+- try:
+- # Look for direct link to media file
+- if self.youtubeurl[-4]=='.':
+- # find last '/'
+- for i in range(len(self.youtubeurl)):
+- if self.youtubeurl[-i]=='/':
+- output=self.youtubeurl[-i+1:]
+- break
+- self.input.extend([os.getenv("HOME")+'/'+output])
+- self.download(widget,self.youtubeurl)
+- self.setinput(widget)
+- else:
+- self.download_youtube_dl(widget,self.youtubeurl)
+- self.setinput(widget)
+- except:
+- pass
+-
+-
+- def download(self,widget,url):
+- ####################
+- # Description
+- # ===========
+- """Copy the contents of a file from a given URL to a local file."""
+- # Arguments
+- # =========
+- # url http url of the remote file to download eg. http://www.example.org/movie.mpg
+- #
+- # Further Details
+- # ===============
+- #
+- ####################
+- webFile=urllib.urlretrieve(url, self.input[-1],lambda nb, bs, fs, url=url: self._reporthook(widget,nb,bs,fs,url))
+-
+- def download_youtube_dl(self,widget,url):
+- ####################
+- # Description
+- # ===========
+- """Downloads video files from sites like youtube.com, metacafe.com and video.google.com."""
+- # Arguments
+- # =========
+- # url http url of the remote file to download eg. http://www.example.org/movie.mpg
+- #
+- # Further Details
+- # ===============
+- # This function uses youtube-dl to get the url of the video and the title.
+- ####################
+-
+- # Get video url from youtube-dl
+- command = ["youtube-dl-sinthgunt","-g",url]
+- output = ''
+- try:
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
+- output = str(process.stdout.read())
+- except:
+- None
+-
+- # Remove trailing newline
+- video_url = output.strip()
+-
+- # Get video title from youtube-dl
+- command = ["youtube-dl-sinthgunt","-e",url]
+- output = ''
+- try:
+- process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
+- stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
+- output = str(process.stdout.read())
+- except:
+- None
+-
+- # Remove trailing newline
+- video_title = output.strip()
+-
+- # Add file to input que
+- self.input.extend([os.getenv("HOME")+'/'+video_title+".flv"])
+-
+- # Download the file
+- webFile=urllib.urlretrieve(video_url, self.input[-1],lambda nb, bs, fs, url=url: self._reporthook(widget,nb,bs,fs,url))
+-
+-
+- def _reporthook(self,widget,numblocks, blocksize, filesize, url=None):
+- ####################
+- # Description
+- # ===========
+- """Prints the download status to the status bar."""
+- # Arguments
+- # =========
+- #
+- # Further Details
+- # ===============
+- #
+- ####################
+- base = os.path.basename(url)
+- #Should handle possible filesize=-1.
+- try:
+- percent = min((numblocks*blocksize*100)/filesize, 100)
+- except:
+- percent = 100
+- if numblocks != 0:
+- sys.stdout.write("\b"*70)
+- context_id = self.statusbar.get_context_id("Activation")
+- self.statusbar.push(context_id,'Downloaded '+str(percent)+'% from '+self.youtubeurl)
+- self.progressbar.set_fraction(float(percent)/100)
+- if percent==100:
+- self.statusbar.push(context_id,'Downloaded completed. Saved as '+self.input[-1])
+- self.setinput(widget)
+- # Wait for gui to update
+- while gtk.events_pending():
+- gtk.main_iteration(False)
++ self.logfile.writelines('\nRow codecs:\n'+str(self.codecs)+'\n')
+
+
+ #####################
+ ## mplayer functions
+ #####################
+- def mplayer_check(self,widget):
++ def mplayer_check(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -1190,12 +1036,12 @@
+ #
+ ####################
+ return False
+- if os.path.exist('/usr/bin/mplayer'):
++ if os.path.exists('/usr/bin/mplayer'):
+ return True
+ else:
+ return False
+
+- def mplayer_play_input_file(self,widget):
++ def mplayer_play_input_file(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -1209,17 +1055,17 @@
+ #
+ ####################
+ if self.mplayer_check:
+- whattoplay=' '
++ whattoplay = ' '
+ try:
+- whattoplay=self.input[-1]
++ whattoplay = self.input[-1]
+ except Exception, e:
+ raise e
+- command = ["mplayer","-vo","x11",whattoplay]
+- process = subprocess.Popen(args=command)
++ command = ['mplayer', '-vo', 'x11', whattoplay]
++ process = subprocess.Popen(args = command)
+ else:
+ print 'Mplayer must be installed and found in /usr/bin for this function to work'
+
+- def mplayer_play_output_file(self,widget):
++ def mplayer_play_output_file(self, widget):
+ ####################
+ # Description
+ # ===========
+@@ -1233,13 +1079,13 @@
+ #
+ ####################
+ if self.mplayer_check:
+- whattoplay=' '
++ whattoplay = ' '
+ try:
+- whattoplay=self.output
++ whattoplay = self.output
+ except Exception, e:
+ raise e
+- command = ["mplayer","-vo","x11",whattoplay]
+- process = subprocess.Popen(args=command)
++ command = ['mplayer', '-vo', 'x11', whattoplay]
++ process = subprocess.Popen(args = command)
+ else:
+ print 'Mplayer must be installed and found in /usr/bin for this function to work'
+
+@@ -1286,13 +1132,11 @@
+ "MainWindow_destroy" : self.quit_program,
+ "on_menuquit_activate" : self.quit_program,
+ "on_menuopen_activate" : self.menuopenfile,
+- "on_menuopenyoutube_activate" : self.menuopenyoutube,
+ "on_toolbaropen_clicked" : self.menuopenfile,
+- "on_toolbaropenyoutube_clicked" : self.menuopenyoutube,
+ "on_menuconvert_activate" : self.activate,
+ "on_menuabout_activate" : self.aboutdialog,
+ "on_menuffmpeginfo_activate" : self.ffmpeg_getinfo,
+- "on_menuPlayInput_activate" : self.mplayer_play_input_file,
+- "on_menuPlayOutput_activate" : self.mplayer_play_output_file}
++ "on_menuPlayInput_activate" : self.mplayer_play_input_file,
++ "on_menuPlayOutput_activate" : self.mplayer_play_output_file}
+ #Do the magic connecting to the widgets
+ self.wTree.signal_autoconnect(self.dic)
+diff -u3r a/setup.py b/setup.py
+--- a/setup.py 2013-02-15 18:23:20.000000000 +0400
++++ b/setup.py 2017-02-12 16:47:52.390000000 +0300
+@@ -17,7 +17,7 @@
+ license = 'GPLv3',
+ packages = ['Sinthgunt'],
+ package_data = {'sinthgunt': files},
+- scripts = ['sinthgunt','youtube-dl-sinthgunt'],
++ scripts = ['sinthgunt'],
+ data_files=[
+ ('/usr/share/sinthgunt',['share/sinthgunt.glade','share/presets.xml','share/logo.png','share/icon.png','README.txt','LICENSE.txt','sinthgunt.html']),
+ ('/usr/share/applications',['share/sinthgunt.desktop']),
+diff -u3r a/share/presets.xml b/share/presets.xml
+--- a/share/presets.xml 2010-11-14 15:02:41.000000000 +0300
++++ b/share/presets.xml 2017-02-17 20:52:45.437000000 +0300
+@@ -9,199 +9,199 @@
+ </CDWavStereo>
+ <GigabeatFS>
+ <label>RB Toshiba Gigabeat F/X Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b 600k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b:v 600k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </GigabeatFS>
+ <GigabeatWS>
+ <label>RB Toshiba Gigabeat F/X Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b 600k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b:v 600k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </GigabeatWS>
+ <H1020FS>
+ <label>RB iRiver H10 20GB Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b 224k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b:v 224k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H1020FS>
+ <H1020WS>
+ <label>RB iRiver H10 20GB Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b 224k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b:v 224k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H1020WS>
+ <H105FS>
+ <label>RB iRiver H10 5/6GB Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x96 -b 224k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x96 -b:v 224k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H105FS>
+ <H105WS>
+ <label>RB iRiver H10 5/6GB Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x80 -b 224k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x80 -b:v 224k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H105WS>
+ <H300FS>
+ <label>RB iRiver H300 Fullscreen</label>
+- <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x176 -b 224k -r 10 -strict -1</params>
++ <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 224k -r 10 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H300FS>
+ <H300WS>
+ <label>RB iRiver H300 Widescreen</label>
+- <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x128 -b 256k -r 15 -strict -1</params>
++ <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 256k -r 15 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </H300WS>
+ <I5GFS>
+ <label>RB Apple iPod Video Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b 400k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b:v 400k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </I5GFS>
+ <I5GWS>
+ <label>RB Apple iPod Video Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b 400k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b:v 400k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </I5GWS>
+ <M4a>
+ <label>MPEG4 Audio</label>
+ <params>-vn -acodec libfaac -ab 112k -ac 2</params>
+- <extension>m4a</extension>
++ <extension>aac</extension>
+ <category>Audio</category>
+- <codecs>libfaac</codecs>
++ <codecs>aac</codecs>
+ </M4a>
+ <NeurosOSDTVHQNTSC>
+ <label>Neuros HQ NTSC Fullscreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libxvid -vf scale=640:480,aspect=4:3 -maxrate 2500k -b 2000k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
++ <params>-f mp4 -r 29.97 -vcodec libxvid -s 640x480 -aspect 4:3 -b:v 2000k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVHQNTSC>
+ <NeurosOSDTVHQPAL>
+ <label>Neuros HQ PAL Fullscreen</label>
+- <params>-f mp4 -r 25 -vcodec libxvid -vf scale=640:480,aspect=4:3 -maxrate 2500k -b 2000k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
++ <params>-f mp4 -r 25 -vcodec libxvid -s 640x480 -aspect 4:3 -b:v 2000k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVHQPAL>
+ <NeurosOSDTVSFNTSC>
+ <label>Neuros Small File NTSC Fullscreen</label>
+- <params>-f mp4 -b 800k -r 29.97 -vf scale=320:240,aspect=4:3 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
++ <params>-f mp4 -b:v 800k -r 29.97 -s 320x240 -aspect 4:3 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVSFNTSC>
+ <NeurosOSDTVSFPAL>
+ <label>Neuros Small File PAL Fullscreen</label>
+- <params>-f mp4 -b 800k -r 25 -vf scale=320:240,aspect=4:3 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
++ <params>-f mp4 -b:v 800k -r 25 -s 320x240 -aspect 4:3 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVSFPAL>
+ <NeurosOSDTVWSHQNTSC>
+ <label>Neuros HQ NTSC Widescreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libxvid -vf scale=704:384,aspect=16:9 -maxrate 3000k -b 2500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
++ <params>-f mp4 -r 29.97 -vcodec libxvid -s 704x384 -aspect 16:9 -b:v 2500k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVWSHQNTSC>
+ <NeurosOSDTVWSHQPAL>
+ <label>Neuros HQ PAL Widescreen</label>
+- <params>-f mp4 -r 25 -vcodec libxvid -vf scale=704:384,aspect=16:9 -maxrate 3000k -b 2500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
++ <params>-f mp4 -r 25 -vcodec libxvid -s 704x384 -aspect 16:9 -b:v 2500k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVWSHQPAL>
+ <NeurosOSDTVWSSFNTSC>
+ <label>Neuros Small File NTSC Widescreen</label>
+- <params>-f mp4 -b 800k -r 29.97 -vf scale=352:240,aspect=16:9 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
++ <params>-f mp4 -b:v 800k -r 29.97 -s=352x240 -aspect 16:9 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVWSSFNTSC>
+ <NeurosOSDTVWSSFPAL>
+ <label>Neuros Small File PAL Widescreen</label>
+- <params>-f mp4 -b 800k -r 25 -vf scale=352:240,aspect=16:9 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
++ <params>-f mp4 -b:v 800k -r 25 -s 352x240 -aspect 16:9 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
+ <extension>mp4</extension>
+ <category>Neuros OSD</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </NeurosOSDTVWSSFPAL>
+ <PalmXviDFS>
+ <label>Palm Fullscreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libxvid -vf scale=428:320,aspect=4:3 -maxrate 550k -b 500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
++ <params>-f mp4 -vcodec libxvid -s 428x320 -aspect 4:3 -b:v 500k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Palm</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </PalmXviDFS>
+ <PalmXviDWS>
+ <label>Palm Widescreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libxvid -vf scale=480:320,aspect=3:2 -maxrate 450k -b 430k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
++ <params>-f mp4 -vcodec libxvid -s 480x320 -aspect 3:2 -b:v 430k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Palm</category>
+- <codecs>libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </PalmXviDWS>
+ <PhotoFS>
+ <label>RB Apple iPod Photo/Color Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b 320k -r 15 -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 320k -r 15 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </PhotoFS>
+ <PhotoWS>
+ <label>RB Apple iPod Photo/Color Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b 320k -r 24 -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 320k -r 24 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </PhotoWS>
+ <X5FS>
+ <label>RB Cowon iAudio X5 Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b 176k -r 15 -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b:v 176k -r 15 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </X5FS>
+ <X5WS>
+ <label>RB Cowon iAudio X5 Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b 224k -r 24 -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b:v 224k -r 24 -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+- <codecs>libmp3lame,mpeg2video</codecs>
++ <codecs>mp3,mpeg2video</codecs>
+ </X5WS>
+ <XviDAVIFS>
+ <label>XviD FullScreen</label>
+- <params>-f avi -r 29.97 -vcodec libxvid -vtag XVID -vf scale=640:480,aspect=4:3 -maxrate 1800k -b 1500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
++ <params>-f avi -vcodec libxvid -vtag xvid -s 640x480 -aspect 4:3 -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
+ <extension>avi</extension>
+ <category>AVI</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </XviDAVIFS>
+ <XviDAVIWS>
+ <label>XviD Widescreen</label>
+- <params>-f avi -r 29.97 -vcodec libxvid -vtag XVID -vf scale=704:384,aspect=16:9 -maxrate 1800k -b 1500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
++ <params>-f avi -vcodec libxvid -vtag xvid -s 704x384 -aspect 16:9 -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
+ <extension>avi</extension>
+ <category>AVI</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </XviDAVIWS>
+ <XviDAVIWSAna>
+ <label>XviD Widescreen Anamorphic</label>
+- <params>-f avi -r 29.97 -croptop 58 -cropbottom 62 -vcodec libxvid -vtag XVID -vf scale=640:272 -aspect 2.35 -maxrate 1800k -b 1500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +mv4 -trellis -aic -cmp 2 -subcmp 2 -g 300 -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
++ <params>-f avi -vf crop=in_h-2*60 -vcodec libxvid -vtag xvid -s 640x272 -aspect 2.35 -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
+ <extension>avi</extension>
+ <category>AVI</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </XviDAVIWSAna>
+ <ac3dvd192>
+ <label>Ac3 DVD - 192kbps Stereo</label>
+@@ -219,10 +219,10 @@
+ </ac3dvd384>
+ <divx>
+ <label>MS Compatible AVI</label>
+- <params>-acodec libmp3lame -vcodec msmpeg4 -ab 192k -b 1000k -s 640x480</params>
++ <params>-acodec libmp3lame -vcodec msmpeg4v3 -ab 192k -b:v 1000k -s 640x480</params>
+ <extension>avi</extension>
+ <category>AVI</category>
+- <codecs>msmpeg4,libmp3lame</codecs>
++ <codecs>msmpeg4v3,mp3</codecs>
+ </divx>
+ <dvntsc>
+ <label>Raw DV for NTSC Fullscreen</label>
+@@ -240,14 +240,14 @@
+ </dvpal>
+ <e200FS>
+ <label>RB Sandisk Sansa e200 Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b 320k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 320k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+ <codecs>mpeg2video,libmp3lame</codecs>
+ </e200FS>
+ <e200WS>
+ <label>RB Sandisk Sansa e200 Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b 320k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 320k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+ <codecs>mpeg2video,libmp3lame</codecs>
+@@ -257,116 +257,116 @@
+ <params>-acodec libmp3lame -ab 160k -ac 2 -ar 44100</params>
+ <extension>mp3</extension>
+ <category>Audio</category>
+- <codecs>libmp3lame</codecs>
++ <codecs>mp3</codecs>
+ </mp3>
+ <mp3m>
+ <label>MP3 (Mono)</label>
+ <params>-acodec libmp3lame -ab 32k -ac 1 -ar 22050</params>
+ <extension>mp3</extension>
+ <category>Mobile Phones</category>
+- <codecs>libmp3lame</codecs>
++ <codecs>mp3</codecs>
+ </mp3m>
+ <nanoFS>
+ <label>RB Apple iPod Nano Fullscreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b 256k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b:v 256k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+ <codecs>mpeg2video,libmp3lame</codecs>
+ </nanoFS>
+ <nanoWS>
+ <label>RB Apple iPod Nano Widescreen</label>
+- <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b 256k -strict -1</params>
++ <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b:v 256k -strict -1</params>
+ <extension>mpg</extension>
+ <category>Rockbox</category>
+ <codecs>mpeg2video,libmp3lame</codecs>
+ </nanoWS>
+ <ntscdvdgoodqFS>
+ <label>NTSC DVD Fullscreen</label>
+- <params>-f dvd -vcodec mpeg2video -r 29.97 -s 352x480 -aspect 4:3 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
++ <params>-f dvd -vcodec mpeg2video -r 29.97 -s 352x480 -aspect 4:3 -b:v 4000k -mbd rd -trellis 2 -flags mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+ <codecs>mpeg2video,mp2</codecs>
+ </ntscdvdgoodqFS>
+ <ntscdvdgoodqWS>
+ <label>NTSC DVD Widescreen</label>
+- <params>-f dvd -vcodec mpeg2video -r 29.97 -s 352x480 -aspect 16:9 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
++ <params>-f dvd -vcodec mpeg2video -r 29.97 -s 352x480 -aspect 16:9 -b:v 4000k -mbd rd -trellis 2 -flags mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+ <codecs>mpeg2video,mp2</codecs>
+ </ntscdvdgoodqWS>
+ <ntscdvdhqFS>
+ <label>NTSC DVD HQ Fullscreen</label>
+- <params>-f dvd -target ntsc-dvd -r 29.97 -s 720x480 -aspect 4:3 -b 8000k -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f dvd -target ntsc-dvd -r 29.97 -s 720x480 -aspect 4:3 -b:v 8000k -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </ntscdvdhqFS>
+ <ntscdvdhqWS>
+ <label>NTSC DVD HQ Widescreen</label>
+- <params>-f dvd -target ntsc-dvd -r 29.97 -s 720x480 -aspect 16:9 -b 8000k -g 12 -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f dvd -target ntsc-dvd -r 29.97 -s 720x480 -aspect 16:9 -b:v 8000k -g 12 -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </ntscdvdhqWS>
+ <ntscdvdlq>
+ <label>NTSC DVD Fast (LQ)</label>
+- <params>-f dvd -target ntsc-dvd -b 5000k -r 29.97 -s 720x480 -ar 48000 -ab 384kb</params>
++ <params>-f dvd -target ntsc-dvd -b:v 5000k -r 29.97 -s 720x480 -ar 48000 -ab 384kb</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </ntscdvdlq>
+ <ntscvcdhq>
+ <label>NTSC VCD (HQ)</label>
+- <params>-f vcd -target ntsc-vcd -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f vcd -target ntsc-vcd -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>VCD</category>
+ <codecs>vcd</codecs>
+ </ntscvcdhq>
+ <paldvdgoodqFS>
+ <label>PAL DVD Fullscreen</label>
+- <params>-f dvd -vcodec mpeg2video -r 25.00 -s 352x576 -aspect 4:3 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
++ <params>-f dvd -vcodec mpeg2video -r 25.00 -s 576x324 -aspect 4:3 -b:v 4000k -mbd rd -trellis 2 -flags mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+ <codecs>mpeg2video,mp2</codecs>
+ </paldvdgoodqFS>
+ <paldvdgoodqWS>
+ <label>PAL DVD Widescreen</label>
+- <params>-f dvd -vcodec mpeg2video -r 25.00 -s 352x576 -aspect 16:9 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
++ <params>-f dvd -vcodec mpeg2video -r 25.00 -s 576x324 -aspect 16:9 -b:v 4000k -mbd rd -trellis 2 -flags mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+ <codecs>mpeg2video,mp2</codecs>
+ </paldvdgoodqWS>
+ <paldvdhqFS>
+ <label>PAL DVD HQ Fullscreen</label>
+- <params>-f dvd -target pal-dvd -aspect 4:3 -b 8000k -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f dvd -target pal-dvd -aspect 4:3 -b:v 8000k -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </paldvdhqFS>
+ <paldvdhqWS>
+ <label>PAL DVD HQ Widescreen</label>
+- <params>-f dvd -target pal-dvd -aspect 16:9 -b 8000k -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f dvd -target pal-dvd -aspect 16:9 -b:v 8000k -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </paldvdhqWS>
+ <paldvdlq>
+ <label>PAL DVD Fast (LQ)</label>
+- <params>-f dvd -target pal-dvd -b 5000k -r 25 -s 720x576 -ar 48000 -ab 384kb</params>
++ <params>-f dvd -target pal-dvd -b:v 5000k -r 25 -s 720x576 -ar 48000 -ab 384kb</params>
+ <extension>mpg</extension>
+ <category>DVD</category>
+- <codecs>dvd</codecs>
++ <codecs>mpeg2video,mp2</codecs>
+ </paldvdlq>
+ <palvcdhq>
+ <label>PAL VCD (HQ)</label>
+- <params>-f vcd -target pal-vcd -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
++ <params>-f vcd -target pal-vcd -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
+ <extension>mpg</extension>
+ <category>VCD</category>
+ <codecs>vcd</codecs>
+ </palvcdhq>
+ <qmov>
+ <label>Quicktime MOV</label>
+- <params>-f mov -acodec libfaac -b 1250k -r 25 -ab 128k -s 640x480</params>
++ <params>-f mov -acodec libfaac -b:v 1250k -r 25 -ab 128k -s 640x480</params>
+ <extension>mov</extension>
+ <category>Quicktime</category>
+ <codecs>mov,libfaac</codecs>
+@@ -380,72 +380,72 @@
+ </wma>
+ <wmv>
+ <label>WMV2 Generic</label>
+- <params>-vcodec wmv2 -acodec wmav2 -b 1000k -ab 160k -r 25</params>
++ <params>-vcodec wmv2 -acodec wmav2 -b:v 1000k -ab 160k -r 25</params>
+ <extension>wmv</extension>
+ <category>Microsoft</category>
+ <codecs>wmv2,wmav2</codecs>
+ </wmv>
+ <x264HQFS>
+ <label>MP4 Fullscreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libx264 -vpre medium -s 640x480 -b 1000k -aspect 4:3 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 1250k -maxrate 1500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-f mp4 -vcodec libx264 -s 640x480 -b:v 1000k -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>mp4</extension>
+ <category>MPEG4</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </x264HQFS>
+ <x264HQPSP43>
+ <label>PSP Fullscreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libx264 -vpre medium -s 640x480 -aspect 4:3 -b 1250k -maxrate 4M -bufsize 4M -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method umh -subq 6 -trellis 1 -refs 2 -bf 1 -coder 1 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 1250k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 21 -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
++ <params>-f mp4 -vcodec libx264 -s 640x480 -aspect 4:3 -b:v 1250k -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
+ <extension>mp4</extension>
+ <category>PSP</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </x264HQPSP43>
+ <x264HQWS>
+ <label>MP4 Widescreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libx264 -vpre medium -s 704x384 -b 1000k -aspect 16:9 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 1250k -maxrate 1500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-f mp4 -vcodec libx264 -s 704x384 -b:v 1000k -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>mp4</extension>
+ <category>MPEG4</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </x264HQWS>
+ <cdma3g>
+ <label>CDMA Phone Audio (3g2)</label>
+ <params>-f 3g2 -ar 22050 -ab 128k -acodec libfaac -s qcif -r 14.985 -vn</params>
+ <extension>3g2</extension>
+ <category>Mobile Phones</category>
+- <codecs>3g2,libfaac</codecs>
++ <codecs>3g2,aac</codecs>
+ </cdma3g>
+ <XviDAVIZENFS>
+ <label>Zen Fullscreen</label>
+- <params>-f avi -r 29.97 -vcodec libxvid -vtag XVID -vf scale=320:240,aspect=4:3 -maxrate 1800k -b 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
++ <params>-f avi -vcodec libxvid -vtag xvid -s 320x240 -aspect 4:3 -maxrate 1800k -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
+ <extension>avi</extension>
+ <category>Creative Zen</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </XviDAVIZENFS>
+ <XviDAVIZENWS>
+ <label>Zen Widescreen</label>
+- <params>-f avi -r 29.97 -vcodec libxvid -vtag XVID -vf scale=320:240,aspect=16:9 -maxrate 1800k -b 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
++ <params>-f avi -vcodec libxvid -vtag xvid -s 320x240 -aspect 16:9 -maxrate 1800k -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
+ <extension>avi</extension>
+ <category>Creative Zen</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </XviDAVIZENWS>
+ <BlackberryCurvefs>
+ <label>Blackberry Curve Fullscreen</label>
+- <params>-f mp4 -vcodec mpeg4 -b 400k -r 24 -s 320x240 -aspect 4:3 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
++ <params>-f mp4 -vcodec mpeg4 -b:v 400k -r 24 -s 320x240 -aspect 4:3 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
+ <extension>mp4</extension>
+ <category>Blackberry</category>
+- <codecs>mpeg4,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </BlackberryCurvefs>
+ <BlackberryCurvews>
+ <label>Blackberry Curve Widescreen</label>
+- <params>-f mp4 -vcodec mpeg4 -b 400k -r 24 -s 320x180 -aspect 16:9 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
++ <params>-f mp4 -vcodec mpeg4 -b:v 400k -r 24 -s 320x180 -aspect 16:9 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
+ <extension>mp4</extension>
+ <category>Blackberry</category>
+ </BlackberryCurvews>
+ <lgchocolate>
+ <label>LG Chocolate</label>
+- <params>-f mp4 -vf scale=240:192 -r 11.988 -b 192k -ab 56k -vcodec libxvid -acodec libfaac</params>
++ <params>-f mp4 -s 240x192 -r 11.988 -b:v 192k -ab 56k -vcodec libxvid -acodec libfaac</params>
+ <extension>mp4</extension>
+ <category>LG</category>
+- <codecs>mp4,libxvid,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </lgchocolate>
+ <blackberrymp3>
+ <label>Blackberry Music</label>
+@@ -456,44 +456,44 @@
+ </blackberrymp3>
+ <blackberryws>
+ <label>Blackberry Video Widescreen</label>
+- <params>-f mp4 -r 24 -vcodec libx264 -vpre medium -s 320x180 -aspect 16:9 -maxrate 800k -bufsize 80k -b 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
++ <params>-f mp4 -r 24 -vcodec libx264 -s 320x180 -aspect 16:9 -b:v 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Blackberry</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </blackberryws>
+ <blackberryfs>
+ <label>Blackberry Video Fullscreen</label>
+- <params>-f mp4 -r 24 -vcodec libx264 -vpre medium -s 240x180 -aspect 4:3 -maxrate 800k -bufsize 80k -b 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
++ <params>-f mp4 -r 24 -vcodec libx264 -s 240x180 -aspect 4:3 -b:v 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
+ <extension>mp4</extension>
+ <category>Blackberry</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </blackberryfs>
+ <flvweb50>
+ <label>Flash: Video (flv) for Web use. 448x336, 50 kb/s</label>
+- <params>-vcodec flv -ar 22050 -r 24 -b 50k -s 448x336 -acodec libmp3lame</params>
++ <params>-vcodec flv -ar 22050 -r 24 -b:v 50k -s 448x336 -acodec libmp3lame</params>
+ <extension>flv</extension>
+ <category>Websites</category>
+- <codecs>flv,libmp3lame</codecs>
++ <codecs>flv,mp3</codecs>
+ </flvweb50>
+ <flvweb150>
+ <label>Flash: Video (flv) for Web use. 448x336, 150 kb/s</label>
+- <params>-vcodec flv -ar 22050 -r 24 -b 150k -s 448x336 -acodec libmp3lame</params>
++ <params>-vcodec flv -ar 22050 -r 24 -b:v 150k -s 448x336 -acodec libmp3lame</params>
+ <extension>flv</extension>
+ <category>Websites</category>
+- <codecs>flv,libmp3lame</codecs>
++ <codecs>flv,mp3</codecs>
+ </flvweb150>
+ <flvweb350>
+ <label>Flash: Video (flv) for Web use. 448x336, 350 kb/s</label>
+- <params>-vcodec flv -ar 22050 -r 24 -b 350k -s 448x336 -acodec libmp3lame</params>
++ <params>-vcodec flv -ar 22050 -r 24 -b:v 350k -s 448x336 -acodec libmp3lame</params>
+ <extension>flv</extension>
+ <category>Websites</category>
+- <codecs>flv,libmp3lame</codecs>
++ <codecs>flv,mp3</codecs>
+ </flvweb350> <x264HQPSP169robertswain>
+ <label>PSP Widescreen</label>
+- <params>-f mp4 -r 29.97 -vcodec libx264 -vpre medium -s 480x272 -aspect 16:9 -b 1250k -maxrate 4M -bufsize 4M -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method umh -subq 6 -trellis 1 -refs 2 -bf 1 -coder 1 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 1250k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 21 -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
++ <params>-f mp4 -vcodec libx264 -s 480x272 -aspect 16:9 -b:v 1250k -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
+ <extension>mp4</extension>
+ <category>PSP</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ <WebmLargeFull>
+ <label>WebM Video for HTML5 Full Screen - 640x480</label>
+ <params>-f webm -s 640x480 -aspect 4:3 -vcodec libvpx -deinterlace -g 120 -level 216 -profile 0 -qmax 42 -qmin 10 -rc_buf_aggressivity 0.95 -vb 2M -acodec libvorbis -aq 60 -ac 2</params>
+@@ -525,101 +525,101 @@
+ </x264HQPSP169robertswain>
+ <iPodiTunesSmallCRF21FS>
+ <label>iPod Small Fullscreen</label>
+- <params>-r 29.97 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 320x240 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vcodec libx264 -bt 256k -s 320x240 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesSmallCRF21FS>
+ <iPodiTunesSmallCRF21WS>
+ <label>iPod Small WideScreen</label>
+- <params>-r 29.97 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 320x176 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vcodec libx264 -bt 256k -s 320x176 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesSmallCRF21WS>
+ <iPodiTunesSmallCRF21WSAna>
+ <label>iPod Small WideScreen Anamorphic</label>
+- <params>-r 29.97 -croptop 60 -cropbottom 60 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 320x144 -aspect 2.35 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vf crop=in_h-2*60 -vcodec libx264 -bt 256k -s 320x144 -aspect 2.35 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesSmallCRF21WSAna>
+ <iPodiTunesSmallCRF21WSLBFix>
+ <label>iPod Small Converted to WideScreen</label>
+- <params>-r 29.97 -croptop 64 -cropbottom 64 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 320x176 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vf crop=in_h-2*64 -vcodec libx264 -bt 256k -s 320x176 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesSmallCRF21WSLBFix>
+ <iPodiTunesTVOutCRF21FS>
+ <label>iPod TV Out Fullscreen</label>
+- <params>-r 29.97 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 512x384 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vcodec libx264 -bt 256k -s 512x384 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesTVOutCRF21FS>
+ <iPodiTunesTVOutCRF21WS>
+ <label>iPod TV Out Widescreen</label>
+- <params>-r 29.97 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 624x352 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vcodec libx264 -bt 256k -s 624x352 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesTVOutCRF21WS>
+ <iPodiTunesTVOutCRF21WSAna>
+ <label>iPod TV Out Widescreen Anamorphic</label>
+- <params>-r 29.97 -croptop 60 -cropbottom 60 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 640x272 -aspect 2.35 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vf crop=in_h-2*60 -vcodec libx264 -bt 256k -s 640x272 -aspect 2.35 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesTVOutCRF21WSAna>
+ <iPodiTunesTVOutCRF21WSLBFix>
+ <label>iPod TV Out Converted to Widescreen</label>
+- <params>-r 29.97 -croptop 64 -cropbottom 64 -vcodec libx264 -vpre medium -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 21 -bt 256k -refs 1 -coder 0 -me_method full -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -s 640x352 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
++ <params>-r 29.97 -vf crop=in_h-2*64 -vcodec libx264 -bt 256k -s 640x352 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
+ <extension>m4v</extension>
+ <category>iPod-iTunes</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </iPodiTunesTVOutCRF21WSLBFix>
+ <ogg1>
+ <label>OGG</label>
+- <params>-acodec vorbis -aq 60 -vn</params>
+- <extension>OGG</extension>
++ <params>-acodec libvorbis -aq 60 -vn</params>
++ <extension>ogg</extension>
+ <category>Audio</category>
+- <codecs>vorbis</codecs>
++ <codecs>ogg</codecs>
+ </ogg1>
+ <wmv4powerpoint>
+ <label>Power Point</label>
+- <params>-vcodec wmv2 -acodec wmav2 -aspect 4:3 -b 500k -ab 32k -ac 1 -ar 22050 -s 320x240</params>
++ <params>-vcodec wmv2 -acodec wmav2 -aspect 4:3 -b:v 500k -ab 32k -ac 1 -ar 22050 -s 320x240</params>
+ <extension>wmv</extension>
+ <category>Microsoft</category>
+ <codecs>wmv2,wmav2</codecs>
+ </wmv4powerpoint>
+ <wmv2zune>
+ <label>Zune</label>
+- <params>-vcodec wmv2 -acodec wmav2 -b 640k -ab 128k -r 23.97 -s 320x240</params>
++ <params>-vcodec wmv2 -acodec wmav2 -b:v 640k -ab 128k -r 23.97 -s 320x240</params>
+ <extension>wmv</extension>
+ <category>Microsoft</category>
+ <codecs>wmv2,wmav2</codecs>
+ </wmv2zune>
+ <wmv2broadband>
+ <label>WMV for Web Use</label>
+- <params>-vcodec wmv2 -acodec wmav2 -b 640k -ab 128k -r 29.97 -s 320x240</params>
++ <params>-vcodec wmv2 -acodec wmav2 -b:v 640k -ab 128k -r 29.97 -s 320x240</params>
+ <extension>wmv</extension>
+ <category>Microsoft</category>
+ <codecs>wmv2,wmav2</codecs>
+ </wmv2broadband>
+ <ps3720p>
+ <label>PS3 720p Widescreen</label>
+- <params>-f mp4 -r 23.976 -vcodec libx264 -vpre medium -s 1280x720 -b 3000k -aspect 16:9 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -maxrate 3500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 384k -ar 48000</params>
++ <params>-f mp4 -r 23.976 -vcodec libx264 -s 1280x720 -b:v 3000k -aspect 16:9 -bt 256k -acodec libfaac -ab 384k -ar 48000</params>
+ <extension>mp4</extension>
+ <category>PS3</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </ps3720p>
+ <ps3720pfs>
+ <label>PS3 720p Fullscreen</label>
+- <params>-f mp4 -r 23.976 -vcodec libx264 -vpre medium -s 1280x720 -b 3000k -aspect 4:3 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -maxrate 3500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 384k -ar 48000</params>
++ <params>-f mp4 -r 23.976 -vcodec libx264 -s 1280x720 -b:v 3000k -aspect 4:3 -bt 256k -acodec libfaac -ab 384k -ar 48000</params>
+ <extension>mp4</extension>
+ <category>PS3</category>
+- <codecs>libx264,libfaac</codecs>
++ <codecs>h264,aac</codecs>
+ </ps3720pfs>
+ <image1sec>
+ <label>Extract JPEG images, one every 1 second</label>
+@@ -674,36 +674,42 @@
+ <params>-s 480x320 -vcodec mpeg4 -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
+ <extension>mp4</extension>
+ <category>Mobile Phones</category>
+- <codecs>mpeg4,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </android1>
+ <android2>
+ <label>Google Android compatible video. Video bitrate: 480 kb/s</label>
+- <params>-s 480x320 -vcodec mpeg4 -b 480k -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
++ <params>-s 480x320 -vcodec mpeg4 -b:v 480k -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
+ <extension>mp4</extension>
+ <category>Mobile Phones</category>
+- <codecs>mpeg4,libfaac</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </android2>
+- <iphone1>
++ <iphone1>
+ <label>Iphone</label>
+- <params>-f mp4 -s 432x320 -aspect 432:320 -acodec aac -async
+- 4800 -dts_delta_threshold 1 -vcodec xvid -qscale 7 </params>
++ <params>-f mp4 -s 432x324 -aspect 4:3 -acodec libfaac -async 4800 -dts_delta_threshold 1 -vcodec libxvid -q:v 7</params>
+ <extension>mp4</extension>
+ <category>Mobile Phones</category>
+- <codecs>xvid,aac,mp4</codecs>
++ <codecs>mpeg4,aac</codecs>
+ </iphone1>
++ <nphone1>
++ <label>Asha</label>
++ <params>-f 3gp -vf crop=4/3*in_h:in_h -s 320x240 -aspect 4:3 -acodec libfaac -vcodec mpeg4 -q:v 7</params>
++ <extension>3gp</extension>
++ <category>Mobile Phones</category>
++ <codecs>mpeg4,aac</codecs>
++ </nphone1>
+ <CowoniAudio7AVIbeta1>
+ <label>Cowon iAudio 7 AVI beta 1</label>
+- <params>-f avi -g 1 -b 256k -r 12 -async 2 -vf scale=160:120 -vtag XVID -vcodec libxvid -ab 128k -ar 44100 -ac 2 -acodec libmp3lame </params>
++ <params>-f avi -g 1 -b:v 256k -r 12 -async 2 -s 160x120 -vtag xvid -vcodec libxvid -ab 128k -ar 44100 -ac 2 -acodec libmp3lame</params>
+ <extension>avi</extension>
+ <category>Portable Media Players</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </CowoniAudio7AVIbeta1>
+ <CowoniAudio7AVIbeta2>
+ <label>Cowon iAudio 7 AVI beta 2</label>
+- <params>-f avi -g 1 -b 384k -vcodec libxvid -vtag XVID -ab 128k -ar 44100 -ac 2 -acodec libmp3lame -vf scale=160:128,aspect=4:3 -r 15 </params>
++ <params>-f avi -g 1 -b:v 384k -vcodec libxvid -vtag xvid -ab 128k -ar 44100 -ac 2 -acodec libmp3lame -s 160x128 -aspect 4:3 -r 15</params>
+ <extension>avi</extension>
+ <category>Portable Media Players</category>
+- <codecs>libxvid,libmp3lame</codecs>
++ <codecs>mpeg4,mp3</codecs>
+ </CowoniAudio7AVIbeta2>
+
+
+diff -u3r a/share/sinthgunt.glade b/share/sinthgunt.glade
+--- a/share/sinthgunt.glade 2013-02-14 23:15:54.000000000 +0400
++++ b/share/sinthgunt.glade 2017-02-12 16:52:41.873000000 +0300
+@@ -45,20 +45,6 @@
+ </child>
+ </widget>
+ </child>
+- <child>
+- <widget class="GtkImageMenuItem" id="menuopenyoutube">
+- <property name="visible">True</property>
+- <property name="label" translatable="yes">_Online video</property>
+- <property name="use_underline">True</property>
+- <signal name="activate" handler="on_menuopenyoutube_activate"/>
+- <child internal-child="image">
+- <widget class="GtkImage" id="menu-item-image2">
+- <property name="visible">True</property>
+- <property name="stock">gtk-network</property>
+- </widget>
+- </child>
+- </widget>
+- </child>
+ </widget>
+ </child>
+ </widget>
+@@ -229,17 +215,6 @@
+ </widget>
+ <packing>
+ <property name="homogeneous">True</property>
+- </packing>
+- </child>
+- <child>
+- <widget class="GtkToolButton" id="toolbaropenyoutube">
+- <property name="visible">True</property>
+- <property name="label" translatable="yes">Open online video</property>
+- <property name="stock_id">gtk-network</property>
+- <signal name="clicked" handler="on_toolbaropenyoutube_clicked"/>
+- </widget>
+- <packing>
+- <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+diff -u3r a/sinthgunt b/sinthgunt
+--- a/sinthgunt 2010-11-14 15:02:41.000000000 +0300
++++ b/sinthgunt 2017-02-17 19:32:15.888000000 +0300
+@@ -1,4 +1,5 @@
+ #!/usr/bin/python
++# -*- coding: utf-8 -*-
+
+ """
+ sinthgunt wrapper script.