]> code.delx.au - transcoding/commitdiff
Improved av sync stuff
authorJames Bunton <jamesbunton@fastmail.fm>
Sat, 14 Aug 2010 03:42:33 +0000 (13:42 +1000)
committerJames Bunton <jamesbunton@fastmail.fm>
Sat, 14 Aug 2010 03:42:33 +0000 (13:42 +1000)
encode.py

index ca27aaede3e8313d8157638c2dfc1d6e4c80bb48..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):
@@ -329,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")
@@ -336,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")