%define major       0
%define libname_dec %mklibname svtav1dec %{major}
%define enc_major   1
%define libname_enc %mklibname svtav1enc %{enc_major}
%define devname     %mklibname svt-av1 -d

%define oname   SVT-AV1

Name:           svt-av1
Version:        1.4.1
Release:        %mkrel 1
Summary:        Scalable Video Technology for AV1 Encoder
Group:          System/Libraries
License:        BSD-3-Clause and MIT and ISC and Public Domain
URL:            https://gitlab.com/AOMediaCodec/SVT-AV1
Source0:        https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v%{version}/%{oname}-v%{version}.tar.bz2

BuildRequires:  cmake
BuildRequires:  meson
BuildRequires:  yasm
BuildRequires:  help2man
BuildRequires:  pkgconfig(gstreamer-1.0)
BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)

Requires:       gstreamer1.0-%{name} >= %{version}-%{release}

%description
The Scalable Video Technology for AV1 Encoder (SVT-AV1 Encoder) is an
AV1-compliant encoder library core. The SVT-AV1 development is a
work-in-progress targeting performance levels applicable to both VOD and Live
encoding / transcoding video applications.

%package -n     %{libname_dec}
Summary:        SVT-AV1 Decoder libraries
Group:          System/Libraries

%description -n %{libname_dec}
This package contains SVT-AV1 Decoder libraries.

%package -n     %{libname_enc}
Summary:        SVT-AV1 Encoder libraries
Group:          System/Libraries

%description -n %{libname_enc}
This package contains SVT-AV1 Encoder libraries.

%package -n     %{devname}
Summary:        Development files for SVT-AV1
Requires:       %{name} = %{version}-%{release}
Requires:       %{libname_dec} = %{version}-%{release}
Requires:       %{libname_enc} = %{version}-%{release}
Provides:       %{name}-devel = %{version}-%{release}

%description -n %{devname}
This package contains the development files for SVT-AV1.

%package -n     gstreamer1.0-%{name}
Summary:        GStreamer 1.0 %{name}-based plug-in
Group:          System/Libraries
Requires:       gstreamer1.0-plugins-base

%description -n gstreamer1.0-%{name}
This package provides %{name}-based GStreamer plug-in.

%prep
%autosetup -p1 -n %{oname}-v%{version}
# Patch build gstreamer plugin
sed -e "s|install: true,|install: true, include_directories : [ include_directories('../Source/API') ], link_args : '-lSvtAv1Enc',|" \
-e "/svtav1enc_dep =/d" -e 's|, svtav1enc_dep||' -e "s|svtav1enc_dep.found()|true|" -i gstreamer-plugin/meson.build

%build
%cmake \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo
%cmake_build

export LIBRARY_PATH="$LIBRARY_PATH:$(pwd)/Bin/RelWithDebInfo"
pushd gstreamer-plugin
%meson
%meson_build
popd

%install
%cmake_install

pushd gstreamer-plugin
%meson_install
popd

install -d -m0755 %{buildroot}%{_mandir}/man1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{_libdir}
help2man -N --help-option=-help --version-string=%{version} %{buildroot}%{_bindir}/SvtAv1DecApp > %{buildroot}%{_mandir}/man1/SvtAv1DecApp.1
help2man -N --help-option=-help --no-discard-stderr --version-string=%{version} %{buildroot}%{_bindir}/SvtAv1EncApp > %{buildroot}%{_mandir}/man1/SvtAv1EncApp.1

find %{buildroot} -name '*.*a' -delete

%files
%doc CHANGELOG.md CONTRIBUTING.md README.md
%{_bindir}/SvtAv1DecApp
%{_bindir}/SvtAv1EncApp
%{_mandir}/man1/SvtAv1DecApp.1*
%{_mandir}/man1/SvtAv1EncApp.1*

%files -n %{libname_dec}
%license LICENSE.md PATENTS.md
%doc CHANGELOG.md CONTRIBUTING.md README.md
%{_libdir}/libSvtAv1Dec.so.%{major}{,.*}

%files -n %{libname_enc}
%license LICENSE.md PATENTS.md
%doc CHANGELOG.md CONTRIBUTING.md README.md
%{_libdir}/libSvtAv1Enc.so.%{enc_major}{,.*}

%files -n %{devname}
%doc Docs
%license LICENSE.md PATENTS.md
%{_includedir}/%{name}/
%{_libdir}/libSvtAv1Dec.so
%{_libdir}/libSvtAv1Enc.so
%{_libdir}/pkgconfig/SvtAv1Dec.pc
%{_libdir}/pkgconfig/SvtAv1Enc.pc

%files -n gstreamer1.0-%{name}
%{_libdir}/gstreamer-1.0/libgstsvtav1enc.so


%changelog
* Mon Jan 16 2023 daviddavid <daviddavid> 1.4.1-1.mga9
+ Revision: 1933692
- initial package svt-av1