Something went wrong. Try again.
🎥 Command line media player
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657-- This script cycles between deinterlacing, pullup (inverse-- telecine), and both filters off. It uses the "deinterlace" property-- so that a hardware deinterlacer will be used if available.---- It overrides the default deinterlace toggle keybinding "D"-- (shift+d), so that rather than merely cycling the "deinterlace" property-- between on and off, it adds a "pullup" step to the cycle.---- It provides OSD feedback as to the actual state of the two filters-- after each cycle step/keypress.---- Note: if hardware decoding is enabled, pullup filter will likely-- fail to insert.---- TODO: It might make sense to use hardware assisted vdpaupp=pullup,-- if available, but I don't have hardware to test it. Patch welcome.
local script_name = mp.get_script_name()local pullup_label = string.format("%s-pullup", script_name)
local function pullup_on() for _, vf in pairs(mp.get_property_native('vf')) do if vf['label'] == pullup_label then return "yes" end end return "no"end
local function do_cycle() if pullup_on() == "yes" then -- if pullup is on remove it mp.command(string.format("vf remove @%s:pullup", pullup_label)) return elseif mp.get_property("deinterlace") == "yes" then -- if deinterlace is on, turn it off and insert pullup filter mp.set_property("deinterlace", "no") mp.command(string.format("vf add @%s:pullup", pullup_label)) return else -- if neither is on, turn on deinterlace mp.set_property("deinterlace", "yes") return endend
local function cycle_deinterlace_pullup_handler() do_cycle() -- independently determine current state and give user feedback mp.osd_message(string.format("deinterlace: %s\n".. "pullup: %s", mp.get_property("deinterlace"), pullup_on()))end
mp.add_key_binding("D", "cycle-deinterlace-pullup", cycle_deinterlace_pullup_handler)