├── .github ├── scripts │ ├── 0001-CMakeList.txt-remove-output-lib-name-force-UNIX.patch │ ├── Linux │ │ ├── arm │ │ │ ├── bootstrap.sh │ │ │ └── build.sh │ │ ├── check_abi.sh │ │ ├── download_build_ffmpeg.sh │ │ ├── ffmpeg-patches │ │ │ ├── .keep │ │ │ ├── 0001-NVENC_INFINITE_GOPLENGTH-is-useless-for-UltraGrid-up.patch │ │ │ └── master-0001-added-libde265-decoder.patch │ │ ├── install_ffmpeg.sh │ │ ├── install_others.sh │ │ ├── prepare.sh │ │ ├── tmp │ │ │ └── master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch.patch │ │ └── utils │ │ │ ├── Dockerfile.arch │ │ │ ├── Dockerfile.ubuntu │ │ │ └── semver.sh │ ├── Windows │ │ ├── find_msvc.ps1 │ │ ├── install_cineform.sh │ │ ├── install_jack.ps1 │ │ ├── install_spout.sh │ │ ├── prepare.ps1 │ │ └── prepare_msys.sh │ ├── create_continuous_release.sh │ ├── create_release.sh │ ├── delete-asset.sh │ ├── download-gh-asset.sh │ ├── environment.sh │ ├── get-etags.sh │ ├── install-common-deps.sh │ ├── json-common.sh │ ├── macOS │ │ ├── glfw-patches │ │ │ ├── 0001-mac-set-use-16-bit-depth-framebuffer.patch │ │ │ ├── 0002-mac-allow-setting-mac-color-space.patch │ │ │ ├── 0003-nsgl_context-set-extended-dynamic-range-to-true.patch │ │ │ ├── 0004-cocoa-print-wrong-NS-color-space-if-given.patch │ │ │ ├── 0005-cocoa-extended-supported-CS-list.patch │ │ │ ├── 0006-replaced-some-deprecates.patch │ │ │ └── README.md │ │ ├── install_dylibbundler_v2.sh │ │ ├── install_others.sh │ │ ├── prepare.sh │ │ └── sign.sh │ ├── replace-asset.sh │ └── upload-asset.sh └── workflows │ ├── README.md │ ├── arm-build.yml │ ├── ccpp.yml │ └── coverity-scan.yml ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── COPYRIGHT ├── Doxyfile ├── INSTALL ├── Makefile.in ├── NEWS ├── README.md ├── autogen.sh ├── configure.ac ├── cuda_dxt ├── Makefile ├── cuda_dxt.cu ├── cuda_dxt.h ├── dxt62tga.c ├── rgb2dxt1.c └── rgb2dxt6.c ├── data ├── README.md ├── Windows │ └── update.ps1 ├── ag_plugin │ ├── README │ ├── uvReceiverService.manifest │ ├── uvReceiverService.py │ ├── uvReceiverService.svc │ ├── uvSenderService.manifest │ ├── uvSenderService.py │ └── uvSenderService.svc ├── bash_completion │ └── uv ├── cz.cesnet.ultragrid.appdata.xml ├── default.sf3 ├── entitlements.mac.plist ├── make_man.sh ├── screen-capture-recorder-x64.dll ├── scripts │ ├── Linux-AppImage │ │ ├── AppRun │ │ ├── create-appimage.sh │ │ ├── excludelist.local.arm │ │ ├── excludelist.local.x86 │ │ └── scripts │ │ │ └── preload.sh │ ├── add_cl_if_not_present.sh │ ├── build_aja_lib_win64.sh │ ├── get_dll_depends.sh │ ├── macos-wrapper │ ├── macos_bundle_libs.sh │ └── prepare_release.sh ├── splashscreen.xcf ├── template │ ├── README.md │ ├── bin │ │ └── hd-rum-av │ ├── macOS-bundle │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── MacOS │ │ │ └── update.sh │ │ │ ├── PkgInfo │ │ │ └── Resources │ │ │ └── icon.icns │ └── macOS-legacy │ │ └── README.html ├── ultragrid-48x48.png ├── ultragrid-logo-text.svg ├── ultragrid.png ├── uv-qt.desktop └── zsh_completion │ └── uv │ └── _uv ├── doc ├── ADDING-MODULES.md ├── PERFORMANCE-TUNING.md ├── REPORTING-BUGS.md └── ultragrid-bugreport-collect.sh ├── dxt_compress ├── .gitignore ├── LICENSE ├── LICENSE-rtdxt ├── README ├── compress_dxt1_fp.glsl ├── compress_dxt5ycocg_fp.glsl ├── compress_vp.glsl ├── display_dxt1_yuv_fp.glsl ├── display_dxt5ycocg_fp.glsl ├── display_fp.glsl ├── dxt.cg ├── dxt_common.c ├── dxt_common.h ├── dxt_decoder.c ├── dxt_decoder.h ├── dxt_display.c ├── dxt_display.h ├── dxt_encoder.c ├── dxt_encoder.h ├── dxt_util.c ├── dxt_util.h ├── main.c ├── makefile ├── rgba_to_yuv422.glsl └── yuv422_to_yuv444.glsl ├── ext-deps ├── DeckLink │ ├── Linux │ │ ├── DeckLinkAPI.h │ │ ├── DeckLinkAPIConfiguration.h │ │ ├── DeckLinkAPIDeckControl.h │ │ ├── DeckLinkAPIDiscovery.h │ │ ├── DeckLinkAPIDispatch.cpp │ │ ├── DeckLinkAPIModes.h │ │ ├── DeckLinkAPITypes.h │ │ ├── DeckLinkAPIVersion.h │ │ └── LinuxCOM.h │ ├── Mac │ │ ├── DeckLinkAPI.h │ │ ├── DeckLinkAPIConfiguration.h │ │ ├── DeckLinkAPIDeckControl.h │ │ ├── DeckLinkAPIDiscovery.h │ │ ├── DeckLinkAPIDispatch.cpp │ │ ├── DeckLinkAPIModes.h │ │ ├── DeckLinkAPIStreaming.h │ │ ├── DeckLinkAPITypes.h │ │ └── DeckLinkAPIVersion.h │ ├── README.md │ └── Windows │ │ ├── DeckLinkAPI.h │ │ ├── DeckLinkAPIVersion.h │ │ └── DeckLinkAPI_i.c ├── README.md └── bootstrap_gpujpeg.sh ├── gui └── QT │ ├── .gitignore │ ├── icon.ico │ ├── main.cpp │ ├── option │ ├── actionCheckable_ui.cpp │ ├── actionCheckable_ui.hpp │ ├── audio_opts.cpp │ ├── audio_opts.hpp │ ├── available_settings.cpp │ ├── available_settings.hpp │ ├── checkable_ui.cpp │ ├── checkable_ui.hpp │ ├── checkbox_ui.cpp │ ├── checkbox_ui.hpp │ ├── combobox_ui.cpp │ ├── combobox_ui.hpp │ ├── groupBox_ui.cpp │ ├── groupBox_ui.hpp │ ├── lineedit_ui.cpp │ ├── lineedit_ui.hpp │ ├── radioButton_ui.cpp │ ├── radioButton_ui.hpp │ ├── settings.cpp │ ├── settings.hpp │ ├── settings_ui.cpp │ ├── settings_ui.hpp │ ├── spinbox_ui.cpp │ ├── spinbox_ui.hpp │ ├── textOpt_ui.cpp │ ├── textOpt_ui.hpp │ ├── video_opts.cpp │ ├── video_opts.hpp │ ├── widget_ui.cpp │ └── widget_ui.hpp │ ├── ui │ ├── log_window.ui │ ├── settings.ui │ └── ultragrid_window.ui │ ├── util │ ├── control_port.cpp │ ├── control_port.hpp │ ├── debug.hpp │ ├── extra_callback_data.hpp │ ├── launch_manager.cpp │ ├── launch_manager.hpp │ ├── line_buffer.cpp │ ├── line_buffer.hpp │ ├── overload.hpp │ └── ssrc_container.hpp │ ├── uv-qt.pro │ ├── uv-qt.rc │ ├── widget │ ├── bandwidth_widget.cpp │ ├── bandwidth_widget.hpp │ ├── previewWidget.cpp │ ├── previewWidget.hpp │ ├── recv_loss.cpp │ ├── recv_loss.hpp │ ├── recv_report.cpp │ ├── recv_report.hpp │ ├── vuMeterWidget.cpp │ └── vuMeterWidget.hpp │ └── window │ ├── log_window.cpp │ ├── log_window.hpp │ ├── settings_window.cpp │ ├── settings_window.hpp │ ├── ultragrid_window.cpp │ └── ultragrid_window.hpp ├── hd-rum-multi ├── .gitignore ├── Makefile ├── hd-rum.1 ├── hd-rum.1.txt └── hd-rum.c ├── ldgm ├── .gitignore ├── Makefile ├── matrix-gen │ ├── Makefile │ ├── ldpc-matrix.cpp │ ├── ldpc-matrix.h │ ├── main.cpp │ ├── matrix-generator.cpp │ ├── matrix-generator.h │ └── rand_pmms.h ├── src │ ├── coding-session.h │ ├── gpu.cu │ ├── gpu.cuh │ ├── ldgm-fec-header.h │ ├── ldgm-session-cpu.cpp │ ├── ldgm-session-cpu.h │ ├── ldgm-session-gpu.cpp │ ├── ldgm-session-gpu.h │ ├── ldgm-session.cpp │ ├── ldgm-session.h │ ├── main.cpp │ ├── tanner.cpp │ ├── tanner.h │ └── timer-util.h └── test.sh ├── nat-helper ├── CMakeLists.txt ├── README.md ├── client.cpp ├── client.hpp ├── main.cpp ├── message.cpp ├── message.hpp ├── nat-helper.cpp ├── nat-helper.hpp ├── room.cpp ├── room.hpp └── status_code.hpp ├── package_specs ├── README.md ├── __disable_aja__.patch ├── __disable_blackmagick__.patch ├── __disable_bluefish__.patch ├── __disable_cuda__.patch ├── __disable_deltacast__.patch ├── __disable_dvs__.patch ├── comment.py ├── deploy-templates.sh ├── generate-patches.sh ├── outdate-drivers.sh ├── ultragrid-autobuild.sh ├── ultragrid-build-health.sh ├── ultragrid-nightly │ ├── _service.tpl │ ├── cineform-min-cmake.patch │ ├── debian-Debian_80-series │ ├── debian-Ubuntu_1404-series │ ├── debian-Ubuntu_1604-series │ ├── debian-clang.patch │ ├── debian-disable-gui.patch │ ├── debian-disable-gui.series │ ├── debian-disable-hwaccel.patch │ ├── debian-patches-clang.series │ ├── debian-patches-series │ ├── debian.changelog │ ├── debian.rules │ ├── debian.tar.gz │ ├── libav-compat-debian8.patch │ ├── recreate.sh │ ├── ultragrid-nightly-Debian_80.dsc.tpl │ ├── ultragrid-nightly-Debian_90.dsc.tpl │ ├── ultragrid-nightly-Ubuntu_1404.dsc.tpl │ ├── ultragrid-nightly-Ubuntu_1604.dsc.tpl │ ├── ultragrid-nightly.dsc.tpl │ └── ultragrid-nightly.spec.tpl ├── ultragrid-proprietary-drivers-1.4 │ ├── AJA-gcc-explicit-constructors.patch │ ├── AJA-kernel-backports-opensuse-423.patch │ ├── AJA-linux4.6-get-user-pages.patch │ ├── AJA-linuxdriver-uname.patch │ ├── AJA-nodemo.patch │ ├── AJA-qmake.patch │ ├── AJA-qmake5.patch │ ├── AJA-qt5.patch │ ├── AJA-scatterlist.patch │ ├── AJA-setStartDragTime.patch │ ├── README.md │ ├── _service.tpl │ ├── backport-proprietary-patches.sh │ ├── bluefish-destdir.patch │ ├── bluefish-g++.patch │ ├── bluefish-kernel-backports-opensuse-423.patch │ ├── bluefish-linux4.6-get-user-pages.patch │ ├── bluefish-uname.patch │ ├── debian-patches-Ubuntu_1404.series │ ├── debian-patches-Ubuntu_1504.series │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── dvs-kernel-backports-opensuse-423.patch │ ├── dvs-linux4.6-get-user-pages.patch │ ├── ultragrid-proprietary-drivers-1.4-Ubuntu_1404.dsc │ ├── ultragrid-proprietary-drivers-1.4-Ubuntu_1410.dsc │ ├── ultragrid-proprietary-drivers-1.4-Ubuntu_1504.dsc │ ├── ultragrid-proprietary-drivers-1.4-rpmlintrc │ ├── ultragrid-proprietary-drivers-1.4.dsc │ ├── ultragrid-proprietary-drivers-1.4.spec │ ├── videoMasterHD-destdir.patch │ └── videoMasterHD-linux4.6-get-user-pages.patch ├── ultragrid-proprietary-drivers-1.5 │ ├── .gitattributes │ ├── AJA-clang-cxx11.patch │ ├── AJA-gcc-explicit-constructors.patch │ ├── AJA-kernel-backports-opensuse-423.patch │ ├── AJA-linux4.16-flush-write-buffers.patch │ ├── AJA-linuxdriver-uname.patch │ ├── AJA-nodemo.patch │ ├── AJA-qmake.patch │ ├── AJA-qt5.patch │ ├── _service.tpl │ ├── backport-proprietary-patches.sh │ ├── bluefish-destdir.patch │ ├── bluefish-g++.patch │ ├── bluefish-kernel-backports-opensuse-423.patch │ ├── bluefish-linux4.6-get-user-pages.patch │ ├── bluefish-uname.patch │ ├── crlfpatchize.py │ ├── debian-clang-series │ ├── debian-patches-Ubuntu_1404.series │ ├── debian-patches-Ubuntu_1504.series │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── dvs-linux4.6-get-user-pages.patch │ ├── preprocess-crlf.sh │ ├── ultragrid-proprietary-drivers-1.5-Ubuntu_1404.dsc │ ├── ultragrid-proprietary-drivers-1.5-Ubuntu_1604.dsc │ ├── ultragrid-proprietary-drivers-1.5-rpmlintrc │ ├── ultragrid-proprietary-drivers-1.5.dsc │ ├── ultragrid-proprietary-drivers-1.5.spec │ └── videoMasterHD-destdir.patch ├── ultragrid-proprietary-drivers-ndi-placeholder │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── dummy.tar.gz │ ├── ultragrid-proprietary-drivers-ndi-placeholder.dsc │ └── ultragrid-proprietary-drivers-ndi-placeholder.spec ├── ultragrid-proprietary-drivers-ndi │ ├── _service.tpl │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── ultragrid-proprietary-drivers-ndi-rpmlintrc │ ├── ultragrid-proprietary-drivers-ndi.dsc │ └── ultragrid-proprietary-drivers-ndi.spec ├── ultragrid-proprietary-drivers-ximea-placeholder │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── dummy.tar.gz │ ├── ultragrid-proprietary-drivers-ximea-placeholder.dsc │ └── ultragrid-proprietary-drivers-ximea-placeholder.spec ├── ultragrid-proprietary-drivers-ximea │ ├── debian-patches-series │ ├── debian.buildscript.sh │ ├── debian.rules │ ├── debian.tar.gz │ ├── ultragrid-proprietary-drivers-ximea-rpmlintrc │ ├── ultragrid-proprietary-drivers-ximea.dsc │ └── ultragrid-proprietary-drivers-ximea.spec ├── ultragrid-proprietary-drivers │ ├── .gitattributes │ ├── AJA-clang-cxx14.patch │ ├── AJA-gcc-explicit-constructors.patch │ ├── AJA-linuxdriver-uname.patch │ ├── AJA-nodemo.patch │ ├── AJA-qmake.patch │ ├── AJA-qt5.patch │ ├── README.md │ ├── _service.tpl │ ├── backport-proprietary-patches.sh │ ├── bluefish-destdir.patch │ ├── bluefish-uname.patch │ ├── crlfpatchize.py │ ├── debian-clang-series │ ├── debian-patches-Ubuntu_1404.series │ ├── debian-patches-series │ ├── debian.rules │ ├── debian.tar.gz │ ├── preprocess-crlf.sh │ ├── ultragrid-proprietary-drivers-Ubuntu_1404.dsc │ ├── ultragrid-proprietary-drivers-Ubuntu_1604.dsc │ ├── ultragrid-proprietary-drivers-rpmlintrc │ ├── ultragrid-proprietary-drivers.dsc │ ├── ultragrid-proprietary-drivers.spec │ └── videoMasterHD-destdir.patch └── ultragrid │ ├── _service.tpl │ ├── cineform-min-cmake.patch │ ├── debian-Debian_80-series │ ├── debian-Ubuntu_1404-series │ ├── debian-Ubuntu_1604-series │ ├── debian-clang.patch │ ├── debian-disable-gui.patch │ ├── debian-disable-gui.series │ ├── debian-disable-hwaccel.patch │ ├── debian-patches-clang.series │ ├── debian-patches-series │ ├── debian.changelog │ ├── debian.rules │ ├── debian.tar.gz │ ├── libav-compat-debian8.patch │ ├── recreate.sh │ ├── ultragrid-Debian_80.dsc.tpl │ ├── ultragrid-Debian_90.dsc.tpl │ ├── ultragrid-Ubuntu_1404.dsc.tpl │ ├── ultragrid-Ubuntu_1604.dsc.tpl │ ├── ultragrid.dsc.tpl │ └── ultragrid.spec.tpl ├── share └── ultragrid │ └── vulkan_shaders │ ├── RGB10A2_conv.comp.spv │ ├── UYVA16_conv.comp.spv │ ├── UYVA8_conv.comp.spv │ ├── UYVY8_conv.comp.spv │ ├── render.frag.spv │ └── render.vert.spv ├── src ├── aja_common.cpp ├── aja_common.hpp ├── aja_win32_stub.cpp ├── alsa_common.h ├── audio │ ├── audio.cpp │ ├── audio.h │ ├── audio_capture.c │ ├── audio_capture.h │ ├── audio_filter.cpp │ ├── audio_filter.h │ ├── audio_playback.c │ ├── audio_playback.h │ ├── capture │ │ ├── alsa.c │ │ ├── coreaudio.m │ │ ├── jack.c │ │ ├── none.c │ │ ├── passive.c │ │ ├── pipewire.cpp │ │ ├── portaudio.c │ │ ├── sdi.cpp │ │ ├── sdi.h │ │ ├── sdl_mixer.c │ │ ├── song1.h │ │ ├── testcard.c │ │ └── wasapi.cpp │ ├── codec.cpp │ ├── codec.h │ ├── codec │ │ ├── dummy_pcm.c │ │ └── libavcodec.c │ ├── echo.cpp │ ├── echo.h │ ├── export.c │ ├── export.h │ ├── filter │ │ ├── channel_remap.cpp │ │ ├── controlport_stats.cpp │ │ ├── delay.cpp │ │ ├── discard.cpp │ │ ├── playback.cpp │ │ └── silence.c │ ├── filter_chain.cpp │ ├── filter_chain.hpp │ ├── jack.c │ ├── jack.h │ ├── playback │ │ ├── alsa.c │ │ ├── coreaudio.cpp │ │ ├── coreaudio.h │ │ ├── decklink.cpp │ │ ├── dummy.c │ │ ├── dump.cpp │ │ ├── jack.c │ │ ├── mixer.cpp │ │ ├── none.c │ │ ├── pipewire.cpp │ │ ├── portaudio.c │ │ ├── sdi.c │ │ ├── sdi.h │ │ └── wasapi.cpp │ ├── portaudio_common.c │ ├── portaudio_common.h │ ├── resampler.cpp │ ├── resampler.hpp │ ├── types.cpp │ ├── types.h │ ├── utils.cpp │ ├── utils.h │ ├── wav_reader.c │ ├── wav_reader.h │ ├── wav_writer.c │ └── wav_writer.h ├── bitstream.c ├── bitstream.h ├── blackmagic_common.cpp ├── blackmagic_common.hpp ├── bluefish444_common.h ├── capture_filter.cpp ├── capture_filter.h ├── capture_filter │ ├── blank.c │ ├── change_pixfmt.c │ ├── color.c │ ├── display.c │ ├── disrupt.c │ ├── every.c │ ├── flip.c │ ├── gamma.cpp │ ├── grayscale.c │ ├── logo.c │ ├── matrix.c │ ├── matrix2.c │ ├── mirror.c │ ├── override_prop.c │ ├── preview.cpp │ ├── ratelimit.c │ ├── resize.c │ ├── resize_utils.cpp │ ├── resize_utils.h │ └── split.c ├── color.c ├── color.h ├── compat │ ├── alarm.c │ ├── alarm.h │ ├── aligned_malloc.c │ ├── aligned_malloc.h │ ├── dlfunc.c │ ├── dlfunc.h │ ├── endian.h │ ├── misc.h │ ├── net.h │ ├── platform_pipe.cpp │ ├── platform_pipe.h │ ├── platform_semaphore.c │ ├── platform_semaphore.h │ ├── qsort_s.h │ ├── strings.h │ ├── time.h │ ├── usleep.c │ ├── usleep.h │ ├── vsnprintf.c │ └── vsnprintf.h ├── config_msvc.h ├── config_unix.h ├── config_win32.h ├── control_socket.cpp ├── control_socket.h ├── crypto │ ├── crc.h │ ├── crc_32.c │ ├── crypt_aes.c │ ├── crypt_aes.h │ ├── crypt_aes_impl.c │ ├── crypt_aes_impl.h │ ├── crypt_des.c │ ├── crypt_des.h │ ├── md5.c │ ├── md5.h │ ├── openssl_decrypt.c │ ├── openssl_decrypt.h │ ├── openssl_encrypt.c │ ├── openssl_encrypt.h │ ├── random.c │ └── random.h ├── cuda_wrapper.cu ├── cuda_wrapper.h ├── cuda_wrapper │ ├── cuda_runtime.h │ ├── kernels.cu │ └── kernels.hpp ├── debug.cpp ├── debug.h ├── deltacast_common.cpp ├── deltacast_common.hpp ├── export.c ├── export.h ├── gl_context.c ├── gl_context.h ├── glx_common.c ├── glx_common.h ├── hd-rum-translator │ ├── hd-rum-decompress.cpp │ ├── hd-rum-decompress.h │ ├── hd-rum-recompress.cpp │ ├── hd-rum-recompress.h │ └── hd-rum-translator.cpp ├── host.cpp ├── host.h ├── hwaccel_drm.h ├── hwaccel_libav_common.c ├── hwaccel_libav_common.h ├── hwaccel_vaapi.c ├── hwaccel_vaapi.h ├── hwaccel_vdpau.c ├── hwaccel_vdpau.h ├── hwaccel_videotoolbox.c ├── hwaccel_videotoolbox.h ├── ihdtv │ ├── ihdtv.c │ └── ihdtv.h ├── jack_common.h ├── keyboard_control.cpp ├── keyboard_control.h ├── lib_common.cpp ├── lib_common.h ├── libavcodec │ ├── from_lavc_vid_conv.c │ ├── from_lavc_vid_conv.h │ ├── from_lavc_vid_conv_cuda.cu │ ├── from_lavc_vid_conv_cuda.h │ ├── lavc_common.c │ ├── lavc_common.h │ ├── lavc_video.c │ ├── lavc_video.h │ ├── to_lavc_vid_conv.c │ ├── to_lavc_vid_conv.h │ ├── to_lavc_vid_conv_cuda.cu │ ├── to_lavc_vid_conv_cuda.h │ ├── utils.c │ └── utils.h ├── mac_gl_common.h ├── mac_gl_common.m ├── main.cpp ├── messaging.cpp ├── messaging.h ├── module.c ├── module.h ├── ndi_common.h ├── ntp.c ├── ntp.h ├── pdb.c ├── pdb.h ├── pipewire_common.cpp ├── pipewire_common.hpp ├── pixfmt_conv.c ├── pixfmt_conv.h ├── playback.c ├── playback.h ├── rtp │ ├── audio_decoders.cpp │ ├── audio_decoders.h │ ├── fec.cpp │ ├── fec.h │ ├── ldgm.cpp │ ├── ldgm.h │ ├── ldgm_gpu.cpp │ ├── net_udp.c │ ├── net_udp.h │ ├── pbuf.c │ ├── pbuf.h │ ├── ptime.c │ ├── ptime.h │ ├── rs.cpp │ ├── rs.h │ ├── rtp.c │ ├── rtp.h │ ├── rtp_callback.c │ ├── rtp_callback.h │ ├── rtp_types.h │ ├── rtpdec_h264.c │ ├── rtpdec_h264.h │ ├── rtpdec_jpeg.c │ ├── rtpdec_jpeg.h │ ├── rtpdec_state.h │ ├── rtpenc_h264.c │ ├── rtpenc_h264.h │ ├── video_decoders.cpp │ ├── video_decoders.h │ ├── yuri_decoders.cpp │ └── yuri_decoders.h ├── rtsp │ ├── BasicRTSPOnlyServer.cpp │ ├── BasicRTSPOnlyServer.hh │ ├── BasicRTSPOnlySubsession.cpp │ ├── BasicRTSPOnlySubsession.hh │ ├── c_basicRTSPOnlyServer.cpp │ ├── c_basicRTSPOnlyServer.h │ └── rtsp_utils.h ├── spout_sender.cpp ├── spout_sender.h ├── syphon_server.h ├── syphon_server.m ├── tfrc.c ├── tfrc.h ├── transmit.cpp ├── transmit.h ├── tv.c ├── tv.h ├── types.h ├── ug_runtime_error.cpp ├── ug_runtime_error.hpp ├── utils │ ├── audio_buffer.c │ ├── audio_buffer.h │ ├── bitmap_font.h │ ├── bs.h │ ├── color_out.cpp │ ├── color_out.h │ ├── config_file.cpp │ ├── config_file.h │ ├── cuda_pix_conv.cu │ ├── cuda_pix_conv.h │ ├── dbus_portal.cpp │ ├── dbus_portal.hpp │ ├── debug.h │ ├── fs.c │ ├── fs.h │ ├── h264_stream.c │ ├── h264_stream.h │ ├── hevc_stream.c │ ├── hevc_stream.h │ ├── jpeg_reader.c │ ├── jpeg_reader.h │ ├── jpeg_writer.c │ ├── jpeg_writer.h │ ├── list.cpp │ ├── list.h │ ├── lock_guard.h │ ├── macos.h │ ├── macos.m │ ├── macros.h │ ├── math.c │ ├── math.h │ ├── misc.cpp │ ├── misc.h │ ├── nat.c │ ├── nat.h │ ├── net.c │ ├── net.h │ ├── opencl.c │ ├── opencl.h │ ├── packet_counter.cpp │ ├── packet_counter.h │ ├── pam.c │ ├── pam.h │ ├── parallel_conv.c │ ├── parallel_conv.h │ ├── profile_timer.cpp │ ├── profile_timer.hpp │ ├── random.c │ ├── random.h │ ├── ref_count.hpp │ ├── resource_manager.cpp │ ├── resource_manager.h │ ├── ring_buffer.cpp │ ├── ring_buffer.h │ ├── sdp.c │ ├── sdp.h │ ├── string.c │ ├── string.h │ ├── string_view_utils.cpp │ ├── string_view_utils.hpp │ ├── synchronized_queue.cpp │ ├── synchronized_queue.h │ ├── text.c │ ├── text.h │ ├── thread.c │ ├── thread.h │ ├── time.c │ ├── time.h │ ├── timed_message.h │ ├── udp_holepunch.c │ ├── udp_holepunch.h │ ├── vf_split.cpp │ ├── vf_split.h │ ├── video_frame_pool.cpp │ ├── video_frame_pool.h │ ├── video_pattern_generator.cpp │ ├── video_pattern_generator.h │ ├── wait_obj.cpp │ ├── wait_obj.h │ ├── windows.c │ ├── windows.h │ ├── worker.cpp │ ├── worker.h │ ├── y4m.c │ └── y4m.h ├── v4l2_common.h ├── video.cpp ├── video.h ├── video_capture.c ├── video_capture.h ├── video_capture │ ├── DirectShowGrabber.cpp │ ├── aggregate.c │ ├── aja.cpp │ ├── aja_win32_utils.cpp │ ├── avfoundation.mm │ ├── bitflow.cpp │ ├── bluefish444.cpp │ ├── decklink.cpp │ ├── deltacast.cpp │ ├── deltacast_dvi.cpp │ ├── dvs.c │ ├── file.c │ ├── gpustitch.cpp │ ├── import.c │ ├── ndi.cpp │ ├── null.c │ ├── pipewire.cpp │ ├── rtsp.c │ ├── screen_linux.c │ ├── screen_osx.c │ ├── screen_win.c │ ├── screen_x11.c │ ├── spout.cpp │ ├── switcher.c │ ├── swmix.c │ ├── syphon.m │ ├── testcard.c │ ├── testcard2.c │ ├── testcard_common.c │ ├── testcard_common.h │ ├── ug_input.cpp │ ├── v4l2.c │ └── ximea.c ├── video_capture_params.cpp ├── video_capture_params.h ├── video_codec.c ├── video_codec.h ├── video_compress.cpp ├── video_compress.h ├── video_compress │ ├── cineform.cpp │ ├── cmpto_j2k.cpp │ ├── cuda_dxt.cpp │ ├── dxt_glsl.cpp │ ├── gpujpeg.cpp │ ├── libavcodec.cpp │ ├── none.cpp │ └── uyvy.cpp ├── video_decompress.cpp ├── video_decompress.h ├── video_decompress │ ├── cineform.cpp │ ├── cmpto_j2k.cpp │ ├── dxt_glsl.c │ ├── gpujpeg.c │ ├── gpujpeg_to_dxt.cpp │ ├── i420.c │ └── libavcodec.c ├── video_display.c ├── video_display.h ├── video_display │ ├── aggregate.c │ ├── aja.cpp │ ├── blend.cpp │ ├── bluefish444.cpp │ ├── caca.c │ ├── conference.cpp │ ├── decklink.cpp │ ├── decklink_drift_fix.hpp │ ├── deltacast.cpp │ ├── drm.cpp │ ├── dummy.c │ ├── dump.c │ ├── dvs.c │ ├── dvs.h │ ├── file.c │ ├── gl.cpp │ ├── gl_vdpau.cpp │ ├── gl_vdpau.hpp │ ├── multiplier.cpp │ ├── ndi.c │ ├── null.c │ ├── opengl_conversions.cpp │ ├── opengl_conversions.hpp │ ├── opengl_panorama.cpp │ ├── opengl_panorama.hpp │ ├── opengl_utils.cpp │ ├── opengl_utils.hpp │ ├── openxr_gl.cpp │ ├── pano_gl.cpp │ ├── pipe.cpp │ ├── pipe.hpp │ ├── pipewire.cpp │ ├── sage.cpp │ ├── sdl.cpp │ ├── sdl2.c │ ├── sdl3.c │ ├── sdl_window.cpp │ ├── sdl_window.hpp │ ├── splashscreen.h │ ├── unix_sock.cpp │ ├── v4l2.c │ └── vulkan │ │ ├── concurrent_queue.hpp │ │ ├── shaders │ │ ├── LICENSE.md │ │ ├── RGB10A2_conv.comp │ │ ├── UYVA16_conv.comp │ │ ├── UYVY8_conv.comp │ │ ├── compile_shaders.sh │ │ ├── identity.comp │ │ ├── render.frag │ │ └── render.vert │ │ ├── vulkan_context.cpp │ │ ├── vulkan_context.hpp │ │ ├── vulkan_display.cpp │ │ ├── vulkan_display.hpp │ │ ├── vulkan_pipelines.cpp │ │ ├── vulkan_pipelines.hpp │ │ ├── vulkan_sdl2.cpp │ │ ├── vulkan_sdl3.cpp │ │ ├── vulkan_transfer_image.cpp │ │ └── vulkan_transfer_image.hpp ├── video_export.c ├── video_export.h ├── video_frame.c ├── video_frame.h ├── video_rxtx.cpp ├── video_rxtx.hpp ├── video_rxtx │ ├── h264_rtp.cpp │ ├── h264_rtp.hpp │ ├── h264_sdp.cpp │ ├── h264_sdp.hpp │ ├── ihdtv.cpp │ ├── ihdtv.hpp │ ├── loopback.cpp │ ├── loopback.hpp │ ├── rtp.cpp │ ├── rtp.hpp │ ├── sage.cpp │ ├── sage.hpp │ ├── ultragrid_rtp.cpp │ └── ultragrid_rtp.hpp ├── vo_postprocess.c ├── vo_postprocess.h ├── vo_postprocess │ ├── 3d-interlaced.c │ ├── border.c │ ├── capture_filter_wrapper.h │ ├── crop.c │ ├── deinterlace.c │ ├── delay.c │ ├── interlace.c │ ├── scale.c │ ├── split.c │ ├── temporal-deint.c │ └── text.c ├── win32_gl_common.c ├── win32_gl_common.h ├── x11_common.c └── x11_common.h ├── test ├── codec_conversions_test.cpp ├── ff_codec_conversions_test.cpp ├── get_framerate_test.cpp ├── gpujpeg_test.cpp ├── libavcodec_test.cpp ├── misc_test.cpp ├── run_tests.c ├── test_aes.c ├── test_aes.h ├── test_aes.results.cbc_d_m.txt ├── test_aes.results.cbc_e_m.txt ├── test_aes.results.ecb_d_m.txt ├── test_aes.results.ecb_e_m.txt ├── test_aes.results.ecb_iv.txt ├── test_aes.results.ecb_tbl.txt ├── test_aes.results.ecb_vk.txt ├── test_aes.results.ecb_vt.txt ├── test_aes.table.128 ├── test_aes.table.192 ├── test_aes.table.256 ├── test_bitstream.c ├── test_bitstream.h ├── test_des.c ├── test_des.h ├── test_host.h ├── test_md5.c ├── test_md5.h ├── test_net_udp.c ├── test_net_udp.h ├── test_random.c ├── test_random.h ├── test_rtp.c ├── test_rtp.h ├── test_tv.c ├── test_tv.h ├── test_video_capture.c ├── test_video_capture.h ├── test_video_display.c ├── test_video_display.h └── unit_common.h └── tools ├── .gitignore ├── Makefile ├── README.md ├── astat.cpp ├── astat.h ├── benchmark_ff_convs.c ├── convert.cpp ├── decklink_temperature.cpp ├── ipc_frame.cpp ├── ipc_frame.h ├── ipc_frame_ug.cpp ├── ipc_frame_ug.h ├── ipc_frame_unix.cpp ├── ipc_frame_unix.h ├── mux_ivf.c ├── stacktrace_addr2line.sh ├── thumbnailgen.cpp ├── ug_stub.c └── uyvy2yuv422p.c /.github/scripts/0001-CMakeList.txt-remove-output-lib-name-force-UNIX.patch: -------------------------------------------------------------------------------- 1 | From 0bd8bc0873b908f4e13470933fe09f97096922da Mon Sep 17 00:00:00 2001 2 | From: Martin Pulec 3 | Date: Thu, 3 Feb 2022 11:01:47 +0100 4 | Subject: [PATCH] CMakeList.txt: remove output lib name force (UNIX) 5 | 6 | Currently the actual library name libCFHDCodec.a disagrees with the name 7 | generated in .pc file (-lCFHDCodecStatic) so this names the library with 8 | the default name libCFHDCodecStatic.a (similarly for shared). 9 | --- 10 | CMakeLists.txt | 3 --- 11 | 1 file changed, 3 deletions(-) 12 | 13 | diff --git a/CMakeLists.txt b/CMakeLists.txt 14 | index cb0ded3..f247302 100644 15 | --- a/CMakeLists.txt 16 | +++ b/CMakeLists.txt 17 | @@ -57,9 +57,6 @@ if (BUILD_LIBS) 18 | target_compile_options(CFHDCodecStatic PUBLIC ${COMPILER_FLAGS}) 19 | 20 | set_target_properties(CFHDCodecStatic PROPERTIES POSITION_INDEPENDENT_CODE ON) 21 | - if (UNIX) 22 | - set_target_properties(CFHDCodecStatic PROPERTIES OUTPUT_NAME CFHDCodec) 23 | - endif (UNIX) 24 | 25 | target_link_libraries(CFHDCodecStatic) 26 | endif (BUILD_SEPARATED) 27 | -- 28 | 2.37.3 29 | 30 | -------------------------------------------------------------------------------- /.github/scripts/Linux/arm/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eux 2 | 3 | export CPATH=/usr/local/include${CPATH:+":$CPATH"} 4 | EXTRA_LIB_PATH=/usr/local/cuda/lib64:/usr/local/lib 5 | export LIBRARY_PATH=$EXTRA_LIB_PATH${LIBRARY_PATH:+":$LIBRARY_PATH"} 6 | export LD_LIBRARY_PATH=$EXTRA_LIB_PATH${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"} 7 | export PATH="/usr/local/bin:$PATH" 8 | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH:+":$PKG_CONFIG_PATH"} 9 | 10 | ARCH=$(dpkg --print-architecture) 11 | APPNAME=UltraGrid-latest-${ARCH}.AppImage 12 | 13 | # set 64-bit off_t for 32-bit ARM, see the following (POSIX 2024 will use V8): 14 | # 15 | # TODO: this is duplicite of AC_SYS_LARGEFILE - figure out how to keep 16 | # that without needing to include the config.h in headers 17 | CENV=$(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS | grep -E 'OFFBIG|OFF64' | 18 | head -n 1) 19 | CFLAGS=${CFLAGS:+$CFLAGS }$(getconf "${CENV}_CFLAGS") 20 | CXXFLAGS=${CXXFLAGS:+$CXXFLAGS }$(getconf "${CENV}_CFLAGS") 21 | export CFLAGS CXXFLAGS 22 | 23 | # shellcheck disable=SC2086 # intentional 24 | set -- $FEATURES 25 | set -- "$@" --enable-drm_disp 26 | 27 | ./autogen.sh "$@" 28 | make -j "$(nproc)" 29 | make check 30 | make distcheck 31 | 32 | ./data/scripts/Linux-AppImage/create-appimage.sh 33 | mv -- *.AppImage "$APPNAME" 34 | 35 | -------------------------------------------------------------------------------- /.github/scripts/Linux/check_abi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eu 2 | 3 | # Checks libc/ibstdc++ ABI version 4 | # see also https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html 5 | 6 | ## @todo 7 | ## consider removing semver.sh and utilize sort -V to compare 8 | 9 | GLIBC_MAX=$1 10 | GLIBCXX_MAX=$2 11 | CXX_MAX=$3 12 | shift 3 13 | 14 | SEMVER_CMP=$(dirname "$0")/utils/semver.sh 15 | 16 | if [ ! -x "$SEMVER_CMP" ]; then 17 | echo "semver.sh script not present!" >&2 18 | exit 2 19 | fi 20 | 21 | while test $# -gt 0; do 22 | if [ ! -f "$1" ]; then 23 | shift 24 | continue 25 | fi 26 | GLIBC_CUR=$(ldd -r -v "$1" | sed -n 's/.*(GLIBC_\([0-9.]*\)).*/\1/p' | sort -V | tail -n 1) 27 | ## @todo 28 | ## perpaps use ldd as well for the remaining 2? 29 | GLIBCXX_CUR=$(nm "$1" | sed -n 's/.*GLIBCXX_\([0-9.]*\).*/\1/p' | sort -V | tail -n 1) 30 | CXX_CUR=$(nm "$1" | sed -n 's/.*CXXABI_\([0-9.]*\).*/\1/p' | sort -V | tail -n 1) 31 | cmp=$($SEMVER_CMP "$GLIBC_CUR" "$GLIBC_MAX") 32 | if [ -n "$GLIBC_CUR" ] && [ "$cmp" -gt 0 ]; then 33 | echo "$1: GLIBC $GLIBC_CUR ($GLIBC_MAX required)" 1>&2 34 | exit 1 35 | fi 36 | cmp=$($SEMVER_CMP "$GLIBCXX_CUR" "$GLIBCXX_MAX") 37 | if [ -n "$GLIBCXX_CUR" ] && [ "$cmp" -gt 0 ]; then 38 | echo "$1: GLIBCXX $GLIBCXX_CUR ($GLIBCXX_MAX required)" 1>&2 39 | exit 1 40 | fi 41 | cmp=$($SEMVER_CMP "$CXX_CUR" "$CXX_MAX") 42 | if [ -n "$CXX_CUR" ] && [ "$cmp" -gt 0 ]; then 43 | echo "$1: CXX $CXX_CUR ($CXX_MAX required)" 1>&2 44 | exit 1 45 | fi 46 | shift 47 | done 48 | 49 | -------------------------------------------------------------------------------- /.github/scripts/Linux/ffmpeg-patches/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/.github/scripts/Linux/ffmpeg-patches/.keep -------------------------------------------------------------------------------- /.github/scripts/Linux/install_ffmpeg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eux 2 | 3 | cd /var/tmp/ffmpeg 4 | ( cd libvpx && sudo make install ) 5 | ( cd nv-codec-headers && sudo make install ) 6 | ( cd aom/build && sudo cmake --install . ) 7 | sudo cmake --install SVT-AV1/Build 8 | sudo cmake --install SVT-HEVC/Build/linux/Release 9 | sudo cmake --install SVT-VP9/Build 10 | sudo cmake --build oneVPL/build --config Release --target install 11 | 12 | sudo make install 13 | sudo ldconfig 14 | -------------------------------------------------------------------------------- /.github/scripts/Linux/tmp/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch.patch: -------------------------------------------------------------------------------- 1 | 1c1 2 | < From 38eb54ccd1f624e2ab700c1b10a0e6980df9c0b2 Mon Sep 17 00:00:00 2001 3 | --- 4 | > From c55eb91b2e5d86efa42387b48216236a3c9ff8eb Mon Sep 17 00:00:00 2001 5 | 20c20 6 | < index 9f508a2527..a73e1f73c1 100755 7 | --- 8 | > index e5a4ca42b2..dd5debf274 100755 9 | 31c31 10 | < @@ -1955,6 +1956,7 @@ EXTERNAL_LIBRARY_LIST=" 11 | --- 12 | > @@ -1956,6 +1957,7 @@ EXTERNAL_LIBRARY_LIST=" 13 | 39c39 14 | < @@ -3587,6 +3589,7 @@ libvpx_vp8_decoder_deps="libvpx" 15 | --- 16 | > @@ -3592,6 +3594,7 @@ libvpx_vp8_decoder_deps="libvpx" 17 | 47,48c47 18 | < @@ -7008,6 +7011,7 @@ enabled libssh && require_pkg_config libssh "libssh >= 0.6.0" libssh/ 19 | < enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init 20 | --- 21 | > @@ -7015,6 +7018,7 @@ enabled libspeex && require_pkg_config libspeex speex speex/speex.h spe 22 | 50a50 23 | > enabled libsvthevc && require_pkg_config libsvthevc SvtHevcEnc EbApi.h EbInitHandle 24 | 56c56 25 | < index dd5d0de898..5d2c74e95d 100644 26 | --- 27 | > index 53a300a7ce..a00fa9f273 100644 28 | 59c59 29 | < @@ -1160,6 +1160,7 @@ OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o 30 | --- 31 | > @@ -1162,6 +1162,7 @@ OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o 32 | 68c68 33 | < index c7e5f9910c..acb332fb08 100644 34 | --- 35 | > index 63ad7ea6ff..5e023215dd 100644 36 | 71c71 37 | < @@ -798,6 +798,7 @@ extern const FFCodec ff_libuavs3d_decoder; 38 | --- 39 | > @@ -799,6 +799,7 @@ extern const FFCodec ff_libuavs3d_decoder; 40 | 787c787 41 | < 2.46.1 42 | --- 43 | > 2.47.0 44 | -------------------------------------------------------------------------------- /.github/scripts/Linux/utils/Dockerfile.arch: -------------------------------------------------------------------------------- 1 | # inspired by https://github.com/aferrero2707/appimage-testsuite 2 | FROM archlinux 3 | RUN pacman --noconfirm -Sy archlinux-keyring 4 | RUN pacman-key --init 5 | RUN pacman-key --populate 6 | RUN pacman --noconfirm -Sy libglvnd libx11 fontconfig freetype2 jack2 7 | -------------------------------------------------------------------------------- /.github/scripts/Linux/utils/Dockerfile.ubuntu: -------------------------------------------------------------------------------- 1 | # inspired by https://github.com/aferrero2707/appimage-testsuite 2 | # installing libraries included in https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist 3 | FROM ubuntu:22.04 4 | RUN apt-get update 5 | RUN apt-get install -y libasound2 libegl1-mesa libfontconfig1 libgl1-mesa-glx \ 6 | libgmp10 libharfbuzz0b libopengl0 libp11-kit0 libx11-6 xvfb 7 | -------------------------------------------------------------------------------- /.github/scripts/Windows/find_msvc.ps1: -------------------------------------------------------------------------------- 1 | #Set-PSDebug -Trace 1 2 | 3 | # Find VS 4 | $vswhere = "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" 5 | $installDir = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath 6 | if (-Not $installDir) { 7 | throw "Vswhere failed" 8 | } 9 | $path = join-path $installDir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt' 10 | $pathPresent = test-path $path 11 | if (-Not $pathPresent) { 12 | throw "MSVS not found" 13 | } 14 | $version = gc -raw $path 15 | if (-Not $version) { 16 | throw "Cannot get MSVS version" 17 | } 18 | $version = $version.Trim() 19 | echo "$installDir\VC\Tools\MSVC\$version\bin\HostX64\x64" >> ${env:GITHUB_PATH} # cl 20 | echo "$installDir\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" >> ${env:GITHUB_PATH} 21 | echo "$installDir\MSBuild\Current\Bin" >> ${env:GITHUB_PATH} 22 | 23 | -------------------------------------------------------------------------------- /.github/scripts/Windows/install_cineform.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eux 2 | 3 | ## download directly release asset - doesn't work right now, the 4 | ## static library fails to link with the rest of the UG because 5 | ## the symbol __report_gsfailure in the lib (through MSVCRTD.lib) 6 | ## is also in in api-ms-win-crt-private-l1-1-0.dll 7 | #install_cineform() {( 8 | # .github/scripts/download-gh-asset.sh gopro/cineform-sdk \ 9 | # win-x64-release cineform.tar.gz 10 | # tar xaf cineform.tar.gz 11 | # cf_tgz=$PWD/cineform.tar.gz 12 | # cd /usr/local 13 | # tar xaf "$cf_tgz" 14 | # # fix "prefix=${prefix}" in .pc file 15 | # sed -i "1s-\${prefix}-/usr/local-" lib/pkgconfig/libcineformsdk.pc 16 | #)} 17 | 18 | build() {( 19 | cd /c 20 | rm -rf cineform-sdk 21 | git clone --depth 1 https://github.com/gopro/cineform-sdk 22 | c=cineform-sdk/build; mkdir $c; cd $c 23 | # workaround for needless Win GetProcessorCount definition 24 | sed -i 's/GetProcessorCount/_&/' ../ConvertLib/ImageScaler.cpp 25 | cmake -DBUILD_STATIC=false -DBUILD_TOOLS=false -A x64 .. # assume 26 | # "-G 'Visual Studio 16 2019'" 27 | cmake --build . --config Release --parallel "$(nproc)" 28 | )} 29 | 30 | install() {( 31 | mkdir -p /usr/local/bin /usr/local/include /usr/local/lib 32 | cd /c/cineform-sdk/build 33 | cp Release/CFHDCodec.dll /usr/local/bin/ 34 | cp Release/CFHDCodec.lib /usr/local/lib/ 35 | cp ../Common/* /usr/local/include/ 36 | # mkdir /usr/local/lib/pkgconfig; cp libcineformsdk.pc /usr/local/lib/pkgconfig/ 37 | )} 38 | 39 | $1 40 | -------------------------------------------------------------------------------- /.github/scripts/Windows/install_jack.ps1: -------------------------------------------------------------------------------- 1 | #Set-PSDebug -Trace 1 2 | 3 | if (Test-Path 'C:\Program Files\JACK2') { 4 | Remove-Item -Recurse 'C:\Program Files\JACK2' 5 | } 6 | 7 | # latest release grab inspired by https://gist.github.com/MarkTiedemann/c0adc1701f3f5c215fc2c2d5b1d5efd3 8 | $repo = "jackaudio/jack2-releases" 9 | $releases = "https://api.github.com/repos/$repo/releases" 10 | $tag = (Invoke-WebRequest $releases -Headers @{Authorization = "token ${Env:GITHUB_TOKEN}"} | ConvertFrom-Json)[0].tag_name 11 | $download = "https://github.com/$repo/releases/download/$tag/jack2-win64-$tag.exe" 12 | Invoke-WebRequest $download -Headers @{Authorization = "token ${Env:GITHUB_TOKEN}"} -OutFile jack2.exe 13 | Start-Process -FilePath '.\jack2.exe' -ArgumentList '/SILENT' -Wait -NoNewWindow 14 | 15 | # The lib is moved to the JACK library for 2 reasons: 16 | # 1. it will be cached here 17 | # 2. if it were in a Windows directory, it won't be bundled with UltraGrid 18 | # (also make sure to remove from the Windows directory) 19 | New-Item -Type Directory 'C:\Program Files\JACK2\bin' 20 | Move-Item 'C:\Windows\libjack64.dll' 'C:\Program Files\JACK2\bin' 21 | 22 | -------------------------------------------------------------------------------- /.github/scripts/Windows/install_spout.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eux 2 | # Install SPOUT 3 | 4 | build() {( 5 | cd /c 6 | rm -rf Spout2 7 | git clone --depth 1 https://github.com/leadedge/Spout2.git 8 | cd Spout2 9 | /c/Program\ Files/CMake/bin/cmake.exe -Bbuild2 . # ./BUILD already exists 10 | /c/Program\ Files/CMake/bin/cmake.exe --build build2 -j "$(nproc)" 11 | )} 12 | 13 | install() {( 14 | mkdir -p /usr/local/bin /usr/local/include /usr/local/lib 15 | cp /c/Spout2/build2/Binaries/x64/SpoutLibrary.dll /usr/local/bin/ 16 | cp /c/Spout2/build2/Binaries/x64/SpoutLibrary.lib /usr/local/lib/ 17 | cp /c/Spout2/SPOUTSDK/SpoutLibrary/SpoutLibrary.h /usr/local/include/ 18 | )} 19 | 20 | $1 21 | -------------------------------------------------------------------------------- /.github/scripts/create_continuous_release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eux 2 | # 3 | # Ensures that tag "continuous" is present is released on GH. This is required for 4 | # zsync AppImage release asset. 5 | # 6 | 7 | dir=$(dirname "$0") 8 | # shellcheck source=/dev/null 9 | . "$dir/json-common.sh" 10 | 11 | sudo apt install jq 12 | URL=$(curl -S -H "Authorization: token $GITHUB_TOKEN" -X GET "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/continuous" | jq -r '.url') 13 | if [ "$URL" != null ]; then # release exists 14 | exit 0 15 | fi 16 | git fetch --prune --unshallow --tags -f 17 | if git tag continuous; then # tag may or may not exists 18 | git push origin refs/tags/continuous 19 | fi 20 | tmp=$(mktemp) 21 | status=$(curl -S -H "Authorization: token $GITHUB_TOKEN" -X POST "$URL" -T - -o "$tmp" -w '%{http_code}' < 3 | Date: Wed, 22 Jun 2022 10:52:12 +0200 4 | Subject: [PATCH 3/6] nsgl_context: set extended dynamic range to true 5 | 6 | --- 7 | src/nsgl_context.m | 4 ++++ 8 | 1 file changed, 4 insertions(+) 9 | 10 | diff --git a/src/nsgl_context.m b/src/nsgl_context.m 11 | index 20404a80..9fe62124 100644 12 | --- a/src/nsgl_context.m 13 | +++ b/src/nsgl_context.m 14 | @@ -241,6 +241,8 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, 15 | } 16 | } 17 | 18 | + GLFWbool useHDR = false; 19 | + 20 | if (fbconfig->redBits != GLFW_DONT_CARE && 21 | fbconfig->greenBits != GLFW_DONT_CARE && 22 | fbconfig->blueBits != GLFW_DONT_CARE) 23 | @@ -253,6 +255,7 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, 24 | { 25 | colorBits = 64; 26 | ADD_ATTRIB(NSOpenGLPFAColorFloat); 27 | + useHDR = true; 28 | } 29 | else { 30 | colorBits = fbconfig->redBits + 31 | @@ -345,6 +348,7 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, 32 | } 33 | 34 | [window->ns.view setWantsBestResolutionOpenGLSurface:window->ns.scaleFramebuffer]; 35 | + [window->ns.view setWantsExtendedDynamicRangeOpenGLSurface: useHDR]; 36 | 37 | [window->context.nsgl.object setView:window->ns.view]; 38 | 39 | -- 40 | 2.43.2 41 | 42 | -------------------------------------------------------------------------------- /.github/scripts/macOS/glfw-patches/0004-cocoa-print-wrong-NS-color-space-if-given.patch: -------------------------------------------------------------------------------- 1 | From c57d1e155b45c6859f55642dfa017fe3ac02648c Mon Sep 17 00:00:00 2001 2 | From: Martin Pulec 3 | Date: Fri, 19 Aug 2022 11:07:28 +0200 4 | Subject: [PATCH 4/6] cocoa: print wrong NS color space if given 5 | 6 | --- 7 | src/cocoa_window.m | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | diff --git a/src/cocoa_window.m b/src/cocoa_window.m 11 | index 16a4e2be..eaaf0b3d 100644 12 | --- a/src/cocoa_window.m 13 | +++ b/src/cocoa_window.m 14 | @@ -897,7 +897,7 @@ static GLFWbool createNativeWindow(_GLFWwindow* window, 15 | case 3: space = kCGColorSpaceITUR_2020_PQ_EOTF; break; 16 | default: 17 | _glfwInputError(GLFW_PLATFORM_ERROR, 18 | - "Cocoa: invalid color space specified"); 19 | + "Cocoa: invalid color space 0x%x specified", wndconfig->ns.color); 20 | /* fall through */ 21 | case 0: space = kCGColorSpaceITUR_709; break; 22 | } 23 | -- 24 | 2.43.2 25 | 26 | -------------------------------------------------------------------------------- /.github/scripts/macOS/glfw-patches/0006-replaced-some-deprecates.patch: -------------------------------------------------------------------------------- 1 | From e83013baad88d531969bf22dc394987fabaaab02 Mon Sep 17 00:00:00 2001 2 | From: Martin Pulec 3 | Date: Mon, 15 Jan 2024 13:20:59 +0100 4 | Subject: [PATCH 6/6] replaced some deprecates 5 | 6 | --- 7 | src/cocoa_window.m | 4 ++-- 8 | 1 file changed, 2 insertions(+), 2 deletions(-) 9 | 10 | diff --git a/src/cocoa_window.m b/src/cocoa_window.m 11 | index adfa0463..c3b5091f 100644 12 | --- a/src/cocoa_window.m 13 | +++ b/src/cocoa_window.m 14 | @@ -906,8 +906,8 @@ static GLFWbool createNativeWindow(_GLFWwindow* window, 15 | // 2020/2100 16 | case 0x20: space = kCGColorSpaceExtendedLinearITUR_2020; break; 17 | case 0x21: space = kCGColorSpaceITUR_2020; break; 18 | - case 0x22: space = kCGColorSpaceITUR_2020_HLG; break; 19 | - case 0x23: space = kCGColorSpaceITUR_2020_PQ_EOTF; break; 20 | + case 0x22: space = kCGColorSpaceITUR_2100_HLG; break; 21 | + case 0x23: space = kCGColorSpaceITUR_2100_PQ; break; 22 | // P3 23 | case 0x30: space = kCGColorSpaceExtendedLinearDisplayP3; break; 24 | case 0x31: space = kCGColorSpaceDCIP3; break; 25 | -- 26 | 2.43.2 27 | 28 | -------------------------------------------------------------------------------- /.github/scripts/macOS/glfw-patches/README.md: -------------------------------------------------------------------------------- 1 | Custom patches to GLFW to allow GL HDR switching. 2 | 3 | Requested by Andrew Kolakowski in Mar 2022. 4 | -------------------------------------------------------------------------------- /.github/scripts/replace-asset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eux 2 | 3 | set +e # pattern matching may fail 4 | # If first parameter 2 parameters is GITHUB_REPOSOTIRY and GITHUB_TOKEN, those willbe used as an env var (used by the scripts below) 5 | if repository=$(expr "$1" : "GITHUB_REPOSITORY=\(.*\)"); then 6 | export GITHUB_REPOSITORY="$repository" 7 | shift 8 | fi 9 | if token=$(expr "$1" : "GITHUB_TOKEN=\(.*\)"); then 10 | export GITHUB_TOKEN="$token" 11 | shift 12 | fi 13 | set -e 14 | 15 | dir=$(dirname "$0") 16 | 17 | "$dir/delete-asset.sh" "$@" 18 | "$dir/upload-asset.sh" "$@" 19 | 20 | -------------------------------------------------------------------------------- /.github/scripts/upload-asset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eu 2 | 3 | dir=$(dirname "$0") 4 | # shellcheck source=/dev/null 5 | . "$dir/json-common.sh" 6 | 7 | TAG_NAME=${1?} 8 | FILE=${2?} 9 | FILENAME=$(basename "${2?}") 10 | CONTENT_TYPE=${3?} 11 | LABEL=${4?} 12 | 13 | JSON=$(fetch_json "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/$TAG_NAME" "$GITHUB_TOKEN") 14 | UPLOAD_URL=$(jq -r .upload_url "$JSON" | sed "s/{.*}//") 15 | 16 | JSON=$(mktemp) 17 | STATUS=$(curl -S -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: $CONTENT_TYPE" -X POST "$UPLOAD_URL?name=$FILENAME&label=$LABEL" -T "$FILE" -w '%{http_code}' -o "$JSON") 18 | check_errors "$JSON" 19 | check_status "$STATUS" 20 | rm "$JSON" 21 | 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | configure 2 | Makefile 3 | config.guess 4 | config.h 5 | config.h.in 6 | config.sub 7 | *.o 8 | *.P 9 | *.lo 10 | *.txt 11 | *.mp4 12 | *.h264 13 | *.log 14 | *.vim 15 | uv 16 | bin/ 17 | /build* 18 | /documentation 19 | /export*/ 20 | /local/ 21 | lib/ 22 | aclocal.m4 23 | autom4te.cache 24 | config.log 25 | config.status 26 | install-sh 27 | missing 28 | src/version.h 29 | RCS 30 | *.sw? 31 | *.orig 32 | *.BACKUP.* 33 | *.BASE.* 34 | *.LOCAL.* 35 | *.REMOTE.* 36 | *~ 37 | vgcore.* 38 | cscope.* 39 | tags 40 | ag_plugin 41 | src/stamp-h1 42 | .DS_Store 43 | uv.app/Contents/libs/ 44 | depcomp 45 | compile 46 | core 47 | m4/ 48 | libtool 49 | ltmain.sh 50 | mtrace.txt 51 | .project 52 | *.sdp 53 | test-driver 54 | src/dir-stamp 55 | test/run_tests 56 | unittest/run_tests 57 | .cache 58 | .clang-format 59 | .clang-tidy 60 | .editorconfig 61 | .envrc 62 | compile_commands.json 63 | compile_flags.txt 64 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ext-deps/zfec"] 2 | path = ext-deps/zfec 3 | url = https://github.com/tahoe-lafs/zfec 4 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | set -e 3 | 4 | command -v automake >/dev/null 2>&1 || { echo >&2 "Automake missing. Aborting."; exit 1; } 5 | command -v autoconf >/dev/null 2>&1 || { echo >&2 "Autoconf missing. Aborting."; exit 1; } 6 | 7 | [ -d m4 ] || mkdir m4 8 | 9 | srcdir=`dirname $0` 10 | test -z "$srcdir" && srcdir=. 11 | ORIGDIR=`pwd` 12 | cd $srcdir 13 | 14 | . ./data/scripts/add_cl_if_not_present.sh # add --with-cuda-host-compiler= to current params (Win) 15 | 16 | # install config.guess config.sub install-sh missing 17 | echo "Running automake..." 18 | RES=$(automake --add-missing -c 2>&1 || true) # actual call will fail - we do not have Makefile.am 19 | if test -n "$RES" -a -z "$(echo $RES | grep Makefile.am)"; then 20 | echo "$RES" 21 | exit 1 22 | fi 23 | # Running autoreconf is preferred over aclocal/autoheader/autoconf. 24 | # It, however, needs to be a little bit bent because we do not use automake. 25 | echo "Running autoreconf..." 26 | RES=$(autoreconf -i 2>&1 || true) 27 | # check if the error was the expected absence of Makefile.am or something else - then fail 28 | if test -n "$RES" -a -z "$(echo $RES | grep Makefile.am)"; then 29 | echo "$RES" 30 | exit 1 31 | fi 32 | 33 | CONFIGURE_OPTS= 34 | 35 | if [ -n "$DEBUG" ]; then 36 | CONFIGURE_OPTS="$CONFIGURE_OPTS --enable-debug" 37 | fi 38 | 39 | cd $ORIGDIR 40 | 41 | echo "Running configure..." 42 | $srcdir/configure $CONFIGURE_OPTS "$@" 43 | 44 | cd $ORIGDIR 45 | 46 | -------------------------------------------------------------------------------- /cuda_dxt/Makefile: -------------------------------------------------------------------------------- 1 | 2 | 3 | APPS := rgb2dxt1 rgb2dxt6 dxt62tga 4 | 5 | all: $(APPS) 6 | @echo "DONE" 7 | 8 | rgb2dxt%: rgb2dxt%.o cuda_dxt.o 9 | nvcc -o $@ $^ 10 | 11 | rgb2dxt%.o: rgb2dxt%.c cuda_dxt.h 12 | gcc -I /usr/local/cuda/include/ -std=c89 -pedantic -Wextra -Wno-long-long -O3 -c $< 13 | 14 | dxt62tga: dxt62tga.c 15 | gcc -std=c89 -pedantic -Wextra -O3 -o $@ $< 16 | 17 | cuda_dxt.o: cuda_dxt.cu cuda_dxt.h 18 | nvcc -O3 --ptxas-options=-v -arch=sm_20 -c -o $@ $< 19 | 20 | clean: 21 | rm -f *.o $(APPS) 22 | -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | - screen-capture-recorder-x64.dll is taken from https://sourceforge.net/projects/screencapturer/ 2 | - default.sf3 - https://musical-artifacts.com/artifacts/2642, but compressed 3 | with 4 | - template - various distribution templates (see template/README.md) 5 | -------------------------------------------------------------------------------- /data/Windows/update.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop" 2 | $scriptPath = $MyInvocation.MyCommand.Path 3 | $scriptDir = Split-Path $scriptPath 4 | cd $scriptDir 5 | rm UltraGrid-continuous* 6 | 7 | Invoke-WebRequest https://github.com/CESNET/UltraGrid/releases/download/continuous/UltraGrid-continuous-win64.zip -OutFile UltraGrid-continuous-win64.zip 8 | $downloadExtractDir = "UltraGrid-continuous-latest-win64" 9 | Expand-Archive -LiteralPath UltraGrid-continuous-win64.zip -DestinationPath $downloadExtractDir 10 | $currentName = (Get-Location | Split-Path -Leaf) 11 | $downloadedName = (Get-ChildItem $downloadExtractDir).Name 12 | 13 | Move-Item $downloadExtractDir/* ../$downloadedName-new 14 | Set-Location .. 15 | if ($currentName -eq $downloadedName) { 16 | if (Test-Path -Path $currentName-bkp) { 17 | Remove-Item -Recurse $currentName-bkp 18 | } 19 | Move-Item $currentName $currentName-bkp 20 | } 21 | 22 | Move-Item $downloadedName-new $downloadedName 23 | Set-Location $downloadedName 24 | 25 | Write-Host "Updated UltraGrid in $downloadedName. You can delete $currentName-bkp if everything is OK." 26 | 27 | -------------------------------------------------------------------------------- /data/ag_plugin/README: -------------------------------------------------------------------------------- 1 | UltraGrid video service plugin for AccessGrid v2.2 2 | ================================================== 3 | 4 | The plugin will be built as part of the normal UltraGrid compilation. 5 | 6 | To install the UltraGrid receiver, copy ag_plugin/uvReceiverService.zip into 7 | /etc/AccessGrid/NodeServices and restart AccessGrid. When VenueClient starts, 8 | go into "Preferences -> Manage My Node" and add the "UltraGrid Receiver". 9 | 10 | To install the UltraGrid sender, copy ag_plugin/uvSenderService.zip into 11 | /etc/AccessGrid/NodeServices and restart AccessGrid. When VenueClient starts, 12 | go into "Preferences -> Manage My Node" and add the "UltraGrid Sender". 13 | 14 | When upgrading the plugin, be sure to remove any old versions installed in 15 | both /etc/AccessGrid/NodeServices and $HOME/.AccessGrid/local_services 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /data/ag_plugin/uvReceiverService.manifest: -------------------------------------------------------------------------------- 1 | uv 2 | -------------------------------------------------------------------------------- /data/ag_plugin/uvReceiverService.svc: -------------------------------------------------------------------------------- 1 | [ServiceDescription] 2 | name = UltraGrid Receiver 3 | description = UltraGrid based video service to receive multicast video 4 | capabilities = Capability1 5 | executable = uvReceiverService.py 6 | platform = linux2 7 | version = 1.0 8 | 9 | [Capability1] 10 | role = consumer 11 | type = video 12 | 13 | -------------------------------------------------------------------------------- /data/ag_plugin/uvSenderService.manifest: -------------------------------------------------------------------------------- 1 | uv 2 | -------------------------------------------------------------------------------- /data/ag_plugin/uvSenderService.svc: -------------------------------------------------------------------------------- 1 | [ServiceDescription] 2 | name = UltraGrid Sender 3 | description = UltraGrid based video service to send multicast video 4 | capabilities = Capability1 5 | executable = uvSenderService.py 6 | platform = linux2 7 | version = 1.0 8 | 9 | [Capability1] 10 | role = producer 11 | type = video 12 | 13 | -------------------------------------------------------------------------------- /data/bash_completion/uv: -------------------------------------------------------------------------------- 1 | _uv() 2 | { 3 | local cur prev opts 4 | COMPREPLY=() 5 | cur="${COMP_WORDS[COMP_CWORD]}" 6 | prev="${COMP_WORDS[COMP_CWORD-1]}" 7 | opts="-h --help --fullhelp -v --version -d -t -c -r -s --verbose --list-modules -4 -6 --pix-fmts --video-codecs -M -p --mcast-if --protocol --audio-codec --audio-capture-format --audio-channel-map --param --capture-filter --video-protocol --audio-protocol -A --audio-delay --encryption -f -l --cuda-device --control-port -P --audio-scale --playback --record" 8 | 9 | if [[ ${cur} == -* ]] ; then 10 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) 11 | return 0 12 | fi 13 | } 14 | complete -F _uv uv 15 | -------------------------------------------------------------------------------- /data/default.sf3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/default.sf3 -------------------------------------------------------------------------------- /data/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.device.audio-input 6 | 7 | com.apple.security.device.camera 8 | 9 | com.apple.security.cs.disable-library-validation 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/screen-capture-recorder-x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/screen-capture-recorder-x64.dll -------------------------------------------------------------------------------- /data/scripts/Linux-AppImage/excludelist.local.arm: -------------------------------------------------------------------------------- 1 | # ARM 2 | ld-linux-aarch64.so.1 3 | ld-linux-armhf.so.3 4 | #libcrypt.so.1 5 | #libnss_db.so.2 6 | #libXau.so.6 7 | #libXcursor.so.1 8 | #libXdmcp.so.6 9 | #libXext.so.6 10 | #libXfixes.so.3 11 | #libXinerama.so.1 12 | #libXi.so.6 13 | #libXrandr.so.2 14 | ##libXrender.so.1 15 | #libXtst.so.6 16 | #libXxf86vm.so.1 17 | #libX11-xcb.so.1 18 | #libxcb* libxshm* 19 | -------------------------------------------------------------------------------- /data/scripts/Linux-AppImage/excludelist.local.x86: -------------------------------------------------------------------------------- 1 | # Causes crash on U22.04 (see https://github.com/CESNET/UltraGrid/releases/download/v1.7/UltraGrid-1.7-x86_64.AppImage) 2 | libgdk-3.so.0 3 | # Rocky Linux 9 4 | libgdk_pixbuf-2.0.so.0 5 | -------------------------------------------------------------------------------- /data/scripts/Linux-AppImage/scripts/preload.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh 2 | get_loader() { 3 | loaders='/lib64/ld-linux-*so* /lib/ld-linux-*so* /lib*/ld-linux-*so*' 4 | for n in $loaders; do 5 | for m in $n; do 6 | if [ -x "$m" ]; then 7 | echo "$m" 8 | return 9 | fi 10 | done 11 | done 12 | } 13 | 14 | # @param $1 UG library name 15 | # @param $2 system preloaded library pattern 16 | # 17 | set_ld_preload() { 18 | ug_module_lib=$AI_LIB_PATH/ultragrid/$1 19 | if [ ! -f "$ug_module_lib" ]; then 20 | return 21 | fi 22 | loader=$(get_loader) 23 | if [ ! -x "$loader" ]; then 24 | return 25 | fi 26 | system_lib=$(LD_TRACE_LOADED_OBJECTS=1 $loader "$ug_module_lib" | grep "$2" | grep -v 'not found' | awk '{print $3}') 27 | if [ -n "$system_lib" ]; then 28 | export LD_PRELOAD="$system_lib"${LD_PRELOAD:+":$LD_PRELOAD"} 29 | fi 30 | } 31 | 32 | -------------------------------------------------------------------------------- /data/scripts/macos-wrapper: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eu 2 | 3 | MACOS_VER_MAJOR=$(uname -r | cut -f 1 -d .) 4 | 5 | MSG="Please use an alternative build for macOS older than 13, available at: 6 | https://github.com/CESNET/UltraGrid/releases/download/continuous/UltraGrid-nightly-alt.dmg" 7 | 8 | if [ "$MACOS_VER_MAJOR" -lt 22 ]; then 9 | BASENAME=$(basename "$0") 10 | if [ "$BASENAME" = uv-qt ]; then 11 | osascript -e "tell application \"SystemUIServer\" 12 | display dialog \"$MSG\" 13 | end" 14 | else 15 | echo "$MSG" >&2 16 | fi 17 | exit 1 18 | fi 19 | 20 | exec "$0-real" "$@" 21 | -------------------------------------------------------------------------------- /data/scripts/prepare_release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -eu 2 | 3 | ## Prepares UG for release, does following tasks: 4 | ## - replaces verson string in configure.ac 5 | ## - creates release commit 6 | ## - from that creates release branch that contains needed scripts and removes submodules 7 | ## - pushes both 8 | ## 9 | ## usage: 10 | ## $0 11 | 12 | VERSION=${1?call with version number} 13 | TAGNAME=v$VERSION 14 | BRANCH=release/$VERSION 15 | 16 | printf "Did you update a splashscreen image? [Ny] " 17 | read -r confirm 18 | if [ "${confirm-N}" != y ]; then 19 | return 1 20 | fi 21 | 22 | #git submodule update --init 23 | 24 | sed "s/\(AC_INIT(\[UltraGrid\], \[\).*\(\], \[ultragrid-dev@cesnet.cz\]\)/\1$VERSION\2/" configure.ac 25 | git add configure.ac 26 | git commit -S -m "UltraGrid $VERSION" 27 | 28 | echo "Created release commit in master branch - not pushing yet, do it manually after a review that everything is ok." 29 | 30 | # next, we create a release branch 31 | git branch "$BRANCH" 32 | 33 | # create config files 34 | ./autogen.sh && rm Makefile 35 | git add -f configure config.guess config.sub install-sh missing src/config.h.in 36 | 37 | # remove submodules 38 | git rm gpujpeg cineform-sdk 39 | 40 | #rm -rf .git .gitmodules 41 | #find -name .gitignore -print0 |xargs -0 rm 42 | #find -name .git -print0 |xargs -0 rm -rf 43 | 44 | git commit -S -m "Added configuration scripts" 45 | 46 | git push origin "$BRANCH" 47 | 48 | git tag -s "$TAGNAME" 49 | git push upstream "refs/tags/$TAGNAME" 50 | 51 | echo "Release branch and tag created - setup build scripts to build binary assets and release it on GitHub." 52 | 53 | -------------------------------------------------------------------------------- /data/splashscreen.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/splashscreen.xcf -------------------------------------------------------------------------------- /data/template/README.md: -------------------------------------------------------------------------------- 1 | files from this subdirectories will be deployed automatically: 2 | 3 | 1. bin/* - will be copied to $(bindir) and also to macOS bundle 4 | Contents/MacOS subdir 5 | 2. macOS-bundle/* - will be copied to macOS bundle 6 | 3. macOS-legacy/README.html - will be copied to macOS dmg (at the same 7 | level as application bundle). Contains hint how to allow unsigned UG. 8 | -------------------------------------------------------------------------------- /data/template/macOS-bundle/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | uv 9 | CFBundleIdentifier 10 | cz.cesnet.UltraGrid 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | UltraGrid 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 0.90 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | 10.5 25 | NSCameraUsageDescription 26 | Allow camera for video capture 27 | NSMicrophoneUsageDescription 28 | Allow microphone for audio capture 29 | 30 | 31 | -------------------------------------------------------------------------------- /data/template/macOS-bundle/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | UltraGrid 2 | -------------------------------------------------------------------------------- /data/template/macOS-bundle/Contents/Resources/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/template/macOS-bundle/Contents/Resources/icon.icns -------------------------------------------------------------------------------- /data/template/macOS-legacy/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 |

You will be redirected to UltraGrid wiki soon! 12 |

13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/ultragrid-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/ultragrid-48x48.png -------------------------------------------------------------------------------- /data/ultragrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/data/ultragrid.png -------------------------------------------------------------------------------- /data/uv-qt.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=UltraGrid 4 | GenericName=RTP Streamer 5 | Type=Application 6 | Exec=uv-qt 7 | Icon=ultragrid 8 | StartupNotify=true 9 | Terminal=false 10 | Categories=AudioVideo;Recorder;Network;VideoConference; 11 | 12 | -------------------------------------------------------------------------------- /dxt_compress/.gitignore: -------------------------------------------------------------------------------- 1 | dxt_compress 2 | dxt_glsl.h 3 | -------------------------------------------------------------------------------- /dxt_compress/LICENSE: -------------------------------------------------------------------------------- 1 | For files *glsl except of yuv422_to_yuv444.glsl applies LICENSE-rtdxt. 2 | 3 | All other files are distribuated under the following license: 4 | 5 | 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | 10 | * Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | POSSIBILITY OF SUCH DAMAGE. 27 | 28 | -------------------------------------------------------------------------------- /dxt_compress/LICENSE-rtdxt: -------------------------------------------------------------------------------- 1 | Real-time DXT1 & YCoCg-DXT5 compression (Cg 2.0) 2 | Copyright (c) NVIDIA Corporation. 3 | Written by: Ignacio Castano 4 | 5 | Thanks to JMP van Waveren, Simon Green, Eric Werness, Simon Brown 6 | 7 | Permission is hereby granted, free of charge, to any person 8 | obtaining a copy of this software and associated documentation 9 | files (the "Software"), to deal in the Software without 10 | restriction, including without limitation the rights to use, 11 | copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the 13 | Software is furnished to do so, subject to the following 14 | conditions: 15 | 16 | The above copyright notice and this permission notice shall be 17 | included in all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 23 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 24 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26 | OTHER DEALINGS IN THE SOFTWARE. 27 | 28 | -------------------------------------------------------------------------------- /dxt_compress/README: -------------------------------------------------------------------------------- 1 | DXT compressor 2 | -------------- 3 | 4 | Build: Run 'make' command (but you need following required packages). 5 | 6 | Required packages: 7 | apt-get install freeglut3-dev libglew1.5-dev nvidia-cg-toolkit -------------------------------------------------------------------------------- /dxt_compress/compress_vp.glsl: -------------------------------------------------------------------------------- 1 | #if ! legacy 2 | out vec4 TEX0; 3 | in vec4 position; 4 | #endif 5 | 6 | void main() { 7 | #if legacy 8 | gl_Position = gl_Vertex; 9 | gl_TexCoord[0] = gl_MultiTexCoord0; 10 | #else 11 | gl_Position = position; 12 | TEX0 = position * vec4(0.5) + vec4(0.5); 13 | #endif 14 | } 15 | -------------------------------------------------------------------------------- /dxt_compress/display_dxt1_yuv_fp.glsl: -------------------------------------------------------------------------------- 1 | #if legacy 2 | #define TEXCOORD gl_TexCoord[0] 3 | #else 4 | #define TEXCOORD TEX0 5 | #define texture2D texture 6 | #endif 7 | 8 | #if legacy 9 | #define colorOut gl_FragColor 10 | #else 11 | out vec4 colorOut; 12 | #endif 13 | 14 | #if ! legacy 15 | in vec4 TEX0; 16 | #endif 17 | 18 | uniform sampler2D yuvtex; 19 | 20 | void main(void) { 21 | vec4 col = texture2D(yuvtex, TEXCOORD.st); 22 | 23 | float Y = 1.1643 * (col[0] - 0.0625); 24 | float U = 1.1384 * (col[1] - 0.5); 25 | float V = 1.1384 * (col[2] - 0.5); 26 | 27 | float G = Y-0.39173*U-0.81290*V; 28 | float B = Y+2.017*U; 29 | float R = Y+1.5958*V; 30 | 31 | colorOut=vec4(R,G,B,1.0); 32 | } 33 | -------------------------------------------------------------------------------- /dxt_compress/display_dxt5ycocg_fp.glsl: -------------------------------------------------------------------------------- 1 | #if legacy 2 | #define TEXCOORD gl_TexCoord[0] 3 | #else 4 | #define TEXCOORD TEX0 5 | #define texture2D texture 6 | #endif 7 | 8 | #if legacy 9 | #define colorOut gl_FragColor 10 | #else 11 | out vec4 colorOut; 12 | #endif 13 | 14 | #if ! legacy 15 | in vec4 TEX0; 16 | #endif 17 | 18 | uniform sampler2D _image; 19 | void main() 20 | { 21 | vec4 _rgba; 22 | float _scale; 23 | float _Co; 24 | float _Cg; 25 | float _R; 26 | float _G; 27 | float _B; 28 | _rgba = texture2D(_image, TEXCOORD.xy); 29 | _scale = 1.00000000E+00/(3.18750000E+01*_rgba.z + 1.00000000E+00); 30 | _Co = (_rgba.x - 5.01960814E-01)*_scale; 31 | _Cg = (_rgba.y - 5.01960814E-01)*_scale; 32 | _R = (_rgba.w + _Co) - _Cg; 33 | _G = _rgba.w + _Cg; 34 | _B = (_rgba.w - _Co) - _Cg; 35 | _rgba = vec4(_R, _G, _B, 1.00000000E+00); 36 | colorOut = _rgba; 37 | return; 38 | } // main end 39 | -------------------------------------------------------------------------------- /dxt_compress/display_fp.glsl: -------------------------------------------------------------------------------- 1 | #if legacy 2 | #define TEXCOORD gl_TexCoord[0] 3 | #else 4 | #define TEXCOORD TEX0 5 | #define texture2D texture 6 | #endif 7 | 8 | #if legacy 9 | #define colorOut gl_FragColor 10 | #else 11 | out vec4 colorOut; 12 | #endif 13 | 14 | #if ! legacy 15 | in vec4 TEX0; 16 | #endif 17 | 18 | uniform sampler2D _image; 19 | void main() 20 | { 21 | vec4 _rgba; 22 | _rgba = texture2D(_image, TEXCOORD.xy); 23 | colorOut = _rgba; 24 | return; 25 | } // main end 26 | -------------------------------------------------------------------------------- /dxt_compress/rgba_to_yuv422.glsl: -------------------------------------------------------------------------------- 1 | #if legacy 2 | #define TEXCOORD gl_TexCoord[0] 3 | #else 4 | #define TEXCOORD TEX0 5 | #define texture2D texture 6 | #endif 7 | 8 | #if legacy 9 | #define colorOut gl_FragColor 10 | #else 11 | out vec4 colorOut; 12 | #endif 13 | 14 | #if ! legacy 15 | in vec4 TEX0; 16 | #endif 17 | 18 | uniform sampler2D image; 19 | uniform float imageWidth; // is original image width, it means twice as wide as ours 20 | 21 | void main() 22 | { 23 | vec4 rgba1, rgba2; 24 | vec4 yuv1, yuv2; 25 | vec2 coor1, coor2; 26 | float U, V; 27 | 28 | coor1 = TEXCOORD.xy - vec2(1.0 / (imageWidth * 2.0), 0.0); 29 | coor2 = TEXCOORD.xy + vec2(1.0 / (imageWidth * 2.0), 0.0); 30 | 31 | rgba1 = texture2D(image, coor1); 32 | rgba2 = texture2D(image, coor2); 33 | 34 | yuv1.x = 1.0/16.0 + (rgba1.r * 0.2126 + rgba1.g * 0.7152 + rgba1.b * 0.0722) * 0.8588; // Y 35 | yuv1.y = 0.5 + (-rgba1.r * 0.1145 - rgba1.g * 0.3854 + rgba1.b * 0.5) * 0.8784; 36 | yuv1.z = 0.5 + (rgba1.r * 0.5 - rgba1.g * 0.4541 - rgba1.b * 0.0458) * 0.8784; 37 | 38 | yuv2.x = 1.0/16.0 + (rgba2.r * 0.2126 + rgba2.g * 0.7152 + rgba2.b * 0.0722) * 0.8588; // Y 39 | yuv2.y = 0.5 + (-rgba2.r * 0.1145 - rgba2.g * 0.3854 + rgba2.b * 0.5) * 0.8784; 40 | yuv2.z = 0.5 + (rgba2.r * 0.5 - rgba2.g * 0.4541 - rgba2.b * 0.0458) * 0.8784; 41 | 42 | U = mix(yuv1.y, yuv2.y, 0.5); 43 | V = mix(yuv1.z, yuv2.z, 0.5); 44 | 45 | colorOut = vec4(U,yuv1.x, V, yuv2.x); 46 | } 47 | -------------------------------------------------------------------------------- /dxt_compress/yuv422_to_yuv444.glsl: -------------------------------------------------------------------------------- 1 | uniform sampler2D image; 2 | uniform float imageWidth; 3 | 4 | #if legacy 5 | #define TEXCOORD gl_TexCoord[0] 6 | #else 7 | #define TEXCOORD TEX0 8 | #define texture2D texture 9 | #endif 10 | 11 | #if legacy 12 | #define colorOut gl_FragColor 13 | #else 14 | out vec4 colorOut; 15 | #endif 16 | 17 | #if ! legacy 18 | in vec4 TEX0; 19 | #endif 20 | 21 | 22 | void main() 23 | { 24 | vec4 color; 25 | color.rgba = texture2D(image, TEXCOORD.xy).grba; // store Y0UVY1 ro rgba 26 | if(TEXCOORD.x * imageWidth / 2.0 - floor(TEXCOORD.x * imageWidth / 2.0) > 0.5) // 'odd' pixel 27 | color.r = color.a; // use Y1 instead of Y0 28 | colorOut = color; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /ext-deps/DeckLink/README.md: -------------------------------------------------------------------------------- 1 | The versioned SDK API itself can be found here: 2 | 3 | 4 | ## Windows 5 | 6 | Use widl from msys2 $MINGW_PACKAGE_PREFIX-tools-git or MIDL from VS (use VS Command 7 | Prompt) to compile interface from IDL. 8 | -------------------------------------------------------------------------------- /ext-deps/README.md: -------------------------------------------------------------------------------- 1 | External dependencies 2 | ===================== 3 | 4 | DeckLink 5 | -------- 6 | **DeckLink SDK API** - a BSD-licensed wrapper library dynamically calling 7 | actual library. 8 | 9 | GPUJPEG 10 | ------- 11 | Script `bootstrap_gpujpeg.sh` tries to bootstrap _GPUJPEG_ statically without 12 | installing. However, using GPUJPEG as a standalone library is preferred if possible. 13 | 14 | Zfec 15 | ---- 16 | Code of Reed-Solomon error correction. If submodule is initialized, UltraGrid 17 | compiles the code automatically (the files `fec.h` and `fec.c` only need to be 18 | present on predefined location). 19 | 20 | -------------------------------------------------------------------------------- /gui/QT/.gitignore: -------------------------------------------------------------------------------- 1 | .qmake.stash 2 | moc_*.cpp 3 | moc_*.h 4 | ui_*.h 5 | uv-qt 6 | -------------------------------------------------------------------------------- /gui/QT/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/gui/QT/icon.ico -------------------------------------------------------------------------------- /gui/QT/option/actionCheckable_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "actionCheckable_ui.hpp" 2 | 3 | ActionCheckableUi::ActionCheckableUi(QAction *action, Settings *settings, const std::string &opt) : 4 | CheckableUi(settings, opt), 5 | action(action) 6 | { 7 | updateUiState(); 8 | connectSignals(); 9 | } 10 | 11 | void ActionCheckableUi::connectSignals(){ 12 | connect(action, &QAction::triggered, this, &ActionCheckableUi::boxClicked); 13 | } 14 | 15 | void ActionCheckableUi::updateUiState(bool checked){ 16 | action->setChecked(checked); 17 | } 18 | 19 | void ActionCheckableUi::updateUiState(){ 20 | updateUiState(getOptValue()); 21 | } 22 | 23 | -------------------------------------------------------------------------------- /gui/QT/option/actionCheckable_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef ACTIONCHECKABLE_UI_HPP 2 | #define ACTIONCHECKABLE_UI_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "checkable_ui.hpp" 8 | #include "settings.hpp" 9 | 10 | class ActionCheckableUi : public CheckableUi{ 11 | Q_OBJECT 12 | 13 | public: 14 | ActionCheckableUi(QAction *action, Settings *settings, const std::string &opt); 15 | 16 | protected: 17 | QAction *action; 18 | 19 | void connectSignals() override; 20 | void updateUiState(bool checked) override; 21 | void updateUiState() override; 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /gui/QT/option/audio_opts.hpp: -------------------------------------------------------------------------------- 1 | #ifndef AUDIO_OPTS_HPP 2 | #define AUDIO_OPTS_HPP 3 | 4 | #include 5 | #include "available_settings.hpp" 6 | #include "settings.hpp" 7 | 8 | struct SettingItem; 9 | 10 | namespace Ui{ 11 | class UltragridWindow; 12 | }; 13 | 14 | std::vector getAudioSrc(AvailableSettings *availSettings); 15 | std::vector getAudioPlayback(AvailableSettings *availSettings); 16 | std::vector getAudioCompress(AvailableSettings *availSettings); 17 | 18 | void audioCompressionCallback(Option &opt, bool suboption, void *); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /gui/QT/option/checkable_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "checkable_ui.hpp" 2 | 3 | CheckableUi::CheckableUi(Settings *settings, const std::string &opt) : 4 | WidgetUi(settings, opt) 5 | { 6 | registerCallback(); 7 | } 8 | 9 | void CheckableUi::boxClicked(bool checked){ 10 | settings->getOption(opt).setValue(checked ? "t" : "f"); 11 | //settings->getOption(opt).setEnabled(checked); 12 | emit changed(); 13 | } 14 | 15 | void CheckableUi::optChangeCallback(Option &changedOpt, bool /*suboption*/){ 16 | if(changedOpt.getName() == opt){ 17 | updateUiState(changedOpt.isEnabled()); 18 | } 19 | } 20 | 21 | bool CheckableUi::getOptValue(){ 22 | return settings->getOption(opt).isEnabled(); 23 | } 24 | -------------------------------------------------------------------------------- /gui/QT/option/checkable_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef CHECKABLE_UI_HPP 2 | #define CHECKABLE_UI_HPP 3 | 4 | #include 5 | 6 | #include "widget_ui.hpp" 7 | #include "settings.hpp" 8 | 9 | class CheckableUi : public WidgetUi{ 10 | Q_OBJECT 11 | 12 | public: 13 | CheckableUi(Settings *settings, const std::string &opt); 14 | 15 | virtual ~CheckableUi() { } 16 | 17 | protected: 18 | virtual void connectSignals() override = 0; 19 | bool getOptValue(); 20 | void updateUiState() override = 0; 21 | virtual void updateUiState(bool checked) = 0; 22 | 23 | void optChangeCallback(Option &opt, bool suboption) override; 24 | 25 | protected slots: 26 | void boxClicked(bool checked); 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /gui/QT/option/checkbox_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "checkbox_ui.hpp" 2 | 3 | CheckboxUi::CheckboxUi(QAbstractButton *box, Settings *settings, const std::string &opt) : 4 | CheckableUi(settings, opt), 5 | checkbox(box) 6 | { 7 | updateUiState(); 8 | connectSignals(); 9 | } 10 | 11 | void CheckboxUi::connectSignals(){ 12 | connect(checkbox, &QAbstractButton::clicked, this, &CheckboxUi::boxClicked); 13 | } 14 | 15 | void CheckboxUi::updateUiState(bool checked){ 16 | checkbox->setChecked(checked); 17 | } 18 | 19 | void CheckboxUi::updateUiState(){ 20 | updateUiState(getOptValue()); 21 | } 22 | 23 | -------------------------------------------------------------------------------- /gui/QT/option/checkbox_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef CHECKBOX_UI_HPP 2 | #define CHECKBOX_UI_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "checkable_ui.hpp" 8 | #include "settings.hpp" 9 | 10 | class CheckboxUi : public CheckableUi{ 11 | Q_OBJECT 12 | 13 | public: 14 | CheckboxUi(QAbstractButton *box, Settings *settings, const std::string &opt); 15 | 16 | protected: 17 | QAbstractButton *checkbox; 18 | 19 | void connectSignals() override; 20 | void updateUiState(bool checked) override; 21 | void updateUiState() override; 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /gui/QT/option/combobox_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef COMBOBOX_UI_HPP 2 | #define COMBOBOX_UI_HPP 3 | 4 | #include 5 | #include 6 | #include "widget_ui.hpp" 7 | 8 | struct SettingValue{ 9 | std::string opt; 10 | std::string val; 11 | }; 12 | 13 | struct ConditionItem{ 14 | SettingValue value; 15 | bool negation; 16 | }; 17 | 18 | struct SettingItem{ 19 | std::string name; 20 | std::vector opts; 21 | 22 | //conditions in conjunctive normal form 23 | std::vector> conditions; 24 | }; 25 | 26 | Q_DECLARE_METATYPE(SettingItem); 27 | 28 | class ComboBoxUi : public WidgetUi{ 29 | Q_OBJECT 30 | 31 | public: 32 | ComboBoxUi(QComboBox *box, 33 | Settings *settings, 34 | const std::string &opt, 35 | std::function()> itemBuilder); 36 | 37 | void refresh() override; 38 | 39 | private: 40 | QComboBox *box; 41 | std::function()> itemBuilder; 42 | bool ignoreCallback; 43 | 44 | std::vector items; 45 | 46 | void connectSignals() override; 47 | void updateUiState() override; 48 | 49 | void updateUiItems(); 50 | 51 | void optChangeCallback(Option &opt, bool suboption) override; 52 | 53 | void selectOption(); 54 | 55 | private slots: 56 | void itemSelected(int index); 57 | }; 58 | 59 | 60 | #endif 61 | -------------------------------------------------------------------------------- /gui/QT/option/groupBox_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "groupBox_ui.hpp" 2 | 3 | GroupBoxUi::GroupBoxUi(QGroupBox *groupBox, Settings *settings, const std::string &opt) : 4 | CheckableUi(settings, opt), 5 | groupBox(groupBox) 6 | { 7 | updateUiState(); 8 | connectSignals(); 9 | } 10 | 11 | void GroupBoxUi::connectSignals(){ 12 | connect(groupBox, &QGroupBox::clicked, this, &GroupBoxUi::boxClicked); 13 | } 14 | 15 | void GroupBoxUi::updateUiState(bool checked){ 16 | groupBox->setChecked(checked); 17 | } 18 | 19 | void GroupBoxUi::updateUiState(){ 20 | updateUiState(getOptValue()); 21 | } 22 | 23 | -------------------------------------------------------------------------------- /gui/QT/option/groupBox_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef GROUPBOX_UI_HPP 2 | #define GROUPBOX_UI_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "checkable_ui.hpp" 8 | #include "settings.hpp" 9 | 10 | class GroupBoxUi : public CheckableUi{ 11 | Q_OBJECT 12 | public: 13 | GroupBoxUi(QGroupBox *groupBox, Settings *settings, const std::string &opt); 14 | 15 | protected: 16 | QGroupBox *groupBox; 17 | 18 | void connectSignals() override; 19 | void updateUiState(bool checked) override; 20 | void updateUiState() override; 21 | 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /gui/QT/option/lineedit_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "lineedit_ui.hpp" 2 | 3 | LineEditUi::LineEditUi(QLineEdit *line, Settings *settings, const std::string &opt) : 4 | TextOptUi(settings, opt), 5 | line(line) 6 | { 7 | updateUiState(); 8 | connectSignals(); 9 | } 10 | 11 | void LineEditUi::connectSignals(){ 12 | connect(line, &QLineEdit::textEdited, this, &LineEditUi::textEdited); 13 | } 14 | 15 | void LineEditUi::updateUiState(const std::string &text){ 16 | if(!line->hasFocus()) 17 | line->setText(QString::fromStdString(text)); 18 | } 19 | 20 | void LineEditUi::updateUiState(){ 21 | updateUiState(getOptValue()); 22 | } 23 | 24 | void LineEditUi::setEnabled(bool enabled){ 25 | line->setEnabled(enabled); 26 | } 27 | 28 | void LineEditUi::setToolTip(const QString& toolTip){ 29 | line->setToolTip(toolTip); 30 | } 31 | 32 | void LineEditUi::setPlaceholder(const QString& placeholder){ 33 | line->setPlaceholderText(placeholder); 34 | } 35 | 36 | 37 | -------------------------------------------------------------------------------- /gui/QT/option/lineedit_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LINEEDIT_UI_HPP 2 | #define LINEEDIT_UI_HPP 3 | 4 | #include 5 | #include "textOpt_ui.hpp" 6 | 7 | class LineEditUi : public TextOptUi{ 8 | Q_OBJECT 9 | 10 | public: 11 | LineEditUi(QLineEdit *line, Settings *settings, const std::string &opt); 12 | 13 | void setEnabled(bool enabled); 14 | void setToolTip(const QString& toolTip); 15 | void setPlaceholder(const QString& placeholder); 16 | 17 | private: 18 | QLineEdit *line; 19 | 20 | void connectSignals() override; 21 | void updateUiState() override; 22 | void updateUiState(const std::string &text) override; 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /gui/QT/option/radioButton_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "radioButton_ui.hpp" 2 | 3 | RadioButtonUi::RadioButtonUi(QAbstractButton *btn, 4 | const std::string &selectedVal, 5 | Settings *settings, 6 | const std::string &opt) : 7 | WidgetUi(settings, opt), 8 | btn(btn), 9 | selectedVal(selectedVal) 10 | { 11 | updateUiState(); 12 | connectSignals(); 13 | registerCallback(); 14 | } 15 | 16 | void RadioButtonUi::connectSignals(){ 17 | connect(btn, &QAbstractButton::clicked, this, &RadioButtonUi::btnClicked); 18 | } 19 | 20 | void RadioButtonUi::updateUiState(bool checked){ 21 | btn->setChecked(checked); 22 | } 23 | 24 | void RadioButtonUi::updateUiState(){ 25 | updateUiState(settings->getOption(opt).getValue() == selectedVal); 26 | } 27 | 28 | void RadioButtonUi::optChangeCallback(Option &changedOpt, bool /*suboption*/){ 29 | if(changedOpt.getName() == opt){ 30 | updateUiState(settings->getOption(opt).getValue() == selectedVal); 31 | } 32 | } 33 | 34 | void RadioButtonUi::btnClicked(){ 35 | settings->getOption(opt).setValue(selectedVal); 36 | emit changed(); 37 | } 38 | -------------------------------------------------------------------------------- /gui/QT/option/radioButton_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef RADIOBUTTON_UI_HPP 2 | #define RADIOBUTTON_UI_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "widget_ui.hpp" 8 | 9 | 10 | class RadioButtonUi : public WidgetUi{ 11 | Q_OBJECT 12 | 13 | public: 14 | RadioButtonUi(QAbstractButton *btn, 15 | const std::string &selectedVal, 16 | Settings *settings, 17 | const std::string &opt); 18 | 19 | private: 20 | QAbstractButton *btn; 21 | std::string selectedVal; 22 | 23 | void connectSignals() override; 24 | void updateUiState() override; 25 | void updateUiState(bool checked); 26 | void optChangeCallback(Option &opt, bool suboption) override; 27 | 28 | private slots: 29 | void btnClicked(); 30 | 31 | }; 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /gui/QT/option/spinbox_ui.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "spinbox_ui.hpp" 3 | #include "overload.hpp" 4 | 5 | SpinBoxUi::SpinBoxUi(QSpinBox *spinbox, Settings *settings, const std::string &opt) : 6 | TextOptUi(settings, opt), 7 | spinbox(spinbox) 8 | { 9 | updateUiState(); 10 | connectSignals(); 11 | } 12 | 13 | void SpinBoxUi::connectSignals(){ 14 | #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) 15 | connect(spinbox, Overload::of(&QSpinBox::valueChanged), 16 | this, &SpinBoxUi::textEdited); 17 | #else 18 | connect(spinbox, &QSpinBox::textChanged, 19 | this, &SpinBoxUi::textEdited); 20 | #endif 21 | } 22 | 23 | void SpinBoxUi::updateUiState(const std::string &text){ 24 | if(!text.empty()) 25 | spinbox->setValue(std::stoi(text)); 26 | else 27 | spinbox->clear(); 28 | } 29 | 30 | void SpinBoxUi::updateUiState(){ 31 | updateUiState(getOptValue()); 32 | } 33 | -------------------------------------------------------------------------------- /gui/QT/option/spinbox_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SPINBOX_UI_HPP 2 | #define SPINBOX_UI_HPP 3 | 4 | #include 5 | #include "textOpt_ui.hpp" 6 | 7 | class SpinBoxUi : public TextOptUi{ 8 | Q_OBJECT 9 | 10 | public: 11 | SpinBoxUi(QSpinBox *line, Settings *settings, const std::string &opt); 12 | 13 | private: 14 | QSpinBox *spinbox; 15 | 16 | void connectSignals() override; 17 | void updateUiState() override; 18 | void updateUiState(const std::string &text) override; 19 | }; 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /gui/QT/option/textOpt_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "textOpt_ui.hpp" 2 | 3 | TextOptUi::TextOptUi(Settings *settings, const std::string &opt) : 4 | WidgetUi(settings, opt) 5 | { 6 | registerCallback(); 7 | } 8 | 9 | void TextOptUi::textEdited(const QString &str){ 10 | settings->getOption(opt).setValue(str.toStdString()); 11 | emit changed(); 12 | } 13 | 14 | void TextOptUi::optChangeCallback(Option &changedOpt, bool /*suboption*/){ 15 | if(changedOpt.getName() == opt){ 16 | updateUiState(changedOpt.getValue()); 17 | } 18 | } 19 | 20 | std::string TextOptUi::getOptValue(){ 21 | if(opt.empty()){ 22 | return ""; 23 | } 24 | 25 | return settings->getOption(opt).getValue(); 26 | } 27 | -------------------------------------------------------------------------------- /gui/QT/option/textOpt_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef TEXTOPT_UI_HPP 2 | #define TEXTOPT_UI_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "widget_ui.hpp" 8 | #include "settings.hpp" 9 | 10 | class TextOptUi : public WidgetUi{ 11 | Q_OBJECT 12 | 13 | public: 14 | TextOptUi(Settings *settings, const std::string &opt); 15 | 16 | virtual ~TextOptUi() { } 17 | 18 | protected: 19 | virtual void connectSignals() override = 0; 20 | std::string getOptValue(); 21 | void updateUiState() override = 0; 22 | virtual void updateUiState(const std::string &str) = 0; 23 | 24 | void optChangeCallback(Option &opt, bool suboption) override; 25 | 26 | protected slots: 27 | void textEdited(const QString &str); 28 | }; 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /gui/QT/option/video_opts.hpp: -------------------------------------------------------------------------------- 1 | #ifndef VIDEO_OPTS_HPP 2 | #define VIDEO_OPTS_HPP 3 | 4 | #include 5 | #include 6 | #include "available_settings.hpp" 7 | #include "settings.hpp" 8 | #include "extra_callback_data.hpp" 9 | 10 | struct SettingItem; 11 | 12 | class LineEditUi; 13 | 14 | class QLabel; 15 | struct VideoBitrateCallbackData : public ExtraCallbackData{ 16 | const AvailableSettings *availSettings; 17 | LineEditUi *lineEditUi; 18 | QLabel *label; 19 | }; 20 | 21 | std::vector getVideoSrc(AvailableSettings *availSettings); 22 | std::vector getVideoDisplay(AvailableSettings *availSettings); 23 | std::vector getVideoModes(AvailableSettings *availSettings); 24 | std::vector getVideoCompress(AvailableSettings *availSettings); 25 | std::vector getCodecEncoders(const Codec& codec); 26 | 27 | void videoCompressBitrateCallback(Option &opt, bool suboption, void *opaque); 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /gui/QT/option/widget_ui.cpp: -------------------------------------------------------------------------------- 1 | #include "widget_ui.hpp" 2 | 3 | WidgetUi::WidgetUi(Settings *settings, const std::string &opt) : 4 | settings(settings), 5 | opt(opt) 6 | { 7 | } 8 | 9 | WidgetUi::~WidgetUi(){ 10 | for(auto& i : registeredCallbacks){ 11 | settings->getOption(i.first).removeOnChangeCallback(i.second); 12 | } 13 | } 14 | 15 | void WidgetUi::setOpt(const std::string &opt){ 16 | this->opt = opt; 17 | updateUiState(); 18 | registerCallback(); 19 | } 20 | 21 | void WidgetUi::optChangeCallbackStatic(Option& opt, bool subopt, void *opaque){ 22 | static_cast(opaque)->optChangeCallback(opt, subopt); 23 | } 24 | 25 | void WidgetUi::registerCustomCallback(const std::string &option, 26 | Option::Callback callback, 27 | std::unique_ptr&& extraDataPtr) 28 | { 29 | if(option == "") 30 | return; 31 | 32 | std::pair elToInsert(option, callback); 33 | 34 | auto it = std::find(registeredCallbacks.begin(), 35 | registeredCallbacks.end(), elToInsert); 36 | if(it != registeredCallbacks.end()){ 37 | return; 38 | } 39 | 40 | 41 | settings->getOption(option).addOnChangeCallback(callback); 42 | registeredCallbacks.push_back(elToInsert); 43 | 44 | if(extraDataPtr) 45 | extraData.emplace_back(std::move(extraDataPtr)); 46 | 47 | } 48 | 49 | void WidgetUi::registerCallback(const std::string &option){ 50 | if(option == "") 51 | return; 52 | 53 | Option::Callback callback(&WidgetUi::optChangeCallbackStatic, this); 54 | registerCustomCallback(option, callback); 55 | } 56 | 57 | void WidgetUi::registerCallback(){ 58 | registerCallback(opt); 59 | } 60 | -------------------------------------------------------------------------------- /gui/QT/option/widget_ui.hpp: -------------------------------------------------------------------------------- 1 | #ifndef WIDGET_UI 2 | #define WIDGET_UI 3 | 4 | #include 5 | #include 6 | #include 7 | #include "settings.hpp" 8 | #include "extra_callback_data.hpp" 9 | 10 | class WidgetUi : public QObject{ 11 | Q_OBJECT 12 | 13 | public: 14 | WidgetUi(Settings *settings, const std::string &opt); 15 | WidgetUi(const WidgetUi&) = delete; 16 | WidgetUi(WidgetUi&&) = delete; 17 | 18 | WidgetUi& operator=(const WidgetUi&) = delete; 19 | WidgetUi& operator=(WidgetUi&&) = delete; 20 | 21 | virtual ~WidgetUi(); 22 | 23 | void setOpt(const std::string &opt); 24 | 25 | virtual void refresh() { } 26 | 27 | void registerCallback(const std::string &option); 28 | void registerCustomCallback(const std::string &option, 29 | Option::Callback callback, 30 | std::unique_ptr&& extraDataPtr = nullptr); 31 | 32 | protected: 33 | Settings *settings; 34 | std::string opt; 35 | std::vector> registeredCallbacks; 36 | std::vector> extraData; 37 | 38 | void registerCallback(); 39 | 40 | static void optChangeCallbackStatic(Option&, bool, void *); 41 | 42 | virtual void connectSignals() = 0; 43 | virtual void updateUiState() = 0; 44 | virtual void optChangeCallback(Option &opt, bool suboption) = 0; 45 | 46 | signals: 47 | void changed(); 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /gui/QT/util/control_port.hpp: -------------------------------------------------------------------------------- 1 | #ifndef CONTROL_PORT_7a66c3f43b5f 2 | #define CONTROL_PORT_7a66c3f43b5f 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "line_buffer.hpp" 10 | 11 | class Socket; 12 | 13 | class ControlPort : public QObject{ 14 | Q_OBJECT 15 | public: 16 | ControlPort(); 17 | ~ControlPort() = default; 18 | 19 | void connect(int local_port); 20 | void parseLine(std::string_view line); 21 | 22 | void writeLine(std::string_view line); 23 | 24 | QAbstractSocket::SocketState getState() const; 25 | 26 | using LineCallback = std::function; 27 | void addLineCallback(LineCallback callback) { lineCallbacks.push_back(callback); } 28 | 29 | signals: 30 | void connected(); 31 | void disconnected(); 32 | 33 | private slots: 34 | void readReady(); 35 | 36 | private: 37 | QTcpSocket socket; 38 | LineBuffer lineBuf; 39 | std::vector lineCallbacks; 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /gui/QT/util/debug.hpp: -------------------------------------------------------------------------------- 1 | #ifndef DEBUG_HPP_db8549e3cb58 2 | #define DEBUG_HPP_db8549e3cb58 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #define ASSERT_GUI(x) if(!(x)) abort_msgBox("Assert failed: " #x) 9 | 10 | #ifdef DEBUG 11 | # define DEBUG_ASSERT(x) assert(x) 12 | # define DEBUG_ASSERT_GUI(x) ASSERT_GUI(x) 13 | #else 14 | # define DEBUG_ASSERT(x) do{ }while(0) 15 | # define DEBUG_ASSERT_GUI(x) do{ }while(0) 16 | #endif 17 | 18 | #define DEBUG_FAIL(x) DEBUG_ASSERT((x) && false) 19 | 20 | static inline void abort_msgBox(const char *msg){ 21 | QMessageBox msgBox; 22 | msgBox.setText(msg); 23 | msgBox.setIcon(QMessageBox::Critical); 24 | msgBox.exec(); 25 | exit(EXIT_FAILURE); 26 | } 27 | 28 | #endif //DEBUG_HPP_db8549e3cb58 29 | -------------------------------------------------------------------------------- /gui/QT/util/extra_callback_data.hpp: -------------------------------------------------------------------------------- 1 | #ifndef EXTRA_CALLBACK_DATA_HPP 2 | #define EXTRA_CALLBACK_DATA_HPP 3 | 4 | struct ExtraCallbackData{ 5 | virtual ~ExtraCallbackData() { } 6 | }; 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /gui/QT/util/line_buffer.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "line_buffer.hpp" 3 | 4 | void LineBuffer::write(std::string_view str){ 5 | reduceBuf(); 6 | 7 | buf += str; 8 | 9 | if(!hasLine()){ 10 | pop(); 11 | } 12 | } 13 | 14 | void LineBuffer::pop(){ 15 | startIdx = endIdx; 16 | auto idx = buf.find('\n', endIdx); 17 | if(idx != buf.npos){ 18 | endIdx = idx + 1; 19 | } 20 | } 21 | 22 | void LineBuffer::reduceBuf(){ 23 | assert(startIdx <= endIdx); 24 | buf.erase(0, startIdx); 25 | endIdx = endIdx - startIdx; 26 | startIdx = 0; 27 | } 28 | -------------------------------------------------------------------------------- /gui/QT/util/line_buffer.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LINE_BUFFER_5dd68dbd1e7b 2 | #define LINE_BUFFER_5dd68dbd1e7b 3 | 4 | #include 5 | #include 6 | 7 | class LineBuffer{ 8 | public: 9 | void write(std::string_view str); 10 | 11 | bool hasLine() const { return startIdx != endIdx; } 12 | 13 | //valid only until pop() 14 | std::string_view peek() const { 15 | return std::string_view(buf.data() + startIdx, endIdx - startIdx); 16 | } 17 | 18 | void pop(); 19 | 20 | private: 21 | void reduceBuf(); 22 | 23 | std::string buf; 24 | size_t startIdx = 0; 25 | size_t endIdx = 0; 26 | }; 27 | 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /gui/QT/util/overload.hpp: -------------------------------------------------------------------------------- 1 | #ifndef OVERLOAD_HPP 2 | #define OVERLOAD_HPP 3 | 4 | #include 5 | 6 | #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) 7 | 8 | template 9 | using Overload = QOverload; 10 | 11 | #else 12 | 13 | template 14 | struct Overload { 15 | template 16 | static constexpr auto of(R (C::*ptr)(Args...)) noexcept -> decltype(ptr) { 17 | return ptr; 18 | } 19 | }; 20 | 21 | #endif //QT_VERSION 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /gui/QT/util/ssrc_container.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SSRC_CONTAINER_HPP_1b2b8951b25f 2 | #define SSRC_CONTAINER_HPP_1b2b8951b25f 3 | 4 | #include 5 | 6 | template 7 | class SSRC_container{ 8 | public: 9 | struct Holder{ 10 | Key_type key; 11 | Val_type item; 12 | Ts_type timestamp; 13 | }; 14 | 15 | void insert(const Key_type& key, const Val_type& item, Ts_type timestamp); 16 | const std::vector& get() const { return items; } 17 | void remove_timed_out(Ts_type timeout, Ts_type now); 18 | void clear() { items.clear(); } 19 | 20 | private: 21 | std::vector items; 22 | }; 23 | 24 | template 25 | inline void SSRC_container::insert(const Key_type& key, const Val_type& item, Ts_type timestamp){ 26 | Holder *h = nullptr; 27 | for(auto& i : items){ 28 | if(i.key == key){ 29 | h = &i; 30 | } 31 | } 32 | 33 | if(!h){ 34 | Holder newItem = {}; 35 | newItem.key = key; 36 | items.push_back(newItem); 37 | h = &items.back(); 38 | } 39 | 40 | h->item = item; 41 | h->timestamp = timestamp; 42 | } 43 | 44 | template 45 | inline void SSRC_container::remove_timed_out(Ts_type timeout, Ts_type now){ 46 | auto endIt = std::remove_if(items.begin(), items.end(), 47 | [now, timeout](const Holder& h){ return now - h.timestamp > timeout; }); 48 | 49 | items.erase(endIt, items.end()); 50 | } 51 | 52 | #endif //SSRC_CONTAINER_HPP_1b2b8951b25f 53 | -------------------------------------------------------------------------------- /gui/QT/uv-qt.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "icon.ico" 2 | -------------------------------------------------------------------------------- /gui/QT/widget/bandwidth_widget.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BANDWIDTH_WIDGET_c035f927c51f 2 | #define BANDWIDTH_WIDGET_c035f927c51f 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "ssrc_container.hpp" 12 | 13 | class BandwidthWidget : public QLabel{ 14 | Q_OBJECT 15 | public: 16 | BandwidthWidget(QWidget *parent = nullptr); 17 | ~BandwidthWidget() = default; 18 | 19 | void updateVal(); 20 | void parseLine(std::string_view line); 21 | void reset(); 22 | 23 | private slots: 24 | void timeout(); 25 | 26 | private: 27 | QTimer timer; 28 | QElapsedTimer elapsedTimer; 29 | 30 | struct BandwidthReport{ 31 | long long bitsPerSecond; 32 | std::string type; 33 | }; 34 | 35 | SSRC_container reports; 36 | 37 | const int timeout_msec = 2500; 38 | }; 39 | 40 | #endif //BANDWIDTH_WIDGET_c035f927c51f 41 | -------------------------------------------------------------------------------- /gui/QT/widget/previewWidget.hpp: -------------------------------------------------------------------------------- 1 | #ifndef PREVIEWWIDGET_HPP 2 | #define PREVIEWWIDGET_HPP 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "ipc_frame.h" 12 | #include "ipc_frame_unix.h" 13 | 14 | class PreviewWidget : public QOpenGLWidget{ 15 | public: 16 | PreviewWidget(QWidget *parent); 17 | ~PreviewWidget(); 18 | 19 | void setKey(std::string_view key); 20 | void start(); 21 | void stop(); 22 | 23 | protected: 24 | void initializeGL(); 25 | void resizeGL(int w, int h); 26 | void paintGL(); 27 | 28 | private: 29 | bool loadFrame(); 30 | void render(); 31 | 32 | GLuint vertexBuffer = 0; 33 | GLuint program = 0; 34 | GLuint frame_texture = 0; 35 | GLuint testbars_texture = 0; 36 | 37 | GLuint selected_texture = 0; 38 | 39 | QOpenGLVertexArrayObject vao; 40 | 41 | GLfloat scaleVec[2]; 42 | int vidW = 0; 43 | int vidH = 0; 44 | int width = 0; 45 | int height = 0; 46 | 47 | void setVidSize(int w, int h); 48 | void calculateScale(); 49 | 50 | Ipc_frame_uniq ipc_frame; 51 | Ipc_frame_reader_uniq ipc_frame_reader; 52 | QTimer timer; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /gui/QT/widget/recv_loss.hpp: -------------------------------------------------------------------------------- 1 | #ifndef RECV_LOSS_WIDGET_fcb5ae52ae4c 2 | #define RECV_LOSS_WIDGET_fcb5ae52ae4c 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include "ssrc_container.hpp" 12 | 13 | class RecvLossWidget : public QProgressBar{ 14 | Q_OBJECT 15 | public: 16 | RecvLossWidget(QWidget *parent = nullptr); 17 | ~RecvLossWidget() = default; 18 | 19 | void parseLine(std::string_view); 20 | void reset(); 21 | 22 | private slots: 23 | void timeout(); 24 | 25 | private: 26 | static const int timeout_msec = 15000; 27 | QTimer timer; 28 | QElapsedTimer elapsedTimer; 29 | 30 | struct SSRC_report{ 31 | int received = 0; 32 | int total = 0; 33 | }; 34 | SSRC_container reports; 35 | 36 | void addReport(std::string ident, int received, int total); 37 | void updateVal(); 38 | }; 39 | 40 | #endif //RECV_LOSS_WIDGET_fcb5ae52ae4c 41 | -------------------------------------------------------------------------------- /gui/QT/widget/recv_report.hpp: -------------------------------------------------------------------------------- 1 | #ifndef RECV_REPORT_WIDGET_96127bfd005a 2 | #define RECV_REPORT_WIDGET_96127bfd005a 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "ssrc_container.hpp" 12 | 13 | class RecvReportWidget : public QProgressBar{ 14 | Q_OBJECT 15 | public: 16 | RecvReportWidget(QWidget *parent = nullptr); 17 | ~RecvReportWidget() = default; 18 | 19 | void updateVal(); 20 | void parseLine(std::string_view line); 21 | void reset(); 22 | 23 | private slots: 24 | void timeout(); 25 | 26 | private: 27 | QTimer timer; 28 | QElapsedTimer elapsedTimer; 29 | 30 | struct RecvReport{ 31 | int lost; 32 | int total; 33 | int rtt_usec; 34 | }; 35 | SSRC_container reports; 36 | 37 | const int timeout_msec = 15000; 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /gui/QT/widget/vuMeterWidget.hpp: -------------------------------------------------------------------------------- 1 | #ifndef VUMETERWIDGET_HPP 2 | #define VUMETERWIDGET_HPP 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | class ControlPort; 13 | 14 | class VuMeterWidget : public QWidget{ 15 | Q_OBJECT 16 | public: 17 | VuMeterWidget(QWidget *parent); 18 | 19 | void parseLine(std::string_view line); 20 | void setControlPort(ControlPort *controlPort); 21 | void setParsePrefix(std::string_view prefix); 22 | 23 | void setOnRightSide(bool side) { onRightSide = side; } 24 | 25 | protected: 26 | void paintEvent(QPaintEvent *paintEvent); 27 | 28 | private: 29 | using clock = std::chrono::steady_clock; 30 | struct PeakMaximum { 31 | double val = 0; 32 | clock::time_point ts; 33 | }; 34 | 35 | static const int max_channels = 8; 36 | std::string parsePrefix = "stats ARECV"; 37 | 38 | int channels = 0; 39 | double peak[max_channels]; 40 | double rms[max_channels]; 41 | 42 | double barLevel[max_channels]; 43 | double rmsLevel[max_channels]; 44 | PeakMaximum maximumLevel[max_channels]; 45 | 46 | bool onRightSide = false; 47 | 48 | QTimer timer; 49 | int updatesPerSecond; 50 | clock::time_point lastUpdate; 51 | 52 | ControlPort *controlPort = nullptr; 53 | bool connected = false; 54 | 55 | void paintMeter(QPainter&, int x, int y, int width, int height, double peak, double rms, double maxPeak); 56 | void paintScale(QPainter&, int x, int y, int width, int height, bool leftTicks, bool rightTicks); 57 | 58 | public slots: 59 | void updateVal(); 60 | 61 | private slots: 62 | void onControlPortConnect(); 63 | }; 64 | 65 | #endif 66 | -------------------------------------------------------------------------------- /gui/QT/window/log_window.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "log_window.hpp" 9 | 10 | LogWindow::LogWindow(QWidget *parent): QDialog(parent){ 11 | ui.setupUi(this); 12 | 13 | setWindowFlags(windowFlags() 14 | | Qt::WindowMinimizeButtonHint 15 | | Qt::WindowCloseButtonHint); 16 | 17 | #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) 18 | ui.terminal->setTabStopWidth(40); 19 | #else 20 | ui.terminal->setTabStopDistance(40); 21 | #endif 22 | const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont); 23 | ui.terminal->setFont(fixedFont); 24 | 25 | 26 | connect(ui.copyBtn, SIGNAL(clicked()), this, SLOT(copyToClipboard())); 27 | connect(ui.saveBtn, SIGNAL(clicked()), this, SLOT(saveToFile())); 28 | } 29 | 30 | void LogWindow::write(const QString& str){ 31 | if(str.isEmpty()) 32 | return; 33 | 34 | ui.terminal->moveCursor(QTextCursor::End); 35 | ui.terminal->insertPlainText(str); 36 | ui.terminal->moveCursor(QTextCursor::End); 37 | } 38 | 39 | void LogWindow::copyToClipboard(){ 40 | QClipboard *clip = QApplication::clipboard(); 41 | 42 | QString str = ui.terminal->toPlainText(); 43 | 44 | clip->setText(str); 45 | } 46 | 47 | void LogWindow::saveToFile(){ 48 | QString fileName = QFileDialog::getSaveFileName(this, 49 | tr("Save log"), "", 50 | tr("Text File (*.txt);;All Files (*)")); 51 | 52 | if(fileName.isEmpty()) 53 | return; 54 | 55 | QFile file(fileName); 56 | 57 | if(file.open(QIODevice::WriteOnly)){ 58 | QTextStream stream(&file); 59 | stream << ui.terminal->toPlainText(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /gui/QT/window/log_window.hpp: -------------------------------------------------------------------------------- 1 | #ifndef LOG_WINDOW_HPP 2 | #define LOG_WINDOW_HPP 3 | 4 | #include 5 | #include 6 | 7 | #include "ui_log_window.h" 8 | 9 | class LogWindow : public QDialog{ 10 | Q_OBJECT 11 | 12 | public: 13 | LogWindow(QWidget *parent = 0); 14 | void write(const QString& str); 15 | 16 | private: 17 | Ui::LogWindow ui; 18 | 19 | public slots: 20 | void copyToClipboard(); 21 | void saveToFile(); 22 | 23 | private slots: 24 | }; 25 | #endif 26 | -------------------------------------------------------------------------------- /gui/QT/window/settings_window.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGS_WINDOW 2 | #define SETTINGS_WINDOW 3 | 4 | #include 5 | #include "ui_settings.h" 6 | #include "settings_ui.hpp" 7 | 8 | class SettingsWindow : public QDialog{ 9 | Q_OBJECT 10 | 11 | public: 12 | SettingsWindow(QWidget *parent = 0); 13 | 14 | void init(SettingsUi *settingsUi); 15 | 16 | signals: 17 | void changed(); 18 | 19 | 20 | private: 21 | Ui::Settings ui; 22 | 23 | private slots: 24 | void changeFecPage(); 25 | void fecTab(); 26 | 27 | }; 28 | #endif 29 | -------------------------------------------------------------------------------- /hd-rum-multi/.gitignore: -------------------------------------------------------------------------------- 1 | hd-rum 2 | -------------------------------------------------------------------------------- /hd-rum-multi/Makefile: -------------------------------------------------------------------------------- 1 | SRCDIR ?= . 2 | 3 | all: 4 | $(CC) -g -Wall -pthread -o hd-rum $(SRCDIR)/hd-rum.c 5 | 6 | install: 7 | install -m 755 hd-rum /usr/local/bin 8 | install -m 644 hd-rum.1 /usr/local/man/man1 9 | 10 | uninstall: 11 | $(RM) /usr/local/bin/hd-rum 12 | $(RM) /usr/local/man/man1/hd-rum.1 13 | 14 | -------------------------------------------------------------------------------- /hd-rum-multi/hd-rum.1.txt: -------------------------------------------------------------------------------- 1 | // process with 'a2x -f manpage hd-rum.1.txt' 2 | = hd-rum(1) = 3 | :doctype: manpage 4 | 5 | == NAME == 6 | hd-rum - simple UDP packet reflector 7 | 8 | == SYNOPSIS == 9 | *hd-rum* 'BUF_SIZE' 'PORT' 'ADDRESSES' 10 | 11 | == OPTIONS == 12 | *BUF_SIZE*:: 13 | size of network buffer (eg. 8M) 14 | 15 | *PORT*:: 16 | UDP port number to retransmit 17 | 18 | *ADDRESSES*:: 19 | list of addresses to transmit to (separated by spaces) 20 | 21 | 22 | == EXAMPLES == 23 | `hd-rum 8M 5004 example.com example.net 93.184.216.34`:: 24 | Retrasmit traffic on UDP port 5004 to hosts 'example.com', 'example.net' and '93.184.216.34' 25 | 26 | == BUGS == 27 | * does not support IPv6 28 | * program occupies exactly one CPU core even if there is no traffic because of busy-waiting loop (*hd-rum-transcode(1)* does not) 29 | 30 | == REPORTING BUGS == 31 | Report bugs to *ultragrid-dev@cesnet.cz*. 32 | 33 | == RESOURCES == 34 | * Synchronizing RTP Packet Reflector TR: ** 35 | * Distributed active element in 10 Gbps network paper: ** 36 | * Reflector usage at UltraGrid wiki ** 37 | 38 | == SEE ALSO == 39 | hd-rum-transcode(1) 40 | 41 | -------------------------------------------------------------------------------- /ldgm/.gitignore: -------------------------------------------------------------------------------- 1 | ldgm-encode 2 | matrix-gen/matrix-gen 3 | -------------------------------------------------------------------------------- /ldgm/Makefile: -------------------------------------------------------------------------------- 1 | OPTS = -Wall -g -pg 2 | CXXFLAGS += ${OPTS} -std=gnu++0x 3 | 4 | CUDA_COMPILER ?= nvcc 5 | CUDA_FLAGS ?= 6 | 7 | TARGET = ldgm-encode 8 | SRC_DIR = src 9 | OBJ_DIR = obj 10 | LINKER ?= ${CUDA_COMPILER} ${CUDA_FLAGS} 11 | LIBS += -lrt 12 | LDFLAGS += 13 | 14 | .PHONY: all 15 | .PHONY: clean 16 | 17 | CPP_FILES = $(wildcard $(SRC_DIR)/*.cpp) 18 | CU_FILES = $(wildcard $(SRC_DIR)/*.cu) 19 | 20 | H_FILES = $(wildcard $(SRC_DIR)/*.h) 21 | CUH_FILES = $(wildcard $(SRC_DIR)/*.cuh) 22 | 23 | OBJ_FILES = $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o))) 24 | CUO_FILES = $(addprefix $(OBJ_DIR)/,$(notdir $(CU_FILES:.cu=. 25 | 26 | OBJS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(notdir $(CPP_FILES))) 27 | OBJS += $(patsubst %.cu,$(OBJ_DIR)/%.cu.o,$(notdir $(CU_FILES))) 28 | 29 | all: obj ${TARGET} 30 | 31 | obj: 32 | mkdir -p obj 33 | 34 | clean: 35 | clear 36 | rm -f obj/*.o ${TARGET} 37 | 38 | $(TARGET) : $(OBJS) 39 | ${LINKER} ${LDFLAGS} $? -o $@ ${LIBS} 40 | 41 | $(OBJ_DIR)/%.cu.o : $(SRC_DIR)/%.cu 42 | ${CUDA_COMPILER} ${CUDA_FLAGS} -c -o $@ $< 43 | 44 | $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp 45 | ${CXX} ${CXXFLAGS} ${OPTS} -c -o $@ $? 46 | -------------------------------------------------------------------------------- /ldgm/matrix-gen/Makefile: -------------------------------------------------------------------------------- 1 | TARGET = matrix-gen 2 | 3 | .PHONY: all 4 | .PHONY: clean 5 | 6 | all: ${TARGET} 7 | 8 | ${TARGET} : matrix-generator.cpp ldpc-matrix.cpp main.cpp 9 | g++ -std=gnu++0x $? -o $@ 10 | 11 | clean: 12 | rm -f ${TARGET} 13 | 14 | -------------------------------------------------------------------------------- /ldgm/matrix-gen/ldpc-matrix.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ===================================================================================== 3 | * 4 | * Filename: ldpc-matrix.h 5 | * 6 | * Description: Generates LDPC Staircase matrix 7 | * 8 | * Version: 1.0 9 | * Created: 04/14/2012 10:50:43 PM 10 | * Revision: none 11 | * Compiler: gcc 12 | * 13 | * Author: Milan Kabat (), kabat@ics.muni.cz 14 | * Company: FI MUNI 15 | * 16 | * ===================================================================================== 17 | */ 18 | 19 | #define LDGM_MAX_K 8192 20 | 21 | /* Returns a pseudorandom number between 0 and bound-1 */ 22 | long unsigned int pmms_rand ( int bound ); 23 | 24 | /* Computes degree of a given row of the given matrix */ 25 | int degree_of_row ( char **matrix, int row, int column_num ); 26 | 27 | void left_matrix_init ( char **matrix, int k, int n, int N1, int seed ); 28 | 29 | void right_matrix_staircase_init ( char **matrix, int k, int n ); 30 | -------------------------------------------------------------------------------- /ldgm/matrix-gen/matrix-generator.h: -------------------------------------------------------------------------------- 1 | int generate_ldgm_matrix(char *fname, unsigned int k, unsigned int m, unsigned int column_weight, 2 | unsigned int seed,unsigned int extend_rows); 3 | 4 | -------------------------------------------------------------------------------- /ldgm/matrix-gen/rand_pmms.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ===================================================================================== 3 | * 4 | * Filename: rand_pmms.h 5 | * 6 | * Description: 7 | * 8 | * Version: 1.0 9 | * Created: 05/31/2012 02:23:23 PM 10 | * Revision: none 11 | * Compiler: gcc 12 | * 13 | * Author: Milan Kabat (), kabat@ics.muni.cz 14 | * Organization: 15 | * 16 | * ===================================================================================== 17 | */ 18 | 19 | 20 | #include 21 | #include 22 | 23 | class Rand_pmms 24 | { 25 | public: 26 | Rand_pmms() = default; 27 | 28 | void seedi ( unsigned long int s ) 29 | { 30 | assert(s > 0ul && s < 0x7FFFFFFFul); 31 | seed = s; 32 | val = s; 33 | } 34 | 35 | unsigned long int pmms_rand ( unsigned long int maxv ) 36 | { 37 | unsigned long int raw_value = nextrand(); 38 | 39 | return (unsigned long) ((double)maxv * (double)raw_value / (double)0x7FFFFFFF); 40 | } 41 | private: 42 | 43 | unsigned long int nextrand() 44 | { 45 | unsigned long long int const a = 16807ull; 46 | unsigned long long int const m = 0x7FFFFFFFull; 47 | 48 | val = (a * val) % m; 49 | 50 | return val; 51 | } 52 | 53 | unsigned long int seed; 54 | unsigned long int val; 55 | }; 56 | -------------------------------------------------------------------------------- /ldgm/src/gpu.cuh: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | // CUDA check error 4 | #define cuda_check_error(msg) \ 5 | { \ 6 | cudaError_t err = cudaGetLastError(); \ 7 | if( cudaSuccess != err) { \ 8 | fprintf(stderr, "[LDGM GPU] [Error] %s (line %i): %s: %s.\n", \ 9 | __FILE__, __LINE__, msg, cudaGetErrorString( err) ); \ 10 | exit(-1); \ 11 | } \ 12 | } \ 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | void gpu_encode_upgrade (char* source_data,int *OUTBUF, int * PCM,int param_k,int param_m,int w_f,int packet_size ,int buf_size); 19 | 20 | void gpu_decode_upgrade(char *data, int * PCM,int* SYNC_VEC,int* ERROR_VEC, int not_done, int *frame_size,int *, int*,int M,int K,int w_f,int buf_size,int packet_size); 21 | 22 | #ifdef __cplusplus 23 | } 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /ldgm/src/ldgm-fec-header.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ===================================================================================== 3 | * 4 | * Filename: fec-header.h 5 | * 6 | * Description: LDGM FEC source header and FEC parity header definition 7 | * 8 | * Version: 1.0 9 | * Created: 04/16/2012 06:55:04 PM 10 | * Revision: none 11 | * Compiler: gcc 12 | * 13 | * Author: Milan Kabat (), kabat@ics.muni.cz 14 | * Organization: 15 | * 16 | * ===================================================================================== 17 | */ 18 | 19 | /** Structure defining fields in LDGM FEC block header */ 20 | typedef struct { 21 | uint16_t sbn; /** Source block number */ 22 | uint16_t esi; /** Sequence number of this data block in 23 | * the encoding block */ 24 | uint16_t k; /** Number of source symbols in the encoding 25 | * block */ 26 | uint16_t m; /** Number of parity symbols in the encoding 27 | * block */ 28 | } fec_header_t; 29 | -------------------------------------------------------------------------------- /ldgm/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | ./matrix-gen/matrix-gen -c 5 -k 1024 -m 768 -r -s 1 -f /tmp/matrix.bin 5 | ./ldgm-encode -t /tmp/matrix.bin -k 1024 -m 768 -f 4000000 -w5 -c 6 | 7 | -------------------------------------------------------------------------------- /nat-helper/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | project(nat-helper 4 | LANGUAGES CXX 5 | VERSION 0.0.1 6 | ) 7 | 8 | set(SOURCES 9 | main.cpp 10 | nat-helper.cpp 11 | client.cpp 12 | message.cpp 13 | room.cpp 14 | ) 15 | 16 | add_executable(nat-helper main.cpp ${SOURCES}) 17 | 18 | set_property(TARGET nat-helper PROPERTY CXX_STANDARD 17) 19 | 20 | if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "") 21 | set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) 22 | endif() 23 | 24 | if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") 25 | include(CheckPIESupported) 26 | check_pie_supported() 27 | set_target_properties(nat-helper PROPERTIES POSITION_INDEPENDENT_CODE TRUE) 28 | target_compile_definitions(nat-helper PRIVATE FORTIFY_SOURCE=2) 29 | target_compile_options(nat-helper PRIVATE -fstack-protector-strong) 30 | target_compile_options(nat-helper PRIVATE -Wall -Wextra -pedantic) 31 | target_link_options(nat-helper PRIVATE "SHELL:-z relro") 32 | target_link_options(nat-helper PRIVATE "SHELL:-z now") 33 | endif() 34 | 35 | target_link_libraries(nat-helper PRIVATE 36 | pthread 37 | ) 38 | 39 | -------------------------------------------------------------------------------- /nat-helper/status_code.hpp: -------------------------------------------------------------------------------- 1 | #ifndef UG_HOLE_PUNCH_STATUS_CODE_HPP 2 | #define UG_HOLE_PUNCH_STATUS_CODE_HPP 3 | 4 | enum class CompletionStatus{ 5 | Success, 6 | UnexpectedDisconnect, 7 | GracefulDisconnect, 8 | MsgError, 9 | Error 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /package_specs/README.md: -------------------------------------------------------------------------------- 1 | This directory contains package specifications for ultragrid. 2 | 3 | The binary packages are build using the Open Build Service 4 | platform (https://openbuildservice.org). If you need to run 5 | a manual build, e.g. without some feature, apply corresponding 6 | __disable_(vendor)__.patch . To disable multiple features, 7 | apply patches in lexicographical (or any other) order. 8 | 9 | RPMs are built as usual, yet DEBs require a small change: 10 | 1) pick proper .dsc file and find which debian-patches-series 11 | it requires 12 | 2) rename the series file and move it into respective place 13 | 3) rename debian.rules to debian/rules 14 | 4) continue with normal build 15 | 16 | The pseudoautomated build system deployed for nightly builds 17 | uses template package specifications. To convert the 18 | templates to specifications, launch script deploy-templates.sh, 19 | shipped in this directory. 20 | -------------------------------------------------------------------------------- /package_specs/deploy-templates.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR="$(dirname "$0")" 4 | for specfile in $(find "$DIR" -name "*.spec.tpl" -or -name "*.dsc.tpl") ; do 5 | cp "$specfile" $(echo $specfile | sed -r 's#.tpl$##g') 6 | done 7 | -------------------------------------------------------------------------------- /package_specs/generate-patches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | scriptroot="$(dirname "$(realpath "$0")")" 4 | 5 | vendors=( deltacast blackmagick dvs aja bluefish cuda ) 6 | subpackages=( ultragrid-nightly ultragrid $(echo "ultragrid-proprietary-drivers"* ) ) 7 | 8 | mkdir a 9 | for pkg in ${subpackages[*]} ; do 10 | cp -r $pkg a/ 11 | if test -f "a/$pkg/debian.tar.gz" ; then 12 | tar -C a/$pkg -xf "a/$pkg/debian.tar.gz" 13 | fi 14 | done 15 | 16 | for vendor in ${vendors[*]} ; do 17 | cp -r a b.$vendor 18 | 19 | for pkg in ${subpackages[*]} ; do 20 | FILEMASK="a/$pkg/*.spec a/$pkg/*.spec.tpl a/$pkg/*.dsc.tpl a/$pkg/*.dsc" 21 | if test -f "a/$pkg/debian/rules" ; then 22 | FILEMASK+=" a/$pkg/debian/rules" 23 | fi 24 | if test -f "a/$pkg/debian.rules" ; then 25 | FILEMASK+=" a/$pkg/debian.rules" 26 | fi 27 | for specfile in $(echo $FILEMASK ) ; do 28 | if test -f "$specfile" ; then 29 | cat $specfile | ${scriptroot}/comment.py on "$vendor" > "$(echo $specfile | sed -r "s#^a/#b.$vendor/#g")" 30 | fi 31 | done 32 | done 33 | 34 | diff -rupN a b.$vendor | sed "s#b.$vendor/#b/#g" | filterdiff --remove-timestamps > __disable_${vendor}__.patch 35 | 36 | rm -r b.$vendor 37 | done 38 | 39 | rm -r a 40 | 41 | 42 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | 1.6 6 | nightly 7 | ultragrid-nightly 8 | yes 9 | enable 10 | 11 | 12 | *ultragrid*.tar 13 | */package_specs/ultragrid-nightly/* 14 | 15 | 16 | *ultragrid*.tar 17 | bz2 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/cineform-min-cmake.patch: -------------------------------------------------------------------------------- 1 | --- a/cineform-sdk/CMakeLists.txt 2019-07-18 12:14:21.754747298 +0200 2 | +++ b/cineform-sdk/CMakeLists.txt 2019-07-18 12:14:42.555263813 +0200 3 | @@ -1,5 +1,5 @@ 4 | # CMakeLists.txt 5 | -cmake_minimum_required (VERSION 3.5.1) 6 | +cmake_minimum_required (VERSION 2.8.2) 7 | project (CineFormSDK) 8 | 9 | # Build settings 10 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-Debian_80-series: -------------------------------------------------------------------------------- 1 | debian-disable-hwaccel.patch 2 | debian-disable-gui.patch 3 | cineform-min-cmake.patch 4 | libav-compat-debian8.patch 5 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-Ubuntu_1404-series: -------------------------------------------------------------------------------- 1 | cineform-min-cmake.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-Ubuntu_1604-series: -------------------------------------------------------------------------------- 1 | debian-disable-hwaccel.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-clang.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2017-11-09 11:06:30.000000000 +0100 2 | +++ b/debian/rules 2017-11-22 15:56:23.854956499 +0100 3 | @@ -49,7 +49,7 @@ CARDCONF_AJA= --enable-aja --with-aja=/u 4 | ##################################################### 5 | # > cuda 6 | ##################################################### 7 | -CUDA=--with-cuda=/usr/local/cuda-8.0 --enable-jpeg 8 | +CUDA=--with-cuda=/usr/local/cuda-8.0 --enable-jpeg --with-cuda-host-compiler=clang 9 | ##################################################### 10 | # < cuda 11 | ##################################################### 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-disable-gui.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2 | +++ b/debian/rules 3 | @@ -82,7 +82,7 @@ override_dh_auto_configure: 4 | dh_auto_configure -- --disable-profile --libdir=$(LIBDIR) --disable-debug --enable-ipv6 --enable-plugins \ 5 | --enable-sdl2 --enable-gl --enable-rtdxt \ 6 | --enable-portaudio --disable-jack-transport --enable-jack \ 7 | - --enable-alsa --enable-scale --enable-qt --disable-quicktime \ 8 | + --enable-alsa --enable-scale --disable-qt --disable-quicktime \ 9 | --disable-coreaudio --disable-sage --enable-screen\ 10 | --enable-v4l2 --enable-gpl-build --enable-libavcodec --enable-scale --enable-uyvy \ 11 | --disable-rtsp \ 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-disable-gui.series: -------------------------------------------------------------------------------- 1 | debian-disable-gui.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-disable-hwaccel.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2 | +++ b/debian/rules 3 | @@ -58,14 +58,14 @@ CUDA=--with-cuda=/usr/local/cuda-8.0 -- 4 | ##################################################### 5 | # > vaapi 6 | ##################################################### 7 | -VAAPI=--enable-lavc-hw-accel-vaapi 8 | +#VAAPI=--enable-lavc-hw-accel-vaapi 9 | ##################################################### 10 | # < vaapi 11 | ##################################################### 12 | ##################################################### 13 | # > vdpau 14 | ##################################################### 15 | -VDPAU=--enable-lavc-hw-accel-vdpau 16 | +#VDPAU=--enable-lavc-hw-accel-vdpau 17 | ##################################################### 18 | # < vdpau 19 | ##################################################### 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-patches-clang.series: -------------------------------------------------------------------------------- 1 | debian-clang.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-nightly/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian.changelog: -------------------------------------------------------------------------------- 1 | ultragrid-nightly (1.5-20181004) unstable; urgency=low 2 | * Ultragrid 1.5 released 3 | 4 | -- SITOLA repository (maintainer) Thu, 04 Oct 2018 13:00:00 +0200 5 | 6 | ultragrid-nightly (1.4-20170401) unstable; urgency=low 7 | * Ultragrid 1.4 released 8 | 9 | -- SITOLA repository (maintainer) Fri, 31 Mar 2017 21:56:00 +0200 10 | 11 | ultragrid-nightly (1.3-20150306) unstable; urgency=low 12 | * Ultragrid 1.3 released 13 | * Disabled linsys and sage support 14 | * Added support for AJA cards 15 | * Added support for live555, openssl and several other features 16 | 17 | -- SITOLA repository (maintainer) Thu, 02 Jun 2015 15:16:00 +0200 18 | 19 | ultragrid-nightly (1.2-20131226u1404) unstable; urgency=low 20 | * Ultragrid 1.2 released 21 | * Disabled binary package containing fastdxt 22 | * Added support for BlueFish444 cards, v4l2 and swmix (software videomixer) 23 | * Added support for libavcodec compression 24 | 25 | -- SITOLA repository (maintainer) Thu, 26 Dec 2013 16:18:00 +0100 26 | 27 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-nightly/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/libav-compat-debian8.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/libavcodec_common.h b/src/libavcodec_common.h 2 | --- a/src/libavcodec_common.h 3 | +++ b/src/libavcodec_common.h 4 | @@ -211,7 +211,6 @@ static const struct { 5 | { UYVY, AV_PIX_FMT_NV12, uyvy_to_nv12 }, 6 | { UYVY, AV_PIX_FMT_YUV444P, uyvy_to_yuv444p }, 7 | { UYVY, AV_PIX_FMT_YUVJ444P, uyvy_to_yuv444p }, 8 | - { RGB, AV_PIX_FMT_BGR0, rgb_to_bgr0 }, 9 | { RGB, AV_PIX_FMT_GBRP, rgb_to_gbrp }, 10 | { RGBA, AV_PIX_FMT_GBRP, rgba_to_gbrp }, 11 | { R10k, AV_PIX_FMT_GBRP10LE, r10k_to_gbrp10le }, 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/recreate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | osc up 3 | osc service localrun 4 | env FORCE_REBUILD=yes ../../UltraGrid/package_specs/ultragrid-autobuild.sh $(realpath .) master $(realpath ../../UltraGrid_readonly/) $(realpath ../../UltraGrid_readonly/package_specs/) 5 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/ultragrid-nightly-Debian_80.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-nightly-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Debian_80-series 5 | Format: 1.0 6 | Source: ultragrid-nightly 7 | Binary: ultragrid-nightly 8 | Architecture: any 9 | Version: 1.6-2020063000 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-nightly, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-nightly 12 | #, ultragrid-proprietary-drivers-ndi-nightly 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/ultragrid-nightly-Debian_90.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-nightly-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-clang.series 5 | Format: 1.0 6 | Source: ultragrid-nightly 7 | Binary: ultragrid-nightly 8 | Architecture: any 9 | Version: 1.6-2020063000 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-nightly, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, glx-diversions, libcppunit-dev, ultragrid-proprietary-drivers-ximea-nightly 12 | #, ultragrid-proprietary-drivers-ndi-nightly 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/ultragrid-nightly-Ubuntu_1404.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-nightly-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Debian_80-series 5 | Format: 1.0 6 | Source: ultragrid-nightly 7 | Binary: ultragrid-nightly 8 | Architecture: any 9 | Version: 1.6-2020063000 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-nightly, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), qtbase5-dev, uuid-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-nightly 12 | #, ultragrid-proprietary-drivers-ndi-nightly 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/ultragrid-nightly-Ubuntu_1604.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-nightly-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Ubuntu_1604-series 5 | Format: 1.0 6 | Source: ultragrid-nightly 7 | Binary: ultragrid-nightly 8 | Architecture: any 9 | Version: 1.6-2020063000 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-nightly, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-nightly 12 | #, ultragrid-proprietary-drivers-ndi-nightly 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-nightly/ultragrid-nightly.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-nightly-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-nightly 7 | Binary: ultragrid-nightly 8 | Architecture: any 9 | Version: 1.6-2020063000 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-nightly, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-nightly 12 | #, ultragrid-proprietary-drivers-ndi-nightly 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-gcc-explicit-constructors.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/classes/ntv2utils.h b/ntv2sdklinux_12.4.2.1/ntv2projects/classes/ntv2utils.h 2 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/classes/ntv2utils.h 2016-10-29 13:46:43.784790745 +0200 3 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/classes/ntv2utils.h 2016-10-29 14:37:25.756878939 +0200 4 | @@ -631,7 +631,8 @@ typedef struct NTV2FormatDescriptor 5 | ULWord linePitch; ///< @brief Number of 32-bit words per line 6 | ULWord firstActiveLine; ///< @brief First active line of video (0 if vanc not enabled) 7 | 8 | - explicit inline NTV2FormatDescriptor () : numLines (0), numPixels (0), linePitch (0), firstActiveLine (0) {} ///< @brief My default constructor 9 | + /** gcc-6 does not allow to call explicit default constructor calls in array initializations (see ntv2util.cpp:213 */ 10 | + inline NTV2FormatDescriptor () : numLines (0), numPixels (0), linePitch (0), firstActiveLine (0) {} ///< @brief My default constructor 11 | 12 | /** 13 | @brief Construct from line and pixel count, plus line pitch. 14 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-linux4.6-get-user-pages.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/driver/linuxdriver/ntv2driverdma.c b/ntv2sdklinux_12.4.2.1/ntv2projects/driver/linuxdriver/ntv2driverdma.c 2 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/driver/linuxdriver/ntv2driverdma.c 2016-10-28 10:24:00.508000000 +0200 3 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/driver/linuxdriver/ntv2driverdma.c 2017-03-03 09:46:07.148690755 +0100 4 | @@ -2797,12 +2797,16 @@ ntv2_sgl_map_user_pages(struct page **pa 5 | down_read(¤t->mm->mmap_sem); 6 | /* rw==READ means read from drive, write into memory area */ 7 | res = get_user_pages( 8 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 9 | current, 10 | current->mm, 11 | +#endif 12 | uaddr, 13 | nr_pages, 14 | rw == READ, // DMA engines ignore permissions 15 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0) 16 | 0, /* don't force */ 17 | +#endif 18 | pages, 19 | NULL); 20 | up_read(¤t->mm->mmap_sem); 21 | @@ -2910,7 +2914,11 @@ ntv2_sgl_map_user_pages(struct page **pa 22 | out_unmap: 23 | if (res > 0) { 24 | for (j=0; j < res; j++) 25 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 26 | page_cache_release(pages[j]); 27 | +#else 28 | + put_page(pages[j]); 29 | +#endif 30 | } 31 | return res; 32 | } 33 | @@ -2928,7 +2936,11 @@ static int ntv2_sgl_unmap_user_pages(str 34 | /* FIXME: cache flush missing for rw==READ 35 | * FIXME: call the correct reference counting function 36 | */ 37 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 38 | page_cache_release(pages[i]); 39 | +#else 40 | + put_page(pages[i]); 41 | +#endif 42 | } 43 | 44 | return 0; 45 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-nodemo.patch: -------------------------------------------------------------------------------- 1 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/Makefile 2016-10-28 08:24:00.504000000 +0000 2 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/Makefile 2016-10-28 09:52:23.176000000 +0000 3 | @@ -26,8 +26,8 @@ include configure.mk 4 | SUBDIRS = classes \ 5 | $(DRIVER_DIR) \ 6 | commonapps \ 7 | - demoapps \ 8 | linuxapps 9 | +# demoapps \ 10 | 11 | include internal.mk 12 | include sdkversion.mk 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-qmake5.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2016-10-28 10:10:47.888000000 +0000 3 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2016-10-28 09:59:37.824000000 +0000 4 | @@ -12,7 +12,7 @@ TARGET := ntv2watcher 5 | 6 | QT_PRO_FILE = $(TARGET).pro 7 | QMAKE_FILE = qMakefile 8 | -QMAKE ?= qmake 9 | +QMAKE ?= qmake-qt5 10 | 11 | .PHONY: clean 12 | 13 | 14 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-qt5.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2016-10-28 10:10:47.888000000 +0000 3 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/Makefile 2016-10-28 09:59:37.824000000 +0000 4 | @@ -12,7 +12,7 @@ TARGET := ntv2watcher 5 | 6 | QT_PRO_FILE = $(TARGET).pro 7 | QMAKE_FILE = qMakefile 8 | -QMAKE ?= qmake 9 | +QMAKE ?= qmake-qt5 10 | 11 | .PHONY: clean 12 | 13 | 14 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/qt.mk b/ntv2sdklinux_12.4.2.1/ntv2projects/qt.mk 15 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/qt.mk 2016-10-28 10:10:47.896000000 +0000 16 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/qt.mk 2016-10-28 10:01:57.472000000 +0000 17 | @@ -10,7 +10,7 @@ 18 | # so make sure that we do that. 19 | 20 | # WTF? qmake -v outputs to stderr?? 21 | -QMAKE_V := $(shell qmake -v 2>&1) 22 | +QMAKE_V := $(shell qmake-qt5 -v 2>&1) 23 | QMAKE_4 := $(findstring 4.,$(QMAKE_V)) 24 | QMAKE_5 := $(findstring 5.,$(QMAKE_V)) 25 | 26 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-scatterlist.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driverdma.c b/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driverdma.c 2 | --- a/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driverdma.c 2015-03-25 13:34:04.000000000 +0100 3 | +++ b/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driverdma.c 2016-04-27 21:50:41.034105019 +0200 4 | @@ -25,7 +25,7 @@ 5 | #include 6 | #endif 7 | 8 | -#include 9 | +#include 10 | #include 11 | #include 12 | #include 13 | diff -rupN a/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driver.h b/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driver.h 14 | --- a/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driver.h 2015-03-25 13:34:04.000000000 +0100 15 | +++ b/ntv2linux-12.3.7.34/ntv2projects/linuxdriver/ntv2driver.h 2016-04-27 16:07:24.406906932 +0200 16 | @@ -17,7 +17,7 @@ 17 | #ifndef NTV2_DRIVER_HEADER 18 | #define NTV2_DRIVER_HEADER 19 | 20 | -#include 21 | +#include 22 | 23 | // Some kernel version sensitive macro-rama 24 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) 25 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/AJA-setStartDragTime.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/watchermain.cpp b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/watchermain.cpp 2 | --- a/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/watchermain.cpp 2016-10-28 10:24:00.496000000 +0200 3 | +++ b/ntv2sdklinux_12.4.2.1/ntv2projects/commonapps/ntv2watcher/watchermain.cpp 2016-11-10 11:48:54.187356863 +0100 4 | @@ -48,8 +48,8 @@ NTV2Watcher::NTV2Watcher(QWidget *parent 5 | timer = new QTimer(this); 6 | connect(timer, &QTimer::timeout, this, &NTV2Watcher::slot_pollDevice); 7 | 8 | - QStyleHints * qsh = qApp->styleHints(); 9 | - qsh->setStartDragTime(100); 10 | + //QStyleHints * qsh = qApp->styleHints(); 11 | + qApp->setStartDragTime(100); 12 | 13 | connect (widgetList, &WidgetList::addRegister, this, &NTV2Watcher::slot_addRegister, Qt::QueuedConnection); 14 | connect (widgetList, &WidgetList::detachWidget, this, &NTV2Watcher::slot_detachWidget, Qt::QueuedConnection); 15 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/README.md: -------------------------------------------------------------------------------- 1 | This driver suite expects a source tarball, named drivers.tar.gz. 2 | Its content has to match (with respect to vendors enabled) following structure: 3 | 4 | # ls -1 ultragrid-proprietary-drivers-20170103/ 5 | EpochLinuxDriver_V5_11_0_19 6 | ntv2sdklinux_12.4.2.1 7 | sdk4.3.5.21 8 | VideoMasterHD_SDK_Linux_v5.21 9 | 10 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | 1.3 6 | nightly 7 | ultragrid-git 8 | yes 9 | enable 10 | 11 | 12 | *ultragrid*.tar 13 | */package_specs/ultragrid-proprietary-drivers-1.4/* 14 | 15 | 16 | http 17 | localhost 18 | path-to-drivers-archive.tar 19 | drivers.tar 20 | 21 | 22 | *drivers.tar 23 | gz 24 | 25 | 26 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/bluefish-kernel-backports-opensuse-423.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c b/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2 | --- a/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2017-12-15 20:45:54.940768952 +0100 3 | +++ b/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2017-12-15 20:45:55.476777896 +0100 4 | @@ -258,7 +258,7 @@ void bluedma_unmap_userbuffer(struct blu 5 | (dma_buffer->dmaDirection == DMA_WRITE)?PCI_DMA_TODEVICE:PCI_DMA_FROMDEVICE); 6 | 7 | for (i=0; i < dma_buffer->nr_pages; i++) 8 | -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 9 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,4,60) 10 | page_cache_release(dma_buffer->pages[i]); 11 | #else 12 | put_page(dma_buffer->pages[i]); 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/bluefish-linux4.6-get-user-pages.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c b/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2 | --- a/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2017-02-11 13:39:17.390475532 +0100 3 | +++ b/EpochLinuxDriver_V5_11_0_19/drivers/orac/OracDMABufferMap.c 2017-02-11 15:36:01.748721014 +0100 4 | @@ -1,5 +1,6 @@ 5 | #include "OracDriver.h" 6 | #include 7 | +#include 8 | #include "OracDMAUtil.h" 9 | #include 10 | #define DMA_DEBUG 11 | @@ -257,7 +258,11 @@ void bluedma_unmap_userbuffer(struct blu 12 | (dma_buffer->dmaDirection == DMA_WRITE)?PCI_DMA_TODEVICE:PCI_DMA_FROMDEVICE); 13 | 14 | for (i=0; i < dma_buffer->nr_pages; i++) 15 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 16 | page_cache_release(dma_buffer->pages[i]); 17 | +#else 18 | + put_page(dma_buffer->pages[i]); 19 | +#endif 20 | blue_clear_User_DMA_Request(&dma_buffer->userIrp); 21 | dma_buffer->buf = NULL; 22 | dma_buffer->buffer_map_type= BlueFishDMA_PermMapped; 23 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/debian-patches-Ubuntu_1404.series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | AJA-linuxdriver-uname.patch 6 | AJA-nodemo.patch 7 | AJA-setStartDragTime.patch 8 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/debian-patches-Ubuntu_1504.series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | AJA-linuxdriver-uname.patch 6 | AJA-nodemo.patch 7 | #AJA-qt5.patch 8 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/debian-patches-series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | videoMasterHD-linux4.6-get-user-pages.patch 3 | bluefish-uname.patch 4 | bluefish-g++.patch 5 | bluefish-destdir.patch 6 | bluefish-linux4.6-get-user-pages.patch 7 | AJA-linuxdriver-uname.patch 8 | AJA-nodemo.patch 9 | AJA-gcc-explicit-constructors.patch 10 | AJA-linux4.6-get-user-pages.patch 11 | dvs-linux4.6-get-user-pages.patch 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-1.4/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/ultragrid-proprietary-drivers-1.4-Ubuntu_1404.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-Ubuntu_1404.series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.4 8 | Architecture: any 9 | Version: 20161027 10 | Standards-Version: 3.9.6 11 | Maintainer: Matej Minarik 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers-generic, realpath, coreutils, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/ultragrid-proprietary-drivers-1.4-Ubuntu_1410.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-Ubuntu_1504.series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.4 8 | Architecture: any 9 | Standards-Version: 3.9.6 10 | Version: 20161027 11 | Maintainer: Matej Minarik 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers-generic, realpath, coreutils, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/ultragrid-proprietary-drivers-1.4-Ubuntu_1504.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-Ubuntu_1504.series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.4 8 | Architecture: any 9 | Standards-Version: 3.9.6 10 | Version: 20161027 11 | Maintainer: Matej Minarik 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers-generic, realpath, coreutils, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/ultragrid-proprietary-drivers-1.4-rpmlintrc: -------------------------------------------------------------------------------- 1 | addFilter("ultragrid-proprietary-drivers-1.4.* devel-file-in-non-devel-package") 2 | addFilter("ultragrid-proprietary-drivers-1.4.* file-contains-date-and-time") 3 | addFilter("ultragrid-proprietary-drivers-1.4.* wrong-script-end-of-line-encoding") 4 | addFilter("ultragrid-proprietary-drivers-1.4.* files-duplicate") 5 | addFilter("ultragrid-proprietary-drivers-1.4.* binary-or-shlib-calls-gethostbyname") 6 | addFilter("ultragrid-proprietary-drivers-1.4.* executable-stack") 7 | addFilter("ultragrid-proprietary-drivers-1.4.* no-soname") 8 | addFilter("ultragrid-proprietary-drivers-1.4.* hidden-file-or-dir") 9 | addFilter("ultragrid-proprietary-drivers-1.4.* incorrect-fsf-address") 10 | addFilter("ultragrid-proprietary-drivers-1.4.* zero-length") 11 | addFilter("ultragrid-proprietary-drivers-1.4.* shared-lib-calls-exit") 12 | addFilter("ultragrid-proprietary-drivers-1.4.* shlib-policy-missing-suffix") 13 | addFilter("ultragrid-proprietary-drivers-1.4.* version-control-internal-file") 14 | addFilter("ultragrid-proprietary-drivers-1.4.* no-rpm-opt-flags") 15 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.4/ultragrid-proprietary-drivers-1.4.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.4 8 | Architecture: any 9 | Version: 20161027 10 | Standards-Version: 3.9.6 11 | Maintainer: Matej Minarik 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch binary 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-clang-cxx11.patch: -------------------------------------------------------------------------------- 1 | --- a/ntv2sdklinux_14.2.0.6/build/common.mk 2 | +++ b/ntv2sdklinux_14.2.0.6/build/common.mk 3 | @@ -4,11 +4,11 @@ 4 | # All righs reserved 5 | # 6 | 7 | -CXX ?= g++ 8 | +CXX ?= clang++ 9 | CPP = $(CXX) 10 | 11 | CPPFLAGS += -DAJALinux -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \ 12 | - -pedantic -Wall -Wno-long-long -Wwrite-strings -c -pipe -fPIC $(DBG) 13 | + -pedantic -Wall -Wno-long-long -Wwrite-strings -c -pipe -fPIC -std=c++11 $(DBG) 14 | 15 | LD = $(CXX) 16 | LDFLAGS = 17 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-gcc-explicit-constructors.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h b/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 2 | --- a/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 3 | +++ b/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 4 | @@ -29,7 +29,8 @@ public: 5 | /** 6 | @brief My default constructor initializes me in an "invalid" state. 7 | **/ 8 | - explicit NTV2FormatDescriptor (); ///< @brief My default constructor 9 | + NTV2FormatDescriptor (); ///< @brief My default constructor 10 | + /** gcc-6 does not allow to call explicit default constructor calls in array initializations */ 11 | 12 | /** 13 | @brief Construct from line and pixel count, plus line pitch. 14 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-kernel-backports-opensuse-423.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c b/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 2 | --- a/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 3 | +++ b/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 4 | @@ -3308,13 +3308,13 @@ ntv2_sgl_map_user_pages(struct page **pa 5 | down_read(¤t->mm->mmap_sem); 6 | /* rw==READ means read from drive, write into memory area */ 7 | res = get_user_pages( 8 | -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)) 9 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,60)) 10 | current, 11 | current->mm, 12 | #endif 13 | uaddr, 14 | nr_pages, 15 | -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)) 16 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,60)) 17 | rw == READ, // DMA engines ignore permissions 18 | 0, /* don't force */ 19 | #else 20 | @@ -3427,7 +3427,7 @@ ntv2_sgl_map_user_pages(struct page **pa 21 | out_unmap: 22 | if (res > 0) { 23 | for (j=0; j < res; j++) 24 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)) 25 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,60)) 26 | put_page(pages[j]); 27 | #else 28 | page_cache_release(pages[j]); 29 | @@ -3449,7 +3449,7 @@ static int ntv2_sgl_unmap_user_pages(str 30 | /* FIXME: cache flush missing for rw==READ 31 | * FIXME: call the correct reference counting function 32 | */ 33 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)) 34 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,60)) 35 | put_page(pages[i]); 36 | #else 37 | page_cache_release(pages[i]); 38 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-linux4.16-flush-write-buffers.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c b/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 2 | --- a/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 3 | +++ b/ntv2sdklinux_14.2.0.6/ajadriver/linux/ntv2driverdma.c 4 | @@ -3284,7 +3284,9 @@ ntv2_sgl_map_user_pages(struct page **pa 5 | unsigned int nr_pages; 6 | unsigned long page_offset; 7 | 8 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,16,0)) 9 | flush_write_buffers(); 10 | +#endif 11 | 12 | nr_pages = ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; 13 | // printk("%s: number of pages %d\n", __FUNCTION__, nr_pages); 14 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-nodemo.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/Makefile b/ntv2sdklinux_14.2.0.6/Makefile 2 | --- a/ntv2sdklinux_14.2.0.6/Makefile 3 | +++ b/ntv2sdklinux_14.2.0.6/Makefile 4 | @@ -26,7 +26,7 @@ ifndef AJA_NO_FLTK 5 | $(call make_if_dir_exists, "$(A_APPS_XPLAT_PATH)/watcher") 6 | $(call make_if_dir_exists, "$(A_APPS_XPLAT_PATH)/xenacablesfltk") 7 | endif 8 | - $(call make_if_dir_exists, $(A_DEMOAPPS_PATH)) 9 | + #$(call make_if_dir_exists, $(A_DEMOAPPS_PATH)) 10 | 11 | .PHONY: clean 12 | 13 | @@ -40,5 +40,5 @@ ifndef AJA_NO_FLTK 14 | $(call clean_if_dir_exists, "$(A_APPS_XPLAT_PATH)/watcher") 15 | $(call clean_if_dir_exists, "$(A_APPS_XPLAT_PATH)/xenacablesfltk") 16 | endif 17 | - $(call clean_if_dir_exists, $(A_DEMOAPPS_PATH)) 18 | + #$(call clean_if_dir_exists, $(A_DEMOAPPS_PATH)) 19 | 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-qmake.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 2 | --- a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 3 | +++ b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 4 | @@ -12,6 +12,7 @@ include $(DIR)/../../../../build/qt.mk 5 | APP_FULL_PATH=$(A_UBER_BIN)/ntv2qtmultiinput 6 | QT_PRO_FILE = $(A_BUILD_PATH)/ntv2demos/qtmultiinput/qtmultiinput.pro 7 | QMAKE_FILE = qMakefile 8 | +QMAKE ?= qmake-qt4 9 | PLUGIN_IMPORT_CPP=$(shell basename $(APP_FULL_PATH))_plugin_import.cpp 10 | 11 | .PHONY: clean 12 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 13 | --- a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 14 | +++ b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 15 | @@ -12,6 +12,7 @@ include $(DIR)/../../../../build/qt.mk 16 | APP_FULL_PATH=$(A_UBER_BIN)/ntv2qtpreview 17 | QT_PRO_FILE = $(A_BUILD_PATH)/ntv2demos/qtpreview/qtpreview.pro 18 | QMAKE_FILE = qMakefile 19 | +QMAKE ?= qmake-qt4 20 | PLUGIN_IMPORT_CPP=$(shell basename $(APP_FULL_PATH))_plugin_import.cpp 21 | 22 | .PHONY: clean 23 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/AJA-qt5.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/build/qt.mk b/ntv2sdklinux_14.2.0.6/build/qt.mk 2 | --- a/ntv2sdklinux_14.2.0.6/build/qt.mk 3 | +++ b/ntv2sdklinux_14.2.0.6/build/qt.mk 4 | @@ -15,7 +15,7 @@ ifeq (,$(QMAKE)) 5 | QMAKE = $(shell command -v qmake-qt5 2>&1) 6 | endif 7 | # WTF? qmake -v outputs to stderr?? 8 | -QMAKE_V := $(shell $(QMAKE) -v 2>&1) 9 | +QMAKE_V := $(shell qmake-qt5 -v 2>&1) 10 | QMAKE_4 := $(findstring 4.,$(QMAKE_V)) 11 | QMAKE_5 := $(findstring 5.,$(QMAKE_V)) 12 | 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | 1.5 6 | nightly 7 | ultragrid-git 8 | yes 9 | enable 10 | 11 | 12 | *ultragrid*.tar 13 | */package_specs/ultragrid-proprietary-drivers/* 14 | 15 | 16 | http 17 | localhost 18 | path-to-drivers-archive.tar 19 | drivers.tar 20 | 21 | 22 | *drivers.tar 23 | gz 24 | 25 | 26 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/bluefish-kernel-backports-opensuse-423.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracAlsa.c b/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracAlsa.c 2 | --- a/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracAlsa.c 2018-06-08 09:17:24.545170284 +0200 3 | +++ b/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracAlsa.c 2018-06-08 09:20:01.031886189 +0200 4 | @@ -441,7 +441,7 @@ static struct snd_pcm_ops orac_alsa_capt 5 | .prepare = orac_alsa_pcm_capture_prepare, 6 | .trigger = orac_alsa_pcm_capture_trigger, 7 | .pointer = orac_alsa_pcm_capture_pointer, 8 | -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,13,0) 9 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,9,2) 10 | .silence = orac_alsa_pcm_capture_silence, 11 | #else 12 | .fill_silence = orac_alsa_pcm_capture_silence, 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/bluefish-linux4.6-get-user-pages.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracDMABufferMap.c b/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracDMABufferMap.c 2 | --- a/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracDMABufferMap.c 2017-02-11 13:39:17.390475532 +0100 3 | +++ b/EpochLinuxDriver_V5_11_0_26/drivers/orac/OracDMABufferMap.c 2017-02-11 15:36:01.748721014 +0100 4 | @@ -1,5 +1,6 @@ 5 | #include "OracDriver.h" 6 | #include 7 | +#include 8 | #include "OracDMAUtil.h" 9 | #include 10 | #define DMA_DEBUG 11 | @@ -252,7 +253,11 @@ void bluedma_unmap_userbuffer(struct blu 12 | pci_unmap_sg(devExt->pci_dev_p, dma_buffer->pOSScatterGatherList, pagesMapped, (dma_buffer->dmaDirection == DMA_WRITE)?PCI_DMA_TODEVICE:PCI_DMA_FROMDEVICE); 13 | 14 | for(i=0; i < dma_buffer->nr_pages; i++) 15 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) 16 | + page_cache_release(dma_buffer->pages[i]); 17 | +#else 18 | put_page(dma_buffer->pages[i]); 19 | +#endif 20 | 21 | blue_clear_User_DMA_Request(&dma_buffer->userIrp); 22 | dma_buffer->buf = NULL; 23 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/debian-clang-series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | bluefish-linux4.6-get-user-pages.patch 6 | AJA-linuxdriver-uname.patch 7 | AJA-nodemo.patch 8 | AJA-gcc-explicit-constructors.patch 9 | dvs-linux4.6-get-user-pages.patch 10 | AJA-clang-cxx11.patch 11 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/debian-patches-Ubuntu_1404.series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | AJA-linuxdriver-uname.patch 6 | AJA-nodemo.patch 7 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/debian-patches-Ubuntu_1504.series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | AJA-linuxdriver-uname.patch 6 | AJA-nodemo.patch 7 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/debian-patches-series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-g++.patch 4 | bluefish-destdir.patch 5 | bluefish-linux4.6-get-user-pages.patch 6 | AJA-linuxdriver-uname.patch 7 | AJA-nodemo.patch 8 | AJA-gcc-explicit-constructors.patch 9 | dvs-linux4.6-get-user-pages.patch 10 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-1.5/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/preprocess-crlf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | tar -xvf drivers.tar.gz || exit 1 4 | drvdir=$(find . -maxdepth 1 -type d -iname 'ultragrid-proprietary-drivers-*') 5 | pushd $drvdir || exit 2 6 | 7 | for filepattern in Makefile ; do 8 | find . -iname "$filepattern" -exec dos2unix {} \; 9 | done 10 | popd 11 | tar -c $drvdir -zf drivers.new.tar.gz || exit 3 12 | mv drivers.new.tar.gz drivers.tar.gz 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/ultragrid-proprietary-drivers-1.5-Ubuntu_1404.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-Ubuntu_1404.series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.5 8 | Architecture: any 9 | Version: 20180803 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers-generic, realpath, coreutils, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/ultragrid-proprietary-drivers-1.5-Ubuntu_1604.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-clang-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.5 8 | Architecture: any 9 | Version: 20180803 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev, clang 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/ultragrid-proprietary-drivers-1.5-rpmlintrc: -------------------------------------------------------------------------------- 1 | addFilter("ultragrid-proprietary-drivers.* devel-file-in-non-devel-package") 2 | addFilter("ultragrid-proprietary-drivers.* file-contains-date-and-time") 3 | addFilter("ultragrid-proprietary-drivers.* wrong-script-end-of-line-encoding") 4 | addFilter("ultragrid-proprietary-drivers.* files-duplicate") 5 | addFilter("ultragrid-proprietary-drivers.* binary-or-shlib-calls-gethostbyname") 6 | addFilter("ultragrid-proprietary-drivers.* executable-stack") 7 | addFilter("ultragrid-proprietary-drivers.* no-soname") 8 | addFilter("ultragrid-proprietary-drivers.* hidden-file-or-dir") 9 | addFilter("ultragrid-proprietary-drivers.* incorrect-fsf-address") 10 | addFilter("ultragrid-proprietary-drivers.* zero-length") 11 | addFilter("ultragrid-proprietary-drivers.* shared-lib-calls-exit") 12 | addFilter("ultragrid-proprietary-drivers.* shlib-policy-missing-suffix") 13 | addFilter("ultragrid-proprietary-drivers.* version-control-internal-file") 14 | addFilter("ultragrid-proprietary-drivers.* no-rpm-opt-flags") 15 | addFilter("ultragrid-proprietary-drivers.* non-executable-script") 16 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-1.5/ultragrid-proprietary-drivers-1.5.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers-1.5 8 | Architecture: any 9 | Version: 20180803 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi-placeholder/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ndi-placeholder/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi-placeholder/debian.rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | SHELL=/bin/bash 4 | DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_configure: 10 | echo "no configure here" 11 | 12 | override_dh_auto_build: 13 | echo "dummy build" 14 | 15 | override_dh_auto_install: 16 | mkdir -p $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ndi_sdk_v4_placeholder 17 | ln -s ndi_sdk_v4_placeholder $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ndi_sdk 18 | touch $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ndi_sdk_v4_placeholder/.keep 19 | 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi-placeholder/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ndi-placeholder/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi-placeholder/dummy.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ndi-placeholder/dummy.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi-placeholder/ultragrid-proprietary-drivers-ndi-placeholder.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: dummy.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers-ndi-placeholder 7 | Binary: ultragrid-proprietary-drivers-ndi-placeholder 8 | Architecture: any 9 | Version: 20200227 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, coreutils, bash 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | master 6 | master 7 | ultragrid-git 8 | no 9 | disable 10 | 11 | 12 | *ultragrid*.tar 13 | ultragrid*/package_specs/ultragrid-proprietary-drivers/* 14 | 15 | 16 | 17 | http 18 | example.com 19 | /where/your/ndi/resides/InstallNDISDK_v4_Linux.tar.gz 20 | ndi4.tar.gz 21 | 22 | 23 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ndi/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/debian.rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | SHELL=/bin/bash 4 | DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_configure: 10 | echo "no configure here" 11 | 12 | 13 | override_dh_shlibdeps: 14 | env LD_LIBRARY_PATH=$${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu:/usr/lib dh_shlibdeps -Xusr/src/ultragrid-externals 15 | # -- --ignore-missing-info 16 | 17 | override_dh_auto_build: 18 | yes | env PAGER=cat ./InstallNDISDK_v4_Linux.sh 19 | cd 'NDI SDK for Linux' && rm -rf $$(find lib bin -mindepth 1 -maxdepth 1 -type d | grep -v x86.64) 20 | 21 | override_dh_auto_install: 22 | mkdir -p $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ 23 | mv 'NDI SDK for Linux' $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ndi_sdk_v4 24 | ln -s ndi_sdk_v4 $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ndi_sdk 25 | 26 | # now, link to common paths 27 | mkdir -p $(DEB_BUILD_ROOT)/usr/lib/$(DEB_HOST_MULTIARCH) $(DEB_BUILD_ROOT)/usr/include/$(DEB_HOST_MULTIARCH) 28 | pushd $(DEB_BUILD_ROOT)/ && \ 29 | find usr/src/ultragrid-externals/ndi_sdk/lib -iname "*.so" -exec ln -s /{} usr/lib/$(DEB_HOST_MULTIARCH)/ \; && \ 30 | find usr/src/ultragrid-externals/ndi_sdk/lib -iname "*.so.*" -exec ln -s /{} usr/lib/$(DEB_HOST_MULTIARCH)/ \; && \ 31 | find usr/src/ultragrid-externals/ndi_sdk/include -iname "*.h" -exec ln -s /{} usr/include/$(DEB_HOST_MULTIARCH) \; && \ 32 | popd 33 | 34 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ndi/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/ultragrid-proprietary-drivers-ndi-rpmlintrc: -------------------------------------------------------------------------------- 1 | addFilter("ultragrid-proprietary-drivers-ndi.* devel-file-in-non-devel-package") 2 | addFilter("ultragrid-proprietary-drivers-ndi.* file-contains-date-and-time") 3 | addFilter("ultragrid-proprietary-drivers-ndi.* wrong-script-end-of-line-encoding") 4 | addFilter("ultragrid-proprietary-drivers-ndi.* files-duplicate") 5 | addFilter("ultragrid-proprietary-drivers-ndi.* binary-or-shlib-calls-gethostbyname") 6 | addFilter("ultragrid-proprietary-drivers-ndi.* executable-stack") 7 | addFilter("ultragrid-proprietary-drivers-ndi.* no-soname") 8 | addFilter("ultragrid-proprietary-drivers-ndi.* hidden-file-or-dir") 9 | addFilter("ultragrid-proprietary-drivers-ndi.* incorrect-fsf-address") 10 | addFilter("ultragrid-proprietary-drivers-ndi.* zero-length") 11 | addFilter("ultragrid-proprietary-drivers-ndi.* shared-lib-calls-exit") 12 | addFilter("ultragrid-proprietary-drivers-ndi.* shlib-policy-missing-suffix") 13 | addFilter("ultragrid-proprietary-drivers-ndi.* version-control-internal-file") 14 | addFilter("ultragrid-proprietary-drivers-ndi.* no-rpm-opt-flags") 15 | addFilter("ultragrid-proprietary-drivers-ndi.* non-executable-script") 16 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ndi/ultragrid-proprietary-drivers-ndi.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ndi4.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers-ndi 7 | Binary: ultragrid-proprietary-drivers-ndi 8 | Architecture: any 9 | Version: 20200227 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, linux-libc-dev, bash 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea-placeholder/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ximea-placeholder/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea-placeholder/debian.rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | SHELL=/bin/bash 4 | DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_configure: 10 | echo "no configure here" 11 | 12 | override_dh_auto_build: 13 | echo "dummy build" 14 | 15 | override_dh_auto_install: 16 | mkdir -p $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk_placeholder 17 | ln -s ximea_sdk_placeholder $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk 18 | touch $(DEB_BUILD_ROOT)/usr/src/ultragrid-externals/ximea_sdk_placeholder/.keep 19 | 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea-placeholder/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ximea-placeholder/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea-placeholder/dummy.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ximea-placeholder/dummy.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea-placeholder/ultragrid-proprietary-drivers-ximea-placeholder.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: dummy.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers-ximea-placeholder 7 | Binary: ultragrid-proprietary-drivers-ximea-placeholder 8 | Architecture: any 9 | Version: 20200227 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, coreutils, bash 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ximea/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea/debian.rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | SHELL=/bin/bash 4 | DEB_BUILD_ROOT=$(shell realpath . )/debian/tmp 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_configure: 10 | echo "no configure here" 11 | 12 | 13 | override_dh_shlibdeps: 14 | env LD_LIBRARY_PATH=$${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu:/usr/lib:/opt/XIMEA/lib dh_shlibdeps -Xusr/src/ultragrid-externals -Xopt/XIMEA 15 | # -- --ignore-missing-info 16 | 17 | override_dh_auto_build: 18 | echo placeholder 19 | 20 | override_dh_auto_install: 21 | chmod +x debian/buildscript.sh 22 | env RPM_BUILD_ROOT=$(DEB_BUILD_ROOT) SYSCONFDIR=/etc LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) DATADIR=/usr/share INCLUDEDIR=/usr/lib/$(DEB_HOST_MULTIARCH) PREFIX=/usr debian/buildscript.sh 23 | 24 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers-ximea/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea/ultragrid-proprietary-drivers-ximea-rpmlintrc: -------------------------------------------------------------------------------- 1 | addFilter("ultragrid-proprietary-drivers-ximea.* devel-file-in-non-devel-package") 2 | addFilter("ultragrid-proprietary-drivers-ximea.* file-contains-date-and-time") 3 | addFilter("ultragrid-proprietary-drivers-ximea.* wrong-script-end-of-line-encoding") 4 | addFilter("ultragrid-proprietary-drivers-ximea.* files-duplicate") 5 | addFilter("ultragrid-proprietary-drivers-ximea.* binary-or-shlib-calls-gethostbyname") 6 | addFilter("ultragrid-proprietary-drivers-ximea.* executable-stack") 7 | addFilter("ultragrid-proprietary-drivers-ximea.* no-soname") 8 | addFilter("ultragrid-proprietary-drivers-ximea.* hidden-file-or-dir") 9 | addFilter("ultragrid-proprietary-drivers-ximea.* incorrect-fsf-address") 10 | addFilter("ultragrid-proprietary-drivers-ximea.* zero-length") 11 | addFilter("ultragrid-proprietary-drivers-ximea.* shared-lib-calls-exit") 12 | addFilter("ultragrid-proprietary-drivers-ximea.* shlib-policy-missing-suffix") 13 | addFilter("ultragrid-proprietary-drivers-ximea.* version-control-internal-file") 14 | addFilter("ultragrid-proprietary-drivers-ximea.* no-rpm-opt-flags") 15 | addFilter("ultragrid-proprietary-drivers-ximea.* non-executable-script") 16 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers-ximea/ultragrid-proprietary-drivers-ximea.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ximea-linux-upstream.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers-ximea 7 | Binary: ultragrid-proprietary-drivers-ximea 8 | Architecture: any 9 | Version: 20200109 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, linux-libc-dev, python3, python3-distutils-extra, bash, libraw1394-11, libtiff-dev, libusb-1.0-0 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch binary 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/AJA-clang-cxx14.patch: -------------------------------------------------------------------------------- 1 | --- a/ntv2sdklinux_15.5.1.1/build/common.mk 2019-12-11 02:22:34.000000000 +0100 2 | +++ b/ntv2sdklinux_15.5.1.1/build/common.mk 2020-01-20 12:10:32.808119532 +0100 3 | @@ -4,7 +4,7 @@ 4 | # All righs reserved 5 | # 6 | 7 | -CXX ?= g++ 8 | +CXX ?= clang++ 9 | CPP := $(CXX) 10 | 11 | ifeq ($(AJA_USE_CCACHE),1) 12 | @@ -14,7 +14,7 @@ ifeq ($(AJA_USE_CCACHE),1) 13 | endif 14 | 15 | CPPFLAGS += -DAJALinux -DAJA_LINUX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \ 16 | - -pedantic -Wall -Wno-long-long -Wwrite-strings -c -pipe -fPIC $(DBG) 17 | + -pedantic -Wall -Wno-long-long -Wwrite-strings -c -pipe -fPIC -std=c++14 $(DBG) 18 | 19 | LD = $(CXX) 20 | LDFLAGS = 21 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/AJA-gcc-explicit-constructors.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h b/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 2 | --- a/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 3 | +++ b/ntv2sdklinux_14.2.0.6/ajalibraries/ajantv2/includes/ntv2formatdescriptor.h 4 | @@ -29,7 +29,8 @@ public: 5 | /** 6 | @brief My default constructor initializes me in an "invalid" state. 7 | **/ 8 | - explicit NTV2FormatDescriptor (); ///< @brief My default constructor 9 | + NTV2FormatDescriptor (); ///< @brief My default constructor 10 | + /** gcc-6 does not allow to call explicit default constructor calls in array initializations */ 11 | 12 | /** 13 | @brief Construct from line and pixel count, plus line pitch. 14 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/AJA-nodemo.patch: -------------------------------------------------------------------------------- 1 | --- a/ntv2sdklinux_15.5.1.1/Makefile 2020-01-16 13:47:04.724123479 +0100 2 | +++ b/ntv2sdklinux_15.5.1.1/Makefile 2020-01-23 13:11:57.790164829 +0100 3 | @@ -31,7 +31,7 @@ ifndef AJA_NO_FLTK 4 | $(call make_if_dir_exists, "$(A_APPS_XPLAT_PATH)/xenacablesfltk") 5 | endif 6 | ifndef AJA_NO_DEMOS 7 | - $(call make_if_dir_exists, $(A_DEMOAPPS_PATH)) 8 | + #$(call make_if_dir_exists, $(A_DEMOAPPS_PATH)) 9 | endif 10 | 11 | .PHONY: clean 12 | @@ -45,6 +45,6 @@ ifndef AJA_NO_FLTK 13 | $(call clean_if_dir_exists, "$(A_APPS_XPLAT_PATH)/xenacablesfltk") 14 | endif 15 | ifndef AJA_NO_DEMOS 16 | - $(call clean_if_dir_exists, $(A_DEMOAPPS_PATH)) 17 | + #$(call clean_if_dir_exists, $(A_DEMOAPPS_PATH)) 18 | endif 19 | 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/AJA-qmake.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 2 | --- a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 3 | +++ b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtmultiinput/Makefile 4 | @@ -12,6 +12,7 @@ include $(DIR)/../../../../build/qt.mk 5 | APP_FULL_PATH=$(A_UBER_BIN)/ntv2qtmultiinput 6 | QT_PRO_FILE = $(A_BUILD_PATH)/ntv2demos/qtmultiinput/qtmultiinput.pro 7 | QMAKE_FILE = qMakefile 8 | +QMAKE ?= qmake-qt4 9 | PLUGIN_IMPORT_CPP=$(shell basename $(APP_FULL_PATH))_plugin_import.cpp 10 | 11 | .PHONY: clean 12 | diff -rupN a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 13 | --- a/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 14 | +++ b/ntv2sdklinux_14.2.0.6/ajaapps/crossplatform/demoapps/ntv2qtpreview/Makefile 15 | @@ -12,6 +12,7 @@ include $(DIR)/../../../../build/qt.mk 16 | APP_FULL_PATH=$(A_UBER_BIN)/ntv2qtpreview 17 | QT_PRO_FILE = $(A_BUILD_PATH)/ntv2demos/qtpreview/qtpreview.pro 18 | QMAKE_FILE = qMakefile 19 | +QMAKE ?= qmake-qt4 20 | PLUGIN_IMPORT_CPP=$(shell basename $(APP_FULL_PATH))_plugin_import.cpp 21 | 22 | .PHONY: clean 23 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/AJA-qt5.patch: -------------------------------------------------------------------------------- 1 | diff -rupN a/ntv2sdklinux_14.2.0.6/build/qt.mk b/ntv2sdklinux_14.2.0.6/build/qt.mk 2 | --- a/ntv2sdklinux_14.2.0.6/build/qt.mk 3 | +++ b/ntv2sdklinux_14.2.0.6/build/qt.mk 4 | @@ -15,7 +15,7 @@ ifeq (,$(QMAKE)) 5 | QMAKE = $(shell command -v qmake-qt5 2>&1) 6 | endif 7 | # WTF? qmake -v outputs to stderr?? 8 | -QMAKE_V := $(shell $(QMAKE) -v 2>&1) 9 | +QMAKE_V := $(shell qmake-qt5 -v 2>&1) 10 | QMAKE_4 := $(findstring 4.,$(QMAKE_V)) 11 | QMAKE_5 := $(findstring 5.,$(QMAKE_V)) 12 | 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/README.md: -------------------------------------------------------------------------------- 1 | This driver suite expects a source tarball, named drivers.tar.gz. 2 | Its content has to match (with respect to vendors enabled) following structure: 3 | 4 | # ls -1 ultragrid-proprietary-drivers-20170103/ 5 | EpochLinuxDriver_V5_11_0_19 6 | ntv2sdklinux_12.4.2.1 7 | sdk4.3.5.21 8 | VideoMasterHD_SDK_Linux_v5.21 9 | 10 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | 1.3 6 | nightly 7 | ultragrid-git 8 | yes 9 | enable 10 | 11 | 12 | *ultragrid*.tar 13 | */package_specs/ultragrid-proprietary-drivers/* 14 | 15 | 16 | http 17 | localhost 18 | path-to-drivers-archive.tar 19 | drivers.tar 20 | 21 | 22 | *drivers.tar 23 | gz 24 | 25 | 26 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/debian-clang-series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-destdir.patch 4 | AJA-linuxdriver-uname.patch 5 | AJA-nodemo.patch 6 | AJA-clang-cxx14.patch 7 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/debian-patches-Ubuntu_1404.series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-destdir.patch 4 | AJA-linuxdriver-uname.patch 5 | AJA-nodemo.patch 6 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/debian-patches-series: -------------------------------------------------------------------------------- 1 | videoMasterHD-destdir.patch 2 | bluefish-uname.patch 3 | bluefish-destdir.patch 4 | AJA-linuxdriver-uname.patch 5 | AJA-nodemo.patch 6 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid-proprietary-drivers/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/preprocess-crlf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | tar -xvf drivers.tar.gz || exit 1 4 | drvdir=$(find . -maxdepth 1 -type d -iname 'ultragrid-proprietary-drivers-*') 5 | pushd $drvdir || exit 2 6 | 7 | for filepattern in Makefile ; do 8 | find . -iname "$filepattern" -exec dos2unix {} \; 9 | done 10 | popd 11 | tar -c $drvdir -zf drivers.new.tar.gz || exit 3 12 | mv drivers.new.tar.gz drivers.tar.gz 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers-Ubuntu_1404.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-Ubuntu_1404.series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers 8 | Architecture: any 9 | Version: 20200109 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers-generic, realpath, coreutils, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers-Ubuntu_1604.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-clang-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers 8 | Architecture: any 9 | Version: 20200109 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev, clang 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers-rpmlintrc: -------------------------------------------------------------------------------- 1 | addFilter("ultragrid-proprietary-drivers.* devel-file-in-non-devel-package") 2 | addFilter("ultragrid-proprietary-drivers.* file-contains-date-and-time") 3 | addFilter("ultragrid-proprietary-drivers.* wrong-script-end-of-line-encoding") 4 | addFilter("ultragrid-proprietary-drivers.* files-duplicate") 5 | addFilter("ultragrid-proprietary-drivers.* binary-or-shlib-calls-gethostbyname") 6 | addFilter("ultragrid-proprietary-drivers.* executable-stack") 7 | addFilter("ultragrid-proprietary-drivers.* no-soname") 8 | addFilter("ultragrid-proprietary-drivers.* hidden-file-or-dir") 9 | addFilter("ultragrid-proprietary-drivers.* incorrect-fsf-address") 10 | addFilter("ultragrid-proprietary-drivers.* zero-length") 11 | addFilter("ultragrid-proprietary-drivers.* shared-lib-calls-exit") 12 | addFilter("ultragrid-proprietary-drivers.* shlib-policy-missing-suffix") 13 | addFilter("ultragrid-proprietary-drivers.* version-control-internal-file") 14 | addFilter("ultragrid-proprietary-drivers.* no-rpm-opt-flags") 15 | addFilter("ultragrid-proprietary-drivers.* non-executable-script") 16 | -------------------------------------------------------------------------------- /package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers.dsc: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: drivers.tar.gz 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid-proprietary-drivers 7 | Binary: ultragrid-proprietary-drivers 8 | Architecture: any 9 | Version: 20200109 10 | Standards-Version: 3.9.6 11 | Maintainer: Lukas Rucka 12 | Build-Depends: debhelper (>= 7.0.50~), build-essential, linux-headers, realpath, coreutils, autoconf, automake, libx11-dev, libgl1-mesa-dev, libglu1-mesa-dev, libglew-dev, libxext-dev, linux-libc-dev, libncurses5-dev, qtchooser, qt5-default, qtmultimedia5-dev 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid/_service.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/CESNET/UltraGrid.git 5 | 1.6 6 | master 7 | ultragrid 8 | yes 9 | enable 10 | 11 | 12 | *ultragrid*.tar 13 | */package_specs/ultragrid/* 14 | 15 | 16 | *ultragrid*.tar 17 | bz2 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /package_specs/ultragrid/cineform-min-cmake.patch: -------------------------------------------------------------------------------- 1 | --- a/cineform-sdk/CMakeLists.txt 2019-07-18 12:14:21.754747298 +0200 2 | +++ b/cineform-sdk/CMakeLists.txt 2019-07-18 12:14:42.555263813 +0200 3 | @@ -1,5 +1,5 @@ 4 | # CMakeLists.txt 5 | -cmake_minimum_required (VERSION 3.5.1) 6 | +cmake_minimum_required (VERSION 2.8.2) 7 | project (CineFormSDK) 8 | 9 | # Build settings 10 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-Debian_80-series: -------------------------------------------------------------------------------- 1 | debian-disable-hwaccel.patch 2 | debian-disable-gui.patch 3 | cineform-min-cmake.patch 4 | libav-compat-debian8.patch 5 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-Ubuntu_1404-series: -------------------------------------------------------------------------------- 1 | cineform-min-cmake.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-Ubuntu_1604-series: -------------------------------------------------------------------------------- 1 | debian-disable-hwaccel.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-clang.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2017-11-09 11:06:30.000000000 +0100 2 | +++ b/debian/rules 2017-11-22 15:56:23.854956499 +0100 3 | @@ -49,7 +49,7 @@ CARDCONF_AJA= --enable-aja --with-aja=/u 4 | ##################################################### 5 | # > cuda 6 | ##################################################### 7 | -CUDA=--with-cuda=/usr/local/cuda-8.0 --enable-jpeg 8 | +CUDA=--with-cuda=/usr/local/cuda-8.0 --enable-jpeg --with-cuda-host-compiler=clang 9 | ##################################################### 10 | # < cuda 11 | ##################################################### 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-disable-gui.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2 | +++ b/debian/rules 3 | @@ -82,7 +82,7 @@ override_dh_auto_configure: 4 | dh_auto_configure -- --disable-profile --libdir=$(LIBDIR) --disable-debug --enable-ipv6 --enable-plugins \ 5 | --enable-sdl2 --enable-gl --enable-rtdxt \ 6 | --enable-portaudio --disable-jack-transport --enable-jack \ 7 | - --enable-alsa --enable-scale --enable-qt --disable-quicktime \ 8 | + --enable-alsa --enable-scale --disable-qt --disable-quicktime \ 9 | --disable-coreaudio --disable-sage --enable-screen\ 10 | --enable-v4l2 --enable-gpl-build --enable-libavcodec --enable-scale --enable-uyvy \ 11 | --disable-rtsp \ 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-disable-gui.series: -------------------------------------------------------------------------------- 1 | debian-disable-gui.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-disable-hwaccel.patch: -------------------------------------------------------------------------------- 1 | --- a/debian/rules 2 | +++ b/debian/rules 3 | @@ -58,14 +58,14 @@ CUDA=--with-cuda=/usr/local/cuda-8.0 -- 4 | ##################################################### 5 | # > vaapi 6 | ##################################################### 7 | -VAAPI=--enable-lavc-hw-accel-vaapi 8 | +#VAAPI=--enable-lavc-hw-accel-vaapi 9 | ##################################################### 10 | # < vaapi 11 | ##################################################### 12 | ##################################################### 13 | # > vdpau 14 | ##################################################### 15 | -VDPAU=--enable-lavc-hw-accel-vdpau 16 | +#VDPAU=--enable-lavc-hw-accel-vdpau 17 | ##################################################### 18 | # < vdpau 19 | ##################################################### 20 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-patches-clang.series: -------------------------------------------------------------------------------- 1 | debian-clang.patch 2 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian-patches-series: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid/debian-patches-series -------------------------------------------------------------------------------- /package_specs/ultragrid/debian.changelog: -------------------------------------------------------------------------------- 1 | ultragrid (1.6-20200601) unstable; urgency=low 2 | * Ultragrid 1.6 released 3 | 4 | -- SITOLA repository (maintainer) Mon, 06 Jun 2020 01:00:00 +0200 5 | 6 | ultragrid (1.5-20181004) unstable; urgency=low 7 | * Ultragrid 1.5 released 8 | 9 | -- SITOLA repository (maintainer) Thu, 04 Oct 2018 13:00:00 +0200 10 | 11 | ultragrid (1.4-20170401) unstable; urgency=low 12 | * Ultragrid 1.4 released 13 | 14 | -- SITOLA repository (maintainer) Fri, 31 Mar 2017 21:56:00 +0200 15 | 16 | ultragrid (1.3-20150306) unstable; urgency=low 17 | * Ultragrid 1.3 released 18 | * Disabled linsys and sage support 19 | * Added support for AJA cards 20 | * Added support for live555, openssl and several other features 21 | 22 | -- SITOLA repository (maintainer) Thu, 02 Jun 2015 15:16:00 +0200 23 | 24 | ultragrid (1.2-20131226u1404) unstable; urgency=low 25 | * Ultragrid 1.2 released 26 | * Disabled binary package containing fastdxt 27 | * Added support for BlueFish444 cards, v4l2 and swmix (software videomixer) 28 | * Added support for libavcodec compression 29 | 30 | -- SITOLA repository (maintainer) Thu, 26 Dec 2013 16:18:00 +0100 31 | 32 | -------------------------------------------------------------------------------- /package_specs/ultragrid/debian.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/package_specs/ultragrid/debian.tar.gz -------------------------------------------------------------------------------- /package_specs/ultragrid/libav-compat-debian8.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/libavcodec_common.h b/src/libavcodec_common.h 2 | --- a/src/libavcodec_common.h 3 | +++ b/src/libavcodec_common.h 4 | @@ -211,7 +211,6 @@ static const struct { 5 | { UYVY, AV_PIX_FMT_NV12, uyvy_to_nv12 }, 6 | { UYVY, AV_PIX_FMT_YUV444P, uyvy_to_yuv444p }, 7 | { UYVY, AV_PIX_FMT_YUVJ444P, uyvy_to_yuv444p }, 8 | - { RGB, AV_PIX_FMT_BGR0, rgb_to_bgr0 }, 9 | { RGB, AV_PIX_FMT_GBRP, rgb_to_gbrp }, 10 | { RGBA, AV_PIX_FMT_GBRP, rgba_to_gbrp }, 11 | { R10k, AV_PIX_FMT_GBRP10LE, r10k_to_gbrp10le }, 12 | -------------------------------------------------------------------------------- /package_specs/ultragrid/recreate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | osc up 3 | osc service localrun 4 | env FORCE_REBUILD=yes ../../UltraGrid/package_specs/ultragrid-autobuild.sh $(realpath .) master $(realpath ../../UltraGrid_readonly/) $(realpath ../../UltraGrid_readonly/package_specs/) 5 | -------------------------------------------------------------------------------- /package_specs/ultragrid/ultragrid-Debian_80.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Debian_80-series 5 | Format: 1.0 6 | Source: ultragrid 7 | Binary: ultragrid 8 | Architecture: any 9 | Version: 1.6-2020060100 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-release-1.6, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-release-1.6 12 | #, ultragrid-proprietary-drivers-ndi-release-1.6 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid/ultragrid-Debian_90.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-clang.series 5 | Format: 1.0 6 | Source: ultragrid 7 | Binary: ultragrid 8 | Architecture: any 9 | Version: 1.6-2020060100 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-release-1.6, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-release-1.6 12 | #, ultragrid-proprietary-drivers-ndi-release-1.6 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid/ultragrid-Ubuntu_1404.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Debian_80-series 5 | Format: 1.0 6 | Source: ultragrid 7 | Binary: ultragrid 8 | Architecture: any 9 | Version: 1.6-2020060100 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-release-1.6, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-release-1.6 12 | #, ultragrid-proprietary-drivers-ndi-release-1.6 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid/ultragrid-Ubuntu_1604.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-Ubuntu_1604-series 5 | Format: 1.0 6 | Source: ultragrid 7 | Binary: ultragrid 8 | Architecture: any 9 | Version: 1.6-2020060100 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-release-1.6, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-release-1.6 12 | #, ultragrid-proprietary-drivers-ndi-release-1.6 13 | -------------------------------------------------------------------------------- /package_specs/ultragrid/ultragrid.dsc.tpl: -------------------------------------------------------------------------------- 1 | # see https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#packageName.dsc 2 | DEBTRANSFORM-TAR: ultragrid-1.6.tar.bz2 3 | DEBTRANSFORM-FILES-TAR: debian.tar.gz 4 | DEBTRANSFORM-SERIES: debian-patches-series 5 | Format: 1.0 6 | Source: ultragrid 7 | Binary: ultragrid 8 | Architecture: any 9 | Version: 1.6-2020060100 10 | Maintainer: Lukas Rucka 11 | Build-Depends: debhelper (>= 8.0), build-essential, cmake, make, autoconf, automake, autotools-dev, libmagickwand-dev, libjpeg-dev, freeglut3-dev, libglew1.6-dev, libsdl2-mixer-dev, libsdl2-ttf-dev, libsdl2-dev, qt5-qmake, qtbase5-dev-tools, libxxf86vm1, libx11-6, libxdamage1, portaudio19-dev, libjack-dev, libasound2-dev, libv4l-dev, zip, libavcodec-dev, liblivemedia-dev, libopencv-dev, libssl-dev, libvdpau-dev, libva-dev, libgpujpeg-dev, libcairo2-dev, ultragrid-proprietary-drivers-release-1.6, libglib2.0-dev, libcurl4-openssl-dev, git, nvidia-cuda-toolkit (>= 5.0), clang, qtbase5-dev, libcppunit-dev, ultragrid-proprietary-drivers-ximea-release-1.6 12 | #, ultragrid-proprietary-drivers-ndi-release-1.6 13 | -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/RGB10A2_conv.comp.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/RGB10A2_conv.comp.spv -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/UYVA16_conv.comp.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/UYVA16_conv.comp.spv -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/UYVA8_conv.comp.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/UYVA8_conv.comp.spv -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/UYVY8_conv.comp.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/UYVY8_conv.comp.spv -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/render.frag.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/render.frag.spv -------------------------------------------------------------------------------- /share/ultragrid/vulkan_shaders/render.vert.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CESNET/UltraGrid/227c6d1e01f070435920f629829e8a37be8789d1/share/ultragrid/vulkan_shaders/render.vert.spv -------------------------------------------------------------------------------- /src/bitstream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * FILE: bitstream.h 3 | * PROGRAM: RAT 4 | * AUTHOR: Orion Hodson 5 | * 6 | * Copyright (c) 2003 University of Southern California 7 | * Copyright (c) 1998-2001 University College London 8 | * All rights reserved. 9 | * 10 | * $Revision: 1.1 $ 11 | * $Date: 2007/11/08 09:48:59 $ 12 | * 13 | */ 14 | 15 | #ifdef HAVE_CONFIG_H 16 | #include "config.h" 17 | #include "config_unix.h" 18 | #include "config_win32.h" 19 | #endif // HAVE_CONFIG_H 20 | 21 | #ifndef RAT_BITSTREAM_H 22 | #define RAT_BITSTREAM_H 23 | 24 | typedef struct s_bitstream bitstream_t; 25 | 26 | int bs_create (bitstream_t **b); 27 | int bs_destroy (bitstream_t **b); 28 | int bs_attach (bitstream_t *b, u_char *buf, int blen); 29 | int bs_put (bitstream_t *b, u_char bits, uint8_t nbits); 30 | u_char bs_get (bitstream_t *b, uint8_t nbits); 31 | int bs_bytes_used (bitstream_t *b); 32 | 33 | #endif /* RAT_BITSTREAM_H */ 34 | 35 | -------------------------------------------------------------------------------- /src/crypto/crc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** CRC.H - header file for SNIPPETS CRC and checksum functions 3 | */ 4 | 5 | #ifndef CRC__H 6 | #define CRC__H 7 | 8 | #ifdef __cplusplus 9 | #include 10 | #include 11 | #else 12 | #include 13 | #include /* For size_t */ 14 | #include 15 | #endif 16 | 17 | #ifdef __cplusplus 18 | extern "C" { 19 | #endif 20 | 21 | /* 22 | ** File: ARCCRC16.C 23 | */ 24 | 25 | void init_crc_table(void); 26 | uint16_t crc_calc(uint16_t crc, char *buf, unsigned nbytes); 27 | void do_file(char *fn); 28 | 29 | /* 30 | ** File: CRC-16.C 31 | */ 32 | 33 | uint16_t crc16(char *data_p, uint16_t length); 34 | 35 | /* 36 | ** File: CRC-16F.C 37 | */ 38 | 39 | uint16_t updcrc(uint16_t icrc, uint8_t *icp, size_t icnt); 40 | 41 | /* 42 | ** File: CRC_32.C 43 | */ 44 | 45 | #define UPDC32(octet,crc) (crc_32_tab[((crc)\ 46 | ^ ((uint8_t)octet)) & 0xff] ^ ((crc) >> 8)) 47 | 48 | uint32_t updateCRC32(unsigned char ch, uint32_t crc); 49 | bool crc32file(char *name, uint32_t *crc, long *charcnt); 50 | 51 | uint32_t crc32buf(const char *buf, size_t len); 52 | 53 | uint32_t crc32buf_with_oldcrc(const char *buf, size_t len, uint32_t oldcrc); 54 | 55 | /* 56 | ** File: CHECKSUM.C 57 | */ 58 | 59 | unsigned checksum(void *buffer, size_t len, unsigned int seed); 60 | 61 | /* 62 | ** File: CHECKEXE.C 63 | */ 64 | 65 | void checkexe(char *fname); 66 | 67 | 68 | #ifdef __cplusplus 69 | } 70 | #endif 71 | 72 | #endif /* CRC__H */ 73 | -------------------------------------------------------------------------------- /src/crypto/md5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm 3 | * 4 | * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights 5 | * reserved. 6 | * 7 | * License to copy and use this software is granted provided that it is 8 | * identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" 9 | * in all material mentioning or referencing this software or this function. 10 | * 11 | * License is also granted to make and use derivative works provided that such 12 | * works are identified as "derived from the RSA Data Security, Inc. MD5 13 | * Message-Digest Algorithm" in all material mentioning or referencing the 14 | * derived work. 15 | * 16 | * RSA Data Security, Inc. makes no representations concerning either the 17 | * merchantability of this software or the suitability of this software for 18 | * any particular purpose. It is provided "as is" without express or implied 19 | * warranty of any kind. 20 | * 21 | * These notices must be retained in any copies of any part of this 22 | * documentation and/or software. 23 | * 24 | * $Revision: 1.1 $ 25 | * $Date: 2007/11/08 09:48:59 $ 26 | * 27 | */ 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | /* MD5 context. */ 34 | typedef struct { 35 | uint32_t state[4]; /* state (ABCD) */ 36 | uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */ 37 | unsigned char buffer[64]; /* input buffer */ 38 | } MD5CTX; 39 | 40 | void MD5Init(MD5CTX *context); 41 | void MD5Update(MD5CTX *context, const unsigned char *input, unsigned int inputLen); 42 | void MD5Final(unsigned char digest[16], MD5CTX *context); 43 | 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | -------------------------------------------------------------------------------- /src/hwaccel_drm.h: -------------------------------------------------------------------------------- 1 | #ifndef HWACCEL_DRM_H_d8e44cdd67bf 2 | #define HWACCEL_DRM_H_d8e44cdd67bf 3 | 4 | #include 5 | #include 6 | 7 | struct AVFrame; 8 | 9 | struct drm_prime_frame{ 10 | uint32_t drm_format; 11 | 12 | int fd_count; 13 | int dmabuf_fds[4]; 14 | 15 | int planes; 16 | uint32_t fd_indices[4]; //index into dmabuf_fds 17 | uint32_t pitches[4]; 18 | uint32_t offsets[4]; 19 | uint64_t modifiers[4]; 20 | 21 | struct AVFrame *av_frame; 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/ntp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * FILE: ntp.h 3 | * AUTHOR: O.Hodson 4 | * 5 | * NTP utility functions to make rtp and rtp round time calculation 6 | * a little less painful. 7 | * 8 | * Copyright (c) 2000 University College London 9 | * All rights reserved. 10 | * 11 | * $Revision: 1.1 $ 12 | * $Date: 2007/11/08 09:48:59 $ 13 | * 14 | */ 15 | 16 | #include "config.h" 17 | #include "config_unix.h" 18 | #include "config_win32.h" 19 | 20 | #include 21 | 22 | #include "ntp.h" 23 | 24 | #define SECS_BETWEEN_1900_1970 2208988800u 25 | 26 | void ntp64_time(uint32_t * ntp_sec, uint32_t * ntp_frac) 27 | { 28 | struct timeval now; 29 | uint32_t tmp; /* now.tv_usec is signed on many platforms; compensate */ 30 | 31 | gettimeofday(&now, NULL); 32 | 33 | /* NB ntp_frac is in units of 1 / (2^32 - 1) secs. */ 34 | *ntp_sec = now.tv_sec + SECS_BETWEEN_1900_1970; 35 | tmp = now.tv_usec; 36 | *ntp_frac = (tmp << 12) + (tmp << 8) - ((tmp * 3650) >> 6); 37 | } 38 | -------------------------------------------------------------------------------- /src/ntp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * FILE: ntp.h 3 | * AUTHOR: O.Hodson 4 | * 5 | * NTP utility functions to make rtp and rtp round time calculation 6 | * a little less painful. 7 | * 8 | * Copyright (c) 2000 University College London 9 | * All rights reserved. 10 | * 11 | * $Revision: 1.1 $ 12 | * $Date: 2007/11/08 09:48:59 $ 13 | * 14 | */ 15 | 16 | #ifndef _NTP_H 17 | #define _NTP_H 18 | 19 | #if defined(__cplusplus) 20 | extern "C" { 21 | #endif 22 | 23 | #define ntp64_to_ntp32(ntp_sec, ntp_frac) \ 24 | ((((ntp_sec) & 0x0000ffff) << 16) | \ 25 | (((ntp_frac) & 0xffff0000) >> 16)) 26 | 27 | #define ntp32_sub(now, then) ((now) > (then)) ? ((now) - (then)) : (((now) - (then)) + 0x7fffffff) 28 | 29 | void ntp64_time(uint32_t *ntp_sec, uint32_t *ntp_frac); 30 | 31 | #if defined(__cplusplus) 32 | } 33 | #endif 34 | 35 | #endif /* _NTP_H */ 36 | -------------------------------------------------------------------------------- /src/rtp/ldgm_gpu.cpp: -------------------------------------------------------------------------------- 1 | #include "../ldgm/src/ldgm-session-gpu.h" 2 | #include "ldgm.h" 3 | #include "lib_common.h" 4 | 5 | static LDGM_session_gpu *new_ldgm_session_gpu() { 6 | return new LDGM_session_gpu(); 7 | } 8 | 9 | REGISTER_MODULE(ldgm_gpu, reinterpret_cast(new_ldgm_session_gpu), LIBRARY_CLASS_UNDEFINED, LDGM_GPU_API_VERSION); 10 | 11 | -------------------------------------------------------------------------------- /src/rtsp/rtsp_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _RTSP_TYPES_HH 2 | #define _RTSP_TYPES_HH 3 | 4 | typedef enum { 5 | rtsp_type_none = 0, 6 | rtsp_type_audio = 1 << 0, 7 | rtsp_type_video = 1 << 1, 8 | rtsp_av_type_both = rtsp_type_audio | rtsp_type_video, 9 | } rtsp_types_t; 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /src/utils/cuda_pix_conv.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifndef CUDA_RGB_RGBA_H 4 | #define CUDA_RGB_RGBA_H 5 | 6 | void cuda_RGB_to_RGBA(unsigned char *dst, 7 | size_t dstPitch, 8 | unsigned char *src, 9 | size_t srcPitch, 10 | size_t width, 11 | size_t height, 12 | struct CUstream_st *stream); 13 | 14 | void cuda_RGBA_to_RGB(unsigned char *dst, 15 | size_t dstPitch, 16 | unsigned char *src, 17 | size_t srcPitch, 18 | size_t width, 19 | size_t height, 20 | struct CUstream_st *stream); 21 | 22 | void cuda_RGBA_to_UYVY(unsigned char *dst, 23 | size_t dstPitch, 24 | unsigned char *src, 25 | size_t srcPitch, 26 | size_t width, 27 | size_t height, 28 | struct CUstream_st *stream); 29 | 30 | void cuda_UYVY_to_RGBA(unsigned char *dst, 31 | size_t dstPitch, 32 | unsigned char *src, 33 | size_t srcPitch, 34 | size_t width, 35 | size_t height, 36 | struct CUstream_st *stream); 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/utils/lock_guard.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @deprecated 3 | * Do not use these functions in new code, use rather std::lock_guard and similar 4 | */ 5 | #ifndef LOCK_GUARD_H_ 6 | #define LOCK_GUARD_H_ 7 | 8 | #include 9 | 10 | namespace ultragrid { 11 | 12 | struct lock_guard_retain_ownership_t { 13 | }; 14 | 15 | template 16 | class generic_lock_guard { 17 | public: 18 | generic_lock_guard(T &lock) : 19 | m_lock(lock) 20 | { 21 | lock_func(&m_lock); 22 | } 23 | 24 | generic_lock_guard(T &lock, lock_guard_retain_ownership_t) : 25 | m_lock(lock) 26 | { 27 | } 28 | 29 | ~generic_lock_guard() 30 | { 31 | unlock_func(&m_lock); 32 | } 33 | private: 34 | T &m_lock; 35 | }; 36 | 37 | typedef class generic_lock_guard 38 | pthread_mutex_guard; 39 | typedef class generic_lock_guard 40 | pthread_rwlock_guard_write; 41 | typedef class generic_lock_guard 42 | pthread_rwlock_guard_read; 43 | 44 | } // end of namespace ultragrid 45 | 46 | #endif // LOCK_GUARD_H_ 47 | 48 | -------------------------------------------------------------------------------- /src/utils/string_view_utils.cpp: -------------------------------------------------------------------------------- 1 | #include "string_view_utils.hpp" 2 | 3 | std::string_view tokenize(std::string_view& str, char delim, char quot){ 4 | if(str.empty()) 5 | return {}; 6 | 7 | bool escaped = false; 8 | 9 | auto token_begin = str.begin(); 10 | while(token_begin != str.end()){ 11 | if(*token_begin == quot) 12 | escaped = !escaped; 13 | else if(*token_begin != delim) 14 | break; 15 | 16 | token_begin++; 17 | } 18 | 19 | auto token_end = token_begin; 20 | while(token_end != str.end()){ 21 | if(*token_end == quot){ 22 | str = std::string_view(token_end, str.end() - token_end); 23 | str.remove_prefix(1); //remove the end quote 24 | return std::string_view(token_begin, token_end - token_begin); 25 | } 26 | else if(*token_end == delim && !escaped) 27 | break; 28 | 29 | token_end++; 30 | } 31 | 32 | str = std::string_view(token_end, str.end() - token_end); 33 | 34 | return std::string_view(token_begin, token_end - token_begin); 35 | } 36 | -------------------------------------------------------------------------------- /src/video_display/gl_vdpau.hpp: -------------------------------------------------------------------------------- 1 | #ifndef GL_VDPAU_HPP_667244de5757 2 | #define GL_VDPAU_HPP_667244de5757 3 | 4 | #include "config.h" // for HWACC_VDPAU 5 | 6 | #ifdef HWACC_VDPAU 7 | 8 | #ifdef __APPLE__ 9 | #include 10 | #include // CGL 11 | #include 12 | #else 13 | #include 14 | #endif /* __APPLE__ */ 15 | 16 | #include "hwaccel_vdpau.h" 17 | typedef GLintptr vdpauSurfaceNV; 18 | #define NV_CAST(x) ((void *)(uintptr_t)(x)) 19 | 20 | struct state_vdpau { 21 | bool initialized = false; 22 | GLuint textures[4] = {0}; 23 | hw_vdpau_frame lastFrame; 24 | 25 | bool interopInitialized = false; 26 | bool mixerInitialized = false; 27 | VdpDevice device = VDP_INVALID_HANDLE; 28 | VdpGetProcAddress *get_proc_address = nullptr; 29 | vdpauSurfaceNV vdpgl_surf = 0; 30 | 31 | VdpOutputSurface out_surf = VDP_INVALID_HANDLE; 32 | VdpVideoMixer mixer = VDP_INVALID_HANDLE; 33 | 34 | uint32_t surf_width = 0; 35 | uint32_t surf_height = 0; 36 | VdpChromaType surf_ct = 0; 37 | 38 | bool init(); 39 | void checkInterop(VdpDevice device, VdpGetProcAddress *get_proc_address); 40 | void initInterop(VdpDevice device, VdpGetProcAddress *get_proc_address); 41 | void uninitInterop(); 42 | 43 | void loadFrame(hw_vdpau_frame *frame); 44 | 45 | void initMixer(uint32_t w, uint32_t h, VdpChromaType ct); 46 | void mixerRender(VdpVideoSurface f); 47 | void uninitMixer(); 48 | 49 | void uninit(); 50 | 51 | vdp_funcs funcs; 52 | 53 | }; 54 | 55 | 56 | 57 | #endif //HWACC_VDPAU 58 | #endif //GL_VDPAU_HPP_667244de5757 59 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/RGB10A2_conv.comp: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | layout (local_size_x = 16, local_size_y = 16) in; 4 | 5 | layout (set = 0, binding = 0) uniform usampler2D inputImage; 6 | layout (set = 1, binding = 1, rgb10_a2) uniform image2D resultImage; 7 | 8 | layout(push_constant) uniform constants 9 | { 10 | uint width; 11 | uint height; 12 | } image_size; 13 | 14 | void main() 15 | { 16 | ivec2 pixelCoords = ivec2(gl_GlobalInvocationID.xy); 17 | if(pixelCoords.x >= image_size.width || pixelCoords.y >= image_size.height){ 18 | return; 19 | } 20 | 21 | uvec4 x = texelFetch(inputImage, pixelCoords, 0); 22 | // RGBA in big endian representation 23 | // RRRRRRRR|RRGGGGGG|GGGGBBBB|BBBBBBAA 24 | 25 | uint r = (x[0] << 2) | (x[1] >> 6); 26 | uint g = ((x[1] & 0x3f) << 4) | (x[2] >> 4); 27 | uint b = ((x[2] & 0x0f) << 6) | (x[3] >> 2); 28 | 29 | imageStore(resultImage, pixelCoords, vec4(r, g, b, 1024) / 1024.0); 30 | } 31 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/UYVA16_conv.comp: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | layout (local_size_x = 16, local_size_y = 16) in; 4 | 5 | layout (set = 0, binding = 0) uniform usampler2D inputImage; 6 | layout (set = 1, binding = 1, rgba16) uniform image2D resultImage; 7 | 8 | layout(push_constant) uniform constants 9 | { 10 | uint width; 11 | uint height; 12 | } image_size; 13 | 14 | void main() 15 | { 16 | ivec2 pixelCoords = ivec2(gl_GlobalInvocationID.xy); 17 | if(pixelCoords.x >= image_size.width || pixelCoords.y >= image_size.height){ 18 | return; 19 | } 20 | 21 | ivec2 textureCoords = ivec2(pixelCoords.x, pixelCoords.y); 22 | vec4 yuv = texelFetch(inputImage, textureCoords, 0).grba / 65535.0; 23 | 24 | float Y_SCALED = 1.1643835; 25 | float R_CR_709 = 1.7926522; 26 | float G_CB_709 = -0.21323606; 27 | float G_CR_709 = -0.5330038; 28 | float B_CB_709 = 2.11242; 29 | 30 | yuv.r = Y_SCALED * (yuv.r - 0.0625); 31 | yuv.g = yuv.g - 0.5; 32 | yuv.b = yuv.b - 0.5; 33 | float r = yuv.r + R_CR_709 * yuv.b; 34 | float g = yuv.r + G_CB_709 * yuv.g + G_CR_709 * yuv.b; 35 | float b = yuv.r + B_CB_709 * yuv.g; 36 | 37 | imageStore(resultImage, pixelCoords, vec4(r, g, b, 1.0)); 38 | } 39 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/UYVY8_conv.comp: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | layout (local_size_x = 16, local_size_y = 16) in; 4 | 5 | layout (set = 0, binding = 0) uniform sampler2D inputImage; 6 | layout (set = 1, binding = 1, rgba8) uniform image2D resultImage; 7 | 8 | layout(push_constant) uniform constants 9 | { 10 | uint width; 11 | uint height; 12 | } image_size; 13 | 14 | void main() 15 | { 16 | ivec2 pixelCoords = ivec2(gl_GlobalInvocationID.xy); 17 | if(pixelCoords.x >= image_size.width || pixelCoords.y >= image_size.height){ 18 | return; 19 | } 20 | 21 | ivec2 textureCoords = ivec2(pixelCoords.x / 2, pixelCoords.y); 22 | 23 | vec4 yuv = texelFetch(inputImage, textureCoords, 0).grba; 24 | if(pixelCoords.x % 2 == 1){ 25 | yuv.r = yuv.a; 26 | } 27 | 28 | float Y_SCALED = 1.1643835; 29 | float R_CR_709 = 1.7926522; 30 | float G_CB_709 = -0.21323606; 31 | float G_CR_709 = -0.5330038; 32 | float B_CB_709 = 2.11242; 33 | 34 | yuv.r = Y_SCALED * (yuv.r - 0.0625); 35 | yuv.g = yuv.g - 0.5; 36 | yuv.b = yuv.b - 0.5; 37 | float r = yuv.r + R_CR_709 * yuv.b; 38 | float g = yuv.r + G_CB_709 * yuv.g + G_CR_709 * yuv.b; 39 | float b = yuv.r + B_CB_709 * yuv.g; 40 | 41 | imageStore(resultImage, pixelCoords, vec4(r, g, b, 1)); 42 | } 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/compile_shaders.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #set correct glslc location 4 | GLSLC=glslc 5 | 6 | DEST_PATH=../../../../share/ultragrid/vulkan_shaders 7 | 8 | declare -a SHADERS=("render.vert" "render.frag" "RGB10A2_conv.comp" "UYVA16_conv.comp" "UYVY8_conv.comp") 9 | 10 | for shader in ${SHADERS[@]}; do 11 | echo "$GLSLC $SOURCE_PATH/$shader -o $DEST_PATH/$shader.spv" 12 | $GLSLC $SOURCE_PATH/$shader -o $DEST_PATH/$shader.spv 13 | done 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/identity.comp: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | layout (local_size_x = 16, local_size_y = 16) in; 4 | layout (set = 0, binding = 0) uniform usampler2D inputImage; 5 | layout (set = 1, binding = 1, rgba8) uniform image2D resultImage; 6 | 7 | layout(push_constant) uniform constants 8 | { 9 | uint width; 10 | uint height; 11 | } image_size; 12 | 13 | void main() 14 | { 15 | ivec2 pixelCoords = ivec2(gl_GlobalInvocationID.xy); 16 | if(pixelCoords.x >= image_size.width || pixelCoords.y >= image_size.height){ 17 | return; 18 | } 19 | 20 | vec2 textureCoords = vec2(float(pixelCoords.x) / image_size.width, float(pixelCoords.y) / image_size.height); 21 | 22 | vec4 pixel = texture(inputImage, textureCoords); 23 | 24 | imageStore(resultImage, pixelCoords, pixel); 25 | } 26 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/render.frag: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | layout(push_constant) uniform constants 4 | { 5 | uint x; 6 | uint y; 7 | uint width; 8 | uint height; 9 | } render_area; 10 | 11 | layout(binding = 0) uniform sampler2D texSampler; 12 | 13 | layout(location = 0) out vec4 outColor; 14 | 15 | void main() { 16 | float x = (gl_FragCoord.x - render_area.x) / render_area.width; 17 | float y = (gl_FragCoord.y - render_area.y) / render_area.height; 18 | outColor = texture(texSampler, vec2(x, y)); 19 | } 20 | -------------------------------------------------------------------------------- /src/video_display/vulkan/shaders/render.vert: -------------------------------------------------------------------------------- 1 | #version 450 2 | 3 | vec2 positions[3] = vec2[]( 4 | vec2(-1.0, -1.0), 5 | vec2( 3.0, -1.0), 6 | vec2(-1.0, 3.0) 7 | ); 8 | 9 | void main() { 10 | gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); 11 | } 12 | -------------------------------------------------------------------------------- /test/test_aes.h: -------------------------------------------------------------------------------- 1 | int test_aes(void); 2 | -------------------------------------------------------------------------------- /test/test_bitstream.h: -------------------------------------------------------------------------------- 1 | int test_bitstream(void); 2 | -------------------------------------------------------------------------------- /test/test_des.h: -------------------------------------------------------------------------------- 1 | int test_des(void); 2 | -------------------------------------------------------------------------------- /test/test_host.h: -------------------------------------------------------------------------------- 1 | #ifndef __host_h 2 | #define __host_h 3 | 4 | extern unsigned int hd_size_x; 5 | extern unsigned int hd_size_y; 6 | extern unsigned int hd_color_bpp; 7 | 8 | extern unsigned int hd_video_mode; 9 | 10 | extern unsigned int bitdepth; 11 | 12 | extern unsigned int progressive; 13 | 14 | #endif 15 | 16 | -------------------------------------------------------------------------------- /test/test_md5.h: -------------------------------------------------------------------------------- 1 | int test_md5(void); 2 | -------------------------------------------------------------------------------- /test/test_random.h: -------------------------------------------------------------------------------- 1 | int test_random(void); 2 | -------------------------------------------------------------------------------- /test/test_rtp.h: -------------------------------------------------------------------------------- 1 | int test_rtp(void); 2 | -------------------------------------------------------------------------------- /test/test_tv.h: -------------------------------------------------------------------------------- 1 | int test_tv(void); 2 | -------------------------------------------------------------------------------- /test/test_video_capture.h: -------------------------------------------------------------------------------- 1 | int test_video_capture(void); 2 | -------------------------------------------------------------------------------- /test/test_video_display.h: -------------------------------------------------------------------------------- 1 | int test_video_display(void); 2 | -------------------------------------------------------------------------------- /tools/.gitignore: -------------------------------------------------------------------------------- 1 | astat.a 2 | astat.so 3 | astat_test 4 | benchmark_ff_convs 5 | convert 6 | decklink_temperature 7 | mux_ivf 8 | thumbnailgen 9 | uyvy2yuv422p 10 | -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | Miscellaneous tools and utilities for UG 2 | ======================================== 3 | 4 | Astat 5 | ----- 6 | 7 | Sample application demonstrating parsing audio volume statistics from the control port. 8 | 9 | Not useful alone. 10 | 11 | 12 | Convert 13 | ------- 14 | 15 | Command-line tool providing UltraGrid pixel format conversions from command-line. 16 | 17 | 18 | stacktrace\_addr2line.sh 19 | ------------------------ 20 | 21 | Shell tool to parse UltraGrid stack trace (produced when UG crashes). 22 | 23 | 24 | uyvy2yuv422p 25 | ------------ 26 | 27 | Simple conversion from UYVY to planar YUV 4:2:2 (i422) utilized eg. by FFmpeg. 28 | 29 | ipc\_frame 30 | ------------ 31 | 32 | Structures and functions to hold and parse video frames when transferring 33 | between ultragrid and some other process through the unix\_socket display for 34 | example. 35 | -------------------------------------------------------------------------------- /tools/astat.h: -------------------------------------------------------------------------------- 1 | #ifndef ASTAT_H_64f15ac8bc64 2 | 3 | #define CH_COUNT 2 4 | 5 | #ifdef __cplusplus 6 | extern "C" { 7 | #endif 8 | struct ug_connection; 9 | 10 | struct ug_connection *ug_control_connection_init(int local_port); 11 | bool ug_control_get_volumes(struct ug_connection *c, double peak[], double rms[], int *count); 12 | void ug_control_connection_done(struct ug_connection *); 13 | 14 | void ug_control_init(); 15 | void ug_control_cleanup(); 16 | 17 | bool astat_parse_line(const char *str, double volpeak[CH_COUNT], double volrms[CH_COUNT]); 18 | 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /tools/ipc_frame.h: -------------------------------------------------------------------------------- 1 | #ifndef IPC_FRAME_84d5ffd7aad2 2 | #define IPC_FRAME_84d5ffd7aad2 3 | 4 | #include 5 | #include 6 | 7 | #define IPC_FRAME_HEADER_LEN 128 8 | 9 | enum Ipc_frame_color_spec{ 10 | IPC_FRAME_COLOR_NONE = 0, 11 | IPC_FRAME_COLOR_RGBA = 1, 12 | IPC_FRAME_COLOR_UYVY = 2, 13 | IPC_FRAME_COLOR_RGB = 11 14 | }; 15 | 16 | struct Ipc_frame_header{ 17 | int width; 18 | int height; 19 | int data_len; 20 | enum Ipc_frame_color_spec color_spec; 21 | }; 22 | 23 | struct Ipc_frame{ 24 | Ipc_frame_header header; 25 | char *data; 26 | 27 | size_t alloc_size; 28 | }; 29 | 30 | bool ipc_frame_parse_header(struct Ipc_frame_header *hdr, const char *buf); 31 | void ipc_frame_write_header(const struct Ipc_frame_header *hdr, char *dst); 32 | 33 | Ipc_frame *ipc_frame_new(); 34 | bool ipc_frame_reserve(struct Ipc_frame *frame, size_t size); 35 | void ipc_frame_free(struct Ipc_frame *frame); 36 | 37 | #ifdef __cplusplus 38 | #include 39 | struct Ipc_frame_deleter{ void operator()(Ipc_frame *f){ ipc_frame_free(f); } }; 40 | using Ipc_frame_uniq = std::unique_ptr; 41 | #endif //__cplusplus 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /tools/ipc_frame_ug.h: -------------------------------------------------------------------------------- 1 | #ifndef IPC_FRAME_UG_32ee5c748f3e 2 | #define IPC_FRAME_UG_32ee5c748f3e 3 | 4 | #include "ipc_frame.h" 5 | #include "types.h" 6 | 7 | struct video_frame; 8 | 9 | /** 10 | * @brief Make an ipc frame from ultragrid frame 11 | * 12 | * Data is copied, src frame can be freed afterwards. 13 | * 14 | * @param[out] dst destination ipc frame 15 | * @param[in] src source ultragrid frame 16 | * @param[in] codec codec to convert into, VIDEO_CODEC_NONE for no conversion 17 | * @param[in] scale_factor frame dimensions are divided by this amount. 0 for original size 18 | */ 19 | bool ipc_frame_from_ug_frame(struct Ipc_frame *dst, 20 | const struct video_frame *src, 21 | codec_t codec, 22 | unsigned scale_factor); 23 | 24 | /** 25 | * @brief Same as ipc_frame_from_ug_frame, but convert pixfmt first and scale later. 26 | */ 27 | bool ipc_frame_from_ug_frame_hq(struct Ipc_frame *dst, 28 | const struct video_frame *src, 29 | codec_t codec, 30 | unsigned scale_factor); 31 | 32 | bool ipc_frame_write_to_fd(const struct Ipc_frame *f, int fd); 33 | 34 | int ipc_frame_get_scale_factor(int src_w, int src_h, int target_w, int target_h); 35 | 36 | #endif //IPC_FRAME_UG_32ee5c748f3e 37 | -------------------------------------------------------------------------------- /tools/ipc_frame_unix.h: -------------------------------------------------------------------------------- 1 | #ifndef IPC_FRAME_UNIX_e3ab60622626 2 | #define IPC_FRAME_UNIX_e3ab60622626 3 | 4 | #include "ipc_frame.h" 5 | 6 | struct Ipc_frame_reader; 7 | 8 | Ipc_frame_reader *ipc_frame_reader_new(const char *path); 9 | void ipc_frame_reader_free(struct Ipc_frame_reader *reader); 10 | 11 | bool ipc_frame_reader_has_frame(struct Ipc_frame_reader *reader); 12 | bool ipc_frame_reader_is_connected(struct Ipc_frame_reader *reader); 13 | bool ipc_frame_reader_read(struct Ipc_frame_reader *reader, struct Ipc_frame *dst); 14 | 15 | void ipc_frame_reader_wait_connect(struct Ipc_frame_reader *reader); 16 | 17 | struct Ipc_frame_writer; 18 | 19 | Ipc_frame_writer *ipc_frame_writer_new(const char *path); 20 | void ipc_frame_writer_free(struct Ipc_frame_writer *writer); 21 | 22 | bool ipc_frame_writer_write(struct Ipc_frame_writer *writer, const struct Ipc_frame *f); 23 | 24 | #ifdef __cplusplus 25 | #include 26 | struct Ipc_frame_reader_deleter{ 27 | void operator()(Ipc_frame_reader *r){ ipc_frame_reader_free(r); } 28 | }; 29 | using Ipc_frame_reader_uniq = std::unique_ptr; 30 | 31 | struct Ipc_frame_writer_deleter{ 32 | void operator()(Ipc_frame_writer *w){ ipc_frame_writer_free(w); } 33 | }; 34 | using Ipc_frame_writer_uniq = std::unique_ptr; 35 | #endif //__cplusplus 36 | 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /tools/stacktrace_addr2line.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | SILENT= 4 | 5 | while getopts 'hs' opt; do 6 | case "$opt" in 7 | 'h'|'?') 8 | cat <<-EOF 9 | Usage: 10 | $0 [-s] [STACKTRACE_FILE] 11 | where 12 | -s - silent 13 | STACKTRACE_FILE - file containg stacktrace from UG (if not set, stdin is used) 14 | EOF 15 | [ $opt = h ] && exit 0 || exit 1 16 | ;; 17 | 's') 18 | SILENT=yes 19 | ;; 20 | esac 21 | done 22 | 23 | shift $(($OPTIND - 1)) 24 | 25 | IN=${1-/dev/stdin} 26 | 27 | while read n; do 28 | if ! expr "$n" : ".*(.*\+.*)" > /dev/null; then 29 | continue 30 | fi 31 | EXE=$(expr "$n" : "\([^(]*\)") 32 | addr=$(expr "$n" : ".*(\(.*\))") 33 | # addr in format "func+addr" 34 | if expr $addr : "[^\+]" >/dev/null; then 35 | FUNC=$(expr $addr : "\([^\+]*\)") 36 | OFFSET=$(expr $addr : "[^\+]*\+\(.*\)") 37 | LINE=$(objdump -d -F $EXE | grep "<$FUNC>" | grep -v '^ ') 38 | FUNC_OFFSET=$(expr "$LINE" : '.*File Offset: \([^)]*\)') 39 | addr=$(($FUNC_OFFSET + $OFFSET)) 40 | addr=$(printf 0x%x $addr) # addr2line requires hex 41 | fi 42 | [ -z $SILENT ] && printf -- "- decoding $n:\n" 43 | ARGS= 44 | [ -z $SILENT ] && ARGS='-f -i -p' 45 | addr2line -e $EXE $ARGS -C $addr 46 | done <$IN 47 | 48 | # vim: set noexpandtab: 49 | -------------------------------------------------------------------------------- /tools/ug_stub.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 3 | * replacement for UltraGrid functions/global objects that are not linked-in, 4 | * usually the ones located in host.cpp 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | char *uv_argv[] = { "ug_stub", NULL }; 11 | 12 | const char * 13 | get_commandline_param(const char *key) 14 | { 15 | (void) key; 16 | return NULL; 17 | } 18 | 19 | void 20 | register_param(const char *param, const char *doc) 21 | { 22 | (void) param; 23 | (void) doc; 24 | } 25 | 26 | bool 27 | tok_in_argv(char **argv, const char *tok) 28 | { 29 | (void) argv, (void) tok; 30 | return false; 31 | } 32 | --------------------------------------------------------------------------------