tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_EditClipRenderJob.h
Go to the documentation of this file.
1 /*
2 ,--. ,--. ,--. ,--.
3 ,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4 '-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5 | | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6 `---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8 Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9*/
10
11namespace tracktion { inline namespace engine
12{
13
14//==============================================================================
17class EditRenderJob : public RenderManager::Job
18{
19public:
20 //==============================================================================
28 static Ptr getOrCreateRenderJob (Engine&, Renderer::Parameters&, bool deleteEdit,
29 bool silenceOnBackup, bool reverse);
30
34 static Ptr getOrCreateRenderJob (Engine&, const AudioFile& destFile, const RenderOptions&, ProjectItemID itemID,
35 bool silenceOnBackup, bool reverse);
36
37 //==============================================================================
39 ~EditRenderJob() override;
40
42 const Renderer::Parameters& getParams() const noexcept { return params; }
43
48 juce::AudioThumbnail& getAudioThumbnail() { return thumbnailToUpdate; }
49
54 bool isMidi() const noexcept { return params.createMidiFile; }
55
57 Renderer::RenderResult& getResult() { return result; }
58
59 juce::String getLastError() const;
60
61protected:
62 //==============================================================================
63 bool setUpRender() override;
64 bool renderNextBlock() override;
65 bool completeRender() override;
66 void setLastError (const juce::String&);
67
68private:
69 //==============================================================================
70 struct RenderPass
71 {
72 RenderPass (EditRenderJob&, Renderer::Parameters&, const juce::String& description);
73 ~RenderPass();
74
75 bool initialise();
76
77 EditRenderJob& owner;
79 const juce::String desc;
80 ProjectItem::Category originalCategory;
81 juce::TemporaryFile tempFile;
83 };
84
85 RenderOptions renderOptions;
86 const ProjectItemID itemID;
87
88 Renderer::Parameters params;
92 bool silenceOnBackup, reverse;
93 Renderer::RenderResult result;
94
95 juce::String lastError;
96 juce::CriticalSection errorLock;
97
98 juce::AudioThumbnail thumbnailToUpdate;
99
100 void renderSeparateTracks();
101 bool generateSilence (const juce::File& fileToWriteTo);
102
103 //==============================================================================
104 EditRenderJob (Engine&, const Renderer::Parameters&, bool deleteEdit, bool silenceOnBackup, bool reverse);
105
106 EditRenderJob (Engine&, const AudioFile& destFile, const RenderOptions&, ProjectItemID itemID,
107 bool silenceOnBackup, bool reverse);
108
109 //==============================================================================
111};
112
113}} // namespace tracktion { inline namespace engine
bool renderNextBlock() override
During a render process this will be repeatedly called.
const Renderer::Parameters & getParams() const noexcept
Returns the parameters in use for this job.
bool setUpRender() override
Subclasses should override this to set-up their render process.
juce::AudioThumbnail & getAudioThumbnail()
Returns an audio thumbnail that will be updated with the progress of the render operation.
Renderer::RenderResult & getResult()
Returns the result of this render.
bool completeRender() override
This is called once after all the render blocks have completed.
bool isMidi() const noexcept
Returns true if this job is rendering MIDI.
static Ptr getOrCreateRenderJob(Engine &, Renderer::Parameters &, bool deleteEdit, bool silenceOnBackup, bool reverse)
Returns a job that will have been started to generate the Render described by the params.
The Engine is the central class for all tracktion sessions.
An ID representing one of the items in a Project.
Represents a set of user properties used to control a render operation, using a ValueTree to hold the...
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)