Allow for custom syphon/spout server names

pull/278/head
James H Ball 2025-01-12 20:39:20 +00:00
rodzic 64e7208fee
commit 24d5997ed0
4 zmienionych plików z 33 dodań i 5 usunięć

Wyświetl plik

@ -43,8 +43,8 @@ CommonPluginEditor::CommonPluginEditor(CommonAudioProcessor& p, juce::String app
visualiserSettings.setColour(juce::ResizableWindow::backgroundColourId, Colours::dark);
recordingSettings.setLookAndFeel(&getLookAndFeel());
recordingSettings.setSize(300, 200);
recordingSettingsWindow.centreWithSize(300, 230);
recordingSettings.setSize(350, 230);
recordingSettingsWindow.centreWithSize(350, 260);
#if JUCE_WINDOWS
// if not standalone, use native title bar for compatibility with DAWs
recordingSettingsWindow.setUsingNativeTitleBar(processor.wrapperType == juce::AudioProcessor::WrapperType::wrapperType_Standalone);

Wyświetl plik

@ -11,6 +11,8 @@ RecordingSettings::RecordingSettings(RecordingParameters& ps) : parameters(ps) {
addAndMakeVisible(recordVideo);
addAndMakeVisible(compressionPreset);
addAndMakeVisible(compressionPresetLabel);
addAndMakeVisible(customSharedTextureOutputLabel);
addAndMakeVisible(customSharedTextureOutputEditor);
quality.setSliderOnValueChange();
quality.setRangeEnabled(false);
@ -34,6 +36,12 @@ RecordingSettings::RecordingSettings(RecordingParameters& ps) : parameters(ps) {
compressionPreset.addItemList(parameters.compressionPresets, 1);
compressionPreset.setSelectedId(parameters.compressionPresets.indexOf(parameters.compressionPreset) + 1);
compressionPresetLabel.setTooltip("The compression preset to use when recording video. Slower presets will produce smaller files at the expense of encoding time.");
customSharedTextureOutputLabel.setTooltip("Custom name for when creating a new Syphon/Spout server. WARNING: You should not use the same name when running multiple servers at once!.");
customSharedTextureOutputEditor.setText(parameters.customSharedTextureServerName);
customSharedTextureOutputEditor.onTextChange = [this] {
parameters.customSharedTextureServerName = customSharedTextureOutputEditor.getText();
};
#else
addAndMakeVisible(recordVideoWarning);
addAndMakeVisible(sosciLink);
@ -61,8 +69,13 @@ void RecordingSettings::resized() {
recordAudio.setBounds(area.removeFromTop(rowHeight));
recordVideo.setBounds(area.removeFromTop(rowHeight));
auto row = area.removeFromTop(rowHeight);
compressionPresetLabel.setBounds(row.removeFromLeft(140));
compressionPreset.setBounds(row.removeFromRight(80));
compressionPresetLabel.setBounds(row.removeFromLeft(170));
compressionPreset.setBounds(row.removeFromRight(100));
area.removeFromTop(5);
row = area.removeFromTop(rowHeight);
customSharedTextureOutputLabel.setBounds(row.removeFromLeft(170));
customSharedTextureOutputEditor.setBounds(row.removeFromRight(100));
#else
recordVideoWarning.setBounds(area.removeFromTop(2 * rowHeight));
area.removeFromTop(rowHeight / 2);

Wyświetl plik

@ -45,6 +45,7 @@ public:
recordAudio.save(settingsXml->createNewChildElement("recordAudio"));
recordVideo.save(settingsXml->createNewChildElement("recordVideo"));
settingsXml->setAttribute("compressionPreset", compressionPreset);
settingsXml->setAttribute("customSharedTextureServerName", customSharedTextureServerName);
auto qualityXml = settingsXml->createNewChildElement("quality");
qualityEffect.save(qualityXml);
@ -65,6 +66,9 @@ public:
if (settingsXml->hasAttribute("compressionPreset")) {
compressionPreset = settingsXml->getStringAttribute("compressionPreset");
}
if (settingsXml->hasAttribute("customSharedTextureServerName")) {
customSharedTextureServerName = settingsXml->getStringAttribute("customSharedTextureServerName");
}
if (auto* qualityXml = settingsXml->getChildByName("quality")) {
qualityEffect.load(qualityXml);
}
@ -72,6 +76,7 @@ public:
}
juce::StringArray compressionPresets = { "ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow" };
juce::String customSharedTextureServerName = "";
};
class RecordingSettings : public juce::Component {
@ -102,6 +107,13 @@ public:
juce::String getCompressionPreset() {
return parameters.compressionPreset;
}
juce::String getCustomSharedTextureServerName() {
if (parameters.customSharedTextureServerName.isEmpty()) {
return "osci-render - " + juce::String(juce::Time::getCurrentTime().toMilliseconds());
}
return parameters.customSharedTextureServerName;
}
RecordingParameters& parameters;
@ -119,6 +131,9 @@ private:
juce::Label compressionPresetLabel{"Compression Speed", "Compression Speed"};
juce::ComboBox compressionPreset;
juce::Label customSharedTextureOutputLabel{"Custom Syphon/Spout Name", "Custom Syphon/Spout Name"};
juce::TextEditor customSharedTextureOutputEditor{"customSharedTextureOutputEditor"};
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RecordingSettings)
};

Wyświetl plik

@ -598,7 +598,7 @@ void VisualiserComponent::childUpdated() {
#if SOSCI_FEATURES
void VisualiserComponent::initialiseSharedTexture() {
sharedTextureSender = sharedTextureManager.addSender("osci-render - " + juce::String(juce::Time::getCurrentTime().toMilliseconds()), renderTexture.width, renderTexture.height);
sharedTextureSender = sharedTextureManager.addSender(recordingSettings.getCustomSharedTextureServerName(), renderTexture.width, renderTexture.height);
sharedTextureSender->initGL();
sharedTextureSender->setSharedTextureId(renderTexture.id);
sharedTextureSender->setDrawFunction([this] {