Porting to libav v11
[platform/upstream/lightmediascanner.git] / README
1                          LIGHT MEDIA SCANNER
2                          ===================
3
4 Lightweight media scanner meant to be used in not-so-powerful devices,
5 like embedded systems or old machines.
6
7 Provides an optimized way to recursively scan directories, handling
8 the parser in a child process, avoiding breaks of the main process
9 when parsers break (quite common with such bad libs and tags). One can
10 opt to use the single process version, but be aware that if something
11 bad happens during parsing, your application will suffer.
12
13 Parsers are plugins in the form of shared objects, so it's easy to add
14 new without having to recompile the scanner.
15
16 The scanner will use SQLite3 to store file-mtime association, avoiding
17 parsing files that are already up-to-date. This SQLite connection and
18 the file id within the master table 'files' are handled to plugins for
19 relationship with other tables.
20
21
22 DAEMON
23 ~~~~~~
24
25 LMS provides `lightmediascannerd', a D-Bus daemon that uses the library
26 and provides a common use case in a centralized way. It will scan
27 directories based on some categories (defaults to FreeDesktop.Org/XDG
28 directories specification, but can be manually specified in the
29 command line), manages a DataBase WriteLock (remember SQLite3 will
30 produce annoying 'database is locked' errors if writes are done by one
31 process while another is using it) and information of database changes
32 through properties.
33
34 Service Information:
35  * Well Known Name: org.lightmediascanner
36  * Path: /org/lightmediascanner/Scanner1
37  * Interfaces: org.lightmediascanner.Scanner1, org.freedesktop.DBus.Properties,
38    org.freedesktop.DBus.Introspectable
39
40 There is a tool `lightmediascannerctl' to print server status, monitor
41 properties (useful to see WriteLocked, IsScanning and UpdateID),
42 request write lock or request scan.
43
44 Both tools are written using glib and it's gio/gdbus, so they depend
45 on these libraries during both compile and runtime.
46
47 NOTE:
48
49    If you're installing to custom directories (~/usr, /opt, etc) make
50    sure the service file is installed in a directory known to
51    dbus-daemon, usually /usr/share/dbus-1/services or
52    ~/.local/share/dbus-1/services. Example:
53
54       ./configure \
55           --prefix=$HOME/lms \
56           --enable-daemon \
57           --with-dbus-services=$HOME/.local/share/dbus-1/services