add about and license

This commit is contained in:
Maik Jurischka
2025-12-19 09:50:35 +01:00
parent 705519ec39
commit 01ef031fcd
12 changed files with 204 additions and 2 deletions

View File

@@ -21,6 +21,8 @@ qt_add_executable(gstreamerViewer
cameracontrolwidget.h cameracontrolwidget.h
videoviewerwidget.cpp videoviewerwidget.cpp
videoviewerwidget.h videoviewerwidget.h
aboutwidget.cpp
aboutwidget.h
) )
target_include_directories(gstreamerViewer PRIVATE ${GSTREAMER_INCLUDE_DIRS}) target_include_directories(gstreamerViewer PRIVATE ${GSTREAMER_INCLUDE_DIRS})

22
LICENSE Normal file
View File

@@ -0,0 +1,22 @@
GStreamer Camera Viewer
Copyright (c) 2025 Maik Jurischka
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
You are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material
Under the following terms:
- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made.
- NonCommercial — You may not use the material for commercial purposes.
- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
Full license text: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
===============================================================================
DISCLAIMER:
This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

View File

@@ -5,7 +5,9 @@ A Qt6-based GUI application for controlling and viewing video streams from camer
## Features ## Features
- **Video Streaming Control**: Configure and start/stop camera streaming with GStreamer pipelines - **Video Streaming Control**: Configure and start/stop camera streaming with GStreamer pipelines
- **Real-time Video Display**: View the streamed video in a separate window - **Real-time Video Display**: View the streamed video with embedded display
- **Image Transformations**: Rotate (0°, 90°, 180°, 270°) and flip (horizontal/vertical) video
- **Zoom Support**: Zoom from 50% to 200%
- **Camera Parameter Control**: Adjust exposure, white balance, brightness, contrast, saturation, sharpness, gamma, and gain - **Camera Parameter Control**: Adjust exposure, white balance, brightness, contrast, saturation, sharpness, gamma, and gain
- **Pipeline Presets**: Quick access to common pipeline configurations (MJPEG UDP, H.264 UDP, local display, etc.) - **Pipeline Presets**: Quick access to common pipeline configurations (MJPEG UDP, H.264 UDP, local display, etc.)
- **Format Detection**: Automatically fetch and select supported camera formats - **Format Detection**: Automatically fetch and select supported camera formats
@@ -330,7 +332,25 @@ Example commands:
## License ## License
[Specify your license here] **CC BY-NC-SA 4.0** - Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
Copyright (c) 2025 Maik Jurischka
This software is free to:
- **Use** for non-commercial purposes
- **Share** - copy and redistribute in any medium or format
- **Adapt** - remix, transform, and build upon the material
Under the following terms:
- **Attribution** - You must give appropriate credit and indicate if changes were made
- **NonCommercial** - You may not use the material for commercial purposes
- **ShareAlike** - Derivative works must be distributed under the same license
See [LICENSE](LICENSE) file for full license text.
Full license: https://creativecommons.org/licenses/by-nc-sa/4.0/
**Disclaimer**: This software is provided "as is", without warranty of any kind, express or implied.
## Credits ## Credits

94
aboutwidget.cpp Normal file
View File

