Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
3cc57db
test update (#783)
raphaelscholle Dec 1, 2025
a1bb033
Ensure translation qm generation before resources (#784)
raphaelscholle Dec 1, 2025
87fd6d4
Fix Android secondary MediaPlayer surface setup (#785)
raphaelscholle Dec 1, 2025
6733df3
Update QOpenHD.pro
raphaelscholle Dec 1, 2025
f44e125
Fix translation build outputs and guard android extras (#786)
raphaelscholle Dec 1, 2025
01ebf4d
Improve secondary video logging context (#788)
raphaelscholle Dec 1, 2025
94f2cf0
Fix logging helper visibility and codec string (#789)
raphaelscholle Dec 1, 2025
ec72361
Customize APK filename (#787)
raphaelscholle Dec 1, 2025
c93e590
Fix log prefix visibility and gstreamer log formatting (#790)
raphaelscholle Dec 1, 2025
bea867b
Fix translation target ordering for Qt6 build (#791)
raphaelscholle Dec 1, 2025
81db84a
Add Qt5 translation tools to dependencies (#792)
raphaelscholle Dec 1, 2025
4ea0ea5
Ensure submodule checkout for qmake builds (#793)
raphaelscholle Dec 1, 2025
a7ce05d
Fix gstqmlglsinkstream logPrefix declaration (#794)
raphaelscholle Dec 1, 2025
1d1d0f1
Add developer control for Android secondary video input (#795)
raphaelscholle Dec 1, 2025
79fcb43
Update qandroidsecondarymediaplayer.cpp
raphaelscholle Dec 1, 2025
89b3aaa
Add Android primary video controls and logging (#796)
raphaelscholle Dec 1, 2025
06e4565
Fix translation loading for Qt5 (#797)
raphaelscholle Dec 1, 2025
070c7be
Improve Android secondary UDP playback handling (#798)
raphaelscholle Dec 1, 2025
f90250f
Update AppSettings.qml
raphaelscholle Dec 2, 2025
ff891a7
Use low-latency decoder for Android secondary video (#803)
raphaelscholle Dec 2, 2025
d791363
Stabilize Android secondary decoder surface handling (#804)
raphaelscholle Dec 2, 2025
a2e1d15
Fix duplicate stream config declaration (#805)
raphaelscholle Dec 2, 2025
e74a94a
Handle secondary Android decoder codec changes safely (#806)
raphaelscholle Dec 2, 2025
241f644
Handle duplicate GstRtpReceiver starts gracefully (#807)
raphaelscholle Dec 2, 2025
ffb3a8e
Run secondary Android video setup on Android thread (#808)
raphaelscholle Dec 2, 2025
6cdf866
Handle missing appsink gracefully (#810)
raphaelscholle Dec 2, 2025
60614cc
Ensure gstreamer initializes once for Android receivers (#811)
raphaelscholle Dec 2, 2025
6975dd1
Avoid static registration of dynamic qmlgl plugins (#812)
raphaelscholle Dec 2, 2025
d994ec8
Improve Qt5 translation loading (#813)
raphaelscholle Dec 2, 2025
89da68e
Show vertical speed with decimal precision (#814)
raphaelscholle Dec 2, 2025
19a77ea
Bump version to 2.7.0 (#815)
raphaelscholle Dec 2, 2025
69b0453
Update qopenhd.h
raphaelscholle Dec 2, 2025
32489b3
Sync camera definitions from OpenHD (#816)
raphaelscholle Dec 2, 2025
5708dc5
Update platform.hpp
raphaelscholle Dec 2, 2025
3e3b751
Update platform.hpp
raphaelscholle Dec 2, 2025
efaa8b4
Remove Willy codename references (#817)
raphaelscholle Dec 2, 2025
279a053
Add ORQA camera type strings (#818)
raphaelscholle Dec 2, 2025
968438d
Update install_build_dep.sh
raphaelscholle Dec 2, 2025
b93c6e3
Align Android secondary video widget behaviour (#819)
raphaelscholle Dec 3, 2025
a85a773
Update SecondaryVideoGStreamer.qml
raphaelscholle Dec 3, 2025
90a43f0
Limit sidebar overlay to active state (#820)
raphaelscholle Dec 3, 2025
9ec8d5d
Bump actions/upload-artifact from 3 to 5
dependabot[bot] Dec 3, 2025
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
2 changes: 1 addition & 1 deletion .github/workflows/build_android_signed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_android_signed_qt6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:

steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down Expand Up @@ -110,7 +110,7 @@ jobs:
run: ccache -s

- name: Upload AAB artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.ARTIFACT }}
path: ${{ runner.temp }}/shadow_build_dir/android-build/build/outputs/bundle/release/*.aab
2 changes: 1 addition & 1 deletion .github/workflows/build_android_unsigned.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:

steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_package_Rock5.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV

- name: Checkout repository and submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive
- name: Building QOpenHD in CHROOT
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:
run: echo "artifact_name=QOpenHD-${{ env.DT }}" >> $GITHUB_ENV

- name: Upload to Github
uses: 'actions/upload-artifact@v4'
uses: 'actions/upload-artifact@v5'
with:
name: "QOpenHD-${{ env.DT }}"
path: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_package_rpi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
remove-haskell: 'true'
overprovision-lvm: 'true'

- uses: actions/checkout@v2
- uses: actions/checkout@v5
with:
submodules: recursive

Expand Down Expand Up @@ -55,7 +55,7 @@ jobs:
ls -a

- name: Upload to Github
uses: 'actions/upload-artifact@v4'
uses: 'actions/upload-artifact@v5'
with:
name: "QOpenHd"
path: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_package_x86_jammy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_package_x86_noble.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
ls -a

- name: Upload to Github
uses: 'actions/upload-artifact@v4'
uses: 'actions/upload-artifact@v5'
with:
name: "QOpenHD"
path: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ubuntu22_build_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ubuntu22_build_test_qt6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
submodules: recursive

Expand Down
41 changes: 41 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ find_package(Qt6 ${X_QT_VERSION} REQUIRED COMPONENTS Core)
find_package(Qt6 ${X_QT_VERSION} REQUIRED COMPONENTS Quick)
find_package(Qt6 ${X_QT_VERSION} REQUIRED COMPONENTS Gui)
find_package(Qt6 ${X_QT_VERSION} REQUIRED COMPONENTS Widgets)
find_package(Qt6 ${X_QT_VERSION} REQUIRED COMPONENTS LinguistTools)

qt_standard_project_setup(REQUIRES ${X_QT_VERSION})

Expand Down Expand Up @@ -89,6 +90,27 @@ qt_add_executable(QOpenHDApp
androidqt6/AndroidManifest.xml
)

# Translation files
set(QOPENHD_TS_FILES
translations/QOpenHD_en.ts
translations/QOpenHD_de.ts
translations/QOpenHD_uk.ts
translations/QOpenHD_ru.ts
translations/QOpenHD_nl.ts
translations/QOpenHD_es.ts
translations/QOpenHD_fr.ts
translations/QOpenHD_zh.ts
translations/QOpenHD_it.ts
translations/QOpenHD_ro.ts
)

qt_add_translations(QOpenHDApp
TS_FILES ${QOPENHD_TS_FILES}
QM_FILES_OUTPUT_VARIABLE QOPENHD_QM_FILES
LUPDATE_OPTIONS -no-obsolete
LRELEASE_OPTIONS -compress
)

target_include_directories(QOpenHDApp PUBLIC app)
target_include_directories(QOpenHDApp PUBLIC app/common)
target_include_directories(QOpenHDApp PUBLIC app/adsb)
Expand Down Expand Up @@ -131,6 +153,25 @@ include(lib/h264/h264.cmake)
#include(app/videostreaming/gstreamer/gst_video.cmake)

qt_finalize_executable(QOpenHDApp)

# Copy generated .qm files to qml directory for qml.qrc
foreach(QM_FILE ${QOPENHD_QM_FILES})
get_filename_component(QM_FILENAME ${QM_FILE} NAME)
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/qml/${QM_FILENAME}
COMMAND ${CMAKE_COMMAND} -E copy ${QM_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/qml/${QM_FILENAME}
DEPENDS ${QM_FILE}
COMMENT "Copying ${QM_FILENAME} to qml directory for qrc inclusion"
)
list(APPEND QM_COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/qml/${QM_FILENAME})
endforeach()

add_custom_target(copy_qm_files ALL DEPENDS ${QM_COPY_FILES})

# Ensure generated translation files exist before processing the qml.qrc resource
if(TARGET QOpenHDApp_autogen)
add_dependencies(QOpenHDApp_autogen copy_qm_files)
endif()

#include(GNUInstallDirs)
#install(TARGETS QOpenHD
# BUNDLE DESTINATION .
Expand Down
30 changes: 28 additions & 2 deletions QOpenHD.pro
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ CONFIG += resources_big

TRANSLATIONS = translations/QOpenHD_en.ts \
translations/QOpenHD_de.ts \
translations/QOpenHD_uk.ts \
translations/QOpenHD_ru.ts \
translations/QOpenHD_nl.ts \
translations/QOpenHD_es.ts \
Expand All @@ -15,6 +16,26 @@ TRANSLATIONS = translations/QOpenHD_en.ts \
translations/QOpenHD_it.ts \
translations/QOpenHD_ro.ts

# Generate .qm files into qml/ so rcc finds the compiled translations
translation_outputs =
for(tsfile, TRANSLATIONS) {
qm_base = $$basename(tsfile)
qm_base = $$replace(qm_base, \\.ts$, )
qm_file = $$PWD/qml/$${qm_base}.qm
ts_abs = $$PWD/$$tsfile

qmtarget = qm_$${qm_base}
$${qmtarget}.target = $$qm_file
$${qmtarget}.commands = mkdir -p $$PWD/qml && lrelease $$ts_abs -qm $$qm_file
$${qmtarget}.depends = $$ts_abs

QMAKE_EXTRA_TARGETS += $$qmtarget
PRE_TARGETDEPS += $$qm_file
QMAKE_CLEAN += $$qm_file
translation_outputs += $$qm_file
}

qml/qml.qrc.depends += $$translation_outputs

include(platforms.pri)

Expand Down Expand Up @@ -246,7 +267,12 @@ AndroidBuild {
message("AndroidBuild")
# Text to speech crashes on android for some weird reason
#CONFIG += EnableSpeech
QT += androidextras
androidextras_hdr = $$[QT_INSTALL_HEADERS]/QtAndroidExtras
exists($$androidextras_hdr) {
QT += androidextras
} else {
message("androidextras module not available, skipping")
}

include(app/videostreaming/gstreamer/gst_video.pri)
include(app/videostreaming/android/videostreamingandroid.pri)
Expand All @@ -264,4 +290,4 @@ EnableSpeech {
android{
ANDROID_PACKAGE_SOURCE_DIR = \
$$PWD/android
}
}
9 changes: 9 additions & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,13 @@ android {
aaptOptions {
noCompress 'rcc'
}

// Customize the generated APK name to include version and build timestamp
applicationVariants.all { variant ->
variant.outputs.all { output ->
def versionLabel = variant.versionName ?: output.versionName
def timestamp = new Date().format('yyyyMMdd_HHmmss')
outputFileName = "QOpenHD_${versionLabel}_${timestamp}.apk"
}
}
}
15 changes: 5 additions & 10 deletions app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -324,20 +324,15 @@ int main(int argc, char *argv[]) {
//QLoggingCategory::setFilterRules("qt.scenegraph.general=true");
//QLoggingCategory::setFilterRules("qt.scenegraph.time.texture=true");
//QLoggingCategory::setFilterRules("qt.scenegraph.time.renderloop=true");
//QLoggingCategory::setFilterRules("qt.scenegraph.time.*=true");
//QLoggingCategory::setFilterRules("qt.qpa.eglfs.*=true");
//QLoggingCategory::setFilterRules("qt.qpa.egl*=true");

// From https://stackoverflow.com/questions/63473541/how-to-dynamically-toggle-vsync-in-a-qt-application-at-runtime
// Get rid of VSYNC if possible. Might / might not work. On my ubuntu nvidia & intel laptop, this at least seems to
// result in tripple buffering with unlimited fps, a bit "better" regarding latency than default.
if(settings.value("dev_set_swap_interval_zero",false).toBool()){
qDebug()<<"Request swap interval of 0";
QSurfaceFormat format=QSurfaceFormat::defaultFormat();
format.setSwapInterval(0);
QSurfaceFormat::setDefaultFormat(format);
}

QApplication app(argc, argv);

// Load translation based on saved locale (requires an active Q(Core)Application on Qt5)
QString localeStr = settings.value("locale", "en").toString();
QOpenHD::instance().installTranslatorForLanguage(localeStr, &settings);
{ // This includes dpi adjustment
QScreen* screen=app.primaryScreen();
if(screen){
Expand Down
Loading
Loading