diff --git a/Resources/oscilloscope/empty.jpg b/Resources/oscilloscope/empty.jpg
index 51952db..49d2e17 100644
Binary files a/Resources/oscilloscope/empty.jpg and b/Resources/oscilloscope/empty.jpg differ
diff --git a/Resources/oscilloscope/no_reflection.jpg b/Resources/oscilloscope/no_reflection.jpg
index e83a073..c7904e2 100644
Binary files a/Resources/oscilloscope/no_reflection.jpg and b/Resources/oscilloscope/no_reflection.jpg differ
diff --git a/Resources/oscilloscope/noise.jpg b/Resources/oscilloscope/noise.jpg
index 7df423f..ef00989 100644
Binary files a/Resources/oscilloscope/noise.jpg and b/Resources/oscilloscope/noise.jpg differ
diff --git a/Resources/oscilloscope/real.jpg b/Resources/oscilloscope/real.jpg
deleted file mode 100644
index b961a43..0000000
Binary files a/Resources/oscilloscope/real.jpg and /dev/null differ
diff --git a/Resources/oscilloscope/real.png b/Resources/oscilloscope/real.png
new file mode 100644
index 0000000..f7cf7af
Binary files /dev/null and b/Resources/oscilloscope/real.png differ
diff --git a/Resources/oscilloscope/real_reflection.jpg b/Resources/oscilloscope/real_reflection.jpg
deleted file mode 100644
index b0199ef..0000000
Binary files a/Resources/oscilloscope/real_reflection.jpg and /dev/null differ
diff --git a/Resources/oscilloscope/real_reflection.png b/Resources/oscilloscope/real_reflection.png
new file mode 100644
index 0000000..97144aa
Binary files /dev/null and b/Resources/oscilloscope/real_reflection.png differ
diff --git a/Resources/oscilloscope/vector_display.jpg b/Resources/oscilloscope/vector_display.jpg
deleted file mode 100644
index 12f1c6a..0000000
Binary files a/Resources/oscilloscope/vector_display.jpg and /dev/null differ
diff --git a/Resources/oscilloscope/vector_display.png b/Resources/oscilloscope/vector_display.png
new file mode 100644
index 0000000..7be1c01
Binary files /dev/null and b/Resources/oscilloscope/vector_display.png differ
diff --git a/Resources/oscilloscope/vector_display_reflection.jpg b/Resources/oscilloscope/vector_display_reflection.jpg
deleted file mode 100644
index 66028f4..0000000
Binary files a/Resources/oscilloscope/vector_display_reflection.jpg and /dev/null differ
diff --git a/Resources/oscilloscope/vector_display_reflection.png b/Resources/oscilloscope/vector_display_reflection.png
new file mode 100644
index 0000000..15e3b46
Binary files /dev/null and b/Resources/oscilloscope/vector_display_reflection.png differ
diff --git a/Source/visualiser/RecordingSettings.h b/Source/visualiser/RecordingSettings.h
index 9919c48..bca706d 100644
--- a/Source/visualiser/RecordingSettings.h
+++ b/Source/visualiser/RecordingSettings.h
@@ -95,6 +95,14 @@ public:
// not supported by all media players)
return 50 * (1.0 - quality) + 1;
}
+
+ int getVideoToolboxQuality() {
+ if (parameters.losslessVideo.getBoolValue()) {
+ return 100;
+ }
+ double quality = juce::jlimit(0.0, 1.0, parameters.qualityEffect.getValue());
+ return 100 * quality;
+ }
bool recordingVideo() {
return parameters.recordVideo.getBoolValue();
diff --git a/Source/visualiser/VisualiserComponent.cpp b/Source/visualiser/VisualiserComponent.cpp
index 8d2fdab..25b5e67 100644
--- a/Source/visualiser/VisualiserComponent.cpp
+++ b/Source/visualiser/VisualiserComponent.cpp
@@ -421,6 +421,14 @@ void VisualiserComponent::setRecording(bool recording) {
" -y" +
" -pix_fmt yuv420p" +
" -crf " + juce::String(recordingSettings.getCRF()) +
+#if JUCE_MAC
+ #if JUCE_ARM
+ // use software encoding on Apple Silicon
+ " -c:v hevc_videotoolbox" +
+ " -q:v " + juce::String(recordingSettings.getVideoToolboxQuality()) +
+ " -tag:v hvc1" +
+ #endif
+#endif
" -vf vflip" +
" \"" + tempVideoFile->getFile().getFullPathName() + "\"";
@@ -821,12 +829,12 @@ void VisualiserComponent::setupTextures() {
glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer);
// Create textures
- lineTexture = makeTexture(1024, 1024);
+ lineTexture = makeTexture(2048, 2048);
blur1Texture = makeTexture(512, 512);
blur2Texture = makeTexture(512, 512);
blur3Texture = makeTexture(128, 128);
blur4Texture = makeTexture(128, 128);
- renderTexture = makeTexture(1024, 1024);
+ renderTexture = makeTexture(2048, 2048);
screenOpenGLTexture.loadImage(emptyScreenImage);
screenTexture = { screenOpenGLTexture.getTextureID(), screenTextureImage.getWidth(), screenTextureImage.getHeight() };
@@ -1072,7 +1080,7 @@ void VisualiserComponent::drawCRT() {
activateTargetTexture(blur1Texture);
setShader(texturedShader.get());
- texturedShader->setUniform("uResizeForCanvas", lineTexture.width / 1024.0f);
+ texturedShader->setUniform("uResizeForCanvas", lineTexture.width / 2048.0f);
drawTexture({lineTexture});
//horizontal blur 512x512
@@ -1131,7 +1139,7 @@ void VisualiserComponent::drawCRT() {
outputShader->setUniform("uFishEye", screenOverlay == ScreenOverlay::VectorDisplay ? VECTOR_DISPLAY_FISH_EYE : 0.0f);
outputShader->setUniform("uRealScreen", settings.parameters.screenOverlay->isRealisticDisplay() ? 1.0f : 0.0f);
#endif
- outputShader->setUniform("uResizeForCanvas", lineTexture.width / 1024.0f);
+ outputShader->setUniform("uResizeForCanvas", lineTexture.width / 2048.0f);
juce::Colour colour = juce::Colour::fromHSV(settings.getHue() / 360.0f, 1.0, 1.0, 1.0);
outputShader->setUniform("uColour", colour.getFloatRed(), colour.getFloatGreen(), colour.getFloatBlue());
drawTexture({
@@ -1250,7 +1258,7 @@ Texture VisualiserComponent::createScreenTexture() {
glVertexAttribPointer(glGetAttribLocation(simpleShader->getProgramID(), "vertexPosition"), 2, GL_FLOAT, GL_FALSE, 0, nullptr);
glBindBuffer(GL_ARRAY_BUFFER, 0);
simpleShader->setUniform("colour", 0.01f, 0.05f, 0.01f, 1.0f);
- glLineWidth(2.0f);
+ glLineWidth(4.0f);
glDrawArrays(GL_LINES, 0, data.size() / 2);
glBindTexture(GL_TEXTURE_2D, targetTexture.value().id);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
diff --git a/Source/visualiser/VisualiserComponent.h b/Source/visualiser/VisualiserComponent.h
index 70ea65c..878041d 100644
--- a/Source/visualiser/VisualiserComponent.h
+++ b/Source/visualiser/VisualiserComponent.h
@@ -209,12 +209,12 @@ private:
juce::Image emptyScreenImage = juce::ImageFileFormat::loadFrom(BinaryData::empty_jpg, BinaryData::empty_jpgSize);
#if SOSCI_FEATURES
- juce::Image oscilloscopeImage = juce::ImageFileFormat::loadFrom(BinaryData::real_jpg, BinaryData::real_jpgSize);
- juce::Image vectorDisplayImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_jpg, BinaryData::vector_display_jpgSize);
+ juce::Image oscilloscopeImage = juce::ImageFileFormat::loadFrom(BinaryData::real_png, BinaryData::real_pngSize);
+ juce::Image vectorDisplayImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_png, BinaryData::vector_display_pngSize);
juce::Image emptyReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::no_reflection_jpg, BinaryData::no_reflection_jpgSize);
- juce::Image oscilloscopeReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::real_reflection_jpg, BinaryData::real_reflection_jpgSize);
- juce::Image vectorDisplayReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_reflection_jpg, BinaryData::vector_display_reflection_jpgSize);
+ juce::Image oscilloscopeReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::real_reflection_png, BinaryData::real_reflection_pngSize);
+ juce::Image vectorDisplayReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_reflection_png, BinaryData::vector_display_reflection_pngSize);
OsciPoint REAL_SCREEN_OFFSET = { 0.02, -0.15 };
OsciPoint REAL_SCREEN_SCALE = { 0.6 };
diff --git a/osci-render.jucer b/osci-render.jucer
index 36f3f2c..85c4e9d 100644
--- a/osci-render.jucer
+++ b/osci-render.jucer
@@ -37,13 +37,13 @@
-
-
-
-
+
+
+
+
diff --git a/sosci.jucer b/sosci.jucer
index 57a5126..c703378 100644
--- a/sosci.jucer
+++ b/sosci.jucer
@@ -32,13 +32,13 @@
-
-
-
-
+
+
+
+