common.lua
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. --[[ This code is public domain (since it really isn't very interesting) ]]--
  2. module("common",package.seeall)
  3. -- Iterate over a table in the keys' alphabetical order
  4. function pairs_sorted(t)
  5.     local s = {}
  6.     for k,_ in pairs(t) do table.insert(s,k) end
  7.     table.sort(s)
  8.     local i = 0
  9.     return function () i = i + 1; return s[i], t[s[i]] end
  10. end
  11. -- Return a function such as skip(foo)(a,b,c) = foo(b,c)
  12. function skip(foo)
  13.     return function(discard,...) return foo(...) end
  14. end
  15. -- Return a function such as setarg(foo,a)(b,c) = foo(a,b,c)
  16. function setarg(foo,a)
  17.     return function(...) return foo(a,...) end
  18. end
  19. -- Trigger a hotkey
  20. function hotkey(arg)
  21.     vlc.var.set( vlc.object.libvlc(), "key-pressed", vlc.config.get( arg ) )
  22. end
  23. -- Take a video snapshot
  24. function snapshot()
  25.     local vout = vlc.object.find(nil,"vout","anywhere")
  26.     if not vout then return end
  27.     vlc.var.set(vout,"video-snapshot",nil)
  28. end
  29. -- Naive (non recursive) table copy
  30. function table_copy(t)
  31.     c = {}
  32.     for i,v in pairs(t) do c[i]=v end
  33.     return c
  34. end
  35. -- strip leading and trailing spaces
  36. function strip(str)
  37.     return string.gsub(str, "^%s*(.-)%s*$", "%1")
  38. end
  39. -- print a table (recursively)
  40. function table_print(t,prefix)
  41.     local prefix = prefix or ""
  42.     for a,b in pairs_sorted(t) do
  43.         print(prefix..tostring(a),b)
  44.         if type(b)==type({}) then
  45.             table_print(b,prefix.."t")
  46.         end
  47.     end
  48. end
  49. -- print the list of callbacks registered in lua
  50. -- usefull for debug purposes
  51. function print_callbacks()
  52.     print "callbacks:"
  53.     table_print(vlc.callbacks)
  54. end 
  55. -- convert a duration (in seconds) to a string
  56. function durationtostring(duration)
  57.     return string.format("%02d:%02d:%02d",
  58.                          math.floor(duration/3600),
  59.                          math.floor(duration/60)%60,
  60.                          math.floor(duration%60))
  61. end
  62. -- realpath
  63. function realpath(path)
  64.     return string.gsub(string.gsub(string.gsub(string.gsub(path,"/%.%./[^/]+","/"),"/[^/]+/%.%./","/"),"/%./","/"),"//","/")
  65. end
  66. -- seek
  67. function seek(value)
  68.     local input = vlc.object.input()
  69.     if string.sub(value,#value)=="%" then
  70.         vlc.var.set(input,"position",tonumber(string.sub(value,1,#value-1))/100.)
  71.     else
  72.         vlc.var.set(input,"time",tonumber(value))
  73.     end
  74. end