diff options
Diffstat (limited to 'multimedia/libopenshot/files')
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()); + } + |