]> code.delx.au - transcoding/blobdiff - encode.py
Improved av sync stuff
[transcoding] / encode.py
index 42c15b146d42f64fc9a2804ab17341f7b7410bc4..73e06a48b6f34e1726723f8859bbe4fc7ed9f6a9 100755 (executable)
--- a/encode.py
+++ b/encode.py
@@ -159,29 +159,45 @@ class Mencoder(Command):
                if self.opts.copyac3:
                        self.profile.acodec = "copyac3"
                        self.profile.aopts = None
-
+               self.check_options()
+
+       def check_options(self):
+               o = self.opts
+               if o.detelecine and o.ofps:
+                       raise FatalException("Cannot use --detelecine with --ofps")
+               if o.deinterlace and o.detelecine:
+                       raise FatalException("Cannot use --detelecine with --deinterlace")
+       
        def insert_options(self, cmd):
-               def try_opt(opt, var):
+               o = self.opts
+               def do_opt(opt, var):
                        if var is not None:
                                cmd.append(opt)
-                               cmd.append(var)
-               if self.opts.deinterlace:
-                       cmd += ["-vf-add", "pp=lb"]
-               if self.opts.detelecine:
-                       self.opts.ofps = "24000/1001"
+                               cmd.append(str(var))
+
+               if o.copyac3:
+                       o.noskip = True
+               if o.deinterlace:
+                       cmd += ["-vf-add", "yadif"]
+               if o.detelecine:
+                       o.ofps = "24000/1001"
                        cmd += ["-vf-add", "pullup,softskip"]
-               if self.opts.copyac3:
-                       cmd += ["-noskip", "-mc", "0"]
-               try_opt("-fps", self.opts.ifps)
-               try_opt("-ofps", self.opts.ofps)
-               try_opt("-ss", self.opts.startpos)
-               try_opt("-endpos", self.opts.endpos)
-               try_opt("-dvd-device", self.opts.dvd)
-               try_opt("-chapter", self.opts.chapter)
-               try_opt("-aid", self.opts.audioid)
-               try_opt("-sid", self.opts.subtitleid)
-               try_opt("-vf-add", self.opts.vfilters)
-               try_opt("-af-add", self.opts.afilters)
+               if o.noskip:
+                       cmd += ["-noskip"]
+               if o.skipkb:
+                       cmd += ["-sb", str(o.skipkb * 1024)]
+
+               do_opt("-mc", o.mc)
+               do_opt("-fps", o.ifps)
+               do_opt("-ofps", o.ofps)
+               do_opt("-ss", o.startpos)
+               do_opt("-endpos", o.endpos)
+               do_opt("-dvd-device", o.dvd)
+               do_opt("-chapter", o.chapter)
+               do_opt("-aid", o.audioid)
+               do_opt("-sid", o.subtitleid)
+               do_opt("-vf-add", o.vfilters)
+               do_opt("-af-add", o.afilters)
                cmd += ["-vf-add", "harddup"]
 
        def subst_values(self, cmd, vpass):
@@ -198,11 +214,7 @@ class Mencoder(Command):
 
                acodec = p.acodec
                if acodec == "copyac3":
-                       if n == 1:
-                               acodec = "copy"
-                       else:
-                               # Hack to stop x264 crashing
-                               acodec = "mp3lame"
+                       acodec = "copy"
 
                cmd = []
                cmd += ["mencoder", self.opts.input]
@@ -333,6 +345,8 @@ def parse_args():
        parser.add_option("--deinterlace", action="store_true", dest="deinterlace")
        parser.add_option("--detelecine", action="store_true", dest="detelecine")
        parser.add_option("--copyac3", action="store_true", dest="copyac3")
+       parser.add_option("--mc", action="store", dest="mc", type="int")
+       parser.add_option("--noskip", action="store_true", dest="noskip")
        parser.add_option("--vfilters", action="store", dest="vfilters")
        parser.add_option("--afilters", action="store", dest="afilters")
        parser.add_option("--vbitrate", action="store", dest="vbitrate", type="int")
@@ -340,6 +354,7 @@ def parse_args():
        parser.add_option("--chapter", action="store", dest="chapter")
        parser.add_option("--ifps", action="store", dest="ifps")
        parser.add_option("--ofps", action="store", dest="ofps")
+       parser.add_option("--skipkb", action="store", dest="skipkb", type="int")
        parser.add_option("--startpos", action="store", dest="startpos")
        parser.add_option("--endpos", action="store", dest="endpos")
        parser.add_option("--audioid", action="store", dest="audioid")