Init package for openEuler

This commit is contained in:
peijiankang 2022-12-06 09:20:38 +08:00
parent 7346974206
commit 494e06685f
6 changed files with 304 additions and 0 deletions

BIN
QtAV-1.13.0.tar.gz Normal file

Binary file not shown.

21
fix_qt514_build.patch Normal file
View File

@ -0,0 +1,21 @@
From 5abba7f0505e75fceabd4dd8992a7e02bb149d64 Mon Sep 17 00:00:00 2001
From: Alexander Ivash <Alexander.Ivash@StealthBits.com>
Date: Tue, 24 Dec 2019 16:04:25 +0300
Subject: [PATCH] add include
---
qml/SGVideoNode.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/qml/SGVideoNode.cpp b/qml/SGVideoNode.cpp
index b12089d8e..3f2a07d72 100644
--- a/qml/SGVideoNode.cpp
+++ b/qml/SGVideoNode.cpp
@@ -25,6 +25,7 @@
#include "QtAV/VideoFrame.h"
#include <QtCore/QScopedPointer>
#include <QtGui/QOpenGLFunctions>
+#include <QtQuick/QSGMaterial>
#include <QtQuick/QSGMaterialShader>
// all in QSGRenderThread

View File

@ -0,0 +1,22 @@
--- a/QtAV.orig.pro 2019-07-11 02:58:59.000000000 +0200
+++ b/QtAV.pro 2021-01-20 14:17:01.603852011 +0100
@@ -36,7 +36,7 @@
#OTHER_FILES += config.test/mktest.sh
EssentialDepends = avutil avcodec avformat swscale
winrt: CONFIG *= no-avdevice no-openal no-portaudio no-dsound no-gdiplus
-OptionalDepends = swresample avresample
+OptionalDepends = swresample
!no-avfilter: OptionalDepends *= avfilter
!no-avdevice: OptionalDepends *= avdevice
# QtOpenGL module. In Qt5 we can disable it and still have opengl support
@@ -78,8 +78,8 @@
!no-videotoolbox: OptionalDepends *= videotoolbox
}
runConfigTests()
-!config_avresample:!config_swresample {
- error("libavresample or libswresample is required. Setup your environment correctly then delete $$BUILD_DIR/.qmake.conf and run qmake again")
+!config_swresample {
+ error("libswresample is required. Setup your environment correctly then delete $$BUILD_DIR/.qmake.conf and run qmake again")
}
PACKAGE_VERSION = $$QTAV_VERSION
PACKAGE_NAME= QtAV

View File

@ -0,0 +1,12 @@
--- a/config.tests/paths.orig.pri 2019-07-11 02:58:59.000000000 +0200
+++ b/config.tests/paths.pri 2022-04-07 16:21:56.008598885 +0200
@@ -1,7 +1,7 @@
TEMPLATE = lib # can not create exe for some platforms (winrt, ios). If check header only, staticlib is fine
# not static lib because sometimes we need to check link flags. if qt is static build, this chek may fail. we don't test link for static build because it's impossible to add all dependencies to link flags
-INCLUDEPATH += $$[QT_INSTALL_HEADERS]
-LIBS += -L$$[QT_INSTALL_LIBS]
+INCLUDEPATH += $$[QT_INSTALL_HEADERS] $$/usr/include/compat-ffmpeg4
+LIBS += -L$$[QT_INSTALL_LIBS] -L$$[QT_INSTALL_LIBS]/compat-ffmpeg4
CONFIG -= qt app_bundle lib_bundle
CONFIG += console
*msvc*: INCLUDEPATH *= $$PWD/../src/compat/msvc

View File

@ -0,0 +1,10 @@
--- a/src/QtAV/FilterContext.orig.h 2019-07-11 02:58:59.000000000 +0200
+++ b/src/QtAV/FilterContext.h 2020-09-29 14:29:19.072763440 +0200
@@ -26,6 +26,7 @@
#include <QtCore/QByteArray>
#include <QtCore/QRect>
#include <QtGui/QPainter>
+#include <QtGui/QPainterPath>
/*
* QPainterFilterContext, D2DFilterContext, ...
*/

239
qtav.spec Normal file
View File

@ -0,0 +1,239 @@
%global project QtAV
%global repo %{project}
# QTAV's builds fail with FFMpeg-5*
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=6271
%bcond_with oldffmpeg
Name: qtav
Version: 1.13.0
Release: 1
Summary: A media playback framework based on Qt and FFmpeg
License: LGPLv2+ and GPLv3+ and BSD
URL: http://www.qtav.org/
Source0: https://github.com/wang-bin/QtAV/archive/v%{version}/%{project}-%{version}.tar.gz
Patch0: fix_qt514_build.patch
# Fix builds with Qt-5.15.1
Patch1: %{name}-fix_Qt515_builds.patch
# Exclude avresample library (bug #5350)
Patch2: %{name}-avoid-avresample_dependency.patch
# Fix avutil test during configuration
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=6271
Patch3: %{name}-fix-avutil_test.patch
BuildRequires: desktop-file-utils
BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtdeclarative-devel
BuildRequires: qt5-qtquickcontrols
BuildRequires: qt5-qtsvg-devel
BuildRequires: libass-devel
%if %{with oldffmpeg}
BuildRequires: compat-ffmpeg4-devel
%else
BuildRequires: ffmpeg-devel
%endif
BuildRequires: openal-soft-devel
BuildRequires: libXv-devel
BuildRequires: libva-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: dos2unix
Requires: hicolor-icon-theme
%description
QtAV is a multimedia playback library based on Qt and FFmpeg.
It can help you to write a player with less effort than ever before.
Features include:
* Hardware decoding suppprt: DXVA2, VAAPI, VDA, CedarX, CUDA.
* OpenGL and ES2 support for Hi10P and other 16-bit YUV videos.
* Video capture in rgb and yuv format.
* OSD and custom filters.
* filters in libavfilter, for example stero3d, blur.
* Subtitle.
* Transform video using GraphicsItemRenderer. (rotate, shear, etc)
* Playing frame by frame (currently support forward playing).
* Playback speed control. At any speed.
* Variant streams: locale file, http, rtsp, etc.
* Choose audio channel.
* Choose media stream, e.g. play a desired audio track.
* Multiple render engine support. Currently supports QPainter, GDI+, Direct2D,
XV and OpenGL(and ES2).
* Dynamically change render engine when playing.
* Multiple video outputs for 1 player.
* Region of interest(ROI), i.e. video cropping.
* Video eq: brightness, contrast, saturation, hue.
* QML support as a plugin. Most playback APIs are compatible with QtMultiMedia
module.
%package -n lib%{name}
Summary: QtAV library
Requires: ffmpeg
%description -n lib%{name}
QtAV is a multimedia playback library based on Qt and FFmpeg.
It can help you to write a player with less effort than ever before.
This package contains the QtAV library.
%package -n lib%{name}widgets
Summary: QtAV Widgets module
Requires: libqtav%{?_isa} = %{version}-%{release}
%description -n lib%{name}widgets
QtAV is a multimedia playback library based on Qt and FFmpeg.
It can help you to write a player with less effort than ever before.
This package contains a set of widgets to play media.
%package devel
Summary: QtAV development files
Requires: libqtav%{?_isa} = %{version}-%{release}
Requires: libqtavwidgets%{?_isa} = %{version}-%{release}
Requires: qt5-qtbase-devel%{?_isa}
%description devel
QtAV is a multimedia playback library based on Qt and FFmpeg.
It can help you to write a player with less effort than ever before.
This package contains the header development files for building some
QtAV applications using QtAV headers.
%package qml-module
Summary: QtAV QML module
%description qml-module
QtAV is a multimedia playback library based on Qt and FFmpeg.
It can help you to write a player with less effort than ever before.
This package contains the QtAV QML module for Qt declarative.
%package players
Summary: QtAV/QML players
License: GPLv3
Requires: libqtav%{?_isa} = %{version}-%{release}
Requires: libqtavwidgets%{?_isa} = %{version}-%{release}
Requires: qtav-qml-module%{?_isa} = %{version}-%{release}
%description players
QtAV is a multimedia playback framework based on Qt and FFmpeg.
High performance. User & developer friendly.
This package contains the QtAV based players.
%prep
%autosetup -n %repo-%{version} -N
%patch0 -p1 -b .backup
%patch1 -p1 -b .backup
%patch2 -p1 -b .backup
%if %{with oldffmpeg}
%patch3 -p1 -b .backup
%endif
# E: script-without-shebang /usr/share/icons/hicolor/scalable/apps/QtAV.svg
# ignore them src/QtAV.svg: SVG Scalable Vector Graphics image
# delete .jar File from examples
rm -rf examples/QMLPlayer/android/gradle/wrapper/gradle-wrapper.jar
# W: doc-file-dependency /usr/share/doc/qtav-devel/examples/QMLPlayer/android/gradlew /usr/bin/env
# An included file marked as %%doc creates a possible additional dependency in
# the package. Usually, this is not wanted and may be caused by eg. example
# scripts with executable bits set included in the package's documentation.
chmod -x examples/QMLPlayer/android/gradlew
# prepare example dir for -devel
mkdir -p _tmpdoc/examples
cp -pr examples/* _tmpdoc/examples
%build
mkdir -p build; pushd build
%if %{with oldffmpeg}
export CPATH=" -I%{_includedir}/compat-ffmpeg4"
%{_qt5_qmake} \
QMAKE_CFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/compat-ffmpeg4" \
QMAKE_CXXFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/compat-ffmpeg4" \
QMAKE_LFLAGS="${RPM_LD_FLAGS} -L%{_libdir}/compat-ffmpeg4 -lavformat -lavcodec -lavutil -lavdevice -lavfilter -lswscale -lswresample" \
QMAKE_STRIP="" \
CONFIG+="no_rpath recheck config_libass_link release" ..
%else
export CPATH="`pkg-config --variable=includedir libswresample`"
%{_qt5_qmake} \
QMAKE_CFLAGS="${RPM_OPT_FLAGS}" \
QMAKE_CXXFLAGS="${RPM_OPT_FLAGS}" \
QMAKE_LFLAGS="${RPM_LD_FLAGS}" \
QMAKE_STRIP="" \
CONFIG+="no_rpath recheck config_libass_link release" ..
%endif
%make_build
%install
%make_install INSTALL_ROOT=%{buildroot} -C build
rm -rf %{buildroot}%{_datadir}/doc/*
rm -rf %{buildroot}%{_qt5_archdatadir}/bin/libcommon.*
rm -rf %{buildroot}%{_qt5_headerdir}/*.h
install -d %{buildroot}%{_bindir}
ln -sfv %{_qt5_bindir}/Player %{buildroot}%{_bindir}
ln -sfv %{_qt5_bindir}/QMLPlayer %{buildroot}%{_bindir}
install -D src/QtAV.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/QtAV.svg
# library links
ln -sfv %{_libdir}/libQtAV.so %{buildroot}%{_libdir}/libQt5AV.so
ln -sfv %{_libdir}/libQtAVWidgets.so %{buildroot}%{_libdir}/libQt5AVWidgets.so
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%files -n lib%{name}
%doc README.md Changelog
%license lgpl-2.1.txt
%{_libdir}/libQtAV.so.*
%files -n lib%{name}widgets
%{_libdir}/libQtAVWidgets.so.*
%files devel
%{_qt5_headerdir}/QtAV/*
%{_qt5_headerdir}/QtAVWidgets/*
%dir %{_qt5_headerdir}/QtAV/
%dir %{_qt5_headerdir}/QtAVWidgets/
%{_libdir}/libQtAV.so
%{_libdir}/libQtAV.prl
%{_libdir}/libQt5AV.so
%{_libdir}/libQtAVWidgets.so
%{_libdir}/libQtAVWidgets.prl
%{_libdir}/libQt5AVWidgets.so
%{_qt5_archdatadir}/mkspecs/features/av.prf
%{_qt5_archdatadir}/mkspecs/features/avwidgets.prf
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_av.pri
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_avwidgets.pri
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_av_private.pri
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_avwidgets_private.pri
%files qml-module
%doc README.md Changelog
%license lgpl-2.1.txt
%{_qt5_archdatadir}/qml/QtAV/libQmlAV.so
%{_qt5_archdatadir}/qml/QtAV/plugins.qmltypes
%{_qt5_archdatadir}/qml/QtAV/qmldir
%{_qt5_archdatadir}/qml/QtAV/Video.qml
%dir %{_qt5_archdatadir}/qml/QtAV/
%files players
%doc README.md Changelog
%license gpl-3.0.txt
%{_qt5_bindir}/Player
%{_qt5_bindir}/QMLPlayer
%{_bindir}/Player
%{_bindir}/QMLPlayer
%{_datadir}/applications/Player.desktop
%{_datadir}/applications/QMLPlayer.desktop
%{_datadir}/icons/hicolor/*/apps/QtAV.svg
%changelog
* Tue Dec 6 2022 peijiankang <peijiankang@kylinos.cn> - 1.13.0-1
- Init package for openEuler