File: README.txt

package info (click to toggle)
vlc 3.0.23-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 208,020 kB
  • sloc: ansic: 443,448; cpp: 111,223; objc: 36,399; sh: 6,737; makefile: 6,627; javascript: 4,902; xml: 1,611; asm: 1,355; yacc: 644; python: 321; lex: 88; perl: 77; sed: 16
file content (71 lines) | stat: -rw-r--r-- 2,359 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
## Instructions to code your own VLC Lua services discovery script.

See lua/README.txt for generic documentation about Lua usage in VLC.

Examples: See fmc.lua, frenchtv.lua

## API
VLC Lua SD modules should define two functions:
  * descriptor(): returns a table with information about the module.
    The table has the following members:
      .title: the name of the SD
      .capabilities: A list of your SD's capabilities. Only the
        following flags are supported yet:
        * 'search' : Does your SD handle search himself

    Example:
    function descriptor()
      return { title = "My SD's title", capabilities={"search"}}
    end

  * main(): will be called when the SD is started. It should use VLC's SD API
    described in lua/README.txt do add the items found.

  * search(query_string): Will be called with a string to search for
    services/medias matching that string.


User defined modules stored in the share/lua/modules/ directory are
available. Read the 'Lazy initialization' section

Available VLC specific Lua modules: input, msg, net, object, sd,
strings, variables, stream, gettext, xml. See lua/README.txt.

## Lazy Initialization

SD Lua scripts are actually ran in two different contexts/interpreters. One of
them is the one that will call your main() and search() functions. The other one
is a lighter one that will only fetch your description(). Due to threading
issues and to reduce implementation complexity (NDLR: i guess), the
description() interpreter doesn't load/expose VLC's API nor add
share/lua/modules to the lua load path (these modules are using vlc API anyway).
This has some implications to the way you need to load modules.

This means you cannot make a global/top-level require for the module you use but
instead use lazily load them from the main() and/or search() functions. Here's
an example implementation:

-------------------------------------------------------------------------------
lazily_loaded = false
dkjson        = nil

function lazy_load()
  if lazily_loaded then return nil end
  dkjson = require("dkjson")
  lazily_loaded = true
end

function descriptor()
  return { title = "..." }
end

function main()
  lazy_load()
  -- Do stuff here
end

function search(query)
  lazy_load()
  -- Do stuff here
end
-------------------------------------------------------------------------------