Removed the confirmation dialog on encode
[biamove.git] / audiocodecdialogs.py
1 # audio codec dialogs for the BiaMovE application
2
3 import Tkinter
4 import tkFileDialog
5 import tkSimpleDialog
6 import tkMessageBox
7
8 class FAACDialog (tkSimpleDialog.Dialog):
9 """ FAAC audio codec options dialog"""
10
11 def apply (self):
12 self.result = "-faacopts "
13 if self.bitrateorqualityflag.get() == "bitrateflag":
14 self.result += "br=" + self.bitrate.get()
15 else:
16 self.result += "quality=" + self.quality.get()
17 self.result += ":object=" + self.objecttype.get().split()[0] + ":mpeg=" + self.mpegversion.get()
18
19 def body (self, master):
20 Tkinter.Label (master, text="FAAC audio encoding options (simplified)", fg="darkblue").grid (column=0, row=0, columnspan=2)
21
22 self.bitrateorqualityflag = Tkinter.StringVar ()
23 self.bitrateorqualityflag.set ("bitrateflag")
24
25 Tkinter.Radiobutton (master, variable=self.bitrateorqualityflag, text="Use bitrate", value="bitrateflag").grid (column=0, row=1)
26 Tkinter.Radiobutton (master, variable=self.bitrateorqualityflag, text="Use quality", value="qualityflag").grid (column=1, row=1)
27
28 Tkinter.Label (master, text="Bitrate").grid (column=0, row=2)
29
30 self.bitrate = Tkinter.StringVar ()
31 self.bitrate.set (64)
32 Tkinter.Spinbox (master, textvariable=self.bitrate, from_=0, to=1024).grid (column=1, row=2)
33
34 Tkinter.Label (master, text="Quality (1 to 1000)").grid (column=0, row=3)
35
36 self.quality = Tkinter.StringVar ()
37 self.quality.set (500)
38 Tkinter.Spinbox (master, textvariable=self.quality, from_=1, to=1000).grid (column=1, row=3)
39
40 Tkinter.Label (master, text="Object type complexity").grid (column=0, row=4)
41
42 self.objecttype = Tkinter.StringVar ()
43 self.objecttype.set ("1 MAIN (default)")
44 Tkinter.OptionMenu (master, self.objecttype, "1 MAIN (default)", "2 LOW", "3 SSR", "4 LTP (extremely slow)").grid (column=1, row=4)
45
46 Tkinter.Label (master, text="MPEG version").grid (column=0, row=5)
47
48 self.mpegversion = Tkinter.StringVar ()
49 self.mpegversion.set ("4")
50 Tkinter.OptionMenu (master, self.mpegversion, "2", "4").grid (column=1, row=5)
51
52 class TwolameDialog (tkSimpleDialog.Dialog):
53 """ Twolame audio codec options dialog"""
54
55 def apply (self):
56 self.result = "-twolameopts "
57 self.result += "br=" + self.bitrate.get()
58 if self.variability.get() != "0":
59 self.result += ":vbr=" + self.variability.get() + ":maxvbr=" + self.maxbitrate.get()
60 self.result += ":mode=" + self.mode.get()
61
62 def body(self, master):
63 Tkinter.Label (master, text="Twolame audio encoding options (simplified)", fg="darkblue").grid (column=0, row=0, columnspan=2)
64 Tkinter.Label (master, text="Bitrate variability range (-50 to 50, 0 for CBR)").grid (column=0, row=1)
65
66 self.variability = Tkinter.StringVar ()
67 self.variability.set (0)
68 Tkinter.Spinbox (master, textvariable = self.variability, from_=-50, to=50).grid (column=1, row=1)
69
70 Tkinter.Label (master, text="Bitrate (min rate for VBR) (32 to 384)").grid (column=0, row=2)
71
72 self.bitrate = Tkinter.StringVar ()
73 self.bitrate.set (128)
74 Tkinter.Spinbox (master, textvariable = self.bitrate, from_=32, to=384).grid (column=1, row=2)
75
76 Tkinter.Label (master, text="Max bitrate (VBR only) (32 to 384)").grid (column=0, row=3)
77
78 self.maxbitrate = Tkinter.StringVar ()
79 self.maxbitrate.set (192)
80 Tkinter.Spinbox (master, textvariable = self.maxbitrate, from_=32, to=384).grid (column=1, row=3)
81
82 Tkinter.Label (master, text="Mode").grid (column=0, row=4)
83
84 self.mode = Tkinter.StringVar ()
85 self.mode.set ("stereo")
86 Tkinter.OptionMenu (master, self.mode, "stereo", "jstereo", "mono", "dual").grid (column=1, row=4)
87
88 class LAMEDialog (tkSimpleDialog.Dialog):
89 """LAME Audio codec options dialog"""
90 def apply (self):
91 self.result = "-lameopts "
92 if self.bitratemethod.get() == "vbr":
93 self.result += "vbr=" + self.vbrmethod.get().split()[0]
94 self.result += ":q=" + str (self.vbrquality.get())
95 else:
96 self.result += self.bitratemethod.get() + ":br=" + str(self.bitrate.get())
97
98 self.result += ":vol=" + str(self.audiogain.get())
99
100 if (self.audiomode.get() != "(auto)"):
101 self.result += ":mode=" + self.audiomode.get().split()[0]
102
103 def body (self, master):
104 Tkinter.Label (master, text="LAME audio encoding options (simplified)", fg="darkblue").grid (column=0, row=0, columnspan=3)
105
106 self.bitratemethod = Tkinter.StringVar ()
107 self.bitratemethod.set ("abr")
108
109 bitratetypes = [ ("cbr", "Constant bitrate"), ("vbr", "Variable bitrate"), ("abr", "Average bitrate") ]
110 i = 0
111 for val, txt in bitratetypes:
112 Tkinter.Radiobutton (master, variable=self.bitratemethod, text=txt, value=val).grid (column=i, row=1)
113 i += 1
114
115 Tkinter.Label (master, text="Variable bitrate options", fg="darkblue").grid (column=0, row=2, columnspan=3, pady=10)
116
117 Tkinter.Label (master, text="VBR Method").grid (column=0, row=3)
118
119 self.vbrmethod = Tkinter.StringVar ()
120 self.vbrmethod.set ("2 rh")
121 Tkinter.OptionMenu (master, self.vbrmethod, "0 cbr", "1 mt", "2 rh", "3 abr", "4 mtrh").grid (column=1, row=3)
122
123 Tkinter.Label (master, text="VBR Quality (0-highest 9-lowest)").grid (column=0, row=4)
124
125 self.vbrquality = Tkinter.StringVar ()
126 self.vbrquality.set (0)
127 Tkinter.Spinbox (master, textvariable=self.vbrquality, from_=0, to=9).grid (column=1, row=4)
128
129 Tkinter.Label (master, text="Constant/average bitrate options", fg="darkblue").grid (column=0, row=5, columnspan=3, pady=10)
130
131 Tkinter.Label (master, text="Bitrate (0 to 1024)").grid (column=0, row=6)
132
133 self.bitrate = Tkinter.StringVar ()
134 self.bitrate.set (128)
135 Tkinter.Spinbox (master, textvariable=self.bitrate, from_=0, to=1024).grid (column=1, row=6)
136
137 Tkinter.Label (master, text="General options", fg="darkblue").grid (column=0, row=7, columnspan=3, pady=10)
138
139 Tkinter.Label (master, text="Audio input gain (0 to 10)").grid (column=0, row=8)
140
141 self.audiogain = Tkinter.StringVar ()
142 self.audiogain. set (0)
143 Tkinter.Spinbox (master, textvariable = self.audiogain, from_=0, to=10).grid (column=1, row=8)
144
145 Tkinter.Label (master, text="Mode").grid (column=0, row=9)
146
147 self.audiomode = Tkinter.StringVar ()
148 self.audiomode.set ("(auto)")
149 Tkinter.OptionMenu (master, self.audiomode, "(auto)", "0 stereo", "1 joint-stereo", "2 dualchannel", "3 mono").grid (column=1, row=9)
150
151 class LAVCAudioDialog (tkSimpleDialog.Dialog):
152 """LAVC Video codec options dialog"""
153 def apply (self):
154 self.result = "-lavcopts acodec=" + self.audiocodecopt.get().split ()[0] + ":abitrate=" + str (self.audiobitrate.get())
155
156 def body (self, master):
157 Tkinter.Label (master, text="LAVC audio codec options (simplified)", fg="darkblue").grid (column=0, row=0, columnspan=2)
158
159 Tkinter.Label (master, text="Audio codec to use").grid (column=0, row=1)
160
161 self.audiocodecopt = Tkinter.StringVar ()
162 self.audiocodecopt.set ("mp2 MPEG-1 audio layer 2 (MP2)")
163 Tkinter.OptionMenu (master, self.audiocodecopt, "ac3 Dolby Digital (AC-3)", "adpcm_ima_qt Apple QuickTime", "adpcm_ima_wav Microsoft/IBM WAVE", "adpcm_ima_dk3 Duck DK3", "adpcm_ima_dk4 Duck DK4", "adpcm_ima_ws Westwood Studio", "adpcm_ima_smjpeg SDL Motion JPEG", "adpcm_ms Microsoft", "adpcm_4xm 4X Technologies", "adpcm_xa Phillips Yellow Book CD-ROM eXtended Architecture", "adpcm_ea Electronic Arts", "adpcm_ct Creative 16->4-bit", "adpcm_swf Adobe Shockwave Flash", "adpcm_yamaha Yamaha", "adpcm_sbpro_4 Creative VOC SoundBlaster Pro 8->4-bit", "adpcm_sbpro_3 Creative VOC SoundBlaster Pro 8->2.6-bit", "adpcm_sbpro_2 Creative VOC SoundBlaster Pro 8->2-bit", "adpcm_thp Nintendo GameCube FMV THP", "adpcm_adx Sega/CRI ADX", "flac Free Lossless Audio Codec (FLAC)", "g726 G.726 ADPCM", "libamr_nb 3GPP Adaptive Multi-Rate (AMR) narrow-band", "libamr_wb 3GPP Adaptive Multi-Rate (AMR) wide-band", "libfaac Advanced Audio Coding (AAC) - using FAAC", "libgsm ETSI GSM 06.10 full rate", "libgsm_ms Microsoft GSM", "libmp3lame MPEG-1 audio layer 3 (MP3) - using LAME", "mp2 MPEG-1 audio layer 2 (MP2)", "roq_dpcm Id Software RoQ DPCM", "sonic experimental FFmpeg lossy codec", "sonicls experimental FFmpeg lossless codec", "vorbis Vorbis", "wmav1 Windows Media Audio v1", "wmav2 Windows Media Audio v2", "pcm_s32le signed 32-bit little-endian", "pcm_s32be signed 32-bit big-endian", "pcm_u32le unsigned 32-bit little-endian", "pcm_u32be unsigned 32-bit big-endian", "pcm_s24le signed 24-bit little-endian", "pcm_s24be signed 24-bit big-endian", "pcm_u24le unsigned 24-bit little-endian", "pcm_u24be unsigned 24-bit big-endian", "pcm_s16le signed 16-bit little-endian", "pcm_s16be signed 16-bit big-endian", "pcm_u16le unsigned 16-bit little-endian", "pcm_u16be unsigned 16-bit big-endian", "pcm_s8 signed 8-bit", "pcm_u8 unsigned 8-bit", "pcm_alaw G.711 A-LAW", "pcm_mulaw G.711 u-LAW", "pcm_s24daud signed 24-bit D-Cinema Audio format", "pcm_zork Activision Zork Nemesis").grid (column=1, row=1)
164
165 Tkinter.Label (master, text="Audio bitrate").grid (column=0, row=2)
166
167 self.audiobitrate = Tkinter.StringVar ()
168 self.audiobitrate.set (224)
169 Tkinter.Spinbox (master, textvariable=self.audiobitrate, from_=0, to=1024).grid (column=1, row=2)