clean-up: dismantle the low-level time handling library (see #1259)
Initially we assumed that »handling time« is largely a matter of computation. ''Time is just a value'' and can be treated with integral arithmetic, some modulus computations and pre-defined constants. This turned out to be a mistake. Anything related to time is intricate, and it is essential to distinguish different meanings of "times" - time values related to an internal computation framework have implementation-defined meaning and should be ''marked as opaque'' - temporal data can be ''mapped to a grid scale'' — an essential step for media processing, which however incurs information loss - externally relevant time specifications are represented symbolically, by translation into a ''Time Code'' Drawing from these insights, a framework for time handling has been established; building in part on the low-level function style base implementation. Exposing this base implementation as a C-library however is considered dangerous, as it may lure into ''ad hoc'' computations, which are a major source of inconsistencies and notorious defects in many media applications.
This commit is contained in:
parent
27089550d2
commit
a317593822
5 changed files with 120 additions and 276 deletions
105
src/lib/time.h
105
src/lib/time.h
|
|
@ -1,105 +0,0 @@
|
||||||
/*
|
|
||||||
time.h - Utilities for handling time
|
|
||||||
|
|
||||||
Copyright (C)
|
|
||||||
2008, Christian Thaeter <ct@pipapo.org>
|
|
||||||
2010, Stefan Kangas <skangas@skangas.se>
|
|
||||||
|
|
||||||
**Lumiera** is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by the
|
|
||||||
Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
option) any later version. See the file COPYING for further details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @file time.h
|
|
||||||
** Common functions for handling of time values.
|
|
||||||
** Working with time values in sexagesimal format, quantising time and converting
|
|
||||||
** to/from common timecode formats can be tricky to get right. Thus the goal is
|
|
||||||
** to concentrate the actual bits of math for these operations into a small number
|
|
||||||
** of library functions, which are easy to test thoroughly in isolation.
|
|
||||||
**
|
|
||||||
** Built on top of that, the actual time handling in the GUI and within the Lumiera
|
|
||||||
** session is mostly confined to use the opaque lib::time::Time wrapper objects.
|
|
||||||
** When time values actually need to be _quantised_ (aligned to a frame grid),
|
|
||||||
** this is expressed at the API through using the lib::time::QuTime type, which
|
|
||||||
** then in turn can be materialised into a number of _timecode formats_.
|
|
||||||
** These definitions ensure that whenever an actual quantisation (rounding)
|
|
||||||
** operation is performed, the link to the appropriate time grid is available,
|
|
||||||
** so that multiple output or rendering operations can use differing time origins
|
|
||||||
** and frame rates simultaneously on the same model.
|
|
||||||
**
|
|
||||||
** The Lumiera Vault Layer functions mostly operate on raw frame counts, which in
|
|
||||||
** this model are defined to be a special kind of timecode, and thus dependent on
|
|
||||||
** a preceding time quantisation.
|
|
||||||
**
|
|
||||||
** @deprecated 2025 this should not be a "simple" C library set aside from the Lumiera
|
|
||||||
** time handling framework, rather it should be clarified that these are
|
|
||||||
** implementation helpers and must not be used by any application code.
|
|
||||||
** It should be checked which of these functions actually need to be
|
|
||||||
** exposed through an interface header, since these are typically
|
|
||||||
** used to implement parts of the time handling framework.
|
|
||||||
**
|
|
||||||
** @see lib::time::Time
|
|
||||||
** @see timequant.hpp
|
|
||||||
** @see TimeValue_test
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LUMIERA_TIME_H
|
|
||||||
#define LUMIERA_TIME_H
|
|
||||||
|
|
||||||
#include <inttypes.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus /*=================== C++ facilities ===================== */
|
|
||||||
#include "lib/time/timevalue.hpp"
|
|
||||||
|
|
||||||
using lib::time::raw_time_64;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a fraction of seconds to Lumiera's internal opaque time scale.
|
|
||||||
* @param fractionalSeconds given as rational number
|
|
||||||
* @note inconsistent with Lumiera's general quantisation behaviour,
|
|
||||||
* here negative fractional micro-ticks are truncated towards zero.
|
|
||||||
* This was deemed irrelevant in practice.
|
|
||||||
*/
|
|
||||||
raw_time_64
|
|
||||||
lumiera_rational_to_time (lib::time::FSecs const& fractionalSeconds);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a frame count into Lumiera's internal time scale.
|
|
||||||
* based on a framerate given as rational number (e.g. NTSC)
|
|
||||||
* @note handles only positive frame counts and assumes the
|
|
||||||
* origin to be at zero.
|
|
||||||
*/
|
|
||||||
raw_time_64
|
|
||||||
lumiera_framecount_to_time (uint64_t frameCount, lib::time::FrameRate const& fps);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern "C" { /* ===================== C interface ======================== */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build a time value by summing up the given components.
|
|
||||||
* @param millis number of milliseconds
|
|
||||||
* @param secs number of seconds
|
|
||||||
* @param mins number of minutes
|
|
||||||
* @param hours number of hours
|
|
||||||
*/
|
|
||||||
raw_time_64
|
|
||||||
lumiera_build_time (long millis, uint secs, uint mins, uint hours);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}//extern "C"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
@ -21,9 +21,8 @@
|
||||||
** for the derived time entities (TimeVar, Offset, Duration, TimeSpan, FrameRate)
|
** for the derived time entities (TimeVar, Offset, Duration, TimeSpan, FrameRate)
|
||||||
** and for the basic time and frame rate conversion functions.
|
** and for the basic time and frame rate conversion functions.
|
||||||
**
|
**
|
||||||
** Client code includes either time.h (for basics and conversion functions)
|
** Client code includes either timevalue.hpp (for the time entities),
|
||||||
** or timevalue.hpp (for the time entities), timequant.hpp for grid aligned
|
** or timequant.hpp for grid aligned time values, or timecode.hpp.
|
||||||
** time values or timecode.hpp
|
|
||||||
**
|
**
|
||||||
** @see Time
|
** @see Time
|
||||||
** @see TimeValue
|
** @see TimeValue
|
||||||
|
|
@ -35,14 +34,12 @@
|
||||||
|
|
||||||
|
|
||||||
#include "lib/error.hpp"
|
#include "lib/error.hpp"
|
||||||
#include "lib/time.h"
|
|
||||||
#include "lib/time/timevalue.hpp"
|
|
||||||
#include "lib/rational.hpp"
|
#include "lib/rational.hpp"
|
||||||
#include "lib/util-quant.hpp"
|
#include "lib/time/timevalue.hpp"
|
||||||
#include "lib/format-string.hpp"
|
#include "lib/format-string.hpp"
|
||||||
|
#include "lib/util-quant.hpp"
|
||||||
#include "lib/util.hpp"
|
#include "lib/util.hpp"
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
@ -61,20 +58,18 @@ using boost::lexical_cast;
|
||||||
#undef MIN
|
#undef MIN
|
||||||
|
|
||||||
|
|
||||||
namespace error = lumiera::error;
|
|
||||||
|
|
||||||
|
|
||||||
namespace lib {
|
namespace lib {
|
||||||
namespace meta {
|
namespace meta {
|
||||||
extern const std::string FAILURE_INDICATOR;
|
extern const std::string FAILURE_INDICATOR;
|
||||||
}
|
}
|
||||||
namespace time {
|
namespace time {
|
||||||
|
|
||||||
|
namespace error = lumiera::error;
|
||||||
|
|
||||||
const raw_time_64 TimeValue::SCALE = 1'000'000;
|
const raw_time_64 TimeValue::SCALE = 1'000'000;
|
||||||
|
|
||||||
|
|
||||||
/** @note the allowed time range is explicitly limited to help overflow protection */
|
/** @note the allowed time range is explicitly limited to allow for overflow protection */
|
||||||
const Time Time::MAX ( TimeValue::buildRaw_(+std::numeric_limits<raw_time_64>::max() / 30) );
|
const Time Time::MAX ( TimeValue::buildRaw_(+std::numeric_limits<raw_time_64>::max() / 30) );
|
||||||
const Time Time::MIN ( TimeValue::buildRaw_(-_raw(Time::MAX) ) );
|
const Time Time::MIN ( TimeValue::buildRaw_(-_raw(Time::MAX) ) );
|
||||||
const Time Time::ZERO;
|
const Time Time::ZERO;
|
||||||
|
|
@ -84,16 +79,57 @@ namespace time {
|
||||||
|
|
||||||
const Offset Offset::ZERO (Time::ZERO);
|
const Offset Offset::ZERO (Time::ZERO);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace { // local definitions for the implementation....
|
||||||
|
|
||||||
|
/** scale factor _used locally within this implementation header_.
|
||||||
|
* TimeValue::SCALE (µ-ticks, i.e. 1e6) is the correct factor or dividend when using
|
||||||
|
* raw_time_64 for display on a scale with seconds. Since we want to use milliseconds,
|
||||||
|
* we need a factor of 1000 to get correct results. */
|
||||||
|
const raw_time_64 TIME_SCALE_MS (lib::time::TimeValue::SCALE / 1000);
|
||||||
|
|
||||||
|
|
||||||
const FSecs FSEC_MAX{std::numeric_limits<int64_t>::max() / lib::time::TimeValue::SCALE};
|
const FSecs FSEC_MAX{std::numeric_limits<int64_t>::max() / lib::time::TimeValue::SCALE};
|
||||||
|
|
||||||
Literal DIAGNOSTIC_FORMAT{"%s%01d:%02d:%02d.%03d"};
|
Literal DIAGNOSTIC_FORMAT{"%s%01d:%02d:%02d.%03d"};
|
||||||
|
|
||||||
|
|
||||||
/** scale factor _used locally within this implementation header_.
|
|
||||||
* TimeValue::SCALE (µ-ticks, i.e. 1e6) is the correct factor or dividend when using
|
/**
|
||||||
* raw_time_64 for display on a scale with seconds. Since we want to use milliseconds,
|
* Converts a fraction of seconds to Lumiera's internal opaque time scale.
|
||||||
* we need to multiply or divide by 1000 to get correct results. */
|
* @param fractionalSeconds given as rational number
|
||||||
#define TIME_SCALE_MS (lib::time::TimeValue::SCALE / 1000)
|
* @note inconsistent with Lumiera's general quantisation behaviour,
|
||||||
|
* here negative fractional micro-ticks are truncated towards zero.
|
||||||
|
* This was deemed irrelevant in practice.
|
||||||
|
* @todo 2022 this utility function could be factored out into a `FSecs` or `RSec` class /////////////////TICKET #1262
|
||||||
|
*/
|
||||||
|
raw_time_64
|
||||||
|
build_time_from (FSecs const& fractionalSeconds)
|
||||||
|
{
|
||||||
|
// avoid numeric wrap from values not representable as 64bit µ-ticks
|
||||||
|
if (abs(fractionalSeconds) > lib::time::FSEC_MAX)
|
||||||
|
return (fractionalSeconds < 0? -1:+1)
|
||||||
|
* std::numeric_limits<int64_t>::max();
|
||||||
|
|
||||||
|
return raw_time_64(util::reQuant (fractionalSeconds.numerator()
|
||||||
|
,fractionalSeconds.denominator()
|
||||||
|
,lib::time::TimeValue::SCALE
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
raw_time_64
|
||||||
|
build_time_from (long millis, uint secs, uint mins, uint hours)
|
||||||
|
{
|
||||||
|
raw_time_64 time = millis
|
||||||
|
+ 1000 * secs
|
||||||
|
+ 1000 * 60 * mins
|
||||||
|
+ 1000 * 60 * 60 * hours;
|
||||||
|
time *= TIME_SCALE_MS;
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
}//(End)local definitions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** convenience constructor to build an
|
/** convenience constructor to build an
|
||||||
|
|
@ -111,7 +147,7 @@ namespace time {
|
||||||
, uint mins
|
, uint mins
|
||||||
, uint hours
|
, uint hours
|
||||||
)
|
)
|
||||||
: TimeValue(lumiera_build_time (millis,secs,mins,hours))
|
: TimeValue(build_time_from (millis,secs,mins,hours))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -120,11 +156,11 @@ namespace time {
|
||||||
* An example would be to the time unit of a framerate.
|
* An example would be to the time unit of a framerate.
|
||||||
*/
|
*/
|
||||||
Time::Time (FSecs const& fractionalSeconds)
|
Time::Time (FSecs const& fractionalSeconds)
|
||||||
: TimeValue(lumiera_rational_to_time (fractionalSeconds))
|
: TimeValue(build_time_from (fractionalSeconds))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
Offset::Offset (FSecs const& delta_in_secs)
|
Offset::Offset (FSecs const& delta_in_secs)
|
||||||
: TimeValue{buildRaw_(symmetricLimit (lumiera_rational_to_time (delta_in_secs)
|
: TimeValue{buildRaw_(symmetricLimit (build_time_from (delta_in_secs)
|
||||||
,Duration::MAX))}
|
,Duration::MAX))}
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
@ -338,10 +374,21 @@ namespace time {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
raw_time_64
|
||||||
|
framecount_to_time (uint64_t frameCount, FrameRate const& fps)
|
||||||
|
{
|
||||||
|
// convert to 64bit
|
||||||
|
boost::rational<uint64_t> framerate (fps.numerator(), fps.denominator());
|
||||||
|
|
||||||
|
return rational_cast<raw_time_64> (lib::time::TimeValue::SCALE * frameCount / framerate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** offset by the given number of frames. */
|
/** offset by the given number of frames. */
|
||||||
Offset::Offset (FrameCnt count, FrameRate const& fps)
|
Offset::Offset (FrameCnt count, FrameRate const& fps)
|
||||||
: TimeValue{buildRaw_(
|
: TimeValue{buildRaw_(
|
||||||
count? (count<0? -1:+1) * lumiera_framecount_to_time (::abs(count), fps)
|
count? (count<0? -1:+1) * framecount_to_time (::abs(count), fps)
|
||||||
:_raw(Duration::NIL))}
|
:_raw(Duration::NIL))}
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
@ -361,6 +408,8 @@ namespace time {
|
||||||
|
|
||||||
}} // namespace lib::Time
|
}} // namespace lib::Time
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace util {
|
namespace util {
|
||||||
string
|
string
|
||||||
StringConv<lib::time::FSecs, void>::invoke (lib::time::FSecs val) noexcept
|
StringConv<lib::time::FSecs, void>::invoke (lib::time::FSecs val) noexcept
|
||||||
|
|
@ -369,100 +418,3 @@ namespace util {
|
||||||
}
|
}
|
||||||
} // namespace util
|
} // namespace util
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ===== implementation of the C API functions ===== */
|
|
||||||
|
|
||||||
|
|
||||||
/// @todo this utility function could be factored out into a `FSecs` or `RSec` class ///////////////////////TICKET #1262
|
|
||||||
raw_time_64
|
|
||||||
lumiera_rational_to_time (FSecs const& fractionalSeconds)
|
|
||||||
{
|
|
||||||
// avoid numeric wrap from values not representable as 64bit µ-ticks
|
|
||||||
if (abs(fractionalSeconds) > lib::time::FSEC_MAX)
|
|
||||||
return (fractionalSeconds < 0? -1:+1)
|
|
||||||
* std::numeric_limits<int64_t>::max();
|
|
||||||
|
|
||||||
return raw_time_64(util::reQuant (fractionalSeconds.numerator()
|
|
||||||
,fractionalSeconds.denominator()
|
|
||||||
,lib::time::TimeValue::SCALE
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_time_64
|
|
||||||
lumiera_framecount_to_time (uint64_t frameCount, FrameRate const& fps)
|
|
||||||
{
|
|
||||||
// convert to 64bit
|
|
||||||
boost::rational<uint64_t> framerate (fps.numerator(), fps.denominator());
|
|
||||||
|
|
||||||
return rational_cast<raw_time_64> (lib::time::TimeValue::SCALE * frameCount / framerate);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
raw_time_64
|
|
||||||
lumiera_build_time(long millis, uint secs, uint mins, uint hours)
|
|
||||||
{
|
|
||||||
raw_time_64 time = millis
|
|
||||||
+ 1000 * secs
|
|
||||||
+ 1000 * 60 * mins
|
|
||||||
+ 1000 * 60 * 60 * hours;
|
|
||||||
time *= TIME_SCALE_MS;
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_time_64
|
|
||||||
lumiera_build_time_fps (uint fps, uint frames, uint secs, uint mins, uint hours)
|
|
||||||
{
|
|
||||||
raw_time_64 time = 1000LL * frames/fps
|
|
||||||
+ 1000 * secs
|
|
||||||
+ 1000 * 60 * mins
|
|
||||||
+ 1000 * 60 * 60 * hours;
|
|
||||||
time *= TIME_SCALE_MS;
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lumiera_time_hours (raw_time_64 time)
|
|
||||||
{
|
|
||||||
return time / TIME_SCALE_MS / 1000 / 60 / 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lumiera_time_minutes (raw_time_64 time)
|
|
||||||
{
|
|
||||||
return (time / TIME_SCALE_MS / 1000 / 60) % 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lumiera_time_seconds (raw_time_64 time)
|
|
||||||
{
|
|
||||||
return (time / TIME_SCALE_MS / 1000) % 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lumiera_time_millis (raw_time_64 time)
|
|
||||||
{
|
|
||||||
return (time / TIME_SCALE_MS) % 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lumiera_time_frames (raw_time_64 time, uint fps)
|
|
||||||
{
|
|
||||||
REQUIRE (fps < uint(std::numeric_limits<int>::max()));
|
|
||||||
return floordiv<int> (lumiera_time_millis(time) * int(fps), TIME_SCALE_MS);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace lib {
|
|
||||||
namespace time { ////////////////////////////////////////////////////////////////////////////////////////////TICKET #1259 : move all calculation functions into a C++ namespace
|
|
||||||
|
|
||||||
|
|
||||||
}} // lib::time
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
#include "lib/time/timevalue.hpp"
|
#include "lib/time/timevalue.hpp"
|
||||||
#include "lib/time/timequant.hpp"
|
#include "lib/time/timequant.hpp"
|
||||||
#include "lib/time/formats.hpp"
|
#include "lib/time/formats.hpp"
|
||||||
#include "lib/time.h"
|
|
||||||
#include "lib/util.hpp"
|
#include "lib/util.hpp"
|
||||||
#include "lib/util-quant.hpp"
|
#include "lib/util-quant.hpp"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,9 @@
|
||||||
|
|
||||||
#include "lib/llist.h"
|
#include "lib/llist.h"
|
||||||
#include "lib/hash-value.h"
|
#include "lib/hash-value.h"
|
||||||
#include "lib/time.h"
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
typedef int64_t raw_time_64; ////////////////////////////////////////////////////////////////////////TICKET #1287 : rework Job representation -- and then turn this into a C++ Header
|
||||||
|
|
||||||
|
|
||||||
enum JobState
|
enum JobState
|
||||||
|
|
@ -189,6 +190,7 @@ typedef lumiera_jobDescriptor* LumieraJobDescriptor;
|
||||||
#ifdef __cplusplus /* ============== C++ Interface ================= */
|
#ifdef __cplusplus /* ============== C++ Interface ================= */
|
||||||
|
|
||||||
#include "lib/nocopy.hpp"
|
#include "lib/nocopy.hpp"
|
||||||
|
#include "lib/time/timevalue.hpp" ////////////////////////////////////////////////////////////////////////TICKET #1287 : rework Job representation -- and then turn this into a C++ Header
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162309,8 +162309,8 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1742249279746" ID="ID_1189167261" MODIFIED="1742249293729" TEXT="Vorsicht: Upgrade auf Version-2">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1742249279746" ID="ID_1189167261" MODIFIED="1742249293729" TEXT="Vorsicht: Upgrade auf Version-2">
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#d49f72" COLOR="#5e1744" CREATED="1742249294608" ID="ID_1683248748" MODIFIED="1742256553530" TEXT="ehrlich gesagt: könnte man in Frage stellen">
|
<node BACKGROUND_COLOR="#d49f72" COLOR="#5e1744" CREATED="1742249294608" ID="ID_1683248748" MODIFIED="1748489831128" TEXT="ehrlich gesagt: könnte man in Frage stellen">
|
||||||
<arrowlink COLOR="#a41b18" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="440;-36;" ID="Arrow_ID_608156847" STARTARROW="None" STARTINCLINATION="193;12;"/>
|
<arrowlink COLOR="#1857a4" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="440;-36;" ID="Arrow_ID_608156847" STARTARROW="None" STARTINCLINATION="193;12;"/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1742313412377" ID="ID_1229409179" MODIFIED="1742313437600" TEXT="libgavl-dev 2.0.0~svn6298-1+b3 : vorerst mal installiert"/>
|
<node COLOR="#435e98" CREATED="1742313412377" ID="ID_1229409179" MODIFIED="1742313437600" TEXT="libgavl-dev 2.0.0~svn6298-1+b3 : vorerst mal installiert"/>
|
||||||
|
|
@ -162713,7 +162713,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<font NAME="SansSerif" SIZE="10"/>
|
<font NAME="SansSerif" SIZE="10"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1747318813636" ID="ID_770178888" MODIFIED="1747347203040" TEXT="und die alte GTK-2 timeline">
|
<node COLOR="#338800" CREATED="1747318813636" FOLDED="true" ID="ID_770178888" MODIFIED="1747347203040" TEXT="und die alte GTK-2 timeline">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1747347206016" ID="ID_877133844" MODIFIED="1747358919513" TEXT="hab 2023 bereits den größten Teil weggeräumt">
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1747347206016" ID="ID_877133844" MODIFIED="1747358919513" TEXT="hab 2023 bereits den größten Teil weggeräumt">
|
||||||
<linktarget COLOR="#4b94c0" DESTINATION="ID_877133844" ENDARROW="Default" ENDINCLINATION="89;5;" ID="Arrow_ID_1014835150" SOURCE="ID_191158269" STARTARROW="None" STARTINCLINATION="89;60;"/>
|
<linktarget COLOR="#4b94c0" DESTINATION="ID_877133844" ENDARROW="Default" ENDINCLINATION="89;5;" ID="Arrow_ID_1014835150" SOURCE="ID_191158269" STARTARROW="None" STARTINCLINATION="89;60;"/>
|
||||||
|
|
@ -162745,7 +162745,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1747320207459" ID="ID_1787845536" MODIFIED="1747355564742" TEXT="nebenbei">
|
<node COLOR="#338800" CREATED="1747320207459" FOLDED="true" ID="ID_1787845536" MODIFIED="1748489867011" TEXT="nebenbei">
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
<node COLOR="#338800" CREATED="1747320211058" ID="ID_1715404862" MODIFIED="1747351629662" TEXT="stage/draw/cairo-util">
|
<node COLOR="#338800" CREATED="1747320211058" ID="ID_1715404862" MODIFIED="1747351629662" TEXT="stage/draw/cairo-util">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
|
|
@ -162801,10 +162801,10 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1742249461535" ID="ID_1554376708" MODIFIED="1747524255970" TEXT="Rolle der lib-Gavl überprüfen">
|
<node BACKGROUND_COLOR="#bfcad3" COLOR="#1a475d" CREATED="1742249461535" ID="ID_1554376708" MODIFIED="1748489820913" TEXT="Rolle der lib-Gavl überprüfen">
|
||||||
<linktarget COLOR="#a41b18" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="440;-36;" ID="Arrow_ID_608156847" SOURCE="ID_1683248748" STARTARROW="None" STARTINCLINATION="193;12;"/>
|
<linktarget COLOR="#1857a4" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="440;-36;" ID="Arrow_ID_608156847" SOURCE="ID_1683248748" STARTARROW="None" STARTINCLINATION="193;12;"/>
|
||||||
<linktarget COLOR="#4c3b8b" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="219;519;" ID="Arrow_ID_589652743" SOURCE="ID_219954631" STARTARROW="None" STARTINCLINATION="326;-188;"/>
|
<linktarget COLOR="#4c3b8b" DESTINATION="ID_1554376708" ENDARROW="Default" ENDINCLINATION="219;519;" ID="Arrow_ID_589652743" SOURCE="ID_219954631" STARTARROW="None" STARTINCLINATION="326;-188;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#95060e" CREATED="1742256560103" ID="ID_1579484179" MODIFIED="1747524214221" TEXT="so traurig es ist: Gavl ist nicht erste Wahl">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#95060e" CREATED="1742256560103" ID="ID_1579484179" MODIFIED="1747524214221" TEXT="so traurig es ist: Gavl ist nicht erste Wahl">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
|
|
@ -162820,16 +162820,15 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<arrowlink COLOR="#592f6e" DESTINATION="ID_450633851" ENDARROW="Default" ENDINCLINATION="338;12;" ID="Arrow_ID_637755539" STARTARROW="None" STARTINCLINATION="466;0;"/>
|
<arrowlink COLOR="#592f6e" DESTINATION="ID_450633851" ENDARROW="Default" ENDINCLINATION="338;12;" ID="Arrow_ID_637755539" STARTARROW="None" STARTINCLINATION="466;0;"/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1744719728307" ID="ID_1783840760" MODIFIED="1747524201441" TEXT="siehe steam/external/libgavl.hpp">
|
<node COLOR="#435e98" CREATED="1744719728307" ID="ID_1783840760" MODIFIED="1748489965153" TEXT="siehe steam/external/libgavl.hpp">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
wohl inzwischen nirgends mehr includiert
|
inzwischen nirgends mehr includiert — lasse diesen Header und die Library-Abhängigkeit dennoch vorerst bestehen — als Platzhalter (für eine »Domain-Ontology«)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
|
||||||
<node CREATED="1747489068132" ID="ID_491604266" MODIFIED="1747489074061" TEXT="wird derzeit überhaupt nicht verwendet"/>
|
<node CREATED="1747489068132" ID="ID_491604266" MODIFIED="1747489074061" TEXT="wird derzeit überhaupt nicht verwendet"/>
|
||||||
<node CREATED="1747489084369" ID="ID_1779252669" MODIFIED="1747489105751" TEXT="wohl auch gar nicht implementierbar"/>
|
<node CREATED="1747489084369" ID="ID_1779252669" MODIFIED="1747489105751" TEXT="wohl auch gar nicht implementierbar"/>
|
||||||
<node CREATED="1747489074724" ID="ID_663261791" MODIFIED="1747489124777" TEXT="ist eine bloße leere Hülle"/>
|
<node CREATED="1747489074724" ID="ID_663261791" MODIFIED="1747489124777" TEXT="ist eine bloße leere Hülle"/>
|
||||||
|
|
@ -162866,8 +162865,8 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1747489277561" ID="ID_1782395866" MODIFIED="1747489284084" TEXT="einzige Ausnahme: Time.cpp"/>
|
<node CREATED="1747489277561" ID="ID_1782395866" MODIFIED="1747489284084" TEXT="einzige Ausnahme: Time.cpp"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1747520420088" ID="ID_1585137684" MODIFIED="1747524248767" TEXT="C-Library für Time-Handling auflösen">
|
<node BACKGROUND_COLOR="#bcd0c6" COLOR="#338800" CREATED="1747520420088" ID="ID_1585137684" MODIFIED="1748490000277" TEXT="C-Library für Time-Handling auflösen">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1747520433501" ID="ID_1627011016" MODIFIED="1747520503864" TEXT="die ist mir schon lange ein »Dorn im Auge«">
|
<node CREATED="1747520433501" ID="ID_1627011016" MODIFIED="1747520503864" TEXT="die ist mir schon lange ein »Dorn im Auge«">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
|
|
@ -162917,9 +162916,10 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1748350712006" ID="ID_452116165" MODIFIED="1748350730212" TEXT="Analyse der Situation">
|
<node COLOR="#338800" CREATED="1748350712006" FOLDED="true" ID="ID_452116165" MODIFIED="1748489702107" TEXT="Analyse der Situation">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1748350733469" ID="ID_367890679" MODIFIED="1748350825691" TEXT="nahezu alle Funktionen werden verwendet">
|
<node COLOR="#435e98" CREATED="1748350733469" FOLDED="true" ID="ID_367890679" MODIFIED="1748489639423" TEXT="nahezu alle Funktionen werden verwendet">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
<node CREATED="1748351651943" ID="ID_1629068440" MODIFIED="1748351657948" TEXT="Time-Entities">
|
<node CREATED="1748351651943" ID="ID_1629068440" MODIFIED="1748351657948" TEXT="Time-Entities">
|
||||||
<node CREATED="1748351786463" ID="ID_367667761" MODIFIED="1748351793337" TEXT="lumiera_build_time">
|
<node CREATED="1748351786463" ID="ID_367667761" MODIFIED="1748351793337" TEXT="lumiera_build_time">
|
||||||
<icon BUILTIN="back"/>
|
<icon BUILTIN="back"/>
|
||||||
|
|
@ -162985,7 +162985,8 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<icon BUILTIN="back"/>
|
<icon BUILTIN="back"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748352902464" ID="ID_790522662" MODIFIED="1748352905396" TEXT="Probleme">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748352902464" ID="ID_790522662" MODIFIED="1748489650585" TEXT="Probleme">
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
<node CREATED="1748352906772" ID="ID_1144464670" MODIFIED="1748354044614" TEXT="die Dezimator-Funktionen">
|
<node CREATED="1748352906772" ID="ID_1144464670" MODIFIED="1748354044614" TEXT="die Dezimator-Funktionen">
|
||||||
<node CREATED="1748352940751" ID="ID_1822394695" MODIFIED="1748352961195" TEXT="werden benötigt zur Timecode-Implementierung"/>
|
<node CREATED="1748352940751" ID="ID_1822394695" MODIFIED="1748352961195" TEXT="werden benötigt zur Timecode-Implementierung"/>
|
||||||
<node CREATED="1748352961890" ID="ID_528108203" MODIFIED="1748352970368" TEXT="sind aber selber ein imliziter Timecode"/>
|
<node CREATED="1748352961890" ID="ID_528108203" MODIFIED="1748352970368" TEXT="sind aber selber ein imliziter Timecode"/>
|
||||||
|
|
@ -163042,7 +163043,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node CREATED="1748353843717" ID="ID_102195936" MODIFIED="1748353860097" TEXT="⟹ vorerst nur als Library-Funktionen zu dokumentieren"/>
|
<node CREATED="1748353843717" ID="ID_102195936" MODIFIED="1748353860097" TEXT="⟹ vorerst nur als Library-Funktionen zu dokumentieren"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748357125863" ID="ID_159998129" MODIFIED="1748357132330" TEXT="aktuelle Relevanz">
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#824835" CREATED="1748357125863" ID="ID_159998129" MODIFIED="1748489690131" TEXT="aktuelle Relevanz">
|
||||||
<node CREATED="1748357135126" ID="ID_1818420467" MODIFIED="1748357170741" TEXT="gebraucht wird">
|
<node CREATED="1748357135126" ID="ID_1818420467" MODIFIED="1748357170741" TEXT="gebraucht wird">
|
||||||
<node CREATED="1748357171918" ID="ID_469296373" MODIFIED="1748358669049" TEXT="eine Verifikation von Ergebnissen im Unit-Test">
|
<node CREATED="1748357171918" ID="ID_469296373" MODIFIED="1748358669049" TEXT="eine Verifikation von Ergebnissen im Unit-Test">
|
||||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_469296373" ENDARROW="Default" ENDINCLINATION="174;11;" ID="Arrow_ID_1443598664" SOURCE="ID_1839634922" STARTARROW="None" STARTINCLINATION="69;-91;"/>
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_469296373" ENDARROW="Default" ENDINCLINATION="174;11;" ID="Arrow_ID_1443598664" SOURCE="ID_1839634922" STARTARROW="None" STARTINCLINATION="69;-91;"/>
|
||||||
|
|
@ -163103,7 +163104,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1748358751369" ID="ID_920187834" MODIFIED="1748389559916" TEXT="Weg zur Auflösung">
|
<node COLOR="#435e98" CREATED="1748358751369" ID="ID_920187834" MODIFIED="1748489617798" TEXT="Weg zur Auflösung">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node COLOR="#338800" CREATED="1748358771454" ID="ID_810358375" MODIFIED="1748389566617" TEXT="alle Verwendungen der Komponenten-Accessoren beseitigen">
|
<node COLOR="#338800" CREATED="1748358771454" ID="ID_810358375" MODIFIED="1748389566617" TEXT="alle Verwendungen der Komponenten-Accessoren beseitigen">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
|
|
@ -163114,17 +163115,17 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node COLOR="#338800" CREATED="1748358817067" ID="ID_557771496" MODIFIED="1748389571906" TEXT="Dezimation in Komponenten stets direkt berechnen">
|
<node COLOR="#338800" CREATED="1748358817067" ID="ID_557771496" MODIFIED="1748389571906" TEXT="Dezimation in Komponenten stets direkt berechnen">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1748358907068" ID="ID_918217691" MODIFIED="1748389575707" TEXT="die restlichen Funktionen zur Implementierung">
|
<node COLOR="#338800" CREATED="1748358907068" ID="ID_918217691" MODIFIED="1748489616388" TEXT="die restlichen Funktionen zur Implementierung">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1748358931317" ID="ID_1847347457" MODIFIED="1748389574283" TEXT="Drop-Frame-Algo separat dokumentieren">
|
<node COLOR="#338800" CREATED="1748358931317" ID="ID_1847347457" MODIFIED="1748389574283" TEXT="Drop-Frame-Algo separat dokumentieren">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1748350717103" ID="ID_1477694076" MODIFIED="1748479104036" TEXT="Aufräumen">
|
<node COLOR="#338800" CREATED="1748350717103" ID="ID_1477694076" MODIFIED="1748489726550" TEXT="Aufräumen">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#5b280f" CREATED="1748362636897" ID="ID_793532606" MODIFIED="1748362658768" TEXT="man könnte versuchen, H:M:S fertig zu implementieren">
|
<node COLOR="#5b280f" CREATED="1748362636897" FOLDED="true" ID="ID_793532606" MODIFIED="1748489735949" TEXT="man könnte versuchen, H:M:S fertig zu implementieren">
|
||||||
<icon BUILTIN="stop-sign"/>
|
<icon BUILTIN="stop-sign"/>
|
||||||
<node CREATED="1748362660474" ID="ID_1457327168" MODIFIED="1748362804911" TEXT="das wäre aber »premature«">
|
<node CREATED="1748362660474" ID="ID_1457327168" MODIFIED="1748362804911" TEXT="das wäre aber »premature«">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
|
@ -163179,7 +163180,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748363166124" ID="ID_20271646" MODIFIED="1748388589043" TEXT="also: stattdessen rigoros mit Stubs arbeiten">
|
<node COLOR="#352754" CREATED="1748363166124" FOLDED="true" ID="ID_20271646" MODIFIED="1748489765992" TEXT="also: stattdessen rigoros mit Stubs arbeiten">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748363186304" ID="ID_1752179075" MODIFIED="1748363276225" TEXT="d.h. das Timecode-Widget ganz ersichtlich brechen">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748363186304" ID="ID_1752179075" MODIFIED="1748363276225" TEXT="d.h. das Timecode-Widget ganz ersichtlich brechen">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
|
@ -163205,7 +163206,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1748370446771" ID="ID_514685019" MODIFIED="1748388515380" TEXT="Drop-Frame-Berechnung dokumentieren">
|
<node COLOR="#338800" CREATED="1748370446771" FOLDED="true" ID="ID_514685019" MODIFIED="1748489708025" TEXT="Drop-Frame-Berechnung dokumentieren">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#435e98" CREATED="1748370471401" ID="ID_241597558" MODIFIED="1748383700953" TEXT="test-time.c ⟼ time/time-dropframe-test.cpp">
|
<node COLOR="#435e98" CREATED="1748370471401" ID="ID_241597558" MODIFIED="1748383700953" TEXT="test-time.c ⟼ time/time-dropframe-test.cpp">
|
||||||
<icon BUILTIN="list"/>
|
<icon BUILTIN="list"/>
|
||||||
|
|
@ -163228,7 +163229,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#174956" COLOR="#8dfd49" CREATED="1748388518698" ID="ID_1682762507" MODIFIED="1748388574315" STYLE="bubble" TEXT="umgezogener Test läuft GRÜN">
|
<node BACKGROUND_COLOR="#174956" COLOR="#8dfd49" CREATED="1748388518698" ID="ID_1682762507" MODIFIED="1748388574315" STYLE="bubble" TEXT="umgezogener Test läuft GRÜN">
|
||||||
<edge COLOR="#61fe5b" STYLE="bezier" WIDTH="thin"/>
|
<edge COLOR="#61fe5b" STYLE="bezier" WIDTH="thin"/>
|
||||||
<font NAME="SansSerif" SIZE="15"/>
|
<font NAME="SansSerif" SIZE="14"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#8b2f98" CREATED="1748388204363" ID="ID_926423450" MODIFIED="1748388454445" TEXT=" �� totmachen ��">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#8b2f98" CREATED="1748388204363" ID="ID_926423450" MODIFIED="1748388454445" TEXT=" �� totmachen ��">
|
||||||
<node COLOR="#435e98" CREATED="1748388215333" ID="ID_1531959638" MODIFIED="1748388508038" TEXT="test-time.c">
|
<node COLOR="#435e98" CREATED="1748388215333" ID="ID_1531959638" MODIFIED="1748388508038" TEXT="test-time.c">
|
||||||
|
|
@ -163249,9 +163250,10 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node COLOR="#435e98" CREATED="1748388278014" ID="ID_275417741" MODIFIED="1748388508019" TEXT="lumiera_tmpbuf_print_time (raw_time_64 time)"/>
|
<node COLOR="#435e98" CREATED="1748388278014" ID="ID_275417741" MODIFIED="1748388508019" TEXT="lumiera_tmpbuf_print_time (raw_time_64 time)"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1748436006749" ID="ID_439524098" MODIFIED="1748479104035" TEXT="verbleibende Funktionen verteilen">
|
<node COLOR="#338800" CREATED="1748436006749" ID="ID_439524098" MODIFIED="1748489728107" TEXT="verbleibende Funktionen verteilen">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1748436021050" ID="ID_1426888385" MODIFIED="1748436030803" TEXT="generische HIlfsfunktionen">
|
<node COLOR="#338800" CREATED="1748436021050" FOLDED="true" ID="ID_1426888385" MODIFIED="1748489730189" TEXT="generische HIlfsfunktionen">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1748436257559" ID="ID_1140529126" MODIFIED="1748436260804" TEXT="lumiera_rational_to_time">
|
<node CREATED="1748436257559" ID="ID_1140529126" MODIFIED="1748436260804" TEXT="lumiera_rational_to_time">
|
||||||
<node CREATED="1748436293884" ID="ID_534358506" MODIFIED="1748436301463" TEXT="technisch kniffelig">
|
<node CREATED="1748436293884" ID="ID_534358506" MODIFIED="1748436301463" TEXT="technisch kniffelig">
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
|
@ -163260,6 +163262,7 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748436280279" ID="ID_1020376151" MODIFIED="1748436289210" TEXT="bisher nur intern von den Time-Entitäten verwendet"/>
|
<node CREATED="1748436280279" ID="ID_1020376151" MODIFIED="1748436289210" TEXT="bisher nur intern von den Time-Entitäten verwendet"/>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1748489507389" ID="ID_1108010731" MODIFIED="1748489557860" TEXT="umbenannt ⟼ built_time_from"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748436314956" ID="ID_135965943" MODIFIED="1748436317043" TEXT="lumiera_framecount_to_time">
|
<node CREATED="1748436314956" ID="ID_135965943" MODIFIED="1748436317043" TEXT="lumiera_framecount_to_time">
|
||||||
<node CREATED="1748436317043" ID="ID_1149266151" MODIFIED="1748436333277" TEXT="eigentlich einfach — aber tricky"/>
|
<node CREATED="1748436317043" ID="ID_1149266151" MODIFIED="1748436333277" TEXT="eigentlich einfach — aber tricky"/>
|
||||||
|
|
@ -163279,13 +163282,14 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node CREATED="1748437245750" ID="ID_1962316549" MODIFIED="1748437254099" TEXT="sonst jetzt keine Verwendung mehr">
|
<node CREATED="1748437245750" ID="ID_1962316549" MODIFIED="1748437254099" TEXT="sonst jetzt keine Verwendung mehr">
|
||||||
<icon BUILTIN="ksmiletris"/>
|
<icon BUILTIN="ksmiletris"/>
|
||||||
</node>
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1748489507389" ID="ID_65232146" MODIFIED="1748489538457" TEXT="umbenannt ⟼ built_time_from"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748436687122" ID="ID_498539691" MODIFIED="1748436742026" STYLE="bubble" TEXT="können »wegdiskutiert werden« ⟶ Time-Entitäten">
|
<node BACKGROUND_COLOR="#b6c8ba" COLOR="#435e98" CREATED="1748436687122" HGAP="17" ID="ID_498539691" MODIFIED="1748489576953" STYLE="bubble" TEXT="können »wegdiskutiert werden« ⟶ Time-Entitäten" VSHIFT="10">
|
||||||
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1748436052160" ID="ID_332930192" MODIFIED="1748479008869" TEXT="Zeit-Quantisierung">
|
<node COLOR="#338800" CREATED="1748436052160" FOLDED="true" ID="ID_332930192" MODIFIED="1748479008869" TEXT="Zeit-Quantisierung">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1748436068486" ID="ID_236415016" MODIFIED="1748451420529" TEXT="lumiera_quantise_frames">
|
<node CREATED="1748436068486" ID="ID_236415016" MODIFIED="1748451420529" TEXT="lumiera_quantise_frames">
|
||||||
<arrowlink COLOR="#4e8ead" DESTINATION="ID_830480651" ENDARROW="Default" ENDINCLINATION="153;-10;" ID="Arrow_ID_875820569" STARTARROW="None" STARTINCLINATION="503;54;"/>
|
<arrowlink COLOR="#4e8ead" DESTINATION="ID_830480651" ENDARROW="Default" ENDINCLINATION="153;-10;" ID="Arrow_ID_875820569" STARTARROW="None" STARTINCLINATION="503;54;"/>
|
||||||
|
|
@ -163325,30 +163329,24 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node CREATED="1748468871585" ID="ID_1915828426" MODIFIED="1748468899785" TEXT="der einfache Standardfall braucht keine Framerate"/>
|
<node CREATED="1748468871585" ID="ID_1915828426" MODIFIED="1748468899785" TEXT="der einfache Standardfall braucht keine Framerate"/>
|
||||||
<node CREATED="1748468900420" ID="ID_1493748826" MODIFIED="1748468930405" TEXT="und ist auch nicht von Overflows bedroht">
|
<node CREATED="1748468900420" ID="ID_1493748826" MODIFIED="1748468930405" TEXT="und ist auch nicht von Overflows bedroht">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Zeiten sind bereits µ-Tick-quantisiert, d.h. eine einfache Division über ein Grid ist stets im Integer-Value range und ohne Fehler ausführbar
|
Zeiten sind bereits µ-Tick-quantisiert, d.h. eine einfache Division über ein Grid ist stets im Integer-Value range und ohne Fehler ausführbar
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1748449969608" ID="ID_762146581" MODIFIED="1748468816509" TEXT="diese aber neu schreiben ⟵ util::reQuant nutzen">
|
<node COLOR="#338800" CREATED="1748449969608" ID="ID_762146581" MODIFIED="1748468816509" TEXT="diese aber neu schreiben ⟵ util::reQuant nutzen">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
und zwar wegen der Gefahr numerischer Overflows; die eingebaute Limitierung der Lumiera-Time ist <i>nicht ausreichend:</i> denn die Quantisierung muß die Framerate durch das µ-Grid dividieren, also den Zähler mal 10^6 nehmen
|
und zwar wegen der Gefahr numerischer Overflows; die eingebaute Limitierung der Lumiera-Time ist <i>nicht ausreichend:</i> denn die Quantisierung muß die Framerate durch das µ-Grid dividieren, also den Zähler mal 10^6 nehmen
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<linktarget COLOR="#7aabe4" DESTINATION="ID_762146581" ENDARROW="Default" ENDINCLINATION="-166;9;" ID="Arrow_ID_160880569" SOURCE="ID_830480651" STARTARROW="None" STARTINCLINATION="53;127;"/>
|
<linktarget COLOR="#7aabe4" DESTINATION="ID_762146581" ENDARROW="Default" ENDINCLINATION="-166;9;" ID="Arrow_ID_160880569" SOURCE="ID_830480651" STARTARROW="None" STARTINCLINATION="53;127;"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1748452649267" FOLDED="true" ID="ID_1766809889" MODIFIED="1748478967926" TEXT="test Failures">
|
<node COLOR="#435e98" CREATED="1748452649267" FOLDED="true" ID="ID_1766809889" MODIFIED="1748478967926" TEXT="test Failures">
|
||||||
|
|
@ -163359,16 +163357,13 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node CREATED="1748470251934" ID="ID_1257197599" MODIFIED="1748470264939" TEXT="Limitierungen sind nun signifikant anders"/>
|
<node CREATED="1748470251934" ID="ID_1257197599" MODIFIED="1748470264939" TEXT="Limitierungen sind nun signifikant anders"/>
|
||||||
<node CREATED="1748470265887" ID="ID_1915675840" MODIFIED="1748471065332" TEXT="wir geben nun effektiv einen Offset heraus">
|
<node CREATED="1748470265887" ID="ID_1915675840" MODIFIED="1748471065332" TEXT="wir geben nun effektiv einen Offset heraus">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...und das macht durchaus Sinn, grade wegen der starken Limitierung, die ich bisher in diesem Fall demonstriert habe; außerdem ist diese grid-local-Time ohnehin etwas sonderbar, und auch daher ist es sinnvoll, diese als Offset (gegenüber dem Origin) zu modellieren. Sofern der Benutzer in eine normale Lumiera-Time speichert, sind wir wieder zurück bei den alten Limitierungen, aber man kann eben mit diesem Offset auch weiterrechnen, und ihn z.B. zum Origin dazuaddieren (und würde dann im Beispiel wieder bei ganz kleinen Zeiten ankommen)
|
...und das macht durchaus Sinn, grade wegen der starken Limitierung, die ich bisher in diesem Fall demonstriert habe; außerdem ist diese grid-local-Time ohnehin etwas sonderbar, und auch daher ist es sinnvoll, diese als Offset (gegenüber dem Origin) zu modellieren. Sofern der Benutzer in eine normale Lumiera-Time speichert, sind wir wieder zurück bei den alten Limitierungen, aber man kann eben mit diesem Offset auch weiterrechnen, und ihn z.B. zum Origin dazuaddieren (und würde dann im Beispiel wieder bei ganz kleinen Zeiten ankommen)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1748470276454" ID="ID_1578018466" MODIFIED="1748470869371" TEXT="und dieser ist limitiert auf ± Duration::MAX"/>
|
<node CREATED="1748470276454" ID="ID_1578018466" MODIFIED="1748470869371" TEXT="und dieser ist limitiert auf ± Duration::MAX"/>
|
||||||
<node CREATED="1748470870415" ID="ID_1224045565" MODIFIED="1748470884416" TEXT="⟹ Grid-API entspreichend anpassen"/>
|
<node CREATED="1748470870415" ID="ID_1224045565" MODIFIED="1748470884416" TEXT="⟹ Grid-API entspreichend anpassen"/>
|
||||||
|
|
@ -163376,16 +163371,13 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
<node CREATED="1748472736947" ID="ID_1167982787" MODIFIED="1748472745825" TEXT="möchte aber das Prinzip der Demonstration beibehalten"/>
|
<node CREATED="1748472736947" ID="ID_1167982787" MODIFIED="1748472745825" TEXT="möchte aber das Prinzip der Demonstration beibehalten"/>
|
||||||
<node CREATED="1748472746714" ID="ID_1982316622" MODIFIED="1748472860999" TEXT="muß dafür Hilfskonstanten einführen">
|
<node CREATED="1748472746714" ID="ID_1982316622" MODIFIED="1748472860999" TEXT="muß dafür Hilfskonstanten einführen">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...und die Grenzen ausreizen, die das Zeit-Framework (bewußt) erlaubt, wenn man die Typisierung geschickt ausnutzt: denn ein TimeValue wird aus einer anderen Zeit-Enität (absichtlich) ohne weiteren Bounds-Check übernommen. Es sind mithin durchaus TimeValue möglich, die größer sind als Time::MAX
|
...und die Grenzen ausreizen, die das Zeit-Framework (bewußt) erlaubt, wenn man die Typisierung geschickt ausnutzt: denn ein TimeValue wird aus einer anderen Zeit-Enität (absichtlich) ohne weiteren Bounds-Check übernommen. Es sind mithin durchaus TimeValue möglich, die größer sind als Time::MAX
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748478811956" ID="ID_1509469989" MODIFIED="1748478819810" TEXT="Time SUB_MIN{-Duration::MAX};"/>
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748478811956" ID="ID_1509469989" MODIFIED="1748478819810" TEXT="Time SUB_MIN{-Duration::MAX};"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748478811956" ID="ID_315980503" MODIFIED="1748478819809" TEXT="Time SUP_MAX{ Duration::MAX};"/>
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1748478811956" ID="ID_315980503" MODIFIED="1748478819809" TEXT="Time SUP_MAX{ Duration::MAX};"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -163408,6 +163400,10 @@ Since then others have made contributions, see the log for the history.</font></
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#174956" COLOR="#8dfd49" CREATED="1748489592263" ID="ID_1377471143" MODIFIED="1748489605929" STYLE="bubble" TEXT="Testuite GRÜN">
|
||||||
|
<edge COLOR="#61fe5b" STYLE="bezier" WIDTH="thin"/>
|
||||||
|
<font NAME="SansSerif" SIZE="15"/>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue