Official Documentation published on Lumiera website
Find a file
Ichthyostega 68460d4900 Library: a subtle fix to iterator value-type deduction
After some investigation, I seem to understand the problem better now.
This builds upon the Introduction of our `ValueTraits´ two years ago:

e176e54004

The root cause to these ongoing sporadic problems with type deduction
seems to be that we encounter a **clash of concepts**: What Lumiera calls
an »Iterator« is essentially different to the order of terms used by the STL.
In the STL, an iterator can be seen as an ''abstracted pointer'', and is
thus only meaningful in conjunction with a backing container. It is also
this backing STL container that provides the value-type definitions.

In Lumiera however, an ''Iterator is a promise to retrieve a sequence of evaluations''.
For that reason, the Iterator itself provides value-type definitions,
and the notion of "iterable" can largely be conflated with "Lumiera Iterator".

Now, the `lib::RangeIter` can act as a bridge between both usage patterns,
and thus it is possible to create a `RangeIter` both from a Lumiera Iterator
or from a STL container. (As an aside, this is a similar idea as promoted
by the "Range TS" in C++20 -- yet the Lumiera iterator concept is much more
abstract and allows evaluations like tree expansion and search algorithms,
which would be never possible with the STL based notion of iteration)...

Thus the value type binding in `RangeIter` is the only correct place
where to mitigate this ''clash of concepts:''
 * if the `IT` parameter is a Lumiera iterator, we need to retrieve
   the type bindings defined therein
 * otherwise, we can assume that `IT` is an STL iterator and thus
   essentially a pointer, and we must strip that pointer and work from there.
2026-03-25 21:07:26 +01:00
admin Merge branch 'rel/0.pre.04' into integration 2025-12-03 14:44:55 +01:00
data Merge branch 'rel/0.pre.04' into integration 2025-12-03 14:44:55 +01:00
doc BufferProvider: document the adapted structure in UML 2026-03-14 20:44:27 +01:00
po release prep: remove defunct autotools buildsystem 2013-10-29 03:47:50 +01:00
research Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
src Library: a subtle fix to iterator value-type deduction 2026-03-25 21:07:26 +01:00
target update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
tests BufferProvider: obvious convenience function 2026-03-24 23:48:13 +01:00
uml BufferProvider: document the adapted structure in UML 2026-03-14 20:44:27 +01:00
wiki Library: a subtle fix to iterator value-type deduction 2026-03-25 21:07:26 +01:00
.gitignore Doxygen: adjust ignores 2015-08-17 01:14:33 +02:00
AUTHORS Release: check and update licensing information 2025-11-26 00:57:25 +01:00
COPYING Release: check and update licensing information 2025-11-26 00:57:25 +01:00
DIR_INFO update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
LICENSE Release: check and update licensing information 2025-11-26 00:57:25 +01:00
NEWS Status: Release published -- now again in Development Phase 2025-12-11 05:11:55 +01:00
README DOC: normalise towards a single form of gitweb-URL 2026-02-15 23:02:52 +01:00
SConstruct Build: some further code clean-up and documentation 2025-11-27 18:21:22 +01:00

Lumiera -- the video NLE for Linux
==================================
Version: 0.pre.05~dev
:Date: 11/2025

*************************************************************
Lumiera is a non-linear video editing and compositing tool.
The Application will allow to edit footage using common
multimedia formats and audio/video stream codecs.

Lumiera features nondestructive editing, compositing tools,
a selection of effects plugins, processing in RGB, YUV and
RGB-float colour models and the ability to mix media with
differing sizes and framerates. Lumiera is especially well
suited for large and elaborate professional editing tasks
with lots of material, several scenes, nested sequences,
colour grading, 3D support, full fledged sound montage
and multiple edit versions prepared in parallel.

NOTE: as of 11/2025, Lumiera is in early development stage;
it is not usable yet. The above describes the Lumiera project
vision, the implementation of which will require many more years.

Visit https://Lumiera.org and join the mailing list
when interested in Lumiera planning and development.
****************************************************************


Lumiera pre-Alpha Versions
--------------------------

.This source tree doesn't contain a working video editing application yet.
Rather, it contains the framework and technology core of the envisioned
Application »Lumiera«. What we attempt to build here is innovative,
and we must engage in a series of integration steps to search for
suitable pathways towards our envisaged architecture.

Since 2024, the integration of the Render Engine takes centre stage,
in an effort to establish a steady state realtime processing and
display pipeline, still relying on generated video data rather
than using a library to read and playback a video file.

- https://Lumiera.org/documentation/design/governance/integration.html[Integration steps]
- See also https://issues.lumiera.org/roadmap[Project roadmap]




Build Requirements
------------------

For building Lumiera, you'll need:

 * C++23 compiler GCC >=14 (Clang fails atm)
 * Git Version management system
 * https://www.scons.org/[SCons build system]
 * https://www.boost.org/[Boost libraries]
 * https://github.com/bplaum/gavl[GAVL library]
 * https://www.alsa-project.org/[ALSA (libasound2-dev)]
 * https://nobug.pipapo.org/[NoBug library]
 * https://gtkmm.gnome.org/en/[gtkmm]
 * https://cgit.freedesktop.org/xorg/lib/libXv[libXv]
 * https://wiki.gnome.org/Projects/LibRsvg[lib rSVG]
 * https://git.lumiera.org/gitweb?p=debian/gdl;a=summary[lib GDL]
 * https://git.lumiera.org/gitweb?p=debian/gdlmm;a=summary[GDL-mm bindings]

Further information:

 * Online documentation at https://Lumiera.org/download.html[Build and install].
 * Documentation is also available in-tree in 'doc/user/tutorials/building.txt'
 * Source code can be retrieved with `git clone git://git.lumiera.org/LUMIERA`



Debian Package
--------------
Hermann Vosseler (aka Ichthyo) maintains a *Debian* packaging of the source tree

- the package definition can be pulled from `git://git.lumiera.org/debian/lumiera/`
- the package can be built by `git-buildpackage`