1 # audio codec dialogs for the BiaMovE application
8 class FAACDialog (tkSimpleDialog
.Dialog
):
9 """ FAAC audio codec options dialog"""
12 self
.result
= "-faacopts "
13 if self
.bitrateorqualityflag
.get() == "bitrateflag":
14 self
.result
+= "br=" + self
.bitrate
.get()
16 self
.result
+= "quality=" + self
.quality
.get()
17 self
.result
+= ":object=" + self
.objecttype
.get().split()[0] + ":mpeg=" + self
.mpegversion
.get()
19 def body (self
, master
):
20 Tkinter
.Label (master
, text
="FAAC audio encoding options (simplified)", fg
="darkblue").grid (column
=0, row
=0, columnspan
=2)
22 self
.bitrateorqualityflag
= Tkinter
.StringVar ()
23 self
.bitrateorqualityflag
.set ("bitrateflag")
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)
28 Tkinter
.Label (master
, text
="Bitrate").grid (column
=0, row
=2)
30 self
.bitrate
= Tkinter
.StringVar ()
32 Tkinter
.Spinbox (master
, textvariable
=self
.bitrate
, from_
=0, to
=1024).grid (column
=1, row
=2)
34 Tkinter
.Label (master
, text
="Quality (1 to 1000)").grid (column
=0, row
=3)
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)
40 Tkinter
.Label (master
, text
="Object type complexity").grid (column
=0, row
=4)
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)
46 Tkinter
.Label (master
, text
="MPEG version").grid (column
=0, row
=5)
48 self
.mpegversion
= Tkinter
.StringVar ()
49 self
.mpegversion
.set ("4")
50 Tkinter
.OptionMenu (master
, self
.mpegversion
, "2", "4").grid (column
=1, row
=5)
52 class TwolameDialog (tkSimpleDialog
.Dialog
):
53 """ Twolame audio codec options dialog"""
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()
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)
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)
70 Tkinter
.Label (master
, text
="Bitrate (min rate for VBR) (32 to 384)").grid (column
=0, row
=2)
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)
76 Tkinter
.Label (master
, text
="Max bitrate (VBR only) (32 to 384)").grid (column
=0, row
=3)
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)
82 Tkinter
.Label (master
, text
="Mode").grid (column
=0, row
=4)
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)
88 class LAMEDialog (tkSimpleDialog
.Dialog
):
89 """LAME Audio codec options dialog"""
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())
96 self
.result
+= self
.bitratemethod
.get() + ":br=" + str(self
.bitrate
.get())
98 self
.result
+= ":vol=" + str(self
.audiogain
.get())
100 if (self
.audiomode
.get() != "(auto)"):
101 self
.result
+= ":mode=" + self
.audiomode
.get().split()[0]
103 def body (self
, master
):
104 Tkinter
.Label (master
, text
="LAME audio encoding options (simplified)", fg
="darkblue").grid (column
=0, row
=0, columnspan
=3)
106 self
.bitratemethod
= Tkinter
.StringVar ()
107 self
.bitratemethod
.set ("abr")
109 bitratetypes
= [ ("cbr", "Constant bitrate"), ("vbr", "Variable bitrate"), ("abr", "Average bitrate") ]
111 for val
, txt
in bitratetypes
:
112 Tkinter
.Radiobutton (master
, variable
=self
.bitratemethod
, text
=txt
, value
=val
).grid (column
=i
, row
=1)
115 Tkinter
.Label (master
, text
="Variable bitrate options", fg
="darkblue").grid (column
=0, row
=2, columnspan
=3, pady
=10)
117 Tkinter
.Label (master
, text
="VBR Method").grid (column
=0, row
=3)
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)
123 Tkinter
.Label (master
, text
="VBR Quality (0-highest 9-lowest)").grid (column
=0, row
=4)
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)
129 Tkinter
.Label (master
, text
="Constant/average bitrate options", fg
="darkblue").grid (column
=0, row
=5, columnspan
=3, pady
=10)
131 Tkinter
.Label (master
, text
="Bitrate (0 to 1024)").grid (column
=0, row
=6)
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)
137 Tkinter
.Label (master
, text
="General options", fg
="darkblue").grid (column
=0, row
=7, columnspan
=3, pady
=10)
139 Tkinter
.Label (master
, text
="Audio input gain (0 to 10)").grid (column
=0, row
=8)
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)
145 Tkinter
.Label (master
, text
="Mode").grid (column
=0, row
=9)
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)
151 class LAVCAudioDialog (tkSimpleDialog
.Dialog
):
152 """LAVC Video codec options dialog"""
154 self
.result
= "-lavcopts acodec=" + self
.audiocodecopt
.get().split ()[0] + ":abitrate=" + str (self
.audiobitrate
.get())
156 def body (self
, master
):
157 Tkinter
.Label (master
, text
="LAVC audio codec options (simplified)", fg
="darkblue").grid (column
=0, row
=0, columnspan
=2)
159 Tkinter
.Label (master
, text
="Audio codec to use").grid (column
=0, row
=1)
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)
165 Tkinter
.Label (master
, text
="Audio bitrate").grid (column
=0, row
=2)
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)