LUMIERA.clone/tests/core/steam/engine/test-rand-ontology.hpp
Ichthyostega ec0c14e129 Invocation: develop more complex text data manipulations
The overall goal is eventually to arrive at something akin to a ''»Dummy Media-processing Library«''
 * this will offer some „Functionality“
 * it will work on different ''kinds'' or ''flavours'' of data
 * it should provide operations that can be packaged into ''Nodes''

However — at the moment I have no clue how to get there...
And thus I'll start out with some rather obvious basic data manipulation functions,
and then try to give them meaningful names and descriptors. This in turn
will allow to build some multi-step processing netwaorks — which actually
is the near-term goal for the ''main effort'' (which is after all, to get
the Render Node code into some sufficient state of completion)...
2024-11-28 04:17:01 +01:00

97 lines
2.8 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
TEST-RAND-ONTOLOGY.hpp - placeholder for a domain-ontology working on dummy data frames
Copyright (C)
2024, Hermann Vosseler <Ichthyostega@web.de>
  **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 test-rand-ontology.hpp
** A faked »media calculation« environment to validate the render node network.
*/
#ifndef STEAM_ENGINE_TEST_RAND_ONTOLOGY_H
#define STEAM_ENGINE_TEST_RAND_ONTOLOGY_H
#include "lib/error.hpp"
#include "lib/depend.hpp"
#include "steam/engine/testframe.hpp"
#include <array>
#include <string>
namespace steam {
namespace engine{
namespace test {
using std::string;
/** produce sequences of frames with (reproducible) random data */
void generateFrame (TestFrame* buff, size_t frameNr =0, uint flavour =0);
/** produce planar multi channel output of random data frames */
void generateMultichan (TestFrame* buffArry, uint chanCnt, size_t frameNr =0, uint flavour =0);
/** create an identical clone copy of the planar multi channel frame array */
void duplicateMultichan (TestFrame* outArry, TestFrame* inArry, uint chanCnt);
/** »process« a planar multi channel array of data frames in-place */
void manipulateMultichan (TestFrame* buffArry, uint chanCnt, uint64_t param);
/** »process« random frame date by hash-chaining with a parameter */
void manipulateFrame (TestFrame* out, TestFrame const* in, uint64_t param);
/** mix two random data frames by a parameter-controlled proportion */
void combineFrames (TestFrame* out, TestFrame const* srcA, TestFrame const* srcB, double mix);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Dummy / Placeholder
using NoArg = std::array<char*, 0>;
using SoloArg = std::array<char*, 1>;
extern const string DUMMY_FUN_ID;
/** @todo a placeholder operation to wire a prototypical render node
*/
inline void
dummyOp (NoArg in, SoloArg out)
{
UNIMPLEMENTED ("a sincerely nonsensical operation");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Dummy / Placeholder
/**
* A fake _Domain Ontology_ to describe mocked »render operations« on
* dummy data frames filled with random numbers.
*
* @see TestFrame_test
* @see NodeDevel_test
* @see NodeLinkage_test
*
*/
class TestRandOntology
{
public:
~TestRandOntology() = default;
TestRandOntology() = default;
private:
};
/** */
}}} // namespace steam::engine::test
#endif