<commit_before>Welcome to MADAM
================

MADAM is a digital asset management library. It aims to facilitate the handling
of image, audio, and video files by helping out with several tasks:

-   **Organization:** MADAM helps you to organize media data by customizable
    backends to read and store media files. Once the files are stored, the
    backend can be queried based on the metadata that is present in the media
    files (e.g. XMP, Exif, …) or based on derived properties such as file size
    or the duration of a sound file.

-   **Processing:** MADAM has a very extensible processing architecture.
    With the various operators offered by MADAM images, for example, can be
    optimized for display on mobile devices by resizing them, converting them
    to a different file format, or sharpening them.

If you want to get started immediately, have a look at the :doc:`quickstart`
tutorial.


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
<commit_msg>Documentation: Added section about file format support.<commit_after>Welcome to MADAM
================

MADAM is a digital asset management library. It aims to facilitate the handling
of image, audio, and video files by helping out with several tasks:

-   **Organization:** MADAM helps you to organize media data by customizable
    backends to read and store media files. Once the files are stored, the
    backend can be queried based on the metadata that is present in the media
    files (e.g. XMP, Exif, …) or based on derived properties such as file size
    or the duration of a sound file.

-   **Processing:** MADAM has a very extensible processing architecture.
    With the various operators offered by MADAM images, for example, can be
    optimized for display on mobile devices by resizing them, converting them
    to a different file format, or sharpening them.

If you want to get started immediately, have a look at the :doc:`quickstart`
tutorial.


File format support
===================

MADAM supports a wide range of file formats for video, image, and audio data.
This is achieved by using several external open source libraries. `Pillow`_
and `exiv2`_ (for metadata) are used to read, process, or write image files.
`FFmpeg`_ is used to read, process, or write audio and video files.

The support of file formats heavily depends on the configuration of your local
system. The formats shown in the following list should be available on most
configurations. However, it represents only a fraction of the formats supported
by the underlying libraries.

Audio formats:
    -   MP3
    -   OGG
    -   WAV / RIFF WAVE

Image formats:
    -   PNG
    -   JPEG / JFIF
    -   GIF

Video formats:
    -   AVI
    -   Matroska (MKV), WebM
    -   MPEG2 transport stream
    -   OGG
    -   Quicktime, MPEG4

Vector graphics:
    -   SVG

Adding new file formats
-----------------------
The libraries used by MADAM are abstracted by so called *processors*. There is
a distinction between regular processors and metadata processors. For example,
to read and write images there is a :class:`madam.image.PillowProcessor`,
which also provides functionality to modify an image. To extract Exif metadata
there is a :class:`madam.exiv2.Exiv2MetadataProcessor`.

Adding support for a new format often just means adding a mapping of the
library format name to a MIME type to one of the existing processors. If you
want to integrate a new library or tool into MADAM, a new
:class:`madam.core.Processor` or :class:`madam.core.MetadataProcessor` will
have to be implemented.


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`


.. _FFmpeg: https://ffmpeg.org/
.. _Pillow: https://python-pillow.org/
.. _exiv2: http://www.exiv2.org/

{'fraction_non_alphanumeric': 0.08669301712779974, 'fraction_numerical': 0.002108036890645586, 'mean_word_length': 3.629268292682927, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7005679', 'n_tokens_mistral': 1039, 'n_tokens_neox': 1016, 'n_words': 525}