Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support for ftdi chip based LED-devices with ws2812, sk6812 apa102 LED types (Many thanks to @nurikk) (#1746)
- Support for Skydimo devices
- Support gaps on Matrix Layout (#1696)
- Support a configurable grabber inactive detection time interval (#1740)
- Windows: Added a new grabber that uses the DXGI DDA (Desktop Duplication API). This has much better performance than the DX grabber as it does more of its work on the GPU.

- Support to import, export and backup Hyperion's full configuration via the UI, JSON-API and commandline (`--importConfig, --exportConfig`) (#804)
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ endif()

# If Hyperion is deployed with all dependencies under Linux
# it is necessary to deactivate the linker option dtag
if(ENABLE_DEPLOY_DEPENDENCIES AND SYSTEM_MATCHES_LINUX)
if(ENABLE_DEPLOY_DEPENDENCIES AND UNIX AND NOT APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--disable-new-dtags")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--disable-new-dtags")
Expand Down
2 changes: 2 additions & 0 deletions assets/webconfig/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,8 @@
"edt_conf_instC_video_grabber_device_expl": "The video capture device used",
"edt_conf_instC_video_grabber_device_title": "Video capture device",
"edt_conf_instCapture_heading_title": "Capture Devices",
"edt_conf_instCapture_timeout_expl": "If no data are received for the given period, the component will be cleared as an input source.",
"edt_conf_instCapture_timeout_title": "Input timeout",
"edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Logging",
"edt_conf_log_level_expl": "Depending on loglevel you see less or more messages in your log.",
Expand Down
15 changes: 9 additions & 6 deletions assets/webconfig/js/content_instcapture.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ $(document).ready(function () {
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemEnable", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemGrabberDevice", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemPriority", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "screenInactiveTimeout", false);
}

if (videoGrabberAvailable) {
Expand All @@ -80,6 +81,7 @@ $(document).ready(function () {
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lGrabberDevice", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lEnable", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lPriority", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "videoInactiveTimeout", false);
}

if (audioGrabberAvailable) {
Expand All @@ -95,6 +97,7 @@ $(document).ready(function () {
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioGrabberDevice", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioEnable", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioPriority", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioInactiveTimeout", false);
}

});
Expand Down Expand Up @@ -122,11 +125,11 @@ $(document).ready(function () {
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").setValue(window.serverConfig.framegrabber.available_devices);
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").disable();
showInputOptions("instCapture", ["systemGrabberDevice"], true);
showInputOptions("instCapture", ["systemPriority"], true);
showInputOptions("instCapture", ["systemPriority", "screenInactiveTimeout"], true);

} else {
showInputOptions("instCapture", ["systemGrabberDevice"], false);
showInputOptions("instCapture", ["systemPriority"], false);
showInputOptions("instCapture", ["systemPriority", "screenInactiveTimeout"], false);
}

});
Expand All @@ -137,14 +140,14 @@ $(document).ready(function () {
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").disable();
showInputOptions("instCapture", ["v4lGrabberDevice"], true);
showInputOptions("instCapture", ["v4lPriority"], true);
showInputOptions("instCapture", ["v4lPriority", "videoInactiveTimeout"], true);
}
else {
if (!window.serverConfig.grabberV4L2.enable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
}
showInputOptions("instCapture", ["v4lGrabberDevice"], false);
showInputOptions("instCapture", ["v4lPriority"], false);
showInputOptions("instCapture", ["v4lPriority", "videoInactiveTimeout"], false);
}
});

Expand All @@ -154,14 +157,14 @@ $(document).ready(function () {
conf_editor_instCapt.getEditor("root.instCapture.audioGrabberDevice").setValue(window.serverConfig.grabberAudio.available_devices);
conf_editor_instCapt.getEditor("root.instCapture.audioGrabberDevice").disable();
showInputOptions("instCapture", ["audioGrabberDevice"], true);
showInputOptions("instCapture", ["audioPriority"], true);
showInputOptions("instCapture", ["audioPriority", "audioInactiveTimeout"], true);
}
else {
if (!window.serverConfig.grabberAudio.enable) {
conf_editor_instCapt.getEditor("root.instCapture.audioEnable").disable();
}
showInputOptions("instCapture", ["audioGrabberDevice"], false);
showInputOptions("instCapture", ["audioPriority"], false);
showInputOptions("instCapture", ["audioPriority", "audioInactiveTimeout"], false);
}
});

Expand Down
55 changes: 28 additions & 27 deletions include/hyperion/CaptureCont.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ class CaptureCont : public QObject
public:
CaptureCont(Hyperion* hyperion);

void setSystemCaptureEnable(bool enable);
void setV4LCaptureEnable(bool enable);
void setScreenCaptureEnable(bool enable);
void setVideoCaptureEnable(bool enable);
void setAudioCaptureEnable(bool enable);

private slots:
///
/// @brief Handle component state change of V4L and SystemCapture
/// @brief Handle component state change of Video- (V4L/MF) and Screen capture
/// @param component The component from enum
/// @param enable The new state
///
Expand All @@ -38,16 +38,16 @@ private slots:
void handleSettingsUpdate(settings::type type, const QJsonDocument& config);

///
/// @brief forward system image
/// @brief forward screen image
/// @param image The image
///
void handleSystemImage(const QString& name, const Image<ColorRgb>& image);
void handleScreenImage(const QString& name, const Image<ColorRgb>& image);

///
/// @brief forward v4l image
/// @brief forward video (v4l, MF) image
/// @param image The image
///
void handleV4lImage(const QString& name, const Image<ColorRgb> & image);
void handleVideoImage(const QString& name, const Image<ColorRgb> & image);

///
/// @brief forward audio image
Expand All @@ -56,39 +56,40 @@ private slots:
void handleAudioImage(const QString& name, const Image<ColorRgb>& image);

///
/// @brief Is called from _v4lInactiveTimer to set source after specific time to inactive
/// @brief Sets the video source to inactive
///
void setV4lInactive();
void onVideoIsInactive();

///
/// @brief Is called from _audioInactiveTimer to set source after specific time to inactive
/// @brief Sets the screen source to inactive
///
void setAudioInactive();
void onScreenIsInactive();

///
/// @brief Is called from _systemInactiveTimer to set source after specific time to inactive
/// @brief Sets the audio source to inactive
///
void setSystemInactive();
void onAudioIsInactive();


private:
/// Hyperion instance
Hyperion* _hyperion;

/// Reflect state of System capture and prio
bool _systemCaptEnabled;
quint8 _systemCaptPrio;
QString _systemCaptName;
QTimer* _systemInactiveTimer;
/// Reflect state of screen capture and prio
bool _screenCaptureEnabled;
int _screenCapturePriority;
QString _screenCaptureName;
QTimer* _screenCaptureInactiveTimer;

/// Reflect state of v4l capture and prio
bool _v4lCaptEnabled;
quint8 _v4lCaptPrio;
QString _v4lCaptName;
QTimer* _v4lInactiveTimer;
/// Reflect state of video capture and prio
bool _videoCaptureEnabled;
int _videoCapturePriority;
QString _videoCaptureName;
QTimer* _videoInactiveTimer;

/// Reflect state of audio capture and prio
bool _audioCaptEnabled;
quint8 _audioCaptPrio;
QString _audioCaptName;
QTimer* _audioInactiveTimer;
bool _audioCaptureEnabled;
int _audioCapturePriority;
QString _audioCaptureName;
QTimer* _audioCaptureInactiveTimer;
};
2 changes: 1 addition & 1 deletion include/hyperion/Hyperion.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public slots:
/// @param priority The priority
/// @return True on success false if not found
///
bool setInputInactive(quint8 priority);
bool setInputInactive(int priority);

///
/// Returns the list with unique adjustment identifiers
Expand Down
Loading
Loading