@@ -0,0 +1,94 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "aboutwidget.h"
#include <QVBoxLayout>
#include <QGroupBox>
#include <QLabel>
#include <gst/gst.h>
AboutWidget::AboutWidget(QWidget *parent)
: QWidget(parent)
{
setupUI();
}
void AboutWidget::setupUI()
{
auto* mainLayout = new QVBoxLayout(this);
auto* aboutGroup = new QGroupBox("About GStreamer Camera Viewer", this);
auto* aboutLayout = new QVBoxLayout();
auto* titleLabel = new QLabel("<h2>GStreamer Camera Viewer</h2>", this);
aboutLayout->addWidget(titleLabel);
auto* versionLabel = new QLabel("<b>Version:</b> 0.5.0", this);
aboutLayout->addWidget(versionLabel);
auto* authorLabel = new QLabel("<b>Author:</b> Maik Jurischka", this);
aboutLayout->addWidget(authorLabel);
auto* descLabel = new QLabel(
"<p>A Qt6-based camera viewer application with GStreamer pipeline control.</p>"
"<p>Features:</p>"
"<ul>"
"<li>Real-time video streaming with embedded display</li>"
"<li>Configurable GStreamer pipelines</li>"
"<li>Camera parameter controls (exposure, white balance, etc.)</li>"
"<li>Image transformation (rotation, flip)</li>"
"<li>Zoom support (50-200%)</li>"
"</ul>", this);
descLabel->setWordWrap(true);
aboutLayout->addWidget(descLabel);
auto* licenseGroup = new QGroupBox("License", this);
auto* licenseLayout = new QVBoxLayout();
auto* licenseLabel = new QLabel(
"<b>CC BY-NC-SA 4.0</b>"
"<p>Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International</p>"
"<p style='font-size: small;'>"
"This software is free to use, share, and modify for non-commercial purposes. "
"Any derivative works must be shared under the same license."
"</p>"
"<p style='font-size: small;'>"
"<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'>License Details</a>"
"</p>", this);
licenseLabel->setWordWrap(true);
licenseLabel->setOpenExternalLinks(true);
licenseLayout->addWidget(licenseLabel);
licenseGroup->setLayout(licenseLayout);
aboutLayout->addWidget(licenseGroup);
auto* techGroup = new QGroupBox("Technologies", this);
auto* techLayout = new QVBoxLayout();
guint major, minor, micro, nano;
gst_version(&major, &minor, &micro, &nano);
QString gstVersion = QString("GStreamer %1.%2.%3").arg(major).arg(minor).arg(micro);
auto* qtLabel = new QLabel(QString("<b>Qt Version:</b> %1").arg(QT_VERSION_STR), this);
techLayout->addWidget(qtLabel);
auto* gstLabel = new QLabel(QString("<b>%1</b>").arg(gstVersion), this);
techLayout->addWidget(gstLabel);
techGroup->setLayout(techLayout);
aboutLayout->addWidget(techGroup);
aboutLayout->addStretch();
aboutGroup->setLayout(aboutLayout);
aboutGroup->setMaximumWidth(500);
mainLayout->addWidget(aboutGroup);
mainLayout->addStretch();
setLayout(mainLayout);
}

18
aboutwidget.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef ABOUTWIDGET_H
#define ABOUTWIDGET_H
#include <QWidget>
#include <QLabel>
class AboutWidget : public QWidget
{
Q_OBJECT
public:
explicit AboutWidget(QWidget *parent = nullptr);
private:
void setupUI();
};
#endif // ABOUTWIDGET_H

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "cameracontrolwidget.h" #include "cameracontrolwidget.h"
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "gstreamerpipelinewidget.h" #include "gstreamerpipelinewidget.h"
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "mainwindow.h" #include "mainwindow.h"
#include <QApplication> #include <QApplication>

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include <QHBoxLayout> #include <QHBoxLayout>
@@ -29,10 +36,12 @@ void MainWindow::setupUI()
m_videoWidget = new VideoViewerWidget(this); m_videoWidget = new VideoViewerWidget(this);
m_pipelineWidget = new GStreamerPipelineWidget(m_socketClient, this); m_pipelineWidget = new GStreamerPipelineWidget(m_socketClient, this);
m_cameraWidget = new CameraControlWidget(m_socketClient, this); m_cameraWidget = new CameraControlWidget(m_socketClient, this);
m_aboutWidget = new AboutWidget(this);
auto* controlTabs = new QTabWidget(this); auto* controlTabs = new QTabWidget(this);
controlTabs->addTab(m_pipelineWidget, "Pipeline Control"); controlTabs->addTab(m_pipelineWidget, "Pipeline Control");
controlTabs->addTab(m_cameraWidget, "Camera Control"); controlTabs->addTab(m_cameraWidget, "Camera Control");
controlTabs->addTab(m_aboutWidget, "About");
auto* mainSplitter = new QSplitter(Qt::Horizontal, this); auto* mainSplitter = new QSplitter(Qt::Horizontal, this);
mainSplitter->addWidget(m_videoWidget); mainSplitter->addWidget(m_videoWidget);

View File

@@ -6,6 +6,7 @@
#include "gstreamerpipelinewidget.h" #include "gstreamerpipelinewidget.h"
#include "cameracontrolwidget.h" #include "cameracontrolwidget.h"
#include "videoviewerwidget.h" #include "videoviewerwidget.h"
#include "aboutwidget.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { namespace Ui {
@@ -29,5 +30,6 @@ private:
GStreamerPipelineWidget* m_pipelineWidget; GStreamerPipelineWidget* m_pipelineWidget;
CameraControlWidget* m_cameraWidget; CameraControlWidget* m_cameraWidget;
VideoViewerWidget* m_videoWidget; VideoViewerWidget* m_videoWidget;
AboutWidget* m_aboutWidget;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "socketclient.h" #include "socketclient.h"
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/un.h> #include <sys/un.h>

View File

@@ -1,3 +1,10 @@
/*
* GStreamer Camera Viewer
* Copyright (c) 2025 Maik Jurischka
* Licensed under CC BY-NC-SA 4.0
* https://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "videoviewerwidget.h" #include "videoviewerwidget.h"
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>