Michael Fisher
e267e0ad0b
GCC 4.7 compilation fixes
...
clarify binding of function (by specifying 'this')
2012-10-10 05:25:42 +02:00
954ebefc4c
draft implementation of the PlanningStepGenerator
2012-10-10 05:20:24 +02:00
44435fd1db
clarify and settle the relation between Dispatcher and PlanningStepGenerator
...
the solution is to introduce a superinterface
and let Dispatcher augment that with the specific parts.
This way, the Job planning only has to rely on the
rather generic stuff (TimeAnchor, FrameCoord)
NOTE: this commit makes the whole JobPlanning machinery
compilable for the first time!
2012-10-10 05:20:23 +02:00
3300d00cc8
WIP working towards a solution for generating frame location sequences
...
..the Idea is to rely on some kind of service,
to break the cyclic dependency with the Dispatcher.
But I seem unable to find a natural location or
concept to house that service.
2012-10-10 05:20:23 +02:00
ce5b940d39
WIP consider how to seed the evaluation of a JobTicket
2012-10-10 05:20:23 +02:00
14e6086488
better do initialisation by ctor
2012-10-10 05:20:22 +02:00
30cf0b5718
implementation of JobTicket::ExplorationState
2012-10-10 05:20:22 +02:00
062e1bbdc1
explicate the JobPlanningSequence definition
...
..causing the compiler to instantiate the
involved templates, i.e. get the complete
pipeline definition through the compiler
2012-10-10 05:20:22 +02:00
b52a1a8366
refactor JobTicket to remove the double layering
...
basically we had two lines of doubly nested capsules, due to
using the IterAdaptor template. Actually, the evaluation stack
within JobTicket can be considered an implementation detail and
thus doesn't require an iterator interface; the intention is to
use this through JobPlanning solely.
Thus this reworking removes the special iterator within JobTicket,
but retains the idea of exposing the "current" JobTicket through
a smart pointer or operator->()
work done during the FrOSCon travel
2012-10-10 05:20:21 +02:00
66defdc0cb
refactor JobPlanning to encapsulate all state mechanics into a "state core"
...
especially the exploration stack is pushed down
first successful definition of all the JobPlanning classes
just the framework of classes necessary to pass the compiler;
all implementation is still stubbed
2012-10-10 05:20:21 +02:00
a3bc69cc77
maybe a breakthrough on the job planning design quest?
...
why the hell is getting this design about right
such a chellenging task. Anyway, seems to be the
first step ahead after numerous failed attempts
2012-10-10 05:20:21 +02:00
88f433f433
successfully implemented another combinator strategy
...
DOH!
this thime hopefully I've actually succeedd to
created what is actually required in the Dispatcher
2012-10-10 05:20:20 +02:00
e073d05f58
new header to define some class partially noncopyable
2012-10-10 05:20:20 +02:00
016a739a5c
WIP back to the original problem: how to dispatch jobs...
...
brainstorming how to implement the job planning stage
the idea is to built on top of the IterExplorer,
but have the "stack" of re-evaluation integrated
into a custom type, which exploits the static
node network structure to avoid heap allocations
solution idea: again use a builder function?
2012-10-10 05:20:20 +02:00
0e3821abeb
refatcor function meta programming headers
...
the template _Fun started as an internal helper
for function-closure, but seems to be of
general use. Thus move it into meta/function.hpp
(function-closure.hpp is heavyweight)
2012-10-10 05:20:19 +02:00
e6a105fbc1
iterator exploring monad finished, passes unit test
2012-10-10 05:20:19 +02:00
3d0d599158
get the depth-first exploration test to work
...
...using the IterQueue for intermediary results
2012-10-10 05:20:18 +02:00
2c33000346
complement IterStack by a similar wrapper for queue-like access
2012-10-10 05:20:18 +02:00
8ced6758fb
initial draft for recursive evaluating iterator monad
...
tricky design problem, because nothing is known about
the source and result sequences to be built.
2012-10-10 05:20:18 +02:00
59c5627bbe
change Implementation class for IterStack
...
now using a std::deque directly; this allows
for a later extension for queue-like behaviour
2012-10-10 05:20:18 +02:00
41180eb99c
rework to allow for recursive evaluation
...
this enables expansion of a (functional) data structure
until exhaustion -- which is what we need to
build job functors by traversing and expanding
an arbitrarily nested job definition structure
2012-10-10 05:20:17 +02:00
697924925c
pragmatic fix for the long-standing problem of detecting increment operator
...
our duck-detector had a shortcoming here and failed
to detect iterators, in case the increment operator
was inherited from a mix-in
2012-10-10 05:20:17 +02:00
8db5413199
implemented chained-iterators
...
...using the IterExplorer building blocks
2012-10-10 05:20:17 +02:00
d14b37a71d
utility class factored out and covered by test
...
...a stack which can be Lumiera-iterated
2012-10-10 05:20:16 +02:00
da4a343e9e
refactor IterExplorer to allow for more flexible strategy definition
2012-10-10 05:20:16 +02:00
dc3ebd4a8f
first working concept for an "iterator monad"
...
the intention is to use this to simplify
generating render jobs based on the elaborated
dependency network of the render nodes. The key
challenge is to overcome the necessity to
store partially done evaluations as
continuation
2012-10-10 05:20:16 +02:00
eedcd69941
draft the IterExplorer design
...
the tricky part seems to be how to combine the
source iterators into a new monad instance, while
keeping this "Combinator" Strategy configurable
...just passes the compiler, while still lacking
even the generic implementation of joining
together the source iterators
2012-10-10 05:20:16 +02:00
45f4c96c6f
change LinkedElements to us a more space efficient iterator
...
Actually we don't need any backreference to the
container for iterating a singly linked list
2012-10-10 05:20:15 +02:00
378ebe21f0
Fix naming of Iteration control API functions ( closes #410 )
...
comes in handy now, since IterStateWrapper uses a similar API
2012-10-10 05:20:15 +02:00
83a0f4b41f
Implementation (I) : IterStateWrapper as foundation (passing test)
2012-10-10 05:20:15 +02:00
ab2a6b2fce
WIP brainstorming about a monadic iterator
...
The idea is to avoid building a data structure
for intermediary results, while still being able
to process a variably sized and arbitrary shaped
set of source data
2012-10-10 05:20:15 +02:00
fa15a38016
draft JobTicket implementation datastructure
...
...but need an extension on our iterator helpers
to build a suitable functional datastructure
for generating Jobs.
2012-10-10 05:20:15 +02:00
3ef1fb7697
linked list helper template finished and passes test
2012-10-10 05:20:14 +02:00
c33fcf9797
WIP draft a linked list helper template
2012-10-10 05:20:14 +02:00
ddff8b654b
WIP investigating the relation of Jobs, JobTicket and Closure in detail
2012-10-10 05:20:14 +02:00
4ceec90b9e
design decision how to invoke a job
...
without any trickery, we'll always get two indirections.
Thus, the decision is to turn the 2nd indirection
into a VTable call; this way, basically the JobClosure
also acts as job functor itself.
2012-10-10 05:20:13 +02:00
0320bc4b2c
considering the relation of Job and JobClosure
2012-10-10 05:20:13 +02:00
bb43c03ef9
stub all the job generating functions required for the dispatcher interface
2012-10-10 05:20:13 +02:00
0ab773ab7c
helper to pull all elements from an iterator, yielding the last one
2012-10-10 05:20:13 +02:00
5222384f8b
try to circumvent ambiguity in overload resolution
...
we want to support various integral and rational factors
for linear chaining of time offsets
2012-10-10 05:20:13 +02:00
79bd8b71e3
better treat the building of a continuation job separately
2012-10-10 05:20:13 +02:00
08d266819d
re-read my own code and pick up the design work
...
..next question is: how to shape the dispatcher interface,
in order to support ongoing chunk wise planning
of new jobs, including a continuation
2012-10-10 05:20:13 +02:00
080d6913c6
fix a type converison problem
...
...better state explicitly we're requiring
a rational factor
2012-10-10 05:20:12 +02:00
7941865d5d
implement anchor against current system time
...
using CLOCK_REALTIME for now
2012-10-10 05:20:12 +02:00
9aec2a9806
allow for fractional scaling of time durations
...
implemented as extension to the linear combinations.
I decided to use the same "always floor" rule
as employed for time quantisation. Moreover,
we don't support floating point, only rationals
2012-10-10 05:20:12 +02:00
22322dfec4
refactor the division/quantisation helpers
...
...no need to keep them in util.hpp, as they
are used rather occasionally, while util.hpp
is used pervasively.
2012-10-10 05:20:12 +02:00
882bcf07ae
define stubs for accessing the wall clock time (->Backend)
2012-10-10 05:20:12 +02:00
aa01813f52
TimeAnchor: draft calculating the start delay for rendering
2012-10-10 05:20:12 +02:00
ee1450a81a
rectify frame dispatch invocation
2012-10-10 05:20:12 +02:00
393a447861
test setup: simulated build proecss results, mock model port
2012-10-10 05:20:12 +02:00
f8f011bb44
rework Job representation
...
make class Job a real subclass of the
job definition struct and turn the
JobClosure into a trampoline
2012-10-10 05:20:12 +02:00
0b25c2e08d
Fix: missing sanity check in ScopedCollection
...
funny enough this possible memory corruption
didn't happen in the unit test, because my
compiler optimised the additional int field
of class SubDummy, making it the same size
of the baseclass. Now matters should be safe.
2012-10-10 05:20:12 +02:00
1e54b5d3e6
stubbing some job functions
2012-10-10 05:20:11 +02:00
db68577b4a
clarify relation of Job, JobTicket and channel number
2012-10-10 05:20:11 +02:00
875342fa40
initial draft for the job representation
...
this draft is based on
- Cehteh's draft for the scheduler
- my plannings about segmentation and JobTicket
it defines "Job" as a closure which can be invoked
from plain-C, using the information in the
job descriptor datastructure
2012-10-10 05:20:11 +02:00
e9dbb3bdb1
stubs for some important components of play/engine (JobTicket...)
...
also touches the question how to represent the job
descriptor datastructure. @Cehteh: I've just pasted
in your preliminary data struct definitinons
from the relevant mailing list discussions.
2012-10-10 05:20:11 +02:00
568fadd526
draft some steps of the dispatch operation
2012-10-10 05:20:10 +02:00
6772e94994
implement simple constant frame timings descriptor
2012-10-10 05:20:10 +02:00
157e3b6867
test-driven brainstorming: define default timings...
2012-10-10 05:20:10 +02:00
2cb254365c
some musing about timing constraints and quantisation
2012-10-10 05:20:10 +02:00
a4e3383367
turn Dispatcher into an interface
2012-10-10 05:20:09 +02:00
e581246f63
forming some entities to support the dispatch step
2012-10-10 05:19:56 +02:00
3768791c76
considerations how to connect exit nodes to external outputs
2012-10-10 05:18:58 +02:00
288b737718
dummy playback: stub the required operations
2012-10-10 05:18:58 +02:00
2eb39704fc
test-driven brainstorming: how to use the dummy playback?
...
this is an idea how to test a test setup :)
2012-10-10 05:18:58 +02:00
7e7ecc5d51
draft: integrating an engine mock implementation
2012-10-10 05:18:58 +02:00
ec659b7141
a better way to inject the Render-Engine Mock
...
instead of (ab)using the Timings spect for a
runtime switch, better use the existing
MockInjector facility and thus turn the
mock engine mode into a global switch
2012-10-10 05:18:57 +02:00
24911dc990
solution to integrate an Engine Mock implementation
2012-10-10 05:18:57 +02:00
687102feb3
planning next steps: how to transform DummyPlayer into a real player
2012-10-10 05:18:57 +02:00
a8e4b57548
Comments and Doxygen improved
2012-08-25 19:20:05 +02:00
aa1eb2d7fc
integrate Odin's ALSA experiments into the Lumiera build
...
requires ALSA as build dependency
note: Debian package is libasound2-dev
2012-01-11 07:59:16 +01:00
d2f83523ca
join recent player subsystem work, SCons overhaul and documentation
2012-01-11 07:54:43 +01:00
Odin Omdal Hørthe
29394345af
ALSA audio output experiment
...
I think it's smart to rather use ALSA directly instead of PortAudio.
ALSA is push AFAIK, and talking about it here at the hackspace, seems
like the better choice. It's a bit lower level, but anyway everything
speaks ALSA anyway. It's not like there's any reason to use PortAudio
at all. It's just an extra abstraction.
Coding for ALSA it'll also work with Pulseaudio and esd. Do people
really use other sound systems than Pulseaudio, esd or plain ALSA?
I can't think of it.
I really the idea about building a small tool first. I'll do that.
Also thought about making a small blikning cursor/text output, and
syncing a BEEP-sound to that, so that I can test around with throwing
in lots and lots of latency between "me" and the video, and try to
sync it anyway.
I should be able to read back from the sound card (or pulse audio
underneath, it will just work with alsa as the abstraction) how long
it takes for the bytes I'm pushing to reach the speakers, and do some
buffer tuning on that.
2012-01-11 07:12:32 +01:00
56ac1afe18
move Icon building down into separate SConscript
2012-01-11 07:05:01 +01:00
27db94a64c
adjust code / indentation style
...
no functional change
2012-01-11 07:05:01 +01:00
e64a17d1ba
SConstruct: reduce the remaining defs
...
no need to use functions anymore, since
only the clean and phony targets are left
2012-01-11 07:05:00 +01:00
f84da63e11
use import/export instead of passing an artefacts map
2012-01-11 07:05:00 +01:00
25b21fe575
reorder building/installing of Icons
...
no need to define them together with the source.
SCons is able to work out the real dependencies
just fine. Thus, Icons remain in Main SConstruct
2012-01-11 07:05:00 +01:00
c62eccd25f
SCons overhaul/clean-up: disentangle main build
...
The goal is to make the build scrips more clear
at first sight. So move the main build targets
into a separate SConscript, to make them similar
to the tests, research and tools.
The final goal of this makeover is to reduce
the main SConstruct as much as possible
2012-01-11 07:05:00 +01:00
f5290a99a3
OutputSlot : simulated usage protocol passes unit test
...
OutputSlotProtocol_test
Some parts are still missing
- timings
_ initialisation
2012-01-08 03:06:32 +01:00
d732e7e211
Lumiera Forward Iterators: remove support for post-increment
2012-01-08 01:14:36 +01:00
8de4ecc8ac
add diagnostic messages showing each connection access
...
currently the problem seems to be we're
accessing the wrong connection...
2012-01-07 21:22:35 +01:00
73cfef69c8
fix some problems with OutputSlotProtocol_test
...
still WIP...
- there is a logical contradiction with the frame numbers
- somehow, in diagnostics, we access the wrong sequence instance
2012-01-07 06:40:21 +01:00
5cc034d26b
refactor ScopedCollection to use an init() function
2012-01-07 04:44:48 +01:00
e6888f7b83
supplement direct support for populating by member function
...
this turns out to be the typical usage scenario
for ScopedCollection: a manager object owning
the collection will populate it with specially
crafted components and invoke a member function
for creating the individual components.
This shortcut avoids using tr1::bind alltogether
2012-01-07 04:11:39 +01:00
9bba366763
investigate partial application of member functions
2012-01-07 03:28:12 +01:00
feff7537ef
reduce memory requirements for this test
...
...it caused out of memory frequently.
2012-01-07 03:27:31 +01:00
90e6dae2d5
add includes missing in some metaprogramming headers
...
types uint and string
2012-01-07 03:11:51 +01:00
00c08bd27b
fix helper functions not declared as inline
2012-01-07 03:11:02 +01:00
b64dff1ad8
spelling and comments
2012-01-07 00:02:03 +01:00
e41065101a
switch OutputSlot to use the ScopedCollection
...
..hehe, makes the code way more sane
2012-01-06 03:16:22 +01:00
e5c42e05e6
finish ScopedCollection ( closes #877 )
2012-01-05 23:17:16 +01:00
72e8d22454
implement the RAII-style collection ctor. test pass
2012-01-05 03:40:04 +01:00
434a371c33
take ctor args by value; test attaching sub-types passes
2012-01-04 04:28:14 +01:00
690304f9bc
get the simple and iteration unit tests to pass
2012-01-04 04:05:03 +01:00
fa5e7db2d3
WIP rewrite iteration-control logic...
2012-01-03 02:50:22 +01:00
6c01579a26
WIP draft implementation of ScopedCollection
2012-01-02 06:11:27 +01:00
e63fa6d646
Test-driven brainstorming: draft a ScopedCollection #877
2012-01-01 06:20:42 +01:00
f047069284
rearrange OutputSlot ConnectionStateManager
...
... shape the various APIs more clearly,
make most functions protected
2011-12-31 20:33:50 +01:00
06c7c27252
merge diagnostic facilities
2011-12-31 06:49:31 +01:00
37384f1b68
formatting wrapper/frontend: unit test pass.
...
Closes #166
2011-12-31 06:48:26 +01:00
e1b9b5b135
rewrite type selection logic to handle ptrs in the front-end
...
whew, quite a heavy rewrite, but greatly
simplifies the code and removes the necessity
to declare explicit specialisations of pointers
2011-12-31 06:48:11 +01:00
c8f46f47c9
handling of ptrs, first attempt
2011-12-31 06:47:58 +01:00
35ed2dcf5c
add more robust error handling
...
...incl handling of secondary errors
2011-12-31 06:47:38 +01:00
e838fb9799
document and cover various formatting special cases
2011-12-31 06:47:30 +01:00
0d136e2703
define explicit specialisations for primitive types
2011-12-31 06:47:03 +01:00
e054c272b6
research: detecting the possibility of a string conversion
...
find out about the corner cases of this
simplistic implementation
2011-12-31 06:46:50 +01:00
6c95c1b0e4
format-frontend: fill in missing bits of the implementation
2011-12-28 06:42:30 +01:00
dbb63ffc08
perfer STATIC_ASSERT to check for suitable placement-New buffer size
...
Still incomplete, but already this small change
detected an error in the output-designation. Cough.
2011-12-28 06:42:18 +01:00
cd3c633fc0
STATIC_ASSERT to verify guessed size
...
... and we indeed had an error: vector<bool>
is way larger than normal vectors!
2011-12-28 06:41:47 +01:00
962c789a05
a horrible hack to guess the size of boost::format
...
...without actually including the boost/format.hpp
This saves us a lot of compilation time and debug code size
2011-12-28 06:41:37 +01:00
ce6fbe5f0f
define how to pick the correct specialisation
...
some basic types are passed on directly;
for those, we use explicit specialisations
in the implementation file, and a traits template
to mark those cases in the header.
custom types with custom string conversion will
be converted to string; everything else
just becomes a type id
2011-12-27 07:45:25 +01:00
6e4883bcf1
add stub definitions to pass compilation
2011-12-27 07:45:16 +01:00
545d9ea82b
WIP draft frontend for diagnostic output ( #166 )
2011-12-27 07:45:07 +01:00
89928bc447
refactor format-util: simplify picking the right specialisation
2011-12-27 07:44:59 +01:00
50885a065b
move asside lib/format.hpp
...
...to make room for a new more specialised header
2011-12-27 07:44:49 +01:00
24a8d6a926
generalised diagnostic context passes unit test
2011-12-24 05:57:28 +01:00
5498ace9fc
WIP define a unit-test for diagnostic context stack
2011-12-24 05:57:11 +01:00
87f7a8f6e8
unit test to cover thread-local helper
2011-12-24 05:55:31 +01:00
2bdf06829a
make thread(pool) less chatty
2011-12-24 05:48:51 +01:00
451b0abec5
spelling and typos
2011-12-24 05:48:31 +01:00
d27e3b15a9
clarify the handling of specific output operation modes (e.g. number of channels)
2011-12-23 02:22:38 +01:00
7fc8473337
fix some size_t printf specs (32/64bit problem)
2011-12-19 03:02:48 +01:00
fa0588b584
refactor to simplify generating a PlayProcess
2011-12-18 02:02:55 +01:00
c4bc53b6f6
how to pass a render configuration strategy when creating a new play process
2011-12-17 22:37:53 +01:00
6852a6feff
WIP refactor building of the active render feeds
...
RenderConfigurator becomes an internal strategy
controlled by the PlayService
2011-12-17 04:45:42 +01:00
bda0dea990
clarify the relation of PlayProcess, CalcStream and EngineFacade
2011-12-17 02:20:48 +01:00
76b24ce50d
WIP draft the building of a render CalculationStream
2011-12-10 03:18:48 +01:00
8362145039
spelling and comments
2011-12-10 03:13:45 +01:00
477b443191
implement diagnostic OutputSlot simple frame tracking
...
...should be enough to run tests against the OutputSlot interface
2011-12-09 01:03:02 +01:00
e7ae9a3082
introduce marker time values to designate corner cases
2011-12-09 01:00:50 +01:00
aef3d50ffd
implement basics of the diagnostic OutputSlot
...
...specific diagnostic facilities still lacking
2011-12-08 23:02:19 +01:00
07002ab3af
SCons: new build target for experimental code
2011-12-03 06:10:12 +01:00
34f2de641f
Remove Debian/Lenny workarounds
...
definitively requiring Squeeze now
2011-12-03 03:18:15 +01:00
77548e74c6
document a weakness of boost::hash for strings
2011-12-03 03:18:03 +01:00
7fd28e23eb
cleanup configflags to use uint instead of char
...
using char for those flag template parameters
was never a good idea. It won't save us any space
and makes debugging harder
2011-12-03 03:16:08 +01:00
d9f84a9bfd
clean up lib/meta namespaces
2011-12-03 03:15:59 +01:00
b2d6074097
cleanup test includes
2011-12-02 21:34:29 +01:00
b9d1899486
cleanup: rectify Proc-Layer namespaces (II)
2011-12-02 17:50:44 +01:00
eb79a00cf4
cleanup: rectify Proc-Layer namespaces (I)
2011-12-02 16:10:03 +01:00
89a9202c6c
cleanup: remove precompiled headers
...
we don't need them and they even tend to
increase build times due to unnecessary
compound-includes at some core headers
2011-12-01 23:32:34 +01:00
c7d4412cec
integrate recent GUI / timeline and work done on the player subsystem
2011-11-27 02:15:11 +01:00
d6fa67f2b8
refactor zoom smothing into TimelineViewWindow
2011-11-27 01:28:48 +01:00
a6392f5d14
review and annotate design aspects regarding zoom handling
2011-11-27 00:52:10 +01:00
d58fa9129c
clean-up: remove direct access to the selection value
2011-11-26 23:32:56 +01:00
177b85ecf2
Integrate timeline work: zooming and scaling
2011-11-26 18:39:26 +01:00
7ba8ff432f
BufferProvider interface finished thus far.
...
simulated lifecycle passes unit test
2011-11-26 00:09:59 +01:00
2fce2b1c8d
make ctor-tracking test::Dummy more widely usable
2011-11-25 22:05:12 +01:00
55a77bdd73
factor out and treat the attaching of objects separately
...
this is an advanced feature not required
in the standard buffer usage cycle
2011-11-25 20:23:31 +01:00
ce25be6fa3
refactor relation of BuffHandle and BufferDescriptor
...
they are now tightly coupled and assumed to
work together; there is no need to relay half
of BuffHandle's interface through BufferDescriptor
2011-11-25 18:20:01 +01:00
d6b069fbbd
clean-up after refactoring
2011-11-25 17:29:06 +01:00
eed6d8cd1e
split out obsolete ChannelDescriptor for later refactoring
...
Meanwhile, BuffHanle became way more concrete,
making the separation of any kind of buffer or channel
type management concievable.
Thus: extract the obsolete ChannelDescriptor
and use switch at any location where the old
(superseeded) buffer handle is still referred
2011-11-25 17:16:33 +01:00
74702ebecd
address the next test...
2011-11-24 03:33:23 +01:00
2ae1e3c8f9
test/dummy buffer provider finished and passes test
2011-11-21 03:26:08 +01:00
d6de8c8d1a
implement some missing nits and bits
2011-11-21 02:28:44 +01:00
91b74ad7bd
implement missing parts of test/dummy buffer provider
2011-11-20 01:35:52 +01:00
0a1256f4e3
cover and verify detaching from ScopedPtrVect
2011-11-19 21:41:50 +01:00
13b795016b
comment rewording
2011-11-19 18:01:48 +01:00
3830ff7ce1
refactor the test/dummy provider, based on ScopedPtrVect solely
...
instead of using a vector directy, move the
additionally required functinoality in the
utility class. This forced me to adjust
the IterAdapter, to allow working with
STL algorithms
2011-11-19 17:51:08 +01:00
5947e0e3e1
allow to detach an object managed by ScopedPtrVect
2011-11-19 17:48:04 +01:00
1f966a02ec
some rather tricky adjustments to PtrDerefIter
...
...allowing to use that custom iterator together
with STL algorithms
2011-11-19 17:46:24 +01:00
ca689ae5e0
WIP some musing about building an option monad
2011-11-18 01:24:43 +01:00
27449c1438
implementation details of a test/dummy provider
2011-11-18 01:23:50 +01:00
623bb401af
clarify implementation extension points of BufferProvider
...
decide especially how to pass on the implementation
defined data like e.g. pointers to storage extents
2011-11-15 04:47:31 +01:00
d1d0f66fa8
allow LocalKey to carry arbitrary pointers or hashes as payload
...
...used to piggyback opaque implementation data,
deliberately no typecheck here
2011-11-15 04:46:00 +01:00
6bc94cccb5
WIP refactor BufferProvider public and protected API
2011-11-14 01:43:29 +01:00
890b6e8366
WIP implementation details of diagnostic BufferProvider
2011-11-13 04:20:14 +01:00
ca0aa23479
BufferProvider default impl: attaching a type
2011-11-12 00:36:53 +01:00
fd94367b9e
stubs and changes to make the test compile
2011-11-11 23:33:59 +01:00
fe1ae51b49
WIP draft test for internal test buffer provider
...
a test to cover a helper for writing tests ;-)
2011-11-11 01:44:01 +01:00
f75e55a060
nail down a lot of OutputSlot implementation details
2011-11-08 02:59:56 +01:00
59dfb7c660
start drafting a (dummy) output slot implementation
...
this implicates a first attempt to build a
dummy buffer provider implementation.
Mostly just defining stubs here....
2011-11-07 01:57:33 +01:00
c8458ab397
improved diagnostics
2011-11-07 00:50:03 +01:00
a88ccd219d
extract the diagnostic BufferProvider into separate header
2011-11-07 00:07:53 +01:00
7ab7c8073d
remold OutputSlot implementation structure
...
Better solution where to place the extension points
to be implemented by concrete output systems
2011-11-06 02:37:22 +01:00
63dbc89b6f
draft implementation setup for OutputSlot baseclass
2011-11-05 16:51:24 +01:00
d6e88c85e0
finish buffer metadata; cover state transitions
...
BufferMetadata complete and working for now
2011-11-02 01:34:05 +01:00
db3ea6638d
use boost::random to ensure distinct test frame contents
2011-11-01 03:11:43 +01:00
931dc3f883
draft: automatically invoke an attached ctor/dtor functor
2011-10-30 05:35:36 +01:00
ccd130966b
finish and pass the first round of tests
...
still missing:
- implementation of a Mock frame
- automatical invocation of the TypeHandler
2011-10-30 02:19:10 +02:00
e7f0211711
better solution for calculating the Key for a concrete Entry
2011-10-30 01:17:31 +02:00
f849ca62d9
implement metadata storage (hash)table
...
not passing all tests yet
2011-10-29 02:41:56 +02:00
c91e703682
rename the core type BufferMetadata
...
makes the purpose more clear, and moreover
it matches the header filename
2011-10-28 01:18:22 +02:00
c8cdf914eb
review metadata storage, stub the actual access operations
2011-10-28 01:11:39 +02:00
9af0fb096f
WIP draft implementation of buffer metadata creation/storage
2011-10-24 02:14:08 +02:00
c4ff87c3a8
decide about the basic way to implement concrete buffer metadata
2011-10-24 01:03:56 +02:00
76a6407a5e
better formulation for the buffer metadata state machine
2011-10-23 22:07:39 +02:00
Michael R. Fisher
65a29244af
The tool also needs updated on TimelineState Change
2011-10-23 09:52:12 -05:00
Michael R. Fisher
1bb584f895
Removed some TODO's
2011-10-23 04:52:30 -05:00
Michael R. Fisher
0aa3ca76d1
Created and Applied TimelineWidget::ZoomSmoothing
2011-10-23 04:45:10 -05:00
Michael R. Fisher
6c17d06e66
Timeline is no longer zoomed in to far on startup. See timline-view-window.hpp int64_t timeScale for explanation
2011-10-23 04:20:39 -05:00
Michael R. Fisher
b87b6078ad
Adding TimeSpan param to SelectionListener's signal
2011-10-23 00:20:48 -05:00
Michael R. Fisher
3811183546
Added SelectionListener handling selection changing events
2011-10-22 21:53:23 -05:00
Michael R. Fisher
8ff36fc209
Timeline selection is now controlled by lib::time::Control
2011-10-22 20:27:29 -05:00
9c04637aea
fix misspelling in library
2011-10-23 02:44:52 +02:00
0378f9266e
fix misspelling in library
2011-10-23 02:42:25 +02:00
4acc9d247a
maybe fix: try to connect the selection control the other way round
2011-10-23 02:41:57 +02:00
Michael R. Fisher
c9671b654e
time::Control Integration First Commit
2011-10-22 19:03:17 -05:00
Michael R. Fisher
ca634bdd9c
House Cleaning
2011-10-22 22:14:48 +02:00
Michael R. Fisher
6046749f19
Integrating time::Control into ibeam tool.
2011-10-22 21:48:57 +02:00
b39edad306
clean-up some additional mentions of boost::ref
2011-10-22 21:45:59 +02:00
4f1d7e1d3f
clean-up GUI includes. Solving problems with tr1::ref vs. boost::ref
2011-10-22 21:45:52 +02:00
606251749e
fix time::Control should properly include <tr1/functional>
2011-10-22 21:45:40 +02:00
2730fa8d7a
a bit of stylistic cleanup
...
- using std::tr1::shared_ptr in namespace gui
- thus removing a lot of std::tr1 qualifications
- fix some includes. Should be relative to 'src'
- interface classes should declare a virtual dtor!
2011-10-22 02:49:30 +02:00
Michael R. Fisher
c9a0209a0b
Fix ParentTrack: using std::tr1::enable_shared_from_this
2011-10-22 01:35:45 +02:00
Michael R. Fisher
9a1987ba24
Ticket #796 : Switch GUI from boost::shared_ptr to std::tr1::shared_ptr.
...
ParentTrack and TimelineLayoutHelper need to be fixed
2011-10-22 01:26:24 +02:00
d48dc3b025
fix glitch in test definition
...
uncovered since rand() is now properly seeded
prior to each testsuite run
2011-10-21 02:41:20 +02:00
65b309e5cb
Testsuite: automatically seed the random number generator
2011-10-21 01:09:12 +02:00
f1a4489470
Fix minor problems after merge
2011-10-21 00:58:15 +02:00
c06c49e782
Join latest GUI addions (zoom slider) and player design/implementation work
2011-10-20 04:29:14 +02:00
ca0ae9c120
stubbed relevant parts of BufferProvider and OutputSlot
2011-10-19 02:47:11 +02:00
991eec8185
draft test to simulate a complete buffer metadata usage cycle
2011-10-17 02:00:48 +02:00
1772659a00
start implementing buffer metadata records
2011-10-16 00:06:57 +02:00
011afa4be8
fix: ubiquitous constant defined in header
...
..resulting in that global constant being allocated a gazillion times
2011-10-15 23:41:31 +02:00
3d859c8b53
buffer metadata hash keys implemented and tested thus far
2011-10-15 22:46:08 +02:00
28c555aac7
define a type handler for attach an object to a buffer
2011-10-15 05:05:30 +02:00
2c380b5f99
draft a dedicated test for buffer metadata keys
2011-10-15 04:12:51 +02:00
1627698911
implement hash function for functor obejects. Unit-test pass
2011-10-14 14:49:55 +02:00
6baadbaef0
draft a workaround for hashing functor objects
2011-10-14 03:54:22 +02:00
3256b7fe11
implementing the hash functions for the buffer metadata content fields
2011-10-12 03:47:34 +02:00
Michael R. Fisher
f851c875ed
Zoom Slider Position remains after a sequence change
2011-10-11 14:39:20 -05:00
63ba43d446
fix: TimelineBody not zooming was due to this omission in my change
...
silly me!
2011-10-11 01:24:39 +02:00
Michael R. Fisher
d1f07d7088
TimelineBody Is Zooming again now
2011-10-10 18:01:10 -05:00
Michael R. Fisher
540357de9f
Comments added
2011-10-09 21:00:31 -05:00
Michael R. Fisher
91cc3f90a0
TimelineZoomScale::on_timeline_state_changed method implemented. Other timeline components need fixing now (seems only the ruler is zooming now)
2011-10-09 20:54:55 -05:00
fb28592082
more cleanup: use the propagated timelineState directly
2011-10-10 01:42:03 +02:00
5fe1debd5b
ZoomScale: rely on the state change signal for the view window
2011-10-10 01:07:10 +02:00
5905fdf0cb
change definition of TimelineStateChangeSignal
...
the timeline-state-change signal now delivers
the new TimelineState object immediately, instead
of requiring the listeners to pick it up
2011-10-10 00:08:50 +02:00
Michael R. Fisher
357bfaa674
Added pointer to TimelineViewWindow in TimelineZoomScroll
2011-10-09 15:34:21 -05:00
2477f2e682
outline of building a hierarchy of hash keys for buffer metadata
2011-10-09 16:03:51 +02:00
d9f64c94bf
simple demo using a pointer and a struct
2011-10-09 14:52:58 +02:00
7ea9afd1bb
first attempt to implement buffer metadata...
...
...leading to refactoring
2011-10-09 04:20:56 +02:00
3acf804988
flesh out the buffer metadata API
...
functionality just stubbed still
2011-10-08 02:21:29 +02:00
caace00dd5
Review the new TimelineZoomScale widget code
2011-10-07 03:49:51 +02:00
Michael R. Fisher
e0463da204
Added TimelineZoomScale widget
2011-10-06 22:58:50 +02:00
Michael R. Fisher
c79b28fe7c
Replacing zoomIn and zoomOut buttons in the TimelinePanel with a new TimelineZoomScale widget
2011-10-06 22:49:20 +02:00
4df45c44e9
BufferMetadata: some musing about how to access the Allocator
2011-10-06 21:55:00 +02:00
7459c0a41f
(cont) buffer metadate implementation
...
state transitions etc
2011-09-26 02:19:31 +02:00
f505c46d1d
finish simple allocator frontend. Unit-test pass
2011-09-25 19:26:12 +02:00
5350ef6dbe
split off and test-cover simple typelist utils
...
these simple utils (length of typelist, maximum size
containment test) are mostly not used in conjunction
with the more elaborate typelist manipulatino utils.
Moreover, we lacked a dedicated unit test
2011-09-25 19:26:11 +02:00
057f32e15b
rename the typelist-manipulation header
2011-09-25 19:26:09 +02:00
db2b02f0c5
define a front-end for explicit allocations
...
...currently just defined by forwarding
to std::allocator
2011-09-25 19:26:09 +02:00
bc756e42d9
rewrite (planned) test to reflect the new metadata design
2011-09-25 19:26:09 +02:00
1ea3cba2f5
remold the buffer metadata into a PImple used by BufferProvider
2011-09-25 19:26:08 +02:00
8a2c94014c
extract buffer metadata handling into separate entity
2011-09-25 19:26:08 +02:00
7ef85065ba
impl: buffer provider metadata...
2011-09-25 19:26:08 +02:00
5b6ecbab1c
start diagnostic buffer provider implementation
2011-09-25 19:26:07 +02:00
cafe271830
stubbing of basic buffer provider functionality
2011-09-25 19:26:07 +02:00
ca615b9933
start stubbing some of the functionality planned thus far
2011-09-25 19:26:07 +02:00
32f71cba6d
more test-driven brainstorming
2011-09-25 19:26:06 +02:00
e1248d195a
move asside obsoleted code
...
...will be removed soon, when reworking ProcNode
2011-09-25 19:26:05 +02:00
1f13931640
test driven brainstorming: using a BufferProvider
2011-09-25 19:26:05 +02:00
8016547d9c
rework and clarify node invocation sequence
...
while passing by, identified quite some
node invocation code to be rewritten
2011-09-25 19:26:05 +02:00
95bb5e64aa
WIP desiging the interplay of BufferProvider and BuffHandle
2011-09-25 19:26:05 +02:00
0706b83a46
fix a warning
2011-09-25 19:26:04 +02:00
d1a5b9a914
main: temporarily disable dependencies...
...
disable dependency declarations for subsystems
not yet implemented, to allow the lumiera executable
to start up
2011-09-25 19:26:04 +02:00
7efde06569
some stubs to make it compile...
2011-09-25 19:26:03 +02:00
737765260d
Test-driven brainstorming: diagnostic adaptor for the engine
2011-09-25 19:26:03 +02:00
3125d1c573
a first draft for the Engine Interface
2011-09-25 19:26:03 +02:00
d1b6f7a57b
polymorphic value builder functions: how to take arguments
...
Previously, I've added an additional '&' to be able
to pass references without much ado. This turned out
to be problematic when using constant values at the
invocation site. Well. C++ has really a fixation
ont passing things by value. This is fine, but
doesn't play so well at times when passing smart-ptrs
or similar ref-counting stuff, especially when we just
want to *use* the handle, not store it away.
Essentially the same situation as with for_each
Bottom line: from now on, we need to state the
template parameter for such arguments explicitly,
or just accept the overhead of creating an additional
transient copy of the smart-ptr.
2011-09-25 19:26:03 +02:00
1e7da409bb
Fix logic error uncovered by GCC 4.4
...
benefits of using a newer compiler, yay!
Explanation: the Link<...> template combines
various policy templates and exposes a set
of functions, which can be bound as functor
into an concrete time::Control instance.
Actually, we need to mix in only the Mutation
baseclass, because we just want to inherit
the privilege to change time values, which
are otherwise immutable. We don't need to
mix in the Mutator template anymore (this
was a leftover from an earlier design)
2011-09-25 19:26:02 +02:00
4a62444ad4
WIP pick up on the design work regarding Engine, OutputSlot and Player
2011-09-25 19:26:02 +02:00
f8842c75ed
WIP draft OutputSlot internal transitions
2011-09-25 19:26:01 +02:00
7adb8149db
back to test-driven brainstorming again
2011-09-25 19:26:00 +02:00
a199bff92b
BufferProvider as a frontend to buffer management
2011-09-25 19:26:00 +02:00
650e73c454
OutputSlot: draft buffer handover protocol, remove the diferent models
2011-09-25 19:25:59 +02:00
f46cc26851
factor out convenience shortcut
...
transform iterator and wrap result into IterSource
2011-09-25 19:25:59 +02:00
585adb88b6
Refactoring: use the output Feed as intermediary construction step
2011-09-25 19:25:58 +02:00
511d08adad
WIP: bilding a PlayProcess...
2011-09-25 19:25:58 +02:00
9e53053944
WIP: draft building a PlayProcess
2011-09-25 19:25:58 +02:00
dea1fa57a2
draft play process structure; clarify handling of multiple channels
2011-09-25 19:25:58 +02:00
a19562942c
further considerations regarding output and output slots
2011-09-25 19:25:57 +02:00
4ece135257
cont.. drafting OutputSlot
2011-09-25 19:25:56 +02:00
ce6a917b59
first draft spec for the OutputSlot
2011-09-25 19:25:56 +02:00
a379476414
create outline of PlayService, add stubs for Play::Controller
2011-09-25 19:25:56 +02:00
1b0cb56dcc
implement PlayOut subsystem and draft OutputDirector
2011-09-25 19:25:55 +02:00
971dea6f6a
PlayService: basic definition and link to facade
2011-09-25 19:25:55 +02:00
2099ecbcac
finish and comment the new time::Control facility
2011-09-25 19:25:55 +02:00
f4d0d23e48
clean up leftovers from the first implementation attempts
2011-09-25 19:25:54 +02:00
fec2d25b52
additional quantisation and duration canges covered and passing test
2011-09-25 19:25:54 +02:00
15a3694cca
more complete unit test pass
2011-09-25 19:25:54 +02:00
b54cd2c722
cont. defining time::Control special cases
...
the refactoring seems to work out OK, was able
to cover all the cases defined thus far....
2011-09-25 19:25:53 +02:00
9bd96a1b19
time-entities refactoring: Duration isn't an Offset
...
removed that inheritance relation; it was a typical
example of abusing inheritance and violated the
Liscov substitution principle. It is sufficient
to allow promotion of an offset into a Duration.
Note: Duration is the time metric
2011-09-25 19:25:53 +02:00
7c5f18643b
cont. reworking based on that idea; refactor mutation base cases
2011-09-25 19:25:53 +02:00
d39ae8afc6
idea for better organisation of the template specialisations
2011-09-25 19:25:53 +02:00
a8fd0bf7c5
better avoid throwing and use a default time grid in some cases
2011-09-25 19:25:53 +02:00
47afbbeab0
first attempt towards covering the various special cases
...
the intention is to generate most combinations from
generic template cases, but to define the difficult
cases by explicit specialisation
2011-09-25 19:25:53 +02:00
eed2b0f320
time::Control simple unit test pass
2011-09-25 19:25:52 +02:00
c96cd66688
draft implementation for time change and propagation
2011-09-25 19:25:52 +02:00
27533c3bb9
WIP darft usage for the new time::Control (life change) element
2011-09-25 19:25:52 +02:00
5e8a9b50d1
define asset::Viewer
2011-09-25 19:25:52 +02:00
b25d85e1dd
ProcNode hierarchy cleanup
2011-09-25 19:25:52 +02:00
ae36b2d941
stubs and adjustments to get it through the compiler
2011-09-25 19:25:52 +02:00
786ecbe829
WIP draft test helper for generating test cases (Cartesian product)
2011-09-25 19:25:51 +02:00
eb5e0ab9ff
WIP: start building a Test for time::Control. Need Cartesian product of cases...
2011-09-25 19:25:51 +02:00
9004818d63
further planning the features of time::Change
2011-09-25 19:25:51 +02:00
4731afefb8
continue drafting the Player control elements -- life timevalue changes
2011-09-25 19:25:50 +02:00
c091b8e260
define Player / Output subsystem stub
2011-09-25 19:25:50 +02:00
20f95ca26f
draft the player facade interface
2011-09-25 19:25:50 +02:00
cb6453afe1
detailed planning how to build the player subsystem
...
key idea is to grow and rework the design of the
DummyPlayer to yield the full featured Player
2011-09-25 19:25:49 +02:00
899ffa60ca
WIP create (planned) new entities for the player subsystem
2011-09-25 19:25:49 +02:00
4a53ef4cd0
Clean-up: change some long standing TODOs into tickets
...
makes the test logs way more readable
Believe me: no one will ever notice a "TODO"
entry in the logs, when it showed up for
more than some months.
Thus I've created some new tickets, mostly
tagged as "QA" and placed the ticket number
at the corresponding locations in the source
2011-09-25 19:16:33 +02:00
Stefan Kangas
e34bb5ead1
Fix autotool build again, still fails on setup.ini
2011-09-15 04:35:08 +02:00
e103b4d8aa
SCons: fix error in linking executables
...
a long standing error, uncovered recently due to more stringent
checks of the linker on newer platforms, not picking up direct
dependencies of an executable transitively from the linked-to
dynamic libs (which is fine).
The error was to *overwrite* the LIBS construction variable
in the definition of the executable to link, instead of just
adding our dynamic links to the sources to be linked.
2011-07-25 00:36:53 +02:00
49d5a9592a
Fix drop-frame: remove float framerate
2011-05-21 07:09:22 +02:00
36cfaaa14d
REVERT tmpbuf implementation to the state of July.2010 ( bc989dab)
...
The new implementation provides differentiated buffers,
but is still buggy and causes double free alarms on shutdown
See Ticket #683
2011-05-21 06:52:39 +02:00
2dde33ec42
remove unecessary double calls to lumiera_config_destroy()
...
config system is initialised and closed automatically
2011-05-21 06:52:25 +02:00
1aafb07a43
fix remaining issues turned up by switching the time handling
2011-05-20 03:39:07 +02:00
51fa9fe735
MediaFactory now using MediaAccessFacade to determine media Duration
2011-05-20 02:59:29 +02:00
12f43078a2
fix some names
2011-05-20 02:17:20 +02:00
4b4fcb0c80
use (and verify) this with the MediaAccessMock_test
2011-05-20 02:02:14 +02:00
e5e6264493
technique to install a mock service temporarily
2011-05-19 23:21:50 +02:00
a207a9f003
adapt Media-Access (+Mock) to include an overall Duration
2011-05-18 01:37:33 +02:00
7656e5d500
adapt GUI to use the new Time framework
2011-05-16 08:38:01 +02:00
042598f04c
adapt Core + Proc to use the new Time framework
2011-05-16 08:37:36 +02:00
ef126283eb
add symbolic constant for "neutral" time.
...
Note: it's rather arbitrary choosen,
because any time grid can define its own origin.
You must not assume that the origin of any time axis
is located at Time::ZERO !!
2011-05-16 04:37:03 +02:00
481875a78a
add check for time point contained in TimeSpan
2011-05-16 04:02:26 +02:00
b9861ef88f
WIP completely remove the old Time wrapper
2011-05-15 22:51:02 +02:00
ee5c9910e1
dry-run: switch the lumitime-test.cpp to use the new Time framework
2011-05-15 22:10:26 +02:00
99bf3c6d81
join with latest work on timecodes and frame quantisation
...
Merge branch 'timequant' into gui
2011-05-15 04:28:20 +02:00
4bf53bba0f
code unit test to demonstrate full time/timecode usage cycle
2011-05-15 04:19:27 +02:00
f85c86d6c8
parsing fractional seconds: unit test pass
2011-05-15 04:19:27 +02:00
c7bb7154a7
draft a test to cover parsing of timecode values
2011-05-15 04:19:27 +02:00
6b1b6cb805
draft how to integrate parsing of timecode formats
2011-05-15 04:19:27 +02:00
3139fb7f1e
more 64/32bit fun
2011-05-15 04:19:27 +02:00
10215948a5
Fix another 64/32bit loss-of-precision problem
2011-05-15 04:19:26 +02:00
ccd40c3fee
better use a dedicated 'materialise' operation on the Quantiser
2011-05-15 04:19:26 +02:00
80f7dba334
WIP some comments and considerations
2011-05-15 04:19:26 +02:00
11137f7634
provide implementation of the nudge-Mutation
2011-05-15 04:19:26 +02:00
af1561068e
definitions and stubs to make it compile
2011-05-15 04:19:26 +02:00
bf61ff7248
WIP test-driven brainstorming: nudge by grid
2011-05-15 04:19:26 +02:00
2035405251
add time Mutation to adjust by offset
2011-05-15 04:19:26 +02:00
baf601c16b
first time mutation test cases pass
2011-05-15 04:19:25 +02:00
5851332628
back to business: now able to implement time mutation messages
2011-05-15 04:19:25 +02:00
6fa11ffcf6
special case: support cloning, but not copy
...
needed to add yet another policy template,
so PolymorphicValue doesn't invoke the
assignment operator in such cases
2011-05-15 04:19:25 +02:00
6daf14211b
Finish the PolymorphicValue support template
2011-05-15 04:19:25 +02:00
710ae8fa0f
Allow for improved performance in special cases
...
Using a policy based switch in case the client
interface collaborates and provides copy operations;
in this case, a direct static downcast instead of
the expensive indirect (dynamic) cast to the
management interface can be employed.
2011-05-15 04:19:25 +02:00
9aa601d004
WIP first implementation version of PolymorphicValue holder template
2011-05-15 04:19:25 +02:00
eb733df1bb
proof-of-concept: implement simple mutation
2011-05-15 04:19:24 +02:00
4d6bb3d54c
design outline for a limited time::Mutation capability
2011-05-15 04:19:24 +02:00
9364d717b0
implement total order on time intervals
2011-05-15 04:19:24 +02:00
9eb4f66372
draft more convenience handling for TimeSpan
2011-05-15 04:19:24 +02:00
eafbd4b1cb
fix a comment
2011-05-15 04:19:22 +02:00
Christian Thaeter
d4bb6cc906
fnv hash functions and tools
2011-04-29 04:04:01 +02:00
Christian Thaeter
e6cc7d3f99
WIP: autotools catchup, make it build again
...
Lumiera builds again, but some tests are missing and the new setup.ini
isn't loaded correctly which makes the plugin loader fail.
2011-04-28 13:14:29 +02:00
1e1c3706dc
update some DIR_INFO entries
2011-04-05 00:44:30 +02:00
b843546922
cumulated build/release fixes
...
up to corresponding debian/0.pre.01-3
- compile issue (digxel.hpp)
- SCons missing config dependency on test-only
- 32/64bit fixes
2011-03-31 18:43:50 +02:00
dca5b81710
Fix: problems whith bare $ORIGIN without relative dir
...
actually the iterator was written quite contrieved;
now doing the token replacement as a separate first
step -- makes matters way simpler
2011-02-15 00:16:50 +01:00
aef929b3d9
better install the setup.ini direcly into $ORIGIN
...
seems to be the most obvious location to install it
2011-02-14 23:54:31 +01:00
cef1ff3dcc
Fix: extract empty path relative to $ORIGIN
2011-02-14 23:54:30 +01:00