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
|
This is gavl, a common support library for other packages of the gmerlin project.
It is developed in Linux (PC and Raspberry Pi 4).
Porting it to non-Linux platforms might cause major headaches. Since it's a
one-man project, I gave up on not using the great Linux/glibc/gcc features only
because other OSes (which I never use) don't have them.
Read the file INSTALL for detailed installation instructions.
The original purpose was to provide data structures and routines for handling
uncompressed audio- and video data. Over the years it became a central
repository for code, which is shared by the gmerlin package and the
gmerlin-avdecoder library. It's main purpose is to make the gmerlin-avdecoder
library independent from the (huge) gmerlin package.
In the future, more stuff might get moved from libgmerlin to libgavl.
Below is (probably incomplete) list of contained modules:
- Handling of uncompressed audio and video data (gavl.h)
- Handling of compressed audio and video data (compression.h)
- Handling of A/V data stored in special ways for hardware acceleration (hw*.h)
- Connectors (source and sink) for compressed and uncompressed A/V data. They
usually work in zero-copy mode but can also do implicit A/V conversions when
necessary (connectors.h)
- Polymorphic data containers with high-level types like arrays and dictionaries.
These are used throughout the whole gmerlin project for non A/V data like
metadata or configuration data (value.h).
Libgmerlin contains serializations for XML and JSON so complex data structures
can be saved to or loaded from files in one function call.
- Generic socket support code (gavlsocket.h)
- An http-client with support for:
* Non-blocking I/O for background downloading without a separate thread
* Redirection
* https (via gnutls)
* Seeking
(httpclient.h)
- An experimental A/V container format for internal usage, currently unused and
probably not functional (gavf/gavf.h)
- A message structure used throughout the whole gmerlin project for
communication, both inside the applications and between them.
libgmerlin contains a serialization for JSON and a message queue for robust
inter-thread communication.
- Logging support (log.h)
- Lots of utility functions (util.h)
|