aboutsummaryrefslogtreecommitdiff
path: root/multimedia/libopenshot/files
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/libopenshot/files')
-rw-r--r--multimedia/libopenshot/files/patch-CMakeLists.txt17
-rw-r--r--multimedia/libopenshot/files/patch-src_CMakeLists.txt24
-rw-r--r--multimedia/libopenshot/files/patch-src_FFmpegWriter.cpp4
-rw-r--r--multimedia/libopenshot/files/patch-src_KeyFrame.cpp309
-rw-r--r--multimedia/libopenshot/files/patch-src_KeyFrame.h31
-rw-r--r--multimedia/libopenshot/files/patch-src_Qt_AudioPlaybackThread.cpp22
-rw-r--r--multimedia/libopenshot/files/patch-src_ZmqLogger.cpp20
7 files changed, 64 insertions, 363 deletions
diff --git a/multimedia/libopenshot/files/patch-CMakeLists.txt b/multimedia/libopenshot/files/patch-CMakeLists.txt
index 89ecc6dc4437..1c523fc742a8 100644
--- a/multimedia/libopenshot/files/patch-CMakeLists.txt
+++ b/multimedia/libopenshot/files/patch-CMakeLists.txt
@@ -1,15 +1,6 @@
---- CMakeLists.txt.orig 2023-04-19 22:01:02 UTC
+--- CMakeLists.txt.orig 2024-12-21 22:27:30 UTC
+++ CMakeLists.txt
-@@ -102,7 +102,7 @@ if ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") AND
- endif()
-
- #### Set C++ standard level
--set(CMAKE_CXX_STANDARD 14)
-+set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
-
-@@ -135,7 +135,7 @@ endif()
+@@ -130,7 +130,7 @@ add_subdirectory(src)
### Process subdirectories
###
add_subdirectory(src)
@@ -18,7 +9,7 @@
add_subdirectory(bindings)
###
-@@ -193,6 +193,8 @@ if (ENABLE_LIB_DOCS AND CMAKE_VERSION VERSION_GREATER
+@@ -188,6 +188,8 @@ if (ENABLE_LIB_DOCS AND CMAKE_VERSION VERSION_GREATER
set(DOXYGEN_INTERACTIVE_SVG YES)
set(DOXYGEN_DOT_TRANSPARENT YES)
@@ -27,7 +18,7 @@
doxygen_add_docs(${PROJECT_NAME}-doc
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/doc
-@@ -213,7 +215,7 @@ if (TARGET ${PROJECT_NAME}-doc)
+@@ -208,7 +210,7 @@ if (TARGET ${PROJECT_NAME}-doc)
OPTIONAL ) # No error if the docs aren't found
if(NOT TARGET doc)
diff --git a/multimedia/libopenshot/files/patch-src_CMakeLists.txt b/multimedia/libopenshot/files/patch-src_CMakeLists.txt
index c94d5a8ab374..f50aa9b79f09 100644
--- a/multimedia/libopenshot/files/patch-src_CMakeLists.txt
+++ b/multimedia/libopenshot/files/patch-src_CMakeLists.txt
@@ -1,20 +1,28 @@
--- src/CMakeLists.txt.orig 2023-03-27 18:48:43 UTC
+++ src/CMakeLists.txt
-@@ -516,6 +516,18 @@ See https://github.com/opencv/opencv/issues/19260]])
+@@ -516,6 +516,26 @@ See https://github.com/opencv/opencv/issues/19260]])
endif() # ENABLE_OPENCV
add_feature_info("OpenCV algorithms" ENABLE_OPENCV "Use OpenCV algorithms")
-+# EXECINFO
++#
+include(CheckFunctionExists)
-+check_function_exists("backtrace" FUNCTION_BACKTRACE_FOUND)
++include(CheckLibraryExists)
++
++# EXECINFO
++check_function_exists(backtrace FUNCTION_BACKTRACE_FOUND)
+if(NOT FUNCTION_BACKTRACE_FOUND)
+ find_library(EXECINFO_LIBRARY NAMES execinfo)
-+ if(NOT EXECINFO_LIBRARY)
-+ message(FATAL_ERROR "${EXECINFO_LIBRARY}")
-+ endif(NOT EXECINFO_LIBRARY)
-+ target_link_libraries(openshot PRIVATE ${EXECINFO_LIBRARY})
++ if(EXECINFO_LIBRARY)
++ unset(FUNCTION_BACKTRACE_FOUND CACHE)
++ check_library_exists(${EXECINFO_LIBRARY} backtrace "" FUNCTION_BACKTRACE_FOUND)
++ endif(EXECINFO_LIBRARY)
+endif(NOT FUNCTION_BACKTRACE_FOUND)
-+unset(FUNCTION_BACKTRACE_FOUND)
++if(NOT FUNCTION_BACKTRACE_FOUND)
++ message(FATAL_ERROR "backtrace - ${FUNCTION_BACKTRACE_FOUND}")
++endif(NOT FUNCTION_BACKTRACE_FOUND)
++if(EXECINFO_LIBRARY)
++ target_link_libraries(openshot PRIVATE ${EXECINFO_LIBRARY})
++endif(EXECINFO_LIBRARY)
+
############### LINK LIBRARY #################
# Link remaining dependency libraries
diff --git a/multimedia/libopenshot/files/patch-src_FFmpegWriter.cpp b/multimedia/libopenshot/files/patch-src_FFmpegWriter.cpp
index 369816073bd3..825de6eb04b3 100644
--- a/multimedia/libopenshot/files/patch-src_FFmpegWriter.cpp
+++ b/multimedia/libopenshot/files/patch-src_FFmpegWriter.cpp
@@ -1,4 +1,4 @@
---- src/FFmpegWriter.cpp.orig 2023-03-27 18:48:43 UTC
+--- src/FFmpegWriter.cpp.orig 2024-06-20 01:25:10 UTC
+++ src/FFmpegWriter.cpp
@@ -166,7 +166,7 @@ void FFmpegWriter::SetVideoOptions(bool has_video, std
const AVCodec *new_codec;
@@ -35,7 +35,7 @@
}
#endif // FFmpeg 4.0+
} else {
-@@ -1470,21 +1473,25 @@ void FFmpegWriter::open_video(AVFormatContext *oc, AVS
+@@ -1434,21 +1437,25 @@ void FFmpegWriter::open_video(AVFormatContext *oc, AVS
adapter_num = openshot::Settings::Instance()->HW_EN_DEVICE_SET;
std::clog << "Encoding Device Nr: " << adapter_num << "\n";
if (adapter_num < 3 && adapter_num >=0) {
diff --git a/multimedia/libopenshot/files/patch-src_KeyFrame.cpp b/multimedia/libopenshot/files/patch-src_KeyFrame.cpp
deleted file mode 100644
index 8a8b80337b50..000000000000
--- a/multimedia/libopenshot/files/patch-src_KeyFrame.cpp
+++ /dev/null
@@ -1,309 +0,0 @@
---- src/KeyFrame.cpp.orig 2023-04-19 22:01:02 UTC
-+++ src/KeyFrame.cpp
-@@ -15,12 +15,12 @@
-
- #include <algorithm> // For std::lower_bound, std::move_backward
- #include <functional> // For std::less, std::less_equal, etc…
--#include <utility> // For std::swap
--#include <numeric> // For std::accumulate
--#include <cassert> // For assert()
--#include <cmath> // For fabs, round
--#include <iostream> // For std::cout
--#include <iomanip> // For std::setprecision
-+#include <utility> // For std::swap
-+#include <numeric> // For std::accumulate
-+#include <cassert> // For assert()
-+#include <cmath> // For fabs, round
-+#include <iostream> // For std::cout
-+#include <iomanip> // For std::setprecision
-
- using namespace std;
- using namespace openshot;
-@@ -122,8 +122,8 @@ Keyframe::Keyframe(const std::vector<openshot::Point>&
-
- // Destructor
- Keyframe::~Keyframe() {
-- Points.clear();
-- Points.shrink_to_fit();
-+ Points.clear();
-+ Points.shrink_to_fit();
- }
-
- // Add a new point on the key-frame. Each point has a primary coordinate,
-@@ -291,41 +291,27 @@ int64_t Keyframe::GetLong(int64_t index) const {
- // Get the direction of the curve at a specific index (increasing or decreasing)
- bool Keyframe::IsIncreasing(int index) const
- {
-- if (index <= 1) {
-- // Determine direction of frame 1 (and assume previous frames have same direction)
-- index = 1;
-- } else if (index >= GetLength()) {
-- // Determine direction of last valid frame # (and assume next frames have same direction)
-- index = GetLength() - 1;
-+ if (index < 1 || (index + 1) >= GetLength()) {
-+ return true;
- }
--
-- // Get current index value
-- const double current_value = GetValue(index);
--
-- // Iterate from current index to next significant value change
-- int attempts = 1;
-- while (attempts < 600 && index + attempts <= GetLength()) {
-- // Get next value
-- const double next_value = GetValue(index + attempts);
--
-- // Is value significantly different
-- const double diff = next_value - current_value;
-- if (fabs(diff) > 0.0001) {
-- if (diff < 0.0) {
-- // Decreasing value found next
-- return false;
-- } else {
-- // Increasing value found next
-- return true;
-- }
-- }
--
-- // increment attempt
-- attempts++;
-+ std::vector<Point>::const_iterator candidate =
-+ std::lower_bound(begin(Points), end(Points), static_cast<double>(index), IsPointBeforeX);
-+ if (candidate == end(Points)) {
-+ return false; // After the last point, thus constant.
- }
--
-- // If no next value found, assume increasing values
-- return true;
-+ if ((candidate->co.X == index) || (candidate == begin(Points))) {
-+ ++candidate;
-+ }
-+ int64_t const value = GetLong(index);
-+ do {
-+ if (value < round(candidate->co.Y)) {
-+ return true;
-+ } else if (value > round(candidate->co.Y)) {
-+ return false;
-+ }
-+ ++candidate;
-+ } while (candidate != end(Points));
-+ return false;
- }
-
- // Generate JSON string of this object
-@@ -388,12 +374,116 @@ void Keyframe::SetJsonValue(const Json::Value root) {
- }
- }
-
-+// Get the fraction that represents how many times this value is repeated in the curve
-+// This is depreciated and will be removed soon.
-+Fraction Keyframe::GetRepeatFraction(int64_t index) const {
-+ // Frame numbers (index) outside of the "defined" range of this
-+ // keyframe result in a 1/1 default value.
-+ if (index < 1 || (index + 1) >= GetLength()) {
-+ return Fraction(1,1);
-+ }
-+ assert(Points.size() > 1); // Due to ! ((index + 1) >= GetLength) there are at least two points!
-+
-+ // First, get the value at the given frame and the closest point
-+ // to the right.
-+ int64_t const current_value = GetLong(index);
-+ std::vector<Point>::const_iterator const candidate =
-+ std::lower_bound(begin(Points), end(Points), static_cast<double>(index), IsPointBeforeX);
-+ assert(candidate != end(Points)); // Due to the (index + 1) >= GetLength check above!
-+
-+ // Calculate how many of the next values are going to be the same:
-+ int64_t next_repeats = 0;
-+ std::vector<Point>::const_iterator i = candidate;
-+ // If the index (frame number) is the X coordinate of the closest
-+ // point, then look at the segment to the right; the "current"
-+ // segement is not interesting because we're already at the last
-+ // value of it.
-+ if (i->co.X == index) {
-+ ++i;
-+ }
-+ // Skip over "constant" (when rounded) segments.
-+ bool all_constant = true;
-+ for (; i != end(Points); ++i) {
-+ if (current_value != round(i->co.Y)) {
-+ all_constant = false;
-+ break;
-+ }
-+ }
-+ if (! all_constant) {
-+ // Found a point which defines a segment which will give a
-+ // different value than the current value. This means we
-+ // moved at least one segment to the right, thus we cannot be
-+ // at the first point.
-+ assert(i != begin(Points));
-+ Point const left = *(i - 1);
-+ Point const right = *i;
-+ int64_t change_at;
-+ if (current_value < round(i->co.Y)) {
-+ change_at = SearchBetweenPoints(left, right, current_value, std::less_equal<double>{});
-+ } else {
-+ assert(current_value > round(i->co.Y));
-+ change_at = SearchBetweenPoints(left, right, current_value, std::greater_equal<double>{});
-+ }
-+ next_repeats = change_at - index;
-+ } else {
-+ // All values to the right are the same!
-+ next_repeats = Points.back().co.X - index;
-+ }
-+
-+ // Now look to the left, to the previous values.
-+ all_constant = true;
-+ i = candidate;
-+ if (i != begin(Points)) {
-+ // The binary search below assumes i to be the left point;
-+ // candidate is the right point of the current segment
-+ // though. So change this if possible. If this branch is NOT
-+ // taken, then we're at/before the first point and all is
-+ // constant!
-+ --i;
-+ }
-+ int64_t previous_repeats = 0;
-+ // Skip over constant (when rounded) segments!
-+ for (; i != begin(Points); --i) {
-+ if (current_value != round(i->co.Y)) {
-+ all_constant = false;
-+ break;
-+ }
-+ }
-+ // Special case when skipped until the first point, but the first
-+ // point is actually different. Will not happen if index is
-+ // before the first point!
-+ if (current_value != round(i->co.Y)) {
-+ assert(i != candidate);
-+ all_constant = false;
-+ }
-+ if (! all_constant) {
-+ // There are at least two points, and we're not at the end,
-+ // thus the following is safe!
-+ Point const left = *i;
-+ Point const right = *(i + 1);
-+ int64_t change_at;
-+ if (current_value > round(left.co.Y)) {
-+ change_at = SearchBetweenPoints(left, right, current_value, std::less<double>{});
-+ } else {
-+ assert(current_value < round(left.co.Y));
-+ change_at = SearchBetweenPoints(left, right, current_value, std::greater<double>{});
-+ }
-+ previous_repeats = index - change_at;
-+ } else {
-+ // Every previous value is the same (rounded) as the current
-+ // value.
-+ previous_repeats = index;
-+ }
-+ int64_t total_repeats = previous_repeats + next_repeats;
-+ return Fraction(previous_repeats, total_repeats);
-+}
-+
- // Get the change in Y value (from the previous Y value)
- double Keyframe::GetDelta(int64_t index) const {
-- if (index < 1) return 0.0;
-- if (index == 1 && !Points.empty()) return Points[0].co.Y;
-- if (index >= GetLength()) return 0.0;
-- return GetValue(index) - GetValue(index - 1);
-+ if (index < 1) return 0;
-+ if (index == 1 && ! Points.empty()) return Points[0].co.Y;
-+ if (index >= GetLength()) return 0;
-+ return GetLong(index) - GetLong(index - 1);
- }
-
- // Get a point at a specific index
-@@ -410,7 +500,7 @@ Point const & Keyframe::GetPoint(int64_t index) const
- int64_t Keyframe::GetLength() const {
- if (Points.empty()) return 0;
- if (Points.size() == 1) return 1;
-- return round(Points.back().co.X);
-+ return round(Points.back().co.X) + 1;
- }
-
- // Get the number of points (i.e. # of points)
-@@ -461,46 +551,50 @@ void Keyframe::UpdatePoint(int64_t index, Point p) {
- }
-
- void Keyframe::PrintPoints(std::ostream* out) const {
-- *out << std::right << std::setprecision(4) << std::setfill(' ');
-- for (const auto& p : Points) {
-- *out << std::defaultfloat
-- << std::setw(6) << p.co.X
-- << std::setw(14) << std::fixed << p.co.Y
-- << '\n';
-- }
-- *out << std::flush;
-+ *out << std::right << std::setprecision(4) << std::setfill(' ');
-+ for (const auto& p : Points) {
-+ *out << std::defaultfloat
-+ << std::setw(6) << p.co.X
-+ << std::setw(14) << std::fixed << p.co.Y
-+ << '\n';
-+ }
-+ *out << std::flush;
- }
-
- void Keyframe::PrintValues(std::ostream* out) const {
-- // Column widths
-- std::vector<int> w{10, 12, 8, 11, 19};
-+ // Column widths
-+ std::vector<int> w{10, 12, 8, 11, 19};
-
-- *out << std::right << std::setfill(' ') << std::setprecision(4);
-- // Headings
-- *out << "│"
-- << std::setw(w[0]) << "Frame# (X)" << " │"
-- << std::setw(w[1]) << "Y Value" << " │"
-- << std::setw(w[2]) << "Delta Y" << " │ "
-- << std::setw(w[3]) << "Increasing?" << std::right
-- << "│\n";
-- // Divider
-- *out << "├───────────"
-- << "┼─────────────"
-- << "┼─────────"
-- << "┼────────────┤\n";
-+ *out << std::right << std::setfill(' ') << std::setprecision(4);
-+ // Headings
-+ *out << "│"
-+ << std::setw(w[0]) << "Frame# (X)" << " │"
-+ << std::setw(w[1]) << "Y Value" << " │"
-+ << std::setw(w[2]) << "Delta Y" << " │ "
-+ << std::setw(w[3]) << "Increasing?" << " │ "
-+ << std::setw(w[4]) << std::left << "Repeat Fraction" << std::right
-+ << "│\n";
-+ // Divider
-+ *out << "├───────────"
-+ << "┼─────────────"
-+ << "┼─────────"
-+ << "┼─────────────"
-+ << "┼────────────────────┤\n";
-
-- for (int64_t i = 1; i <= GetLength(); ++i) {
-- *out << "│"
-- << std::setw(w[0]-2) << std::defaultfloat << i
-- << (Contains(Point(i, 1)) ? " *" : " ") << " │"
-- << std::setw(w[1]) << std::fixed << GetValue(i) << " │"
-- << std::setw(w[2]) << std::defaultfloat << std::showpos
-- << GetDelta(i) << " │ " << std::noshowpos
-- << std::setw(w[3])
-- << (IsIncreasing(i) ? "true" : "false") << std::right << "│\n";
-- }
-- *out << " * = Keyframe point (non-interpolated)\n";
-- *out << std::flush;
-+ for (int64_t i = 1; i < GetLength(); ++i) {
-+ *out << "│"
-+ << std::setw(w[0]-2) << std::defaultfloat << i
-+ << (Contains(Point(i, 1)) ? " *" : " ") << " │"
-+ << std::setw(w[1]) << std::fixed << GetValue(i) << " │"
-+ << std::setw(w[2]) << std::defaultfloat << std::showpos
-+ << GetDelta(i) << " │ " << std::noshowpos
-+ << std::setw(w[3])
-+ << (IsIncreasing(i) ? "true" : "false") << " │ "
-+ << std::setw(w[4]) << std::left << GetRepeatFraction(i)
-+ << std::right << "│\n";
-+ }
-+ *out << " * = Keyframe point (non-interpolated)\n";
-+ *out << std::flush;
- }
-
-
diff --git a/multimedia/libopenshot/files/patch-src_KeyFrame.h b/multimedia/libopenshot/files/patch-src_KeyFrame.h
deleted file mode 100644
index 45aec4e0c498..000000000000
--- a/multimedia/libopenshot/files/patch-src_KeyFrame.h
+++ /dev/null
@@ -1,31 +0,0 @@
---- src/KeyFrame.h.orig 2023-04-19 22:01:02 UTC
-+++ src/KeyFrame.h
-@@ -16,6 +16,7 @@
- #include <iostream>
- #include <vector>
-
-+#include "Fraction.h"
- #include "Point.h"
- #include "Json.h"
-
-@@ -66,8 +67,8 @@ namespace openshot {
- /// Constructor which adds a supplied vector of Points
- Keyframe(const std::vector<openshot::Point>& points);
-
-- /// Destructor
-- ~Keyframe();
-+ /// Destructor
-+ ~Keyframe();
-
- /// Add a new point on the key-frame. Each point has a primary coordinate, a left handle, and a right handle.
- void AddPoint(Point p);
-@@ -92,6 +93,9 @@ namespace openshot {
-
- /// Get the rounded LONG value at a specific index
- int64_t GetLong(int64_t index) const;
-+
-+ /// Get the fraction that represents how many times this value is repeated in the curve
-+ Fraction GetRepeatFraction(int64_t index) const;
-
- /// Get the change in Y value (from the previous Y value)
- double GetDelta(int64_t index) const;
diff --git a/multimedia/libopenshot/files/patch-src_Qt_AudioPlaybackThread.cpp b/multimedia/libopenshot/files/patch-src_Qt_AudioPlaybackThread.cpp
new file mode 100644
index 000000000000..32d936aabd20
--- /dev/null
+++ b/multimedia/libopenshot/files/patch-src_Qt_AudioPlaybackThread.cpp
@@ -0,0 +1,22 @@
+--- src/Qt/AudioPlaybackThread.cpp.orig 2024-12-21 22:27:30 UTC
++++ src/Qt/AudioPlaybackThread.cpp
+@@ -111,8 +111,17 @@ namespace openshot
+
+ // Settings for audio device playback
+ AudioDeviceManager::AudioDeviceSetup deviceSetup = AudioDeviceManager::AudioDeviceSetup();
+- deviceSetup.inputChannels = 0;
+- deviceSetup.outputChannels = channels;
++ deviceSetup.outputDeviceName = attempt_device.name;
++ deviceSetup.inputDeviceName = "";
++ //deviceSetup.inputChannels = 0;
++ deviceSetup.inputChannels.clear();
++ deviceSetup.useDefaultInputChannels = false;
++ //deviceSetup.outputChannels = channels;
++ deviceSetup.outputChannels.clear();
++ for (int i = 0; i < channels; ++i) {
++ deviceSetup.outputChannels.setBit(i);
++ }
++ deviceSetup.useDefaultOutputChannels = false;
+ deviceSetup.bufferSize = Settings::Instance()->PLAYBACK_AUDIO_BUFFER_SIZE;
+
+ // Loop through common sample rates, starting with the user's requested rate
diff --git a/multimedia/libopenshot/files/patch-src_ZmqLogger.cpp b/multimedia/libopenshot/files/patch-src_ZmqLogger.cpp
new file mode 100644
index 000000000000..0bea39aece3c
--- /dev/null
+++ b/multimedia/libopenshot/files/patch-src_ZmqLogger.cpp
@@ -0,0 +1,20 @@
+--- src/ZmqLogger.cpp.orig 2024-06-20 01:25:10 UTC
++++ src/ZmqLogger.cpp
+@@ -44,7 +44,7 @@ ZmqLogger *ZmqLogger::Instance()
+ m_pInstance->connection = "";
+
+ // Default connection
+- m_pInstance->Connection("tcp://*:5556");
++ m_pInstance->Connection("tcp://localhost:5556");
+
+ // Init enabled to False (force user to call Enable())
+ m_pInstance->enabled = false;
+@@ -92,7 +92,7 @@ void ZmqLogger::Connection(std::string new_connection)
+
+ } catch (zmq::error_t &e) {
+ std::cout << "ZmqLogger::Connection - Error binding to " << connection << ". Switching to an available port." << std::endl;
+- connection = "tcp://*:*";
++ connection = "tcp://localhost:*";
+ publisher->bind(connection.c_str());
+ }
+