sinthgunt.patch 104 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138
  1. 2017-02-17
  2. Initial patch
  3. 2017-03-04
  4. Additional information
  5. 2 pass encoding
  6. To apply two pass encoding use "2Pass" in the preset name.
  7. Example: <label>Asha 2Pass</label>
  8. diff -3ur a/Sinthgunt/app.py b/Sinthgunt/app.py
  9. --- a/Sinthgunt/app.py 2010-11-22 21:27:55.000000000 +0300
  10. +++ b/Sinthgunt/app.py 2017-03-04 20:18:39.000000000 +0300
  11. @@ -1,4 +1,5 @@
  12. #!/usr/bin/python
  13. +# -*- coding: utf-8 -*-
  14. # $Id: app.py 196 2010-11-22 18:27:50Z kare1234 $
  15. ####################
  16. @@ -35,17 +36,21 @@
  17. # Import Python Libraries
  18. ####################
  19. import os
  20. +import errno
  21. import sys
  22. import pygtk; pygtk.require("2.0")
  23. import gtk.glade
  24. import subprocess
  25. import gobject
  26. import time
  27. -import sys
  28. -import urllib
  29. from xml.etree import ElementTree as etree
  30. -
  31. +def logfile_remove(self):
  32. + try:
  33. + os.remove(self)
  34. + except OSError as e: # this would be "except OSError, e:" before Python 2.6
  35. + if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
  36. + raise # re-raise exception if a different error occurred
  37. def main():
  38. ####################
  39. @@ -58,20 +63,22 @@
  40. 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
  41. # Define data and temp directories
  42. - DATA_DIR="/usr/share/sinthgunt/"
  43. - TEMP_DIR="/tmp/"
  44. + DATA_DIR = "/usr/share/sinthgunt/"
  45. + TEMP_DIR = "/tmp/"
  46. # Opens the log file and write the name and curent data and time
  47. logfile_filename = os.path.expanduser("~/.sinthgunt.log")
  48. + logfile_remove(logfile_filename)
  49. logfile = open(logfile_filename, 'a')
  50. - logfile.writelines('****** Sinthgunt log file START - '+
  51. - str(time.ctime())+' *******\n')
  52. - logo_filename=DATA_DIR+"logo.png"
  53. + logfile.writelines('\n******* Sinthgunt log file START - '+
  54. + str(time.ctime())+' *******\n\n')
  55. + logo_filename = DATA_DIR+"logo.png"
  56. # Carry over variables to class
  57. sinthgunt.logo_filename = logo_filename
  58. sinthgunt.DATA_DIR = DATA_DIR
  59. sinthgunt.logfile = logfile
  60. sinthgunt.TEMP_DIR = TEMP_DIR
  61. + sinthgunt.function_activate = False
  62. # Run the main loop
  63. program = sinthgunt()
  64. @@ -98,7 +105,7 @@
  65. # -
  66. ####################
  67. - def ResetSinthgunt(self,widget):
  68. + def ResetSinthgunt(self, widget):
  69. ####################
  70. # Description
  71. # ===========
  72. @@ -112,10 +119,10 @@
  73. #
  74. ####################
  75. # Write default stuff to gui
  76. - self.labelGuide.set_text('Input file(s):')
  77. + self.labelGuide.set_text("Input file(s):")
  78. self.labelOperation.set_text('')
  79. context_id = self.statusbar.get_context_id("Activation")
  80. - self.statusbar.push(context_id,"Welcome to sinthgunt!")
  81. + self.statusbar.push(context_id, "Welcome to sinthgunt!")
  82. self.labelInput.set_text('')
  83. # Load the logo
  84. @@ -143,8 +150,8 @@
  85. # Load XML config file
  86. self.parseXML()
  87. # Local variables
  88. - categorylist=self.categorylist # List of categories
  89. - presetlist=self.presetlist # List of presets in the categories
  90. + categorylist = self.categorylist # List of categories
  91. + presetlist = self.presetlist # List of presets in the categories
  92. # Connect to menu
  93. actionmenu = self.wTree.get_widget("menu2")
  94. # Constants
  95. @@ -152,9 +159,10 @@
  96. self.Npreset = len(presetlist) # Number of presets
  97. counter = 0 # Counter that keeps track of the categories in the categorylist
  98. counter2 = 0 # Counter that keeps track of the codecs in the self.preset_enabled list
  99. + self.already_executed = False
  100. # Create first, dummy item in group. All later items are attached to this group
  101. - item = gtk.RadioMenuItem(group=None,label='')
  102. + item = gtk.RadioMenuItem(group = None, label = '')
  103. # Initialise presetmenuheaderholder, a holder for the submenues
  104. self.presetmenu1headerholder = []
  105. self.preset_enabled = []
  106. @@ -170,32 +178,32 @@
  107. if presetlist[i][0] == categorylist[counter]:
  108. self.preset_enabled.append('')
  109. # Create radio button for the preset
  110. - item = gtk.RadioMenuItem(group=item,label=presetlist[i][1])
  111. + item = gtk.RadioMenuItem(group = item, label = presetlist[i][1])
  112. # What to do when the radiobutton is clicked
  113. item.connect("activate", self.menuradiobuttonselect)
  114. # Check to see if the codecs required by the preset are supported by the users version of ffmpeg
  115. for requiredcodec in self.presetlist[i][4]:
  116. - flag =0
  117. + flag = 0
  118. notfound = 1
  119. for codec in self.codecs:
  120. # If encoding true
  121. - if requiredcodec==codec[0] and codec[1]==True and flag==0: # preset will work
  122. + if requiredcodec == codec[0] and codec[1] == True and flag == 0: # preset will work
  123. notfound = 0
  124. - self.preset_enabled[counter2]=True
  125. + self.preset_enabled[counter2] = True
  126. # if encoding false
  127. - if requiredcodec==codec[0] and codec[1]==False:
  128. + if requiredcodec == codec[0] and codec[1] == False:
  129. label = item.get_children()[0]
  130. label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#888888')) # preset will not work - grayed out
  131. notfound = 0
  132. - flag=1
  133. + flag = 1
  134. item.set_tooltip_text('Your version of ffmpeg does not support this preset.')
  135. - self.preset_enabled[counter2]=False
  136. + self.preset_enabled[counter2] = False
  137. # if codec was not found
  138. - if notfound==1 and flag==0:
  139. + if notfound == 1 and flag == 0:
  140. label = item.get_children()[0]
  141. label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#888888')) # preset might work - grayed out
  142. item.set_tooltip_text('Your version of ffmpeg does not support this preset.')
  143. - self.preset_enabled[counter2]=False
  144. + self.preset_enabled[counter2] = False
  145. counter2 = counter2+1
  146. # add item to the headerholder
  147. self.presetmenu1headerholder[counter].append(item)
  148. @@ -219,41 +227,39 @@
  149. # ===============
  150. #
  151. ####################
  152. - context_id = self.statusbar.get_context_id("Activation")
  153. + context_id = self.statusbar.get_context_id("Activation")
  154. output = ''
  155. try:
  156. output_raw = str(self.process.stdout.read(80))
  157. - output = output_raw.replace('\n','')
  158. + output = output_raw.replace('=', ' ').replace('\r', '\n')
  159. except:
  160. pass
  161. - self.logfile.writelines('Conversion status: '+output+'\n')
  162. + self.logfile.writelines(output)
  163. output_split = output.split(' ')
  164. - N=len(output_split)
  165. + N = len(output_split)
  166. # get the number of frames converted
  167. for i in range(N):
  168. - if i>=2 and output_split[i]=='fps=':
  169. - file_frames_completed = output_split[i-1]
  170. - self.logfile.writelines('Frames completed: '+file_frames_completed+'\n')
  171. - # update progressbar and statusbar
  172. - try:
  173. - context_id = self.statusbar.get_context_id("Activation")
  174. - self.statusbar.push(context_id,'Frames converted: '+str(file_frames_completed))
  175. - except:
  176. - pass
  177. - try:
  178. - self.progressbar.set_fraction(float(\
  179. - file_frames_completed)/float(self.file_frames))
  180. - self.progressbar.set_text(str(file_frames_completed)+\
  181. - ' of '+str(self.file_frames)+' frames converted.')
  182. - except:
  183. - pass
  184. + if i >= 2 and output_split[i] == 'fps':
  185. + file_frames_completed = output_split[i-1]
  186. + # update progressbar and statusbar
  187. + try:
  188. + context_id = self.statusbar.get_context_id("Activation")
  189. + self.statusbar.push(context_id, 'Frames converted: '+str(file_frames_completed))
  190. + except:
  191. + pass
  192. + try:
  193. + self.progressbar.set_fraction(float(\
  194. + file_frames_completed)/float(self.file_frames))
  195. + self.progressbar.set_text('Converting '+self.input[self.NextInputFileToConvert])
  196. + except:
  197. + pass
  198. # Look for Classic errors. This should be done in a separate function sometime soon
  199. # "Must supply at least one output file"
  200. for i in range(N-1):
  201. - if i>=2 and output_split[i]=='Must=' and output_split[i+1]=='supply': # an error has occured
  202. - self.statusbar.push(context_id,'An error has occured. See the log file for details.')
  203. + if i >= 2 and output_split[i] == 'Must=' and output_split[i+1] == 'supply': # an error has occured
  204. + self.statusbar.push(context_id, 'An error has occured. See the log file for details.')
  205. self.progressbar.set_fraction(0.0)
  206. self.progressbar.set_text('')
  207. return False
  208. @@ -261,24 +267,25 @@
  209. # if no output detected, stop watching the process and write to statusbar
  210. - if output =='':
  211. - self.statusbar.push(context_id,'Conversion completed!')
  212. - self.progressbar.set_fraction(0.99999)
  213. + if output == '':
  214. + self.statusbar.push(context_id, 'Conversion completed!')
  215. + self.progressbar.set_text('')
  216. + self.progressbar.set_fraction(1.0)
  217. # We are now done with the current file. Move on to next one if there are any left
  218. if self.NextInputFileToConvert <= len(self.input) - 2:
  219. - self.NextInputFileToConvert = self.NextInputFileToConvert + 1
  220. + self.NextInputFileToConvert = self.NextInputFileToConvert+1
  221. self.activate(self.window)
  222. else:
  223. - self.NextInputFileToConvert = 0
  224. + #self.NextInputFileToConvert = 0
  225. self.ResetSinthgunt(self.window)
  226. - self.statusbar.push(context_id,'Conversion completed!')
  227. + self.statusbar.push(context_id, 'Conversion completed!')
  228. return False
  229. else:
  230. return True
  231. - def menuopenfile(self,widget):
  232. + def menuopenfile(self, widget):
  233. ####################
  234. # Description
  235. # ===========
  236. @@ -322,6 +329,8 @@
  237. filter.add_pattern("*.3G2")
  238. filter.add_pattern("*.mts")
  239. filter.add_pattern("*.MTS")
  240. + filter.add_pattern("*.mkv")
  241. + filter.add_pattern("*.MKV")
  242. fc.add_filter(filter)
  243. # all files
  244. filter = gtk.FileFilter()
  245. @@ -357,7 +366,7 @@
  246. #
  247. ####################
  248. # generate thumbnail from input file
  249. - self.thumbnail_filename=self.generateThumbnail(self.input[-1])
  250. + self.thumbnail_filename = self.generateThumbnail(self.input[-1])
  251. # update thumbnail
  252. try:
  253. @@ -369,20 +378,23 @@
  254. # fill label with file info
  255. self.labelInput.set_text('')
  256. - self.labelInput.set_text('Codec info for '+self.input[-1]+'\n\n'\
  257. - 'Audio codec: '+str(self.audio_codec[0])+'\n'\
  258. - 'Audio bitrate: '+str(self.audio_codec[4])+' kb/s\n'\
  259. - +'Video codec: '+ str(self.video_codec[0])\
  260. - +'\nVideo resolution: '+ str(self.video_codec[2])\
  261. - +'\nVideo bitrate: '+ str(self.video_codec[3])\
  262. - +'\n'+'Number of frames: '+str(self.file_frames))
  263. - self.ListOfInputFiles='\n'
  264. + self.labelInput.set_text(' Codec info for\n '+self.input[-1]+'\n\n'\
  265. + ' Audio codec: '+str(self.audio_codec[0])+\
  266. + ', '+str(self.audio_codec[1])+\
  267. + ', '+str(self.audio_codec[2])+'\n'\
  268. + ' Video codec: '+str(self.video_codec[0])+\
  269. + ', '+str(self.video_codec[1])+\
  270. + ', '+str(self.video_codec[2])+\
  271. + ', '+str(self.video_codec[3])+'\n'\
  272. + ' Bitrate: '+str(self.bitrate_info[0])+'\n'
  273. + ' Number of frames: '+str(self.file_frames)+'\n')
  274. + self.ListOfInputFiles = '\n'
  275. for i in range(len(self.input)):
  276. - StringToAdd=str(i+1)+'. '+self.input[i]+'\n'
  277. - self.ListOfInputFiles=self.ListOfInputFiles+StringToAdd
  278. + StringToAdd = str(i+1)+'. '+self.input[i]+'\n'
  279. + self.ListOfInputFiles = self.ListOfInputFiles+StringToAdd
  280. self.labelGuide.set_text('Input file(s): '+self.ListOfInputFiles)
  281. - def RemoveInputFile(self,widget):
  282. + def RemoveInputFile(self, widget):
  283. ####################
  284. # Description
  285. # ===========
  286. @@ -398,7 +410,7 @@
  287. #
  288. ####################
  289. #base this on a message dialog
  290. - dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,gtk.MESSAGE_QUESTION,gtk.BUTTONS_OK_CANCEL,None)
  291. + dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
  292. dialog.set_markup('Enter the number of the input file you wish to remove')
  293. #create the text input field
  294. entry = gtk.Entry()
  295. @@ -414,18 +426,17 @@
  296. dialog.vbox.pack_end(hbox, True, True, 0)
  297. dialog.show_all()
  298. #go go go
  299. - Response=dialog.run()
  300. + Response = dialog.run()
  301. if Response == gtk.RESPONSE_OK:
  302. try:
  303. InputFileToRemove = int(entry.get_text())-1
  304. - # Clear everything if we are removing the last tile
  305. + # Clear everything if we are removing the last tile
  306. if len(self.input) >= 2:
  307. del self.input[InputFileToRemove]
  308. self.setinput(widget)
  309. self.NextInputFileToConvert = 0
  310. else:
  311. self.ResetSinthgunt(widget)
  312. - self.ResetSinthgunt(widget)
  313. except:
  314. pass
  315. @@ -447,25 +458,21 @@
  316. # This function uses ffmpeg to generate a thumbnail.
  317. ####################
  318. - # get file base name
  319. - temp = videoFile.split('/')
  320. - N = len(temp)
  321. - videoFileBaseName = temp[N-1]
  322. - # set thumbnail filename
  323. - thumbnailFileName = sinthgunt.TEMP_DIR+str(videoFileBaseName)+".jpg"
  324. + thumbnailFileName = sinthgunt.TEMP_DIR+"videothumbnail.jpg"
  325. + logfile_remove(thumbnailFileName)
  326. # ffmpeg command line
  327. - subcommand = ['ffmpeg', '-y', '-itsoffset', '-5' ,'-i' ,videoFile,\
  328. - "-vcodec","mjpeg","-vframes", "1", "-an", "-f", "rawvideo", "-s", "170x128",\
  329. - thumbnailFileName]
  330. + subcommand = ['ffmpeg', '-v', 'warning', '-y', '-itsoffset', '-5', '-i', videoFile, \
  331. + '-vcodec', 'mjpeg', '-vframes', '1', '-an', '-f', 'rawvideo', '-s', '172x129', \
  332. + '-vf', 'crop=4/3*in_h:in_h', '-filter', 'format=rgb24', thumbnailFileName]
  333. - thumbProcess = subprocess.Popen(args=subcommand,
  334. - stdout=subprocess.PIPE,stdin=subprocess.PIPE,
  335. - stderr=subprocess.STDOUT,shell=False)
  336. + thumbProcess = subprocess.Popen(args = subcommand,
  337. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  338. + stderr = subprocess.STDOUT, shell = False)
  339. # Read output from thumbnail process and write it to the log file
  340. - output = str(thumbProcess.stdout.read(100))
  341. - self.logfile.writelines('Thumbnail process status: '+output+'\n')
  342. + output = str(thumbProcess.stdout.read(300))
  343. + self.logfile.writelines('\n\nThumbnail process status:\n'+output+'\n')
  344. # Wait for thumbnail process to complete
  345. thumbProcess.wait()
  346. @@ -474,7 +481,7 @@
  347. return thumbnailFileName
  348. - def generatePreview(self,widget):
  349. + def generatePreview(self, widget):
  350. ####################
  351. # Description
  352. # ===========
  353. @@ -495,17 +502,64 @@
  354. try:
  355. operation = self.operation_radiobutton
  356. context_id = self.statusbar.get_context_id("Activation")
  357. - self.statusbar.push(context_id,'Creating preview of '+self.input[-1]+'. You can view it using the Play menu.')
  358. + self.statusbar.push(context_id, 'Creating preview of '+self.input[-1]+'. You can view it using the Play menu.')
  359. #for now, operate on last input file
  360. - InputFileName=self.input[-1]
  361. + InputFileName = self.input[-1]
  362. +
  363. for i in range(self.Npreset):
  364. - if operation == self.presetlist[i][1]:
  365. + if operation == self.presetlist[i][1] and '2Pass' in self.presetlist[i][1]:
  366. # generate command line in subprocess syntax
  367. - subcommand = ['/usr/bin/ffmpeg','-y','-i']
  368. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-y', '-i']
  369. subcommand.extend([InputFileName])
  370. - subcommand.extend(['-t','5'])
  371. - temp1=self.presetlist[i][2].split(' ')
  372. + subcommand.extend(['-t', '5', '-an', '-pass', '1', '-passlogfile', '/tmp/twopass'])
  373. + temp1 = self.presetlist[i][2].split(' ')
  374. + # remove empty entries ('') from the array
  375. + for ii in range(20):
  376. + try:
  377. + temp1.remove('')
  378. + except:
  379. + pass
  380. + temp1.extend(['/dev/null'])
  381. + subcommand.extend(temp1)
  382. + # Start converting
  383. + first_pass_process = subprocess.Popen(args = subcommand,
  384. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  385. + stderr = subprocess.STDOUT, shell = False)
  386. +
  387. + self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n')
  388. +
  389. + first_pass_process.wait()
  390. +
  391. + # generate command line in subprocess syntax
  392. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-y', '-i']
  393. + subcommand.extend([InputFileName])
  394. + subcommand.extend(['-t', '5', '-pass', '2', '-passlogfile', '/tmp/twopass'])
  395. + temp1 = self.presetlist[i][2].split(' ')
  396. + # remove empty entries ('') from the array
  397. + for ii in range(20):
  398. + try:
  399. + temp1.remove('')
  400. + except:
  401. + pass
  402. + temp1.extend([str(InputFileName+"_preview_twopass."+self.presetlist[i][3])])
  403. + # path to output file
  404. + self.output = str(InputFileName+"_preview_twopass."+self.presetlist[i][3])
  405. + subcommand.extend(temp1)
  406. + # Start converting
  407. + second_pass_process = subprocess.Popen(args = subcommand,
  408. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  409. + stderr = subprocess.STDOUT, shell = False)
  410. +
  411. + self.logfile.writelines('\n'+str(subcommand)+'\n')
  412. +
  413. + second_pass_process.wait()
  414. +
  415. + if operation == self.presetlist[i][1] and '2Pass' not in self.presetlist[i][1]:
  416. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-y', '-i']
  417. + subcommand.extend([InputFileName])
  418. + subcommand.extend(['-t', '5'])
  419. + temp1 = self.presetlist[i][2].split(' ')
  420. # remove empty entries ('') from the array
  421. for ii in range(20):
  422. try:
  423. @@ -514,19 +568,21 @@
  424. pass
  425. temp1.extend([str(InputFileName+"_preview."+self.presetlist[i][3])])
  426. # path to output file
  427. - self.output=str(InputFileName+"_preview."+self.presetlist[i][3])
  428. + self.output = str(InputFileName+"_preview."+self.presetlist[i][3])
  429. subcommand.extend(temp1)
  430. # Start converting
  431. - self.process = subprocess.Popen(args=subcommand,
  432. - stdout=subprocess.PIPE,stdin=subprocess.PIPE,
  433. - stderr=subprocess.STDOUT,shell=False)
  434. + converting_process = subprocess.Popen(args = subcommand,
  435. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  436. + stderr = subprocess.STDOUT, shell = False)
  437. +
  438. + self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n')
  439. - self.logfile.writelines('Conversion command: '+str(subcommand)+'\n')
  440. + converting_process.wait()
  441. except:
  442. self.no_file_selected_dialog(widget)
  443. - def BeginConversion(self,widget,InputFileIndex):
  444. + def BeginConversion(self, widget, InputFileIndex):
  445. ####################
  446. # Description
  447. # ===========
  448. @@ -542,7 +598,7 @@
  449. ####################
  450. - def activate(self,widget):
  451. + def activate(self, widget):
  452. ####################
  453. # Description
  454. # ===========
  455. @@ -556,24 +612,96 @@
  456. # ===============
  457. #
  458. ####################
  459. +
  460. + self.function_activate = True
  461. # Get selected operation from menu
  462. try:
  463. operation = self.operation_radiobutton
  464. - self.progressbar.set_fraction(0.01)
  465. - context_id = self.statusbar.get_context_id("Activation")
  466. - self.statusbar.push(context_id,'Converting '+self.input[self.NextInputFileToConvert])
  467. + InputFileName = self.input[self.NextInputFileToConvert]
  468. + # generate thumbnail from input file
  469. + self.thumbnail_filename = self.generateThumbnail(InputFileName)
  470. - #start watching output
  471. - self.source_id = gobject.timeout_add(500, self.checkfile)
  472. - InputFileName=self.input[self.NextInputFileToConvert]
  473. + # update thumbnail
  474. + try:
  475. + self.thumbnail.set_from_file(self.thumbnail_filename)
  476. + except:
  477. + pass
  478. + # get media file info
  479. + mediaFileInformation = self.file_getinfo()
  480. +
  481. + # fill label with file info
  482. + self.labelInput.set_text('')
  483. + self.labelInput.set_text(' Codec info for\n '+InputFileName+'\n\n'\
  484. + ' Audio codec: '+str(self.audio_codec[0])+\
  485. + ', '+str(self.audio_codec[1])+\
  486. + ', '+str(self.audio_codec[2])+'\n'\
  487. + ' Video codec: '+str(self.video_codec[0])+\
  488. + ', '+str(self.video_codec[1])+\
  489. + ', '+str(self.video_codec[2])+\
  490. + ', '+str(self.video_codec[3])+'\n'\
  491. + ' Bitrate: '+str(self.bitrate_info[0])+'\n'
  492. + ' Number of frames: '+str(self.file_frames)+'\n')
  493. +
  494. for i in range(self.Npreset):
  495. - if operation == self.presetlist[i][1]:
  496. +
  497. + if operation == self.presetlist[i][1] and '2Pass' in self.presetlist[i][1]:
  498. + # generate command line in subprocess syntax
  499. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-y', '-i']
  500. + subcommand.extend([InputFileName])
  501. + subcommand.extend(['-an', '-pass', '1', '-passlogfile', '/tmp/twopass'])
  502. + temp1 = self.presetlist[i][2].split(' ')
  503. + # remove empty entries ('') from the array
  504. + for ii in range(20):
  505. + try:
  506. + temp1.remove('')
  507. + except:
  508. + pass
  509. + temp1.extend(['/dev/null'])
  510. + subcommand.extend(temp1)
  511. + # Start converting
  512. + first_pass_process = subprocess.Popen(args = subcommand,
  513. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  514. + stderr = subprocess.STDOUT, shell = False)
  515. +
  516. + self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n')
  517. +
  518. + first_pass_process.wait()
  519. +
  520. + # generate command line in subprocess syntax
  521. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-stats', '-y', '-i']
  522. + subcommand.extend([InputFileName])
  523. + subcommand.extend(['-pass', '2', '-passlogfile', '/tmp/twopass'])
  524. + temp1 = self.presetlist[i][2].split(' ')
  525. + # remove empty entries ('') from the array
  526. + for ii in range(20):
  527. + try:
  528. + temp1.remove('')
  529. + except:
  530. + pass
  531. + temp1.extend([str(InputFileName+"_twopass."+self.presetlist[i][3])])
  532. + # path to output file
  533. + self.output = str(InputFileName+"_twopass."+self.presetlist[i][3])
  534. + subcommand.extend(temp1)
  535. + # Start converting
  536. + self.process = subprocess.Popen(args = subcommand,
  537. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  538. + stderr = subprocess.STDOUT, shell = False)
  539. +
  540. + self.logfile.writelines('\n'+str(subcommand)+'\n\n')
  541. + self.progressbar.set_fraction(0.0)
  542. + context_id = self.statusbar.get_context_id("Activation")
  543. + self.statusbar.push(context_id, 'Converting '+self.input[self.NextInputFileToConvert]+' (second pass)')
  544. + #start watching output
  545. + self.source_id = gobject.timeout_add(500, self.checkfile)
  546. + self.function_activate = False
  547. +
  548. + if operation == self.presetlist[i][1] and '2Pass' not in self.presetlist[i][1]:
  549. # generate command line in subprocess syntax
  550. - subcommand = ['/usr/bin/ffmpeg','-y','-i']
  551. + subcommand = ['/usr/bin/ffmpeg', '-v', 'warning', '-stats', '-y', '-i']
  552. subcommand.extend([InputFileName])
  553. - temp1=self.presetlist[i][2].split(' ')
  554. + temp1 = self.presetlist[i][2].split(' ')
  555. # remove empty entries ('') from the array
  556. for ii in range(20):
  557. try:
  558. @@ -582,19 +710,25 @@
  559. pass
  560. temp1.extend([str(InputFileName+"."+self.presetlist[i][3])])
  561. # path to output file
  562. - self.output=str(InputFileName+"."+self.presetlist[i][3])
  563. + self.output = str(InputFileName+"."+self.presetlist[i][3])
  564. subcommand.extend(temp1)
  565. # Start converting
  566. - self.process = subprocess.Popen(args=subcommand,
  567. - stdout=subprocess.PIPE,stdin=subprocess.PIPE,
  568. - stderr=subprocess.STDOUT,shell=False)
  569. + self.process = subprocess.Popen(args = subcommand,
  570. + stdout = subprocess.PIPE, stdin = subprocess.PIPE,
  571. + stderr = subprocess.STDOUT, shell = False)
  572. - self.logfile.writelines('Conversion command: '+str(subcommand)+'\n')
  573. + self.logfile.writelines('\nConversion command:\n'+str(subcommand)+'\n\n')
  574. + self.progressbar.set_fraction(0.0)
  575. + context_id = self.statusbar.get_context_id("Activation")
  576. + self.statusbar.push(context_id, 'Converting '+self.input[self.NextInputFileToConvert])
  577. + #start watching output
  578. + self.source_id = gobject.timeout_add(500, self.checkfile)
  579. + self.function_activate = False
  580. except:
  581. self.no_file_selected_dialog(widget)
  582. - def stop(self,widget):
  583. + def stop(self, widget):
  584. ####################
  585. # Description
  586. # ===========
  587. @@ -608,19 +742,19 @@
  588. #
  589. ####################
  590. try:
  591. - os.kill(self.process.pid,9)
  592. + os.kill(self.process.pid, 9)
  593. gobject.source_remove(self.source_id)
  594. self.progressbar.set_fraction(0.0)
  595. self.progressbar.set_text('')
  596. - self.logfile.writelines('Conversion aborted by user\n')
  597. + self.logfile.writelines('\nConversion aborted by user\n')
  598. context_id = self.statusbar.get_context_id("Activation")
  599. - self.statusbar.push(context_id,'Conversion aborted!')
  600. + self.statusbar.push(context_id, 'Conversion aborted!')
  601. except:
  602. pass
  603. - def quit_program(self,widget):
  604. + def quit_program(self, widget):
  605. ####################
  606. # Description
  607. # ===========
  608. @@ -634,7 +768,7 @@
  609. #
  610. ####################
  611. self.stop
  612. - self.logfile.writelines('****** Sinthgunt log file STOP - '+str(time.ctime())+' *******\n')
  613. + self.logfile.writelines('\n******* Sinthgunt log file STOP - '+str(time.ctime())+' *******\n\n')
  614. self.logfile.close
  615. gtk.main_quit()
  616. @@ -653,17 +787,21 @@
  617. # ===============
  618. #
  619. ####################
  620. - self.audio_codec = ['N/A','N/A','N/A','N/A','N/A']
  621. - self.video_codec = ['N/A','N/A','N/A','N/A','N/A']
  622. + self.audio_codec = ['N/A', 'N/A', 'N/A']
  623. + self.video_codec = ['N/A', 'N/A', 'N/A', 'N/A']
  624. + self.bitrate_info = ['N/A']
  625. self.file_frames = 0
  626. - InputFileName=self.input[-1]
  627. - command = ["ffmpeg","-i",InputFileName]
  628. + if self.function_activate == True:
  629. + InputFileName = self.input[self.NextInputFileToConvert]
  630. + else:
  631. + InputFileName = self.input[-1]
  632. + command = ['ffmpeg', '-i', InputFileName]
  633. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  634. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  635. + process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
  636. + stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
  637. flag = 1
  638. - counter=0
  639. + counter = 0
  640. try:
  641. while flag == 1:
  642. try:
  643. @@ -672,49 +810,66 @@
  644. break
  645. if output != '\n' and output != '':
  646. - self.logfile.writelines('Get file info status: '+output+'\n')
  647. + self.logfile.writelines('\nGet file info status:\n'+output+'\n')
  648. output_split = output.split(' ')
  649. - N=len(output_split)
  650. + N = len(output_split)
  651. for i in range(N):
  652. # Find length of audio/video file in seconds
  653. - if output_split[i]=='Duration:':
  654. - file_length_min=output_split[i+1]
  655. - file_length_min_split=file_length_min.split(':')
  656. + if output_split[i] == 'Duration:':
  657. + file_length_min = output_split[i+1]
  658. + file_length_min_split = file_length_min.split(':')
  659. temp = file_length_min_split[2].split('.')
  660. - file_length_min_split[2]=temp[0]
  661. + file_length_min_split[2] = temp[0]
  662. # Calculate length of file in seconds
  663. - file_length_sec=3600*float(file_length_min_split[0])+\
  664. + file_length_sec = 3600*float(file_length_min_split[0])+\
  665. 60*float(file_length_min_split[1])+\
  666. float(file_length_min_split[2])
  667. +
  668. + # Find video bitrate
  669. + if output_split[i] == 'bitrate:':
  670. + self.bitrate_info[0] = output_split[i+1].strip(',')+' kb/s'
  671. # Find video codec
  672. - if output_split[i]=='Video:':
  673. + if output_split[i] == 'Video:':
  674. self.video_codec[0] = output_split[i+1].strip(',')
  675. - self.video_codec[1] = output_split[i+2].strip(',')
  676. - self.video_codec[2] = output_split[i+3].strip(',')
  677. -
  678. - # Find video bitrate
  679. - if output_split[i]=='bitrate:':
  680. - self.video_codec[3] = output_split[i+1].strip(',')+' kb/s'
  681. +
  682. + if i >= 2 and (output_split[i] == 'yuv420p,'):
  683. + self.video_codec[1] = output_split[i+1].strip(',')
  684. + elif i >= 2 and (output_split[i] == 'rgb24,'):
  685. + self.video_codec[1] = output_split[i+1].strip(',')
  686. + elif i >= 2 and (output_split[i] == 'yuv444p,'):
  687. + self.video_codec[1] = output_split[i+1].strip(',')
  688. + elif i >= 2 and (output_split[i] == 'yuv420p(tv),'):
  689. + self.video_codec[1] = output_split[i+1].strip(',')
  690. +
  691. + if i >= 2 and (output_split[i] == 'kb/s,'):
  692. + self.video_codec[2] = output_split[i-1]+' kb/s'
  693. +
  694. + if i >= 2 and (output_split[i] == 'fps,'):
  695. + self.video_codec[3] = output_split[i-1]+' fps'
  696. # Find frames pr. second in the file
  697. - if i>=2 and (output_split[i]=='tb(r)\n' or output_split[i]=='tb(r)\nMust' or output_split[i]=='tbr,'):
  698. - file_fps=output_split[i-1]
  699. + if i >= 2 and (output_split[i] == 'tb(r)\n' or output_split[i] == 'tb(r)\nMust' or output_split[i] == 'tbr,'):
  700. + file_fps = output_split[i-1]
  701. # Calculate total number of frames
  702. self.file_frames = int(file_length_sec*float(file_fps))
  703. # Find audio codec
  704. - if output_split[i]=='Audio:':
  705. - self.audio_codec = [output_split[i+1].strip(','),
  706. - output_split[i+2].strip(','),
  707. - output_split[i+3].strip(','),
  708. - output_split[i+4].strip(','),
  709. - output_split[i+5]]
  710. - #flag = 0
  711. + if output_split[i] == 'Audio:':
  712. + self.audio_codec[0] = output_split[i+1].strip(',')
  713. +
  714. + if i >= 2 and (output_split[i] == 'Hz,'):
  715. + self.audio_codec[1] = output_split[i-1]+' Hz'
  716. +
  717. + if i >= 2 and (output_split[i] == 'fltp,'):
  718. + self.audio_codec[2] = output_split[i+1]+' kb/s'
  719. + elif i >= 2 and (output_split[i] == 's16p,'):
  720. + self.audio_codec[2] = output_split[i+1]+' kb/s'
  721. +
  722. # Stop if we reach the end of ffmpeg's output
  723. - if counter >= 1000 or output_spilt[i]=='file\n':
  724. + if counter >= 1000 or output_split[i] == 'file\n':
  725. flag = 0
  726. counter = counter+1
  727. except:
  728. @@ -723,7 +878,7 @@
  729. self.logfile.writelines('Video codec: '+str(self.video_codec)+'\n')
  730. self.logfile.writelines('Number of frames: '+str(self.file_frames)+'\n')
  731. - def aboutdialog(self,widget):
  732. + def aboutdialog(self, widget):
  733. ####################
  734. # Description
  735. # ===========
  736. @@ -746,9 +901,9 @@
  737. \nConvert button in the main window.\
  738. \n\nPlease visit http://www.sinthgunt.org\
  739. \nfor more info."
  740. - self.InformationDialog(widget,dialogtext)
  741. + self.InformationDialog(widget, dialogtext)
  742. - def no_file_selected_dialog(self,widget):
  743. + def no_file_selected_dialog(self, widget):
  744. ####################
  745. # Description
  746. # ===========
  747. @@ -761,11 +916,11 @@
  748. # ===============
  749. #
  750. ####################
  751. - dialogtext = "You have to select a file and/or a preset before you \
  752. + dialogtext = "\n You have to select a file and/or a preset before you \
  753. \ncan begin converting!"
  754. - self.ErrorDialog(widget,dialogtext)
  755. + self.ErrorDialog(widget, dialogtext)
  756. - def unsupported_codec_dialog(self,widget):
  757. + def unsupported_codec_dialog(self, widget):
  758. ####################
  759. # Description
  760. # ===========
  761. @@ -778,13 +933,13 @@
  762. # ===============
  763. #
  764. ####################
  765. - dialogtext = "You have selected a preset which is (probably) not supported by your version of ffmpeg. \
  766. + dialogtext = " You have selected a preset which is (probably) not supported by your version of ffmpeg. \
  767. To upgrade ffmpeg, please check your distribution documentation. \
  768. -\n If you want, you may disregard this warning and check the log file (sinthgunt.log) \
  769. -after pressing the convert button"
  770. - self.ErrorDialog(widget,dialogtext)
  771. +\n If you want, you may disregard this warning and check the log file (~/.sinthgunt.log) \
  772. +after pressing the convert button."
  773. + self.ErrorDialog(widget, dialogtext)
  774. - def ErrorDialog(self,widget,dialogtext):
  775. + def ErrorDialog(self, widget, dialogtext):
  776. ####################
  777. # Description
  778. # ===========
  779. @@ -802,10 +957,10 @@
  780. gtk.BUTTONS_NONE, dialogtext)
  781. message.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
  782. resp = message.run()
  783. - if resp == gtk.RESPONSE_CLOSE:
  784. + if resp == gtk.RESPONSE_CLOSE or gtk.STOCK_CLOSE:
  785. message.destroy()
  786. - def InformationDialog(self,widget,dialogtext):
  787. + def InformationDialog(self, widget, dialogtext):
  788. ####################
  789. # Description
  790. # ===========
  791. @@ -821,13 +976,13 @@
  792. message = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, dialogtext)
  793. message.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
  794. resp = message.run()
  795. - if resp == gtk.RESPONSE_CLOSE:
  796. + if resp == gtk.RESPONSE_CLOSE or gtk.STOCK_CLOSE:
  797. message.destroy()
  798. - def menuradiobuttonselect(self,widget):
  799. + def menuradiobuttonselect(self, widget):
  800. ####################
  801. # Description
  802. # ===========
  803. @@ -840,18 +995,22 @@
  804. #
  805. ####################
  806. self.operation_radiobutton = ''
  807. - counter=0
  808. + counter = 0
  809. for presetmenu1header in self.presetmenu1headerholder:
  810. for item in presetmenu1header:
  811. if item.get_active() == True:
  812. self.operation_radiobutton = self.presetlist[counter][1]
  813. - self.labelOperation.set_text('Output to '+self.presetlist[counter][1])
  814. + self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+' ')
  815. # if preset is not supported, display unsupported_codec_dialog
  816. - if self.preset_enabled[counter]==False:
  817. + if self.preset_enabled[counter] == False and self.already_executed == False:
  818. self.unsupported_codec_dialog(widget)
  819. - self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+'\n(Preset not supported by ffmpeg)')
  820. + self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+' (preset not supported) ')
  821. + #item.set_active(True)
  822. + self.already_executed = True
  823. + elif self.preset_enabled[counter] == False and self.already_executed == True:
  824. + self.labelOperation.set_text('Output to '+self.presetlist[counter][1]+' (preset not supported) ')
  825. #item.set_active(True)
  826. - counter = counter + 1
  827. + counter = counter+1
  828. def parseXML(self):
  829. @@ -877,48 +1036,48 @@
  830. xml_file = os.path.dirname(xml_file) # load xml file
  831. xml_file = os.path.join(xml_file, self.DATA_DIR+"presets.xml")
  832. optionsXML = etree.parse(xml_file)
  833. - presets=[]
  834. - row = [' ',' ',' ',' ',[]]
  835. + presets = []
  836. + row = [' ', ' ', ' ', ' ', []]
  837. - # Iterate through presets in xml file
  838. + # Iterate through presets in xml file
  839. for child in optionsXML.getiterator():
  840. if child.tag == 'label': # preset name
  841. - row[1]=child.text
  842. + row[1] = child.text
  843. if child.tag == 'params': # preset ffmpeg command line options
  844. - row[2]=child.text
  845. + row[2] = child.text
  846. if child.tag == 'extension': # output file extension
  847. - row[3]=child.text.strip(' ')
  848. + row[3] = child.text.strip(' ')
  849. if child.tag == 'category': # preset category
  850. - row[0]=child.text
  851. + row[0] = child.text
  852. if child.tag == 'codecs': # encoding codecs required by preset
  853. - row[4]=child.text.split(',')
  854. + row[4] = child.text.split(',')
  855. presets.append(row)
  856. - row = [' ',' ',' ',' ',[]]
  857. + row = [' ', ' ', ' ', ' ', []]
  858. # (planned): Test if codec will work
  859. - # Sort by category name
  860. - presets.sort(lambda x, y: cmp(x[0],y[0]))
  861. + # Sort by category name
  862. + presets.sort(lambda x, y: cmp(x[0], y[0]))
  863. - # find category list
  864. - categories=[presets[0][0]]
  865. - for row in presets:
  866. - if row[0]!=categories[-1]:
  867. - categories.append(row[0])
  868. + # find category list
  869. + categories = [presets[0][0]]
  870. + for row in presets:
  871. + if row[0] != categories[-1]:
  872. + categories.append(row[0])
  873. # make lists global
  874. - self.presetlist=presets
  875. - self.categorylist=categories
  876. + self.presetlist = presets
  877. + self.categorylist = categories
  878. # Get codecs and check if encoding and/or decoding is avaliable
  879. self.ffmpeg_getcodecs()
  880. - def ffmpeg_getinfo(self,widget):
  881. + def ffmpeg_getinfo(self, widget):
  882. ####################
  883. # Description
  884. # ===========
  885. @@ -936,16 +1095,16 @@
  886. #
  887. ####################
  888. self.ffmpeg_getcodecs()
  889. - command = ["ffmpeg","-version"]
  890. + command = ['ffmpeg', '-version']
  891. output = ''
  892. try:
  893. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  894. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  895. + process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
  896. + stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
  897. output = str(process.stdout.read(10000))
  898. except:
  899. None
  900. - dialogtext=output
  901. - self.InformationDialog(widget,dialogtext)
  902. + dialogtext = output
  903. + self.InformationDialog(widget, dialogtext)
  904. def ffmpeg_getcodecs(self):
  905. ####################
  906. @@ -960,224 +1119,73 @@
  907. # ===============
  908. #
  909. ####################
  910. - command = ["ffmpeg","-formats"]
  911. + command = ['ffmpeg', '-v', 'warning', '-formats']
  912. output = ''
  913. try:
  914. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  915. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  916. + process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
  917. + stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
  918. output = str(process.stdout.read(20000))
  919. except:
  920. None
  921. - #self.logfile.writelines('ffmpeg_getformats output: '+str(output))
  922. - command = ["ffmpeg","-codecs"]
  923. + command = ['ffmpeg', '-v', 'warning', '-codecs']
  924. try:
  925. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  926. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  927. + process = subprocess.Popen(args = command, stdout = subprocess.PIPE,
  928. + stdin = subprocess.PIPE, stderr = subprocess.STDOUT)
  929. output += str(process.stdout.read(20000))
  930. except:
  931. None
  932. - self.logfile.writelines('ffmpeg_getcodecs output: '+str(output))
  933. + self.logfile.writelines('\nCodecs output:\n'+str(output)+'\n')
  934. - output_lines=output.split('\n')
  935. - codecs_raw=[]
  936. - Ncodecs=0
  937. + output_lines = output.split('\n')
  938. + codecs_raw = []
  939. + Ncodecs = 0
  940. for line in output_lines:
  941. - line_split=line.split(' ')
  942. - line_codec=line_split[0:7]
  943. + line_split = line.split(' ')
  944. + line_codec = line_split[0:7]
  945. for i in range(20):
  946. try:
  947. line_codec.remove('')
  948. except:
  949. pass
  950. codecs_raw.append(line_codec)
  951. - Ncodecs=Ncodecs+1
  952. - self.logfile.writelines('ffmpeg_getcodecs codecs_raw: '+str(codecs_raw))
  953. + Ncodecs = Ncodecs+1
  954. + self.logfile.writelines('\nRaw codecs:\n'+str(codecs_raw)+'\n')
  955. # look for encoding
  956. - self.codecs=[]
  957. + self.codecs = []
  958. for i in range(Ncodecs):
  959. - flag = 0
  960. + flagA = 0
  961. + flagB = 0
  962. try:
  963. # row: codec name, encode, decode
  964. - row = ['',False,False]
  965. + row = ['', False, False]
  966. # Check to see if we can encode
  967. - if codecs_raw[i][0].find('E')== 0 or codecs_raw[i][0].find('E')== 1:
  968. - row[0]=codecs_raw[i][-1]
  969. - row[1]=True
  970. - flag = 1
  971. + if codecs_raw[i][0].find('E') == 0 or codecs_raw[i][0].find('E') == 1:
  972. + row[0] = codecs_raw[i][-1]
  973. + row[1] = True
  974. + flagA = 1
  975. # Check to see if we can decode
  976. - if codecs_raw[i][0].find('D')== 0 or codecs_raw[i][0].find('D')== 1:
  977. - row[0]=codecs_raw[i][-1]
  978. - row[2]=True
  979. - flag =1
  980. + if codecs_raw[i][0].find('D') == 0 or codecs_raw[i][0].find('D') == 1:
  981. + row[0] = codecs_raw[i][-1]
  982. + row[2] = True
  983. + flagB = 1
  984. # Only add codec if we can either encode or decode
  985. - if flag==1:
  986. + if flagA and flagB == 1:
  987. self.codecs.append(row)
  988. except:
  989. pass
  990. # Debugging codec row
  991. - row = ['debugcodec',True,True]
  992. + row = ['debugcodec', True, True]
  993. self.codecs.append(row)
  994. - self.logfile.writelines('ffmpeg_getcodecs self.codecs: '+str(self.codecs))
  995. -
  996. -
  997. -#####################
  998. -## YouTube functions
  999. -#####################
  1000. - def menuopenyoutube(self,widget):
  1001. - ####################
  1002. - # Description
  1003. - # ===========
  1004. - """ Dialog that allows the user to enter a YouTube url.
  1005. - Once the user presses the 'ok' button, the download will begin"""
  1006. - # Arguments
  1007. - # =========
  1008. - #
  1009. - # Further Details
  1010. - # ===============
  1011. - #
  1012. - ####################
  1013. - #base this on a message dialog
  1014. - dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,gtk.MESSAGE_QUESTION,gtk.BUTTONS_OK_CANCEL,None)
  1015. - dialog.set_markup('Please enter a link to a video file, eg.')
  1016. - #create the text input field
  1017. - entry = gtk.Entry()
  1018. - #allow the user to press enter to do ok
  1019. - #entry.connect("activate", dialog.response(response), dialog, gtk.RESPONSE_OK)
  1020. - #create a horizontal box to pack the entry and a label
  1021. - hbox = gtk.HBox()
  1022. - hbox.pack_start(gtk.Label("URL:"), False, 5, 5)
  1023. - hbox.pack_end(entry)
  1024. - #some secondary text
  1025. - dialog.format_secondary_markup("<i>http://www.youtube.com/watch?v=LkCNJRfSZBU</i>\n\n\
  1026. -Sinthgunt supports YouTube, Metacafe, Google Video, Photobucket and Yahoo! Video.")
  1027. - #add it and show it
  1028. - dialog.vbox.pack_end(hbox, True, True, 0)
  1029. - dialog.show_all()
  1030. - # Start dialog.
  1031. - Response = dialog.run()
  1032. - self.youtubeurl = entry.get_text()
  1033. - dialog.destroy()
  1034. - dialog.destroy()
  1035. - # Did we press Ok? If yes, proceed
  1036. - if Response == gtk.RESPONSE_OK:
  1037. - try:
  1038. - # Look for direct link to media file
  1039. - if self.youtubeurl[-4]=='.':
  1040. - # find last '/'
  1041. - for i in range(len(self.youtubeurl)):
  1042. - if self.youtubeurl[-i]=='/':
  1043. - output=self.youtubeurl[-i+1:]
  1044. - break
  1045. - self.input.extend([os.getenv("HOME")+'/'+output])
  1046. - self.download(widget,self.youtubeurl)
  1047. - self.setinput(widget)
  1048. - else:
  1049. - self.download_youtube_dl(widget,self.youtubeurl)
  1050. - self.setinput(widget)
  1051. - except:
  1052. - pass
  1053. -
  1054. -
  1055. - def download(self,widget,url):
  1056. - ####################
  1057. - # Description
  1058. - # ===========
  1059. - """Copy the contents of a file from a given URL to a local file."""
  1060. - # Arguments
  1061. - # =========
  1062. - # url http url of the remote file to download eg. http://www.example.org/movie.mpg
  1063. - #
  1064. - # Further Details
  1065. - # ===============
  1066. - #
  1067. - ####################
  1068. - webFile=urllib.urlretrieve(url, self.input[-1],lambda nb, bs, fs, url=url: self._reporthook(widget,nb,bs,fs,url))
  1069. -
  1070. - def download_youtube_dl(self,widget,url):
  1071. - ####################
  1072. - # Description
  1073. - # ===========
  1074. - """Downloads video files from sites like youtube.com, metacafe.com and video.google.com."""
  1075. - # Arguments
  1076. - # =========
  1077. - # url http url of the remote file to download eg. http://www.example.org/movie.mpg
  1078. - #
  1079. - # Further Details
  1080. - # ===============
  1081. - # This function uses youtube-dl to get the url of the video and the title.
  1082. - ####################
  1083. -
  1084. - # Get video url from youtube-dl
  1085. - command = ["youtube-dl-sinthgunt","-g",url]
  1086. - output = ''
  1087. - try:
  1088. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  1089. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  1090. - output = str(process.stdout.read())
  1091. - except:
  1092. - None
  1093. -
  1094. - # Remove trailing newline
  1095. - video_url = output.strip()
  1096. -
  1097. - # Get video title from youtube-dl
  1098. - command = ["youtube-dl-sinthgunt","-e",url]
  1099. - output = ''
  1100. - try:
  1101. - process = subprocess.Popen(args=command,stdout=subprocess.PIPE,
  1102. - stdin=subprocess.PIPE,stderr=subprocess.STDOUT)
  1103. - output = str(process.stdout.read())
  1104. - except:
  1105. - None
  1106. -
  1107. - # Remove trailing newline
  1108. - video_title = output.strip()
  1109. -
  1110. - # Add file to input que
  1111. - self.input.extend([os.getenv("HOME")+'/'+video_title+".flv"])
  1112. -
  1113. - # Download the file
  1114. - webFile=urllib.urlretrieve(video_url, self.input[-1],lambda nb, bs, fs, url=url: self._reporthook(widget,nb,bs,fs,url))
  1115. -
  1116. -
  1117. - def _reporthook(self,widget,numblocks, blocksize, filesize, url=None):
  1118. - ####################
  1119. - # Description
  1120. - # ===========
  1121. - """Prints the download status to the status bar."""
  1122. - # Arguments
  1123. - # =========
  1124. - #
  1125. - # Further Details
  1126. - # ===============
  1127. - #
  1128. - ####################
  1129. - base = os.path.basename(url)
  1130. - #Should handle possible filesize=-1.
  1131. - try:
  1132. - percent = min((numblocks*blocksize*100)/filesize, 100)
  1133. - except:
  1134. - percent = 100
  1135. - if numblocks != 0:
  1136. - sys.stdout.write("\b"*70)
  1137. - context_id = self.statusbar.get_context_id("Activation")
  1138. - self.statusbar.push(context_id,'Downloaded '+str(percent)+'% from '+self.youtubeurl)
  1139. - self.progressbar.set_fraction(float(percent)/100)
  1140. - if percent==100:
  1141. - self.statusbar.push(context_id,'Downloaded completed. Saved as '+self.input[-1])
  1142. - self.setinput(widget)
  1143. - # Wait for gui to update
  1144. - while gtk.events_pending():
  1145. - gtk.main_iteration(False)
  1146. + self.logfile.writelines('\nRow codecs:\n'+str(self.codecs)+'\n')
  1147. #####################
  1148. ## mplayer functions
  1149. #####################
  1150. - def mplayer_check(self,widget):
  1151. + def mplayer_check(self, widget):
  1152. ####################
  1153. # Description
  1154. # ===========
  1155. @@ -1190,12 +1198,12 @@
  1156. #
  1157. ####################
  1158. return False
  1159. - if os.path.exist('/usr/bin/mplayer'):
  1160. + if os.path.exists('/usr/bin/mplayer'):
  1161. return True
  1162. else:
  1163. return False
  1164. - def mplayer_play_input_file(self,widget):
  1165. + def mplayer_play_input_file(self, widget):
  1166. ####################
  1167. # Description
  1168. # ===========
  1169. @@ -1209,17 +1217,17 @@
  1170. #
  1171. ####################
  1172. if self.mplayer_check:
  1173. - whattoplay=' '
  1174. + whattoplay = ' '
  1175. try:
  1176. - whattoplay=self.input[-1]
  1177. + whattoplay = self.input[-1]
  1178. except Exception, e:
  1179. raise e
  1180. - command = ["mplayer","-vo","x11",whattoplay]
  1181. - process = subprocess.Popen(args=command)
  1182. + command = ['mplayer', '-vo', 'x11', whattoplay]
  1183. + process = subprocess.Popen(args = command)
  1184. else:
  1185. print 'Mplayer must be installed and found in /usr/bin for this function to work'
  1186. - def mplayer_play_output_file(self,widget):
  1187. + def mplayer_play_output_file(self, widget):
  1188. ####################
  1189. # Description
  1190. # ===========
  1191. @@ -1233,13 +1241,13 @@
  1192. #
  1193. ####################
  1194. if self.mplayer_check:
  1195. - whattoplay=' '
  1196. + whattoplay = ' '
  1197. try:
  1198. - whattoplay=self.output
  1199. + whattoplay = self.output
  1200. except Exception, e:
  1201. raise e
  1202. - command = ["mplayer","-vo","x11",whattoplay]
  1203. - process = subprocess.Popen(args=command)
  1204. + command = ['mplayer', '-vo', 'x11', whattoplay]
  1205. + process = subprocess.Popen(args = command)
  1206. else:
  1207. print 'Mplayer must be installed and found in /usr/bin for this function to work'
  1208. @@ -1286,13 +1294,11 @@
  1209. "MainWindow_destroy" : self.quit_program,
  1210. "on_menuquit_activate" : self.quit_program,
  1211. "on_menuopen_activate" : self.menuopenfile,
  1212. - "on_menuopenyoutube_activate" : self.menuopenyoutube,
  1213. "on_toolbaropen_clicked" : self.menuopenfile,
  1214. - "on_toolbaropenyoutube_clicked" : self.menuopenyoutube,
  1215. "on_menuconvert_activate" : self.activate,
  1216. "on_menuabout_activate" : self.aboutdialog,
  1217. "on_menuffmpeginfo_activate" : self.ffmpeg_getinfo,
  1218. - "on_menuPlayInput_activate" : self.mplayer_play_input_file,
  1219. - "on_menuPlayOutput_activate" : self.mplayer_play_output_file}
  1220. + "on_menuPlayInput_activate" : self.mplayer_play_input_file,
  1221. + "on_menuPlayOutput_activate" : self.mplayer_play_output_file}
  1222. #Do the magic connecting to the widgets
  1223. self.wTree.signal_autoconnect(self.dic)
  1224. diff -3ur a/setup.py b/setup.py
  1225. --- a/setup.py 2013-02-15 18:23:20.000000000 +0400
  1226. +++ b/setup.py 2017-02-20 16:38:40.000000000 +0300
  1227. @@ -17,7 +17,7 @@
  1228. license = 'GPLv3',
  1229. packages = ['Sinthgunt'],
  1230. package_data = {'sinthgunt': files},
  1231. - scripts = ['sinthgunt','youtube-dl-sinthgunt'],
  1232. + scripts = ['sinthgunt'],
  1233. data_files=[
  1234. ('/usr/share/sinthgunt',['share/sinthgunt.glade','share/presets.xml','share/logo.png','share/icon.png','README.txt','LICENSE.txt','sinthgunt.html']),
  1235. ('/usr/share/applications',['share/sinthgunt.desktop']),
  1236. diff -3ur a/share/presets.xml b/share/presets.xml
  1237. --- a/share/presets.xml 2010-11-14 15:02:41.000000000 +0300
  1238. +++ b/share/presets.xml 2017-03-03 23:52:17.000000000 +0300
  1239. @@ -9,199 +9,199 @@
  1240. </CDWavStereo>
  1241. <GigabeatFS>
  1242. <label>RB Toshiba Gigabeat F/X Fullscreen</label>
  1243. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b 600k -strict -1</params>
  1244. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b:v 600k -strict -1</params>
  1245. <extension>mpg</extension>
  1246. <category>Rockbox</category>
  1247. - <codecs>libmp3lame,mpeg2video</codecs>
  1248. + <codecs>mp3,mpeg2video</codecs>
  1249. </GigabeatFS>
  1250. <GigabeatWS>
  1251. <label>RB Toshiba Gigabeat F/X Widescreen</label>
  1252. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b 600k -strict -1</params>
  1253. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b:v 600k -strict -1</params>
  1254. <extension>mpg</extension>
  1255. <category>Rockbox</category>
  1256. - <codecs>libmp3lame,mpeg2video</codecs>
  1257. + <codecs>mp3,mpeg2video</codecs>
  1258. </GigabeatWS>
  1259. <H1020FS>
  1260. <label>RB iRiver H10 20GB Fullscreen</label>
  1261. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b 224k -strict -1</params>
  1262. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b:v 224k -strict -1</params>
  1263. <extension>mpg</extension>
  1264. <category>Rockbox</category>
  1265. - <codecs>libmp3lame,mpeg2video</codecs>
  1266. + <codecs>mp3,mpeg2video</codecs>
  1267. </H1020FS>
  1268. <H1020WS>
  1269. <label>RB iRiver H10 20GB Widescreen</label>
  1270. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b 224k -strict -1</params>
  1271. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b:v 224k -strict -1</params>
  1272. <extension>mpg</extension>
  1273. <category>Rockbox</category>
  1274. - <codecs>libmp3lame,mpeg2video</codecs>
  1275. + <codecs>mp3,mpeg2video</codecs>
  1276. </H1020WS>
  1277. <H105FS>
  1278. <label>RB iRiver H10 5/6GB Fullscreen</label>
  1279. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x96 -b 224k -strict -1</params>
  1280. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x96 -b:v 224k -strict -1</params>
  1281. <extension>mpg</extension>
  1282. <category>Rockbox</category>
  1283. - <codecs>libmp3lame,mpeg2video</codecs>
  1284. + <codecs>mp3,mpeg2video</codecs>
  1285. </H105FS>
  1286. <H105WS>
  1287. <label>RB iRiver H10 5/6GB Widescreen</label>
  1288. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x80 -b 224k -strict -1</params>
  1289. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 128x80 -b:v 224k -strict -1</params>
  1290. <extension>mpg</extension>
  1291. <category>Rockbox</category>
  1292. - <codecs>libmp3lame,mpeg2video</codecs>
  1293. + <codecs>mp3,mpeg2video</codecs>
  1294. </H105WS>
  1295. <H300FS>
  1296. <label>RB iRiver H300 Fullscreen</label>
  1297. - <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x176 -b 224k -r 10 -strict -1</params>
  1298. + <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 224k -r 10 -strict -1</params>
  1299. <extension>mpg</extension>
  1300. <category>Rockbox</category>
  1301. - <codecs>libmp3lame,mpeg2video</codecs>
  1302. + <codecs>mp3,mpeg2video</codecs>
  1303. </H300FS>
  1304. <H300WS>
  1305. <label>RB iRiver H300 Widescreen</label>
  1306. - <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x128 -b 256k -r 15 -strict -1</params>
  1307. + <params>-acodec libmp3lame -ab 96k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 256k -r 15 -strict -1</params>
  1308. <extension>mpg</extension>
  1309. <category>Rockbox</category>
  1310. - <codecs>libmp3lame,mpeg2video</codecs>
  1311. + <codecs>mp3,mpeg2video</codecs>
  1312. </H300WS>
  1313. <I5GFS>
  1314. <label>RB Apple iPod Video Fullscreen</label>
  1315. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b 400k -strict -1</params>
  1316. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x240 -b:v 400k -strict -1</params>
  1317. <extension>mpg</extension>
  1318. <category>Rockbox</category>
  1319. - <codecs>libmp3lame,mpeg2video</codecs>
  1320. + <codecs>mp3,mpeg2video</codecs>
  1321. </I5GFS>
  1322. <I5GWS>
  1323. <label>RB Apple iPod Video Widescreen</label>
  1324. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b 400k -strict -1</params>
  1325. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 320x176 -b:v 400k -strict -1</params>
  1326. <extension>mpg</extension>
  1327. <category>Rockbox</category>
  1328. - <codecs>libmp3lame,mpeg2video</codecs>
  1329. + <codecs>mp3,mpeg2video</codecs>
  1330. </I5GWS>
  1331. <M4a>
  1332. <label>MPEG4 Audio</label>
  1333. <params>-vn -acodec libfaac -ab 112k -ac 2</params>
  1334. - <extension>m4a</extension>
  1335. + <extension>aac</extension>
  1336. <category>Audio</category>
  1337. - <codecs>libfaac</codecs>
  1338. + <codecs>aac</codecs>
  1339. </M4a>
  1340. <NeurosOSDTVHQNTSC>
  1341. <label>Neuros HQ NTSC Fullscreen</label>
  1342. - <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>
  1343. + <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>
  1344. <extension>mp4</extension>
  1345. <category>Neuros OSD</category>
  1346. - <codecs>libxvid,libfaac</codecs>
  1347. + <codecs>mpeg4,aac</codecs>
  1348. </NeurosOSDTVHQNTSC>
  1349. <NeurosOSDTVHQPAL>
  1350. <label>Neuros HQ PAL Fullscreen</label>
  1351. - <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>
  1352. + <params>-f mp4 -r 25 -vcodec libxvid -s 640x480 -aspect 4:3 -b:v 2000k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
  1353. <extension>mp4</extension>
  1354. <category>Neuros OSD</category>
  1355. - <codecs>libxvid,libfaac</codecs>
  1356. + <codecs>mpeg4,aac</codecs>
  1357. </NeurosOSDTVHQPAL>
  1358. <NeurosOSDTVSFNTSC>
  1359. <label>Neuros Small File NTSC Fullscreen</label>
  1360. - <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>
  1361. + <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>
  1362. <extension>mp4</extension>
  1363. <category>Neuros OSD</category>
  1364. - <codecs>libxvid,libfaac</codecs>
  1365. + <codecs>mpeg4,aac</codecs>
  1366. </NeurosOSDTVSFNTSC>
  1367. <NeurosOSDTVSFPAL>
  1368. <label>Neuros Small File PAL Fullscreen</label>
  1369. - <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>
  1370. + <params>-f mp4 -b:v 800k -r 25 -s 320x240 -aspect 4:3 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
  1371. <extension>mp4</extension>
  1372. <category>Neuros OSD</category>
  1373. - <codecs>libxvid,libfaac</codecs>
  1374. + <codecs>mpeg4,aac</codecs>
  1375. </NeurosOSDTVSFPAL>
  1376. <NeurosOSDTVWSHQNTSC>
  1377. <label>Neuros HQ NTSC Widescreen</label>
  1378. - <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>
  1379. + <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>
  1380. <extension>mp4</extension>
  1381. <category>Neuros OSD</category>
  1382. - <codecs>libxvid,libfaac</codecs>
  1383. + <codecs>mpeg4,aac</codecs>
  1384. </NeurosOSDTVWSHQNTSC>
  1385. <NeurosOSDTVWSHQPAL>
  1386. <label>Neuros HQ PAL Widescreen</label>
  1387. - <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>
  1388. + <params>-f mp4 -r 25 -vcodec libxvid -s 704x384 -aspect 16:9 -b:v 2500k -acodec libfaac -ar 48000 -ab 128k -ac 2</params>
  1389. <extension>mp4</extension>
  1390. <category>Neuros OSD</category>
  1391. - <codecs>libxvid,libfaac</codecs>
  1392. + <codecs>mpeg4,aac</codecs>
  1393. </NeurosOSDTVWSHQPAL>
  1394. <NeurosOSDTVWSSFNTSC>
  1395. <label>Neuros Small File NTSC Widescreen</label>
  1396. - <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>
  1397. + <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>
  1398. <extension>mp4</extension>
  1399. <category>Neuros OSD</category>
  1400. - <codecs>libxvid,libfaac</codecs>
  1401. + <codecs>mpeg4,aac</codecs>
  1402. </NeurosOSDTVWSSFNTSC>
  1403. <NeurosOSDTVWSSFPAL>
  1404. <label>Neuros Small File PAL Widescreen</label>
  1405. - <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>
  1406. + <params>-f mp4 -b:v 800k -r 25 -s 352x240 -aspect 16:9 -vcodec libxvid -ar 48000 -ab 80k -ac 2 -acodec libfaac</params>
  1407. <extension>mp4</extension>
  1408. <category>Neuros OSD</category>
  1409. - <codecs>libxvid,libfaac</codecs>
  1410. + <codecs>mpeg4,aac</codecs>
  1411. </NeurosOSDTVWSSFPAL>
  1412. <PalmXviDFS>
  1413. <label>Palm Fullscreen</label>
  1414. - <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>
  1415. + <params>-f mp4 -vcodec libxvid -s 428x320 -aspect 4:3 -b:v 500k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
  1416. <extension>mp4</extension>
  1417. <category>Palm</category>
  1418. - <codecs>libxvid,libfaac</codecs>
  1419. + <codecs>mpeg4,aac</codecs>
  1420. </PalmXviDFS>
  1421. <PalmXviDWS>
  1422. <label>Palm Widescreen</label>
  1423. - <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>
  1424. + <params>-f mp4 -vcodec libxvid -s 480x320 -aspect 3:2 -b:v 430k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
  1425. <extension>mp4</extension>
  1426. <category>Palm</category>
  1427. - <codecs>libxvid,libfaac</codecs>
  1428. + <codecs>mpeg4,aac</codecs>
  1429. </PalmXviDWS>
  1430. <PhotoFS>
  1431. <label>RB Apple iPod Photo/Color Fullscreen</label>
  1432. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b 320k -r 15 -strict -1</params>
  1433. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 320k -r 15 -strict -1</params>
  1434. <extension>mpg</extension>
  1435. <category>Rockbox</category>
  1436. - <codecs>libmp3lame,mpeg2video</codecs>
  1437. + <codecs>mp3,mpeg2video</codecs>
  1438. </PhotoFS>
  1439. <PhotoWS>
  1440. <label>RB Apple iPod Photo/Color Widescreen</label>
  1441. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b 320k -r 24 -strict -1</params>
  1442. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 320k -r 24 -strict -1</params>
  1443. <extension>mpg</extension>
  1444. <category>Rockbox</category>
  1445. - <codecs>libmp3lame,mpeg2video</codecs>
  1446. + <codecs>mp3,mpeg2video</codecs>
  1447. </PhotoWS>
  1448. <X5FS>
  1449. <label>RB Cowon iAudio X5 Fullscreen</label>
  1450. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b 176k -r 15 -strict -1</params>
  1451. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x128 -b:v 176k -r 15 -strict -1</params>
  1452. <extension>mpg</extension>
  1453. <category>Rockbox</category>
  1454. - <codecs>libmp3lame,mpeg2video</codecs>
  1455. + <codecs>mp3,mpeg2video</codecs>
  1456. </X5FS>
  1457. <X5WS>
  1458. <label>RB Cowon iAudio X5 Widescreen</label>
  1459. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b 224k -r 24 -strict -1</params>
  1460. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 160x96 -b:v 224k -r 24 -strict -1</params>
  1461. <extension>mpg</extension>
  1462. <category>Rockbox</category>
  1463. - <codecs>libmp3lame,mpeg2video</codecs>
  1464. + <codecs>mp3,mpeg2video</codecs>
  1465. </X5WS>
  1466. <XviDAVIFS>
  1467. <label>XviD FullScreen</label>
  1468. - <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>
  1469. + <params>-f avi -vcodec libxvid -vtag xvid -s 640x480 -aspect 4:3 -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
  1470. <extension>avi</extension>
  1471. <category>AVI</category>
  1472. - <codecs>libxvid,libmp3lame</codecs>
  1473. + <codecs>mpeg4,mp3</codecs>
  1474. </XviDAVIFS>
  1475. <XviDAVIWS>
  1476. <label>XviD Widescreen</label>
  1477. - <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>
  1478. + <params>-f avi -vcodec libxvid -vtag xvid -s 704x396 -aspect 16:9 -b:v 1500k -acodec libmp3lame -ar 48000 -ab 128k -ac 2</params>
  1479. <extension>avi</extension>
  1480. <category>AVI</category>
  1481. - <codecs>libxvid,libmp3lame</codecs>
  1482. + <codecs>mpeg4,mp3</codecs>
  1483. </XviDAVIWS>
  1484. <XviDAVIWSAna>
  1485. <label>XviD Widescreen Anamorphic</label>
  1486. - <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>
  1487. + <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>
  1488. <extension>avi</extension>
  1489. <category>AVI</category>
  1490. - <codecs>libxvid,libmp3lame</codecs>
  1491. + <codecs>mpeg4,mp3</codecs>
  1492. </XviDAVIWSAna>
  1493. <ac3dvd192>
  1494. <label>Ac3 DVD - 192kbps Stereo</label>
  1495. @@ -219,10 +219,10 @@
  1496. </ac3dvd384>
  1497. <divx>
  1498. <label>MS Compatible AVI</label>
  1499. - <params>-acodec libmp3lame -vcodec msmpeg4 -ab 192k -b 1000k -s 640x480</params>
  1500. + <params>-acodec libmp3lame -vcodec msmpeg4v3 -ab 192k -b:v 1000k -s 640x480</params>
  1501. <extension>avi</extension>
  1502. <category>AVI</category>
  1503. - <codecs>msmpeg4,libmp3lame</codecs>
  1504. + <codecs>msmpeg4v3,mp3</codecs>
  1505. </divx>
  1506. <dvntsc>
  1507. <label>Raw DV for NTSC Fullscreen</label>
  1508. @@ -240,14 +240,14 @@
  1509. </dvpal>
  1510. <e200FS>
  1511. <label>RB Sandisk Sansa e200 Fullscreen</label>
  1512. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b 320k -strict -1</params>
  1513. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x176 -b:v 320k -strict -1</params>
  1514. <extension>mpg</extension>
  1515. <category>Rockbox</category>
  1516. <codecs>mpeg2video,libmp3lame</codecs>
  1517. </e200FS>
  1518. <e200WS>
  1519. <label>RB Sandisk Sansa e200 Widescreen</label>
  1520. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b 320k -strict -1</params>
  1521. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 224x128 -b:v 320k -strict -1</params>
  1522. <extension>mpg</extension>
  1523. <category>Rockbox</category>
  1524. <codecs>mpeg2video,libmp3lame</codecs>
  1525. @@ -257,116 +257,116 @@
  1526. <params>-acodec libmp3lame -ab 160k -ac 2 -ar 44100</params>
  1527. <extension>mp3</extension>
  1528. <category>Audio</category>
  1529. - <codecs>libmp3lame</codecs>
  1530. + <codecs>mp3</codecs>
  1531. </mp3>
  1532. <mp3m>
  1533. <label>MP3 (Mono)</label>
  1534. <params>-acodec libmp3lame -ab 32k -ac 1 -ar 22050</params>
  1535. <extension>mp3</extension>
  1536. <category>Mobile Phones</category>
  1537. - <codecs>libmp3lame</codecs>
  1538. + <codecs>mp3</codecs>
  1539. </mp3m>
  1540. <nanoFS>
  1541. <label>RB Apple iPod Nano Fullscreen</label>
  1542. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b 256k -strict -1</params>
  1543. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b:v 256k -strict -1</params>
  1544. <extension>mpg</extension>
  1545. <category>Rockbox</category>
  1546. <codecs>mpeg2video,libmp3lame</codecs>
  1547. </nanoFS>
  1548. <nanoWS>
  1549. <label>RB Apple iPod Nano Widescreen</label>
  1550. - <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b 256k -strict -1</params>
  1551. + <params>-acodec libmp3lame -ab 128k -ar 44100 -vcodec mpeg2video -s 176x128 -b:v 256k -strict -1</params>
  1552. <extension>mpg</extension>
  1553. <category>Rockbox</category>
  1554. <codecs>mpeg2video,libmp3lame</codecs>
  1555. </nanoWS>
  1556. <ntscdvdgoodqFS>
  1557. <label>NTSC DVD Fullscreen</label>
  1558. - <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>
  1559. + <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>
  1560. <extension>mpg</extension>
  1561. <category>DVD</category>
  1562. <codecs>mpeg2video,mp2</codecs>
  1563. </ntscdvdgoodqFS>
  1564. <ntscdvdgoodqWS>
  1565. <label>NTSC DVD Widescreen</label>
  1566. - <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>
  1567. + <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>
  1568. <extension>mpg</extension>
  1569. <category>DVD</category>
  1570. <codecs>mpeg2video,mp2</codecs>
  1571. </ntscdvdgoodqWS>
  1572. <ntscdvdhqFS>
  1573. <label>NTSC DVD HQ Fullscreen</label>
  1574. - <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>
  1575. + <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>
  1576. <extension>mpg</extension>
  1577. <category>DVD</category>
  1578. - <codecs>dvd</codecs>
  1579. + <codecs>mpeg2video,mp2</codecs>
  1580. </ntscdvdhqFS>
  1581. <ntscdvdhqWS>
  1582. <label>NTSC DVD HQ Widescreen</label>
  1583. - <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>
  1584. + <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>
  1585. <extension>mpg</extension>
  1586. <category>DVD</category>
  1587. - <codecs>dvd</codecs>
  1588. + <codecs>mpeg2video,mp2</codecs>
  1589. </ntscdvdhqWS>
  1590. <ntscdvdlq>
  1591. <label>NTSC DVD Fast (LQ)</label>
  1592. - <params>-f dvd -target ntsc-dvd -b 5000k -r 29.97 -s 720x480 -ar 48000 -ab 384kb</params>
  1593. + <params>-f dvd -target ntsc-dvd -b:v 5000k -r 29.97 -s 720x480 -ar 48000 -ab 384kb</params>
  1594. <extension>mpg</extension>
  1595. <category>DVD</category>
  1596. - <codecs>dvd</codecs>
  1597. + <codecs>mpeg2video,mp2</codecs>
  1598. </ntscdvdlq>
  1599. <ntscvcdhq>
  1600. <label>NTSC VCD (HQ)</label>
  1601. - <params>-f vcd -target ntsc-vcd -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
  1602. + <params>-f vcd -target ntsc-vcd -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
  1603. <extension>mpg</extension>
  1604. <category>VCD</category>
  1605. <codecs>vcd</codecs>
  1606. </ntscvcdhq>
  1607. <paldvdgoodqFS>
  1608. <label>PAL DVD Fullscreen</label>
  1609. - <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>
  1610. + <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>
  1611. <extension>mpg</extension>
  1612. <category>DVD</category>
  1613. <codecs>mpeg2video,mp2</codecs>
  1614. </paldvdgoodqFS>
  1615. <paldvdgoodqWS>
  1616. <label>PAL DVD Widescreen</label>
  1617. - <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>
  1618. + <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>
  1619. <extension>mpg</extension>
  1620. <category>DVD</category>
  1621. <codecs>mpeg2video,mp2</codecs>
  1622. </paldvdgoodqWS>
  1623. <paldvdhqFS>
  1624. <label>PAL DVD HQ Fullscreen</label>
  1625. - <params>-f dvd -target pal-dvd -aspect 4:3 -b 8000k -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
  1626. + <params>-f dvd -target pal-dvd -aspect 4:3 -b:v 8000k -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
  1627. <extension>mpg</extension>
  1628. <category>DVD</category>
  1629. - <codecs>dvd</codecs>
  1630. + <codecs>mpeg2video,mp2</codecs>
  1631. </paldvdhqFS>
  1632. <paldvdhqWS>
  1633. <label>PAL DVD HQ Widescreen</label>
  1634. - <params>-f dvd -target pal-dvd -aspect 16:9 -b 8000k -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
  1635. + <params>-f dvd -target pal-dvd -aspect 16:9 -b:v 8000k -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
  1636. <extension>mpg</extension>
  1637. <category>DVD</category>
  1638. - <codecs>dvd</codecs>
  1639. + <codecs>mpeg2video,mp2</codecs>
  1640. </paldvdhqWS>
  1641. <paldvdlq>
  1642. <label>PAL DVD Fast (LQ)</label>
  1643. - <params>-f dvd -target pal-dvd -b 5000k -r 25 -s 720x576 -ar 48000 -ab 384kb</params>
  1644. + <params>-f dvd -target pal-dvd -b:v 5000k -r 25 -s 720x576 -ar 48000 -ab 384kb</params>
  1645. <extension>mpg</extension>
  1646. <category>DVD</category>
  1647. - <codecs>dvd</codecs>
  1648. + <codecs>mpeg2video,mp2</codecs>
  1649. </paldvdlq>
  1650. <palvcdhq>
  1651. <label>PAL VCD (HQ)</label>
  1652. - <params>-f vcd -target pal-vcd -mbd rd -trellis -mv0 -cmp 0 -subcmp 2</params>
  1653. + <params>-f vcd -target pal-vcd -mbd rd -trellis 2 -flags mv0 -cmp 0 -subcmp 2</params>
  1654. <extension>mpg</extension>
  1655. <category>VCD</category>
  1656. <codecs>vcd</codecs>
  1657. </palvcdhq>
  1658. <qmov>
  1659. <label>Quicktime MOV</label>
  1660. - <params>-f mov -acodec libfaac -b 1250k -r 25 -ab 128k -s 640x480</params>
  1661. + <params>-f mov -acodec libfaac -b:v 1250k -r 25 -ab 128k -s 640x480</params>
  1662. <extension>mov</extension>
  1663. <category>Quicktime</category>
  1664. <codecs>mov,libfaac</codecs>
  1665. @@ -380,72 +380,72 @@
  1666. </wma>
  1667. <wmv>
  1668. <label>WMV2 Generic</label>
  1669. - <params>-vcodec wmv2 -acodec wmav2 -b 1000k -ab 160k -r 25</params>
  1670. + <params>-vcodec wmv2 -acodec wmav2 -b:v 1000k -ab 160k -r 25</params>
  1671. <extension>wmv</extension>
  1672. <category>Microsoft</category>
  1673. <codecs>wmv2,wmav2</codecs>
  1674. </wmv>
  1675. <x264HQFS>
  1676. <label>MP4 Fullscreen</label>
  1677. - <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>
  1678. + <params>-f mp4 -vcodec libx264 -s 640x480 -b:v 1000k -aspect 4:3 -acodec libfaac -ab 112k -ar 44100 -ac 2</params>
  1679. <extension>mp4</extension>
  1680. <category>MPEG4</category>
  1681. - <codecs>libx264,libfaac</codecs>
  1682. + <codecs>h264,aac</codecs>
  1683. </x264HQFS>
  1684. <x264HQPSP43>
  1685. <label>PSP Fullscreen</label>
  1686. - <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>
  1687. + <params>-f mp4 -vcodec libx264 -s 640x480 -aspect 4:3 -b:v 1250k -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
  1688. <extension>mp4</extension>
  1689. <category>PSP</category>
  1690. - <codecs>libx264,libfaac</codecs>
  1691. + <codecs>h264,aac</codecs>
  1692. </x264HQPSP43>
  1693. <x264HQWS>
  1694. <label>MP4 Widescreen</label>
  1695. - <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>
  1696. + <params>-f mp4 -vcodec libx264 -s 704x396 -b:v 1000k -aspect 16:9 -acodec libfaac -ab 112k -ar 44100 -ac 2</params>
  1697. <extension>mp4</extension>
  1698. <category>MPEG4</category>
  1699. - <codecs>libx264,libfaac</codecs>
  1700. + <codecs>h264,aac</codecs>
  1701. </x264HQWS>
  1702. <cdma3g>
  1703. <label>CDMA Phone Audio (3g2)</label>
  1704. <params>-f 3g2 -ar 22050 -ab 128k -acodec libfaac -s qcif -r 14.985 -vn</params>
  1705. <extension>3g2</extension>
  1706. <category>Mobile Phones</category>
  1707. - <codecs>3g2,libfaac</codecs>
  1708. + <codecs>3g2,aac</codecs>
  1709. </cdma3g>
  1710. <XviDAVIZENFS>
  1711. <label>Zen Fullscreen</label>
  1712. - <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>
  1713. + <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>
  1714. <extension>avi</extension>
  1715. <category>Creative Zen</category>
  1716. - <codecs>libxvid,libmp3lame</codecs>
  1717. + <codecs>mpeg4,mp3</codecs>
  1718. </XviDAVIZENFS>
  1719. <XviDAVIZENWS>
  1720. <label>Zen Widescreen</label>
  1721. - <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>
  1722. + <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>
  1723. <extension>avi</extension>
  1724. <category>Creative Zen</category>
  1725. - <codecs>libxvid,libmp3lame</codecs>
  1726. + <codecs>mpeg4,mp3</codecs>
  1727. </XviDAVIZENWS>
  1728. <BlackberryCurvefs>
  1729. <label>Blackberry Curve Fullscreen</label>
  1730. - <params>-f mp4 -vcodec mpeg4 -b 400k -r 24 -s 320x240 -aspect 4:3 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
  1731. + <params>-f mp4 -vcodec mpeg4 -b:v 400k -r 24 -s 320x240 -aspect 4:3 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
  1732. <extension>mp4</extension>
  1733. <category>Blackberry</category>
  1734. - <codecs>mpeg4,libfaac</codecs>
  1735. + <codecs>mpeg4,aac</codecs>
  1736. </BlackberryCurvefs>
  1737. <BlackberryCurvews>
  1738. <label>Blackberry Curve Widescreen</label>
  1739. - <params>-f mp4 -vcodec mpeg4 -b 400k -r 24 -s 320x180 -aspect 16:9 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
  1740. + <params>-f mp4 -vcodec mpeg4 -b:v 400k -r 24 -s 320x180 -aspect 16:9 -acodec libfaac -ar 22050 -ac 2 -ab 48kb</params>
  1741. <extension>mp4</extension>
  1742. <category>Blackberry</category>
  1743. </BlackberryCurvews>
  1744. <lgchocolate>
  1745. <label>LG Chocolate</label>
  1746. - <params>-f mp4 -vf scale=240:192 -r 11.988 -b 192k -ab 56k -vcodec libxvid -acodec libfaac</params>
  1747. + <params>-f mp4 -s 240x192 -r 11.988 -b:v 192k -ab 56k -vcodec libxvid -acodec libfaac</params>
  1748. <extension>mp4</extension>
  1749. <category>LG</category>
  1750. - <codecs>mp4,libxvid,libfaac</codecs>
  1751. + <codecs>mpeg4,aac</codecs>
  1752. </lgchocolate>
  1753. <blackberrymp3>
  1754. <label>Blackberry Music</label>
  1755. @@ -456,44 +456,44 @@
  1756. </blackberrymp3>
  1757. <blackberryws>
  1758. <label>Blackberry Video Widescreen</label>
  1759. - <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>
  1760. + <params>-f mp4 -r 24 -vcodec libx264 -s 320x180 -aspect 16:9 -b:v 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
  1761. <extension>mp4</extension>
  1762. <category>Blackberry</category>
  1763. - <codecs>libx264,libfaac</codecs>
  1764. + <codecs>h264,aac</codecs>
  1765. </blackberryws>
  1766. <blackberryfs>
  1767. <label>Blackberry Video Fullscreen</label>
  1768. - <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>
  1769. + <params>-f mp4 -r 24 -vcodec libx264 -s 240x180 -aspect 4:3 -b:v 400k -acodec libfaac -ar 44100 -ab 80k -ac 2</params>
  1770. <extension>mp4</extension>
  1771. <category>Blackberry</category>
  1772. - <codecs>libx264,libfaac</codecs>
  1773. + <codecs>h264,aac</codecs>
  1774. </blackberryfs>
  1775. <flvweb50>
  1776. <label>Flash: Video (flv) for Web use. 448x336, 50 kb/s</label>
  1777. - <params>-vcodec flv -ar 22050 -r 24 -b 50k -s 448x336 -acodec libmp3lame</params>
  1778. + <params>-vcodec flv -ar 22050 -r 24 -b:v 50k -s 448x336 -acodec libmp3lame</params>
  1779. <extension>flv</extension>
  1780. <category>Websites</category>
  1781. - <codecs>flv,libmp3lame</codecs>
  1782. + <codecs>flv,mp3</codecs>
  1783. </flvweb50>
  1784. <flvweb150>
  1785. <label>Flash: Video (flv) for Web use. 448x336, 150 kb/s</label>
  1786. - <params>-vcodec flv -ar 22050 -r 24 -b 150k -s 448x336 -acodec libmp3lame</params>
  1787. + <params>-vcodec flv -ar 22050 -r 24 -b:v 150k -s 448x336 -acodec libmp3lame</params>
  1788. <extension>flv</extension>
  1789. <category>Websites</category>
  1790. - <codecs>flv,libmp3lame</codecs>
  1791. + <codecs>flv,mp3</codecs>
  1792. </flvweb150>
  1793. <flvweb350>
  1794. <label>Flash: Video (flv) for Web use. 448x336, 350 kb/s</label>
  1795. - <params>-vcodec flv -ar 22050 -r 24 -b 350k -s 448x336 -acodec libmp3lame</params>
  1796. + <params>-vcodec flv -ar 22050 -r 24 -b:v 350k -s 448x336 -acodec libmp3lame</params>
  1797. <extension>flv</extension>
  1798. <category>Websites</category>
  1799. - <codecs>flv,libmp3lame</codecs>
  1800. + <codecs>flv,mp3</codecs>
  1801. </flvweb350> <x264HQPSP169robertswain>
  1802. <label>PSP Widescreen</label>
  1803. - <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>
  1804. + <params>-f mp4 -vcodec libx264 -s 480x272 -aspect 16:9 -b:v 1250k -acodec libfaac -ab 128k -ar 48000 -ac 2</params>
  1805. <extension>mp4</extension>
  1806. <category>PSP</category>
  1807. - <codecs>libx264,libfaac</codecs>
  1808. + <codecs>h264,aac</codecs>
  1809. <WebmLargeFull>
  1810. <label>WebM Video for HTML5 Full Screen - 640x480</label>
  1811. <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>
  1812. @@ -525,101 +525,101 @@
  1813. </x264HQPSP169robertswain>
  1814. <iPodiTunesSmallCRF21FS>
  1815. <label>iPod Small Fullscreen</label>
  1816. - <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>
  1817. + <params>-r 29.97 -vcodec libx264 -bt 256k -s 320x240 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
  1818. <extension>m4v</extension>
  1819. <category>iPod-iTunes</category>
  1820. - <codecs>libx264,libfaac</codecs>
  1821. + <codecs>h264,aac</codecs>
  1822. </iPodiTunesSmallCRF21FS>
  1823. <iPodiTunesSmallCRF21WS>
  1824. <label>iPod Small WideScreen</label>
  1825. - <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>
  1826. + <params>-r 29.97 -vcodec libx264 -bt 256k -s 320x176 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
  1827. <extension>m4v</extension>
  1828. <category>iPod-iTunes</category>
  1829. - <codecs>libx264,libfaac</codecs>
  1830. + <codecs>h264,aac</codecs>
  1831. </iPodiTunesSmallCRF21WS>
  1832. <iPodiTunesSmallCRF21WSAna>
  1833. <label>iPod Small WideScreen Anamorphic</label>
  1834. - <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>
  1835. + <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>
  1836. <extension>m4v</extension>
  1837. <category>iPod-iTunes</category>
  1838. - <codecs>libx264,libfaac</codecs>
  1839. + <codecs>h264,aac</codecs>
  1840. </iPodiTunesSmallCRF21WSAna>
  1841. <iPodiTunesSmallCRF21WSLBFix>
  1842. <label>iPod Small Converted to WideScreen</label>
  1843. - <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>
  1844. + <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>
  1845. <extension>m4v</extension>
  1846. <category>iPod-iTunes</category>
  1847. - <codecs>libx264,libfaac</codecs>
  1848. + <codecs>h264,aac</codecs>
  1849. </iPodiTunesSmallCRF21WSLBFix>
  1850. <iPodiTunesTVOutCRF21FS>
  1851. <label>iPod TV Out Fullscreen</label>
  1852. - <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>
  1853. + <params>-r 29.97 -vcodec libx264 -bt 256k -s 512x384 -aspect 4:3 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
  1854. <extension>m4v</extension>
  1855. <category>iPod-iTunes</category>
  1856. - <codecs>libx264,libfaac</codecs>
  1857. + <codecs>h264,aac</codecs>
  1858. </iPodiTunesTVOutCRF21FS>
  1859. <iPodiTunesTVOutCRF21WS>
  1860. <label>iPod TV Out Widescreen</label>
  1861. - <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>
  1862. + <params>-r 29.97 -vcodec libx264 -bt 256k -s 624x352 -aspect 16:9 -acodec libfaac -ab 112k -ar 48000 -ac 2</params>
  1863. <extension>m4v</extension>
  1864. <category>iPod-iTunes</category>
  1865. - <codecs>libx264,libfaac</codecs>
  1866. + <codecs>h264,aac</codecs>
  1867. </iPodiTunesTVOutCRF21WS>
  1868. <iPodiTunesTVOutCRF21WSAna>
  1869. <label>iPod TV Out Widescreen Anamorphic</label>
  1870. - <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>
  1871. + <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>
  1872. <extension>m4v</extension>
  1873. <category>iPod-iTunes</category>
  1874. - <codecs>libx264,libfaac</codecs>
  1875. + <codecs>h264,aac</codecs>
  1876. </iPodiTunesTVOutCRF21WSAna>
  1877. <iPodiTunesTVOutCRF21WSLBFix>
  1878. <label>iPod TV Out Converted to Widescreen</label>
  1879. - <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>
  1880. + <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>
  1881. <extension>m4v</extension>
  1882. <category>iPod-iTunes</category>
  1883. - <codecs>libx264,libfaac</codecs>
  1884. + <codecs>h264,aac</codecs>
  1885. </iPodiTunesTVOutCRF21WSLBFix>
  1886. <ogg1>
  1887. <label>OGG</label>
  1888. - <params>-acodec vorbis -aq 60 -vn</params>
  1889. - <extension>OGG</extension>
  1890. + <params>-acodec libvorbis -aq 60 -vn</params>
  1891. + <extension>ogg</extension>
  1892. <category>Audio</category>
  1893. - <codecs>vorbis</codecs>
  1894. + <codecs>ogg</codecs>
  1895. </ogg1>
  1896. <wmv4powerpoint>
  1897. <label>Power Point</label>
  1898. - <params>-vcodec wmv2 -acodec wmav2 -aspect 4:3 -b 500k -ab 32k -ac 1 -ar 22050 -s 320x240</params>
  1899. + <params>-vcodec wmv2 -acodec wmav2 -aspect 4:3 -b:v 500k -ab 32k -ac 1 -ar 22050 -s 320x240</params>
  1900. <extension>wmv</extension>
  1901. <category>Microsoft</category>
  1902. <codecs>wmv2,wmav2</codecs>
  1903. </wmv4powerpoint>
  1904. <wmv2zune>
  1905. <label>Zune</label>
  1906. - <params>-vcodec wmv2 -acodec wmav2 -b 640k -ab 128k -r 23.97 -s 320x240</params>
  1907. + <params>-vcodec wmv2 -acodec wmav2 -b:v 640k -ab 128k -r 23.97 -s 320x240</params>
  1908. <extension>wmv</extension>
  1909. <category>Microsoft</category>
  1910. <codecs>wmv2,wmav2</codecs>
  1911. </wmv2zune>
  1912. <wmv2broadband>
  1913. <label>WMV for Web Use</label>
  1914. - <params>-vcodec wmv2 -acodec wmav2 -b 640k -ab 128k -r 29.97 -s 320x240</params>
  1915. + <params>-vcodec wmv2 -acodec wmav2 -b:v 640k -ab 128k -r 29.97 -s 320x240</params>
  1916. <extension>wmv</extension>
  1917. <category>Microsoft</category>
  1918. <codecs>wmv2,wmav2</codecs>
  1919. </wmv2broadband>
  1920. <ps3720p>
  1921. <label>PS3 720p Widescreen</label>
  1922. - <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>
  1923. + <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>
  1924. <extension>mp4</extension>
  1925. <category>PS3</category>
  1926. - <codecs>libx264,libfaac</codecs>
  1927. + <codecs>h264,aac</codecs>
  1928. </ps3720p>
  1929. <ps3720pfs>
  1930. <label>PS3 720p Fullscreen</label>
  1931. - <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>
  1932. + <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>
  1933. <extension>mp4</extension>
  1934. <category>PS3</category>
  1935. - <codecs>libx264,libfaac</codecs>
  1936. + <codecs>h264,aac</codecs>
  1937. </ps3720pfs>
  1938. <image1sec>
  1939. <label>Extract JPEG images, one every 1 second</label>
  1940. @@ -674,36 +674,49 @@
  1941. <params>-s 480x320 -vcodec mpeg4 -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
  1942. <extension>mp4</extension>
  1943. <category>Mobile Phones</category>
  1944. - <codecs>mpeg4,libfaac</codecs>
  1945. + <codecs>mpeg4,aac</codecs>
  1946. </android1>
  1947. <android2>
  1948. <label>Google Android compatible video. Video bitrate: 480 kb/s</label>
  1949. - <params>-s 480x320 -vcodec mpeg4 -b 480k -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
  1950. + <params>-s 480x320 -vcodec mpeg4 -b:v 480k -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2</params>
  1951. <extension>mp4</extension>
  1952. <category>Mobile Phones</category>
  1953. - <codecs>mpeg4,libfaac</codecs>
  1954. + <codecs>mpeg4,aac</codecs>
  1955. </android2>
  1956. - <iphone1>
  1957. + <iphone1>
  1958. <label>Iphone</label>
  1959. - <params>-f mp4 -s 432x320 -aspect 432:320 -acodec aac -async
  1960. - 4800 -dts_delta_threshold 1 -vcodec xvid -qscale 7 </params>
  1961. + <params>-f mp4 -s 432x324 -aspect 4:3 -acodec libfaac -async 4800 -dts_delta_threshold 1 -vcodec libxvid -q:v 7</params>
  1962. <extension>mp4</extension>
  1963. <category>Mobile Phones</category>
  1964. - <codecs>xvid,aac,mp4</codecs>
  1965. + <codecs>mpeg4,aac</codecs>
  1966. </iphone1>
  1967. + <nphone1>
  1968. + <label>Asha</label>
  1969. + <params>-f 3gp -vf crop=4/3*in_h:in_h -s 320x240 -aspect 4:3 -acodec libfaac -ar 44100 -vcodec mpeg4 -q:v 7</params>
  1970. + <extension>3gp</extension>
  1971. + <category>Mobile Phones</category>
  1972. + <codecs>mpeg4,aac</codecs>
  1973. + </nphone1>
  1974. + <nphone2>
  1975. + <label>Asha 2Pass</label>
  1976. + <params>-f 3gp -vf crop=4/3*in_h:in_h -s 320x240 -aspect 4:3 -acodec libfaac -ab 64k -ar 44100 -vcodec mpeg4 -b:v 400k</params>
  1977. + <extension>3gp</extension>
  1978. + <category>Mobile Phones</category>
  1979. + <codecs>mpeg4,aac</codecs>
  1980. + </nphone2>
  1981. <CowoniAudio7AVIbeta1>
  1982. <label>Cowon iAudio 7 AVI beta 1</label>
  1983. - <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>
  1984. + <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>
  1985. <extension>avi</extension>
  1986. <category>Portable Media Players</category>
  1987. - <codecs>libxvid,libmp3lame</codecs>
  1988. + <codecs>mpeg4,mp3</codecs>
  1989. </CowoniAudio7AVIbeta1>
  1990. <CowoniAudio7AVIbeta2>
  1991. <label>Cowon iAudio 7 AVI beta 2</label>
  1992. - <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>
  1993. + <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>
  1994. <extension>avi</extension>
  1995. <category>Portable Media Players</category>
  1996. - <codecs>libxvid,libmp3lame</codecs>
  1997. + <codecs>mpeg4,mp3</codecs>
  1998. </CowoniAudio7AVIbeta2>
  1999. diff -3ur a/share/sinthgunt.glade b/share/sinthgunt.glade
  2000. --- a/share/sinthgunt.glade 2013-02-14 23:15:54.000000000 +0400
  2001. +++ b/share/sinthgunt.glade 2017-02-20 16:38:40.000000000 +0300
  2002. @@ -45,20 +45,6 @@
  2003. </child>
  2004. </widget>
  2005. </child>
  2006. - <child>
  2007. - <widget class="GtkImageMenuItem" id="menuopenyoutube">
  2008. - <property name="visible">True</property>
  2009. - <property name="label" translatable="yes">_Online video</property>
  2010. - <property name="use_underline">True</property>
  2011. - <signal name="activate" handler="on_menuopenyoutube_activate"/>
  2012. - <child internal-child="image">
  2013. - <widget class="GtkImage" id="menu-item-image2">
  2014. - <property name="visible">True</property>
  2015. - <property name="stock">gtk-network</property>
  2016. - </widget>
  2017. - </child>
  2018. - </widget>
  2019. - </child>
  2020. </widget>
  2021. </child>
  2022. </widget>
  2023. @@ -229,17 +215,6 @@
  2024. </widget>
  2025. <packing>
  2026. <property name="homogeneous">True</property>
  2027. - </packing>
  2028. - </child>
  2029. - <child>
  2030. - <widget class="GtkToolButton" id="toolbaropenyoutube">
  2031. - <property name="visible">True</property>
  2032. - <property name="label" translatable="yes">Open online video</property>
  2033. - <property name="stock_id">gtk-network</property>
  2034. - <signal name="clicked" handler="on_toolbaropenyoutube_clicked"/>
  2035. - </widget>
  2036. - <packing>
  2037. - <property name="homogeneous">True</property>
  2038. </packing>
  2039. </child>
  2040. <child>
  2041. diff -3ur a/sinthgunt b/sinthgunt
  2042. --- a/sinthgunt 2010-11-14 15:02:41.000000000 +0300
  2043. +++ b/sinthgunt 2017-02-20 16:38:40.000000000 +0300
  2044. @@ -1,4 +1,5 @@
  2045. #!/usr/bin/python
  2046. +# -*- coding: utf-8 -*-
  2047. """
  2048. sinthgunt wrapper script.