Skip to content

Commit

Permalink
Allows to choose between using or not hyperthreading
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergio Costas committed Mar 10, 2012
1 parent 20f10d0 commit 0eacee1
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 27 deletions.
33 changes: 21 additions & 12 deletions devede.py
Expand Up @@ -215,11 +215,18 @@ def get_number(line):
return int(line[pos+1:])

def get_cores():

""" Returns the number of cores available in the system """

try:
import multiprocessing
hyper=multiprocessing.cpu_count()
except:
hyper=1

if (sys.platform=="win32") or (sys.platform=="win64"):
logical_cores = win32api.GetSystemInfo()[5] #Logical Cores
return logical_cores
return (logical_cores,logical_cores)

failed=False
try:
Expand All @@ -230,17 +237,14 @@ def get_cores():

if failed:
# If can't read /proc/cpuinfo, try to use the multiprocessing module
try:
import multiprocessing
return multiprocessing.cpu_count()
except:
pass
return 1 # if we can't open /PROC/CPUINFO, return only one CPU (just in case)

return (hyper,hyper) # if we can't open /PROC/CPUINFO, return only one CPU (just in case)

siblings=1 # default values
cpu_cores=1 # for siblings and cpu cores
notfirst=False
ncores=0
nvirtcores=0
while(True):
line=proc.readline()

Expand All @@ -258,15 +262,18 @@ def get_cores():

if line[:9]=="processor":
notfirst=True
nvirtcores+=1
elif (line[:8]=="siblings"):
siblings=get_number(line)
elif (line[:9]=="cpu cores"):
cpu_cores=get_number(line)

if (nvirtcores==0):
nvirtcores=1
if(ncores<=1.0):
return 1
return (1,nvirtcores)
else:
return int(ncores)
return (int(ncores),nvirtcores)

global_vars["PAL"]=True
global_vars["disctocreate"]=""
Expand All @@ -286,7 +293,9 @@ def get_cores():
global_vars["sub_language"]="EN (ENGLISH)"
global_vars["with_menu"]=True
global_vars["AC3_fix"]=False
global_vars["cores"]=get_cores()
(a,b)=get_cores()
global_vars["cores"]=a
global_vars["hypercores"]=b
global_vars["use_ffmpeg"]=True
global_vars["warning_ffmpeg"]=False
global_vars["shutdown_after_disc"]=False
Expand All @@ -297,7 +306,7 @@ def get_cores():
global_vars["menu_right_margin"]=0.1
#global_vars[""]=""

print "Cores: "+str(global_vars["cores"])
print "Cores: "+str(global_vars["cores"])+" Virtual cores: "+str(global_vars["hypercores"])

if font_path[-1]!=os.sep:
font_path+=os.sep
Expand Down
15 changes: 10 additions & 5 deletions devede_convert.py
Expand Up @@ -479,9 +479,14 @@ def time_callback(self):

action=self.queue[self.current_action]

if (self.global_vars["multicore"]!=1) and (self.global_vars["hyperthreading"]==False):
cores=self.global_vars["hypercores"]
else:
cores=self.global_vars["cores"]

if action[0]=="M1":
self.runner=action[1]
self.runner.create_menu1(action[2],action[3],self.global_vars["multicore"])
self.runner.create_menu1(action[2],action[3],cores)
return True

if (action[0]=='C') or (action[0]=='C1') or (action[0]=='C2'):
Expand All @@ -493,18 +498,18 @@ def time_callback(self):
encpass = int(action[0][1])
print "Segundos "+str(self.seconds)
if (self.global_vars["use_ffmpeg"]):
self.runner=devede_ffmpeg_convert.video_converter_ffmpeg(self.global_vars,self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,self.global_vars["multicore"],self.seconds, encpass,self.global_vars["AC3_fix"])
self.runner=devede_ffmpeg_convert.video_converter_ffmpeg(self.global_vars,self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,cores,self.seconds, encpass,self.global_vars["AC3_fix"])
else:
self.runner=devede_video_convert.video_converter(self.global_vars,self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,self.global_vars["multicore"],self.seconds, encpass,self.global_vars["AC3_fix"])
self.runner=devede_video_convert.video_converter(self.global_vars,self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,cores,self.seconds, encpass,self.global_vars["AC3_fix"])
return True

if action[0]=="C2":
title=action[1]
chapter=action[2]
if (self.global_vars["use_ffmpeg"]):
self.runner=devede_ffmpeg_convert.video_converter_ffmpeg(self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,self.global_vars["multicore"],self.seconds, 2,self.global_vars["AC3_fix"])
self.runner=devede_ffmpeg_convert.video_converter_ffmpeg(self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,cores,self.seconds, 2,self.global_vars["AC3_fix"])
else:
self.runner=devede_video_convert.video_converter(self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,self.global_vars["multicore"],self.seconds, 2,self.global_vars["AC3_fix"])
self.runner=devede_video_convert.video_converter(self.structure[title][chapter+1],self.filename,self.filefolder,self.partial,self.label,self.global_vars["disctocreate"],title+1,chapter+1,cores,self.seconds, 2,self.global_vars["AC3_fix"])
return True

if action[0]=="S":
Expand Down
9 changes: 3 additions & 6 deletions devede_ffmpeg_convert.py
Expand Up @@ -443,14 +443,11 @@ def __init__(self,global_vars,videofile,filename,filefolder,progresbar,proglabel

# Currently Mencoder supports up to 8 threads
if isvob==False:
if threads>8:
nthreads=8
else:
nthreads=threads
threads

if nthreads>1:
if threads>1:
command_var.append("-threads")
command_var.append(str(nthreads))
command_var.append(str(threads))

command_var.append("-trellis")
if videofile["trellis"]:
Expand Down
10 changes: 10 additions & 0 deletions devede_other.py
Expand Up @@ -422,6 +422,7 @@ def load_config(global_vars):
home=get_home_directory()
global_vars["PAL"]=True
global_vars["multicore"]=1 # it shouldn't use multicore by default
global_vars["hyperthreading"]=True # by default, use hyperthreading

# TODO change to allow a windows temp directory

Expand Down Expand Up @@ -465,6 +466,11 @@ def load_config(global_vars):
global_vars["multicore"]=1
else:
global_vars["multicore"]=global_vars["cores"]
if linea[:15]=="hyperthreading:":
if linea[15:]=="1":
global_vars["hyperthreading"]=True
else:
global_vars["hyperthreading"]=False
if linea[:13]=="final_folder:":
global_vars["finalfolder"]=linea[13:]
if linea[:13]=="sub_language:":
Expand Down Expand Up @@ -518,6 +524,10 @@ def save_config(global_vars):
archivo.write("video_format:ntsc\n")
archivo.write("temp_folder:"+global_vars["temp_folder"]+"\n")
archivo.write("multicore:"+str(global_vars["multicore"])+"\n")
if global_vars["hyperthreading"]:
archivo.write("hyperthreading:1\n")
else:
archivo.write("hyperthreading:0\n")
if global_vars["finalfolder"]!="":
archivo.write("final_folder:"+str(global_vars["finalfolder"])+"\n")
archivo.write("sub_language:"+str(global_vars["sub_language"])+"\n")
Expand Down
18 changes: 15 additions & 3 deletions devede_settings.py
Expand Up @@ -35,6 +35,11 @@ def on_toggled_cb(self,w):
self.ac3_fix.set_sensitive(False)
else:
self.ac3_fix.set_sensitive(True)

if (self.multicore.get_active()):
self.hyper.set_sensitive(True)
else:
self.hyper.set_sensitive(False)

def __init__(self,gladefile,structure,global_vars):

Expand All @@ -49,12 +54,17 @@ def __init__(self,gladefile,structure,global_vars):
w=self.tree.get_object("erase_files")
w.set_active(self.global_vars["erase_files"])

w=self.tree.get_object("multicore")
self.hyper=self.tree.get_object("hyperthreading")
self.multicore=self.tree.get_object("multicore")
if (self.global_vars["multicore"]==1):
w.set_active(False)
self.multicore.set_active(False)
self.hyper.set_active(False)
self.hyper.set_sensitive(False)
else:
w.set_active(True)
self.multicore.set_active(True)
self.global_vars["multicore"]=self.global_vars["cores"]
self.hyper.set_sensitive(True)
self.hyper.set_active(self.global_vars["hyperthreading"])

self.ac3_fix=self.tree.get_object("AC3_fix")
self.ac3_fix.set_active(self.global_vars["AC3_fix"])
Expand Down Expand Up @@ -82,8 +92,10 @@ def __init__(self,gladefile,structure,global_vars):
w=self.tree.get_object("multicore")
if w.get_active():
self.global_vars["multicore"]=self.global_vars["cores"]
self.global_vars["hyperthreading"]=self.hyper.get_active()
else:
self.global_vars["multicore"]=1
self.global_vars["hyperthreading"]=False

self.global_vars["use_ffmpeg"]=self.use_ffmpeg.get_active()

Expand Down
41 changes: 40 additions & 1 deletion interface/settings.ui
Expand Up @@ -103,13 +103,52 @@
<property name="use_action_appearance">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_toggled_cb" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label3">
<property name="width_request">20</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="hyperthreading">
<property name="label" translatable="yes">Don't use hyperthreading</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="use_ffmpeg">
<property name="label" translatable="yes">Use FFMPEG instead of Mencoder</property>
Expand All @@ -123,7 +162,7 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
</object>
Expand Down

0 comments on commit 0eacee1

Please sign in to comment.