[neon/extras/qtav/Neon/release-lts] /: update to master

Jonathan Riddell null at kde.org
Thu Nov 19 15:28:08 GMT 2020


Git commit 9577ba577036a18fc49151d71cadb43decdc0fb0 by Jonathan Riddell.
Committed on 19/11/2020 at 15:27.
Pushed by jriddell into branch 'Neon/release-lts'.

update to master

D  +0    -12   config.tests/avcodec/avcodec.pro
D  +0    -26   config.tests/avcodec/main.cpp
D  +0    -12   config.tests/avdevice/avdevice.pro
D  +0    -26   config.tests/avdevice/main.cpp
D  +0    -12   config.tests/avfilter/avfilter.pro
D  +0    -27   config.tests/avfilter/main.cpp
D  +0    -12   config.tests/avformat/avformat.pro
D  +0    -26   config.tests/avformat/main.cpp
D  +0    -12   config.tests/avresample/avresample.pro
D  +0    -26   config.tests/avresample/main.cpp
D  +0    -12   config.tests/avutil/avutil.pro
D  +0    -26   config.tests/avutil/main.cpp
D  +0    -6    config.tests/d3d11va/d3d11va.pro
D  +0    -33   config.tests/d3d11va/main.cpp
D  +0    -6    config.tests/direct2d/direct2d.pro
D  +0    -27   config.tests/direct2d/main.cpp
D  +0    -7    config.tests/dsound/dsound.pro
D  +0    -26   config.tests/dsound/main.cpp
D  +0    -7    config.tests/dx/dx.pro
D  +0    -30   config.tests/dx/main.cpp
D  +0    -3    config.tests/dxcompat.h
D  +0    -5    config.tests/dxva/dxva.pro
D  +0    -31   config.tests/dxva/main.cpp
D  +0    -6    config.tests/gdiplus/gdiplus.pro
D  +0    -27   config.tests/gdiplus/main.cpp
D  +0    -35   config.tests/gentest.sh
D  +0    -5    config.tests/gl/gl.pro
D  +0    -26   config.tests/gl/main.cpp
D  +0    -9    config.tests/libass/libass.pro
D  +0    -27   config.tests/libass/main.cpp
D  +0    -4    config.tests/libcedarv/libcedardrv.pro
D  +0    -26   config.tests/libcedarv/main.cpp
D  +0    -35   config.tests/openal/main.cpp
D  +0    -14   config.tests/openal/openal.pro
D  +0    -8    config.tests/paths.pri
D  +0    -6    config.tests/portaudio/main.cpp
D  +0    -11   config.tests/portaudio/portaudio.pro
D  +0    -6    config.tests/pulseaudio/main.cpp
D  +0    -6    config.tests/pulseaudio/pulseaudio.pro
D  +0    -51   config.tests/sse4_1/sse4_1.cpp
D  +0    -34   config.tests/sse4_1/sse4_1.pro
D  +0    -26   config.tests/swresample/main.cpp
D  +0    -12   config.tests/swresample/swresample.pro
D  +0    -26   config.tests/swscale/main.cpp
D  +0    -12   config.tests/swscale/swscale.pro
D  +0    -25   config.tests/uchardet/main.cpp
D  +0    -5    config.tests/uchardet/uchardet.pro
D  +0    -28   config.tests/vaapi/main.cpp
D  +0    -7    config.tests/vaapi/vaapi.pro
D  +0    -31   config.tests/videotoolbox/main.cpp
D  +0    -5    config.tests/videotoolbox/videotoolbox.pro
D  +0    -25   config.tests/x11/main.cpp
D  +0    -5    config.tests/x11/x11.pro
D  +0    -36   config.tests/xaudio2/main.cpp
D  +0    -6    config.tests/xaudio2/xaudio2.pro
D  +0    -28   config.tests/xv/main.cpp
D  +0    -6    config.tests/xv/xv.pro
A  +862  -0    debian/patches/master.diff
A  +20   -0    debian/patches/qmlplayer.diff
M  +3    -0    debian/patches/series
M  +1    -1    debian/rules
M  +1    -0    examples/QMLPlayer/QMLPlayer.pro
M  +2    -2    examples/QMLPlayer/main.cpp
M  +1    -0    qml/SGVideoNode.cpp
M  +1    -0    src/QtAV/FilterContext.h
M  +5    -4    src/libQtAV.pro
M  +5    -5    src/vaapi/vaapi_helper.h
M  +5    -4    widgets/libQtAVWidgets.pro

https://invent.kde.org/neon/extras/qtav/commit/9577ba577036a18fc49151d71cadb43decdc0fb0

diff --git a/config.tests/avcodec/avcodec.pro b/config.tests/avcodec/avcodec.pro
deleted file mode 100644
index 224310a..0000000
--- a/config.tests/avcodec/avcodec.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavcodec
-include(../paths.pri)
diff --git a/config.tests/avcodec/main.cpp b/config.tests/avcodec/main.cpp
deleted file mode 100644
index 0cc6a80..0000000
--- a/config.tests/avcodec/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavcodec/avcodec.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/avdevice/avdevice.pro b/config.tests/avdevice/avdevice.pro
deleted file mode 100644
index 4842447..0000000
--- a/config.tests/avdevice/avdevice.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavdevice
-include(../paths.pri)
diff --git a/config.tests/avdevice/main.cpp b/config.tests/avdevice/main.cpp
deleted file mode 100644
index 6171a40..0000000
--- a/config.tests/avdevice/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavdevice/avdevice.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/avfilter/avfilter.pro b/config.tests/avfilter/avfilter.pro
deleted file mode 100644
index 768c77d..0000000
--- a/config.tests/avfilter/avfilter.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavfilter
-include(../paths.pri)
diff --git a/config.tests/avfilter/main.cpp b/config.tests/avfilter/main.cpp
deleted file mode 100644
index 36091d8..0000000
--- a/config.tests/avfilter/main.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2014 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavfilter/avfilter.h>
-
-int main()
-{
-//	avfilter_register_all();
-	return 0;
-}
diff --git a/config.tests/avformat/avformat.pro b/config.tests/avformat/avformat.pro
deleted file mode 100644
index 46a60e8..0000000
--- a/config.tests/avformat/avformat.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavformat
-include(../paths.pri)
diff --git a/config.tests/avformat/main.cpp b/config.tests/avformat/main.cpp
deleted file mode 100644
index 6989fe6..0000000
--- a/config.tests/avformat/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavformat/avformat.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/avresample/avresample.pro b/config.tests/avresample/avresample.pro
deleted file mode 100644
index 56970b2..0000000
--- a/config.tests/avresample/avresample.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavresample
-include(../paths.pri)
diff --git a/config.tests/avresample/main.cpp b/config.tests/avresample/main.cpp
deleted file mode 100644
index a93cee4..0000000
--- a/config.tests/avresample/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavresample/avresample.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/avutil/avutil.pro b/config.tests/avutil/avutil.pro
deleted file mode 100644
index 0aefc1f..0000000
--- a/config.tests/avutil/avutil.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lavutil
-include(../paths.pri)
diff --git a/config.tests/avutil/main.cpp b/config.tests/avutil/main.cpp
deleted file mode 100644
index 7a60340..0000000
--- a/config.tests/avutil/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libavutil/avutil.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/d3d11va/d3d11va.pro b/config.tests/d3d11va/d3d11va.pro
deleted file mode 100644
index 021f524..0000000
--- a/config.tests/d3d11va/d3d11va.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-CONFIG += c++11
-SOURCES += main.cpp
-include(../paths.pri)
-LIBS += -lavcodec
diff --git a/config.tests/d3d11va/main.cpp b/config.tests/d3d11va/main.cpp
deleted file mode 100644
index 099192d..0000000
--- a/config.tests/d3d11va/main.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/******************************************************************************
-    QtAV:  Multimedia framework based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV (from 2016)
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include "../dxcompat.h"
-#include <d3d11.h>
-extern "C" {
-#include <libavcodec/d3d11va.h> 
-}
-#include <wrl/client.h> //ComPtr is used in QtAV
-
-int main()
-{
-    av_d3d11va_alloc_context();
-    D3D11_VIDEO_PROCESSOR_STREAM s; //used by vp
-    return 0;
-}
diff --git a/config.tests/direct2d/direct2d.pro b/config.tests/direct2d/direct2d.pro
deleted file mode 100644
index 8ea68cf..0000000
--- a/config.tests/direct2d/direct2d.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-SOURCES += main.cpp
-
-#dynamic load
-#LIBS += -ld2d1
diff --git a/config.tests/direct2d/main.cpp b/config.tests/direct2d/main.cpp
deleted file mode 100644
index 65b5a97..0000000
--- a/config.tests/direct2d/main.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
-    QtAV:  Multimedia framework based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV (from 2013)
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include "../dxcompat.h"
-#include <d2d1.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/dsound/dsound.pro b/config.tests/dsound/dsound.pro
deleted file mode 100644
index f67465c..0000000
--- a/config.tests/dsound/dsound.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG -= qt app_bundle
-CONFIG += console
-
-SOURCES += main.cpp
-
-LIBS += -ldsound
-include(../paths.pri)
diff --git a/config.tests/dsound/main.cpp b/config.tests/dsound/main.cpp
deleted file mode 100644
index fdd820f..0000000
--- a/config.tests/dsound/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2015 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <dsound.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/dx/dx.pro b/config.tests/dx/dx.pro
deleted file mode 100644
index 8467859..0000000
--- a/config.tests/dx/dx.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG -= qt app_bundle
-CONFIG += console
-CONFIG *= c++11
-CONFIG += config_dx
-SOURCES += main.cpp
-
-include(../paths.pri)
diff --git a/config.tests/dx/main.cpp b/config.tests/dx/main.cpp
deleted file mode 100644
index 81489b2..0000000
--- a/config.tests/dx/main.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/******************************************************************************
-    QtAV:  Multimedia framework based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV (from 2016)
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include "../dxcompat.h"
-#include <XAudio2.h> // standalone check?
-#include <d3d11.h>
-#include <wrl/client.h> //ComPtr is used in QtAV
-
-int main()
-{
-    D3D11_VIDEO_PROCESSOR_STREAM s; //used by vp
-    return 0;
-}
diff --git a/config.tests/dxcompat.h b/config.tests/dxcompat.h
deleted file mode 100644
index 8e3bec9..0000000
--- a/config.tests/dxcompat.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "../src/directx/dxcompat.h"
-//#include <windows.h> //to include _mingw.h
-// check __MINGW64_VERSION_MAJOR? 5.x has complete headers we need
diff --git a/config.tests/dxva/dxva.pro b/config.tests/dxva/dxva.pro
deleted file mode 100644
index a3a618f..0000000
--- a/config.tests/dxva/dxva.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-
-SOURCES += main.cpp
-include(../paths.pri)
diff --git a/config.tests/dxva/main.cpp b/config.tests/dxva/main.cpp
deleted file mode 100644
index 6c90cbe..0000000
--- a/config.tests/dxva/main.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************
-    QtAV:  Multimedia framework based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV (from 2013)
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include "../dxcompat.h"
-extern "C" {
-#include <libavcodec/dxva2.h> //will include d3d9.h, dxva2api.h
-}
-#include <d3d9.h>
-#include <dxva2api.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/gdiplus/gdiplus.pro b/config.tests/gdiplus/gdiplus.pro
deleted file mode 100644
index 2c050be..0000000
--- a/config.tests/gdiplus/gdiplus.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-
-SOURCES += main.cpp
-
-LIBS += -lgdiplus -lGdi32
diff --git a/config.tests/gdiplus/main.cpp b/config.tests/gdiplus/main.cpp
deleted file mode 100644
index f0e6f1f..0000000
--- a/config.tests/gdiplus/main.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <windows.h> //vc
-#include <gdiplus.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/gentest.sh b/config.tests/gentest.sh
deleted file mode 100755
index 5737cd5..0000000
--- a/config.tests/gentest.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-SCRIPT_DIR=${0%/*}
-
-help_post(){
-  echo  "This will create a test for $1. You may change the default value: \"#include <$1.h>\" in $1/main.cpp and \"LIBS += -l$1\" in $1/$1.pro"
-}
-
-help(){
-  cecho red "Usage: $0 name"
-  help_post name
-  exit 0
-}
-[ $# -lt 1 ] && help
-
-NAME=$1
-help_post $NAME
-mkdir -p $NAME
-cat >$NAME/${NAME}.pro <<EOF
-include(../paths.pri)
-
-TARGET = ${NAME}_test
-SOURCES += main.cpp
-LIBS += -l$NAME
-EOF
-
-YEAR=`date +%Y`
-COPY=../tools/templates/COPYRIGHT.h
-cat $COPY | sed "s/%YEAR%/$YEAR/g" > $NAME/main.cpp
-cat >> $NAME/main.cpp <<EOF
-#include <${NAME}.h>
-
-void test() {
-}
-EOF
-
-echo "test for $NAME created"
diff --git a/config.tests/gl/gl.pro b/config.tests/gl/gl.pro
deleted file mode 100644
index e084b4d..0000000
--- a/config.tests/gl/gl.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG += qt release
-QT += opengl
-CONFIG += console
-
-SOURCES += main.cpp
diff --git a/config.tests/gl/main.cpp b/config.tests/gl/main.cpp
deleted file mode 100644
index c5afac6..0000000
--- a/config.tests/gl/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <QtOpenGL/qgl.h>
-
-int main()
-{
-    return 0;
-}
diff --git a/config.tests/libass/libass.pro b/config.tests/libass/libass.pro
deleted file mode 100644
index f1e021d..0000000
--- a/config.tests/libass/libass.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-include(../paths.pri)
-
-SOURCES += main.cpp
-
-exists(../../contrib/capi/capi.pri) {
-  CONFIG = staticlib
-} else {
-  LIBS += -lass
-}
diff --git a/config.tests/libass/main.cpp b/config.tests/libass/main.cpp
deleted file mode 100644
index 29df551..0000000
--- a/config.tests/libass/main.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2014 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-extern "C" {
-#include <ass/ass.h>
-}
-
-void test() {
-    ass_library_init();
-}
diff --git a/config.tests/libcedarv/libcedardrv.pro b/config.tests/libcedarv/libcedardrv.pro
deleted file mode 100644
index 90217e0..0000000
--- a/config.tests/libcedarv/libcedardrv.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES += main.cpp
-
-LIBS += -lvecore -lcedarv
-include(../paths.pri)
diff --git a/config.tests/libcedarv/main.cpp b/config.tests/libcedarv/main.cpp
deleted file mode 100644
index 4e0c7ab..0000000
--- a/config.tests/libcedarv/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libcedarv/libcedarv.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/openal/main.cpp b/config.tests/openal/main.cpp
deleted file mode 100644
index 20eaf14..0000000
--- a/config.tests/openal/main.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-
-#if defined(HEADER_OPENAL_PREFIX)
-#include <OpenAL/al.h>
-#include <OpenAL/alc.h>
-#else
-#include <AL/al.h>
-#include <AL/alc.h>
-#endif
-
-int main()
-{
-    alcGetCurrentContext();
-    alGetError();
-    return 0;
-}
diff --git a/config.tests/openal/openal.pro b/config.tests/openal/openal.pro
deleted file mode 100644
index 80fb599..0000000
--- a/config.tests/openal/openal.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-include(../paths.pri)
-
-SOURCES += main.cpp
-mac: DEFINES += HEADER_OPENAL_PREFIX
-
-exists(../../contrib/capi/capi.pri) {
-  CONFIG = staticlib
-} else {
-  win32: LIBS += -lOpenAL32
-  unix:!mac:!blackberry: LIBS += -lopenal
-  blackberry: LIBS += -lOpenAL
-  mac: LIBS += -framework OpenAL
-}
-
diff --git a/config.tests/paths.pri b/config.tests/paths.pri
deleted file mode 100644
index 84d01c7..0000000
--- a/config.tests/paths.pri
+++ /dev/null
@@ -1,8 +0,0 @@
-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]
-CONFIG -= qt app_bundle lib_bundle
-CONFIG += console
-*msvc*: INCLUDEPATH *= $$PWD/../src/compat/msvc
-!config_dx: INCLUDEPATH *= $$PWD/../contrib/dxsdk
diff --git a/config.tests/portaudio/main.cpp b/config.tests/portaudio/main.cpp
deleted file mode 100644
index 4183077..0000000
--- a/config.tests/portaudio/main.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <portaudio.h>
-
-int main()
-{
-	return 0;
-}
\ No newline at end of file
diff --git a/config.tests/portaudio/portaudio.pro b/config.tests/portaudio/portaudio.pro
deleted file mode 100644
index 93ec20a..0000000
--- a/config.tests/portaudio/portaudio.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lportaudio
-include(../paths.pri)
diff --git a/config.tests/pulseaudio/main.cpp b/config.tests/pulseaudio/main.cpp
deleted file mode 100644
index 72e790c..0000000
--- a/config.tests/pulseaudio/main.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <pulse/pulseaudio.h>
-
-int main()
-{
-    return 0;
-}
diff --git a/config.tests/pulseaudio/pulseaudio.pro b/config.tests/pulseaudio/pulseaudio.pro
deleted file mode 100644
index c39846d..0000000
--- a/config.tests/pulseaudio/pulseaudio.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-
-SOURCES += main.cpp
-
-LIBS += -lpulse
diff --git a/config.tests/sse4_1/sse4_1.cpp b/config.tests/sse4_1/sse4_1.cpp
deleted file mode 100644
index 7746bb1..0000000
--- a/config.tests/sse4_1/sse4_1.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <smmintrin.h>
-
-int main(int, char**)
-{
-    __m128 a = _mm_setzero_ps();
-    _mm_ceil_ps(a);
-    __m128i result = _mm_mullo_epi32(_mm_set1_epi32(42), _mm_set1_epi32(64));
-    (void)result;
-    return 0;
-}
diff --git a/config.tests/sse4_1/sse4_1.pro b/config.tests/sse4_1/sse4_1.pro
deleted file mode 100644
index 73432bc..0000000
--- a/config.tests/sse4_1/sse4_1.pro
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCES = sse4_1.cpp
-#SSE4_1_SOURCES = sse4_1.cpp
-CONFIG -= qt dylib release debug_and_release
-CONFIG += debug console sse4_1
-
-# for Qt4. we can only detect sse2 in Qt4
-#qt5 only has gcc, qcc, vc, linux icc.
-win32-icc {
-  QMAKE_CFLAGS_SSE4_1 = -arch:SSE4.1
-} else:*-icc { #mac, linux
-  QMAKE_CFLAGS_SSE4_1 = -xSSE4.1
-} else:*msvc* {
-  QMAKE_CFLAGS_SSE4_1 = -arch:SSE2
-} else {
-  QMAKE_CFLAGS_SSE4_1 = -msse4.1
-}
-
-sse4_1 {
-  HEADERS += $$SSE4_1_HEADERS
-
-  sse4_1_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
-  !contains(QT_CPU_FEATURES, sse4_1):sse4_1_compiler.commands += $$QMAKE_CFLAGS_SSE4_1
-  sse4_1_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
-  sse4_1_compiler.dependency_type = TYPE_C
-  sse4_1_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
-  sse4_1_compiler.input = SSE4_1_SOURCES
-  sse4_1_compiler.variable_out = OBJECTS
-  sse4_1_compiler.name = compiling[sse4_1] ${QMAKE_FILE_IN}
-  silent:sse4_1_compiler.commands = @echo compiling[sse4_1] ${QMAKE_FILE_IN} && $$sse4_1_compiler.commands
-  QMAKE_EXTRA_COMPILERS += sse4_1_compiler
-}
-
-isEmpty(QMAKE_CFLAGS_SSE4_1):error("This compiler does not support SSE4.1")
-else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE4_1
diff --git a/config.tests/swresample/main.cpp b/config.tests/swresample/main.cpp
deleted file mode 100644
index ee3ac1b..0000000
--- a/config.tests/swresample/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libswresample/swresample.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/swresample/swresample.pro b/config.tests/swresample/swresample.pro
deleted file mode 100644
index 44cff63..0000000
--- a/config.tests/swresample/swresample.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lswresample
-include(../paths.pri)
diff --git a/config.tests/swscale/main.cpp b/config.tests/swscale/main.cpp
deleted file mode 100644
index fe31004..0000000
--- a/config.tests/swscale/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <libswscale/swscale.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/swscale/swscale.pro b/config.tests/swscale/swscale.pro
deleted file mode 100644
index 1fd7b28..0000000
--- a/config.tests/swscale/swscale.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-DEFINES += __STDC_CONSTANT_MACROS
-*msvc* {
-#link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
-    QMAKE_LFLAGS += /SAFESEH:NO
-    INCLUDEPATH += ../../src/compat/msvc
-}
-SOURCES += main.cpp
-
-LIBS += -lswscale
-include(../paths.pri)
diff --git a/config.tests/uchardet/main.cpp b/config.tests/uchardet/main.cpp
deleted file mode 100644
index 3fc5dcb..0000000
--- a/config.tests/uchardet/main.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2015 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <uchardet/uchardet.h>
-
-void test() {
-  uchardet_new();
-}
diff --git a/config.tests/uchardet/uchardet.pro b/config.tests/uchardet/uchardet.pro
deleted file mode 100644
index 174b749..0000000
--- a/config.tests/uchardet/uchardet.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-include(../paths.pri)
-
-TARGET = uchardet_test
-SOURCES += main.cpp
-LIBS += -luchardet
diff --git a/config.tests/vaapi/main.cpp b/config.tests/vaapi/main.cpp
deleted file mode 100644
index cf71b74..0000000
--- a/config.tests/vaapi/main.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013-2014 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <va/va.h>
-#include <libavcodec/vaapi.h>
-
-int main()
-{
-    vaErrorStr(0);
-    return 0;
-}
diff --git a/config.tests/vaapi/vaapi.pro b/config.tests/vaapi/vaapi.pro
deleted file mode 100644
index 3b7e022..0000000
--- a/config.tests/vaapi/vaapi.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-
-SOURCES += main.cpp
-
-LIBS += -lva
-include(../paths.pri)
diff --git a/config.tests/videotoolbox/main.cpp b/config.tests/videotoolbox/main.cpp
deleted file mode 100644
index 7d51f6d..0000000
--- a/config.tests/videotoolbox/main.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2012-2018 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#ifndef __APPLE__
-#error apple only
-#endif
-extern "C" {
-#include <libavcodec/videotoolbox.h>
-}
-int main()
-{
-    //av_videotoolbox_alloc_context();
-    return 0;
-}
diff --git a/config.tests/videotoolbox/videotoolbox.pro b/config.tests/videotoolbox/videotoolbox.pro
deleted file mode 100644
index 5d09cc4..0000000
--- a/config.tests/videotoolbox/videotoolbox.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-DEFINES += __STDC_CONSTANT_MACROS
-SOURCES += main.cpp
-
-LIBS += -lavcodec -lavutil -framework CoreVideo -framework CoreFoundation -framework CoreMedia -framework VideoToolbox
-include(../paths.pri)
diff --git a/config.tests/x11/main.cpp b/config.tests/x11/main.cpp
deleted file mode 100644
index af00411..0000000
--- a/config.tests/x11/main.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2015 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <X11/Xlib.h>
-
-void test() {
-    XPutImage(NULL, 0, NULL, NULL, 0, 0, 0, 0, 0, 0);
-}
diff --git a/config.tests/x11/x11.pro b/config.tests/x11/x11.pro
deleted file mode 100644
index ae53fcb..0000000
--- a/config.tests/x11/x11.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-include(../paths.pri)
-
-TARGET = x11_test
-SOURCES += main.cpp
-LIBS += -lX11
diff --git a/config.tests/xaudio2/main.cpp b/config.tests/xaudio2/main.cpp
deleted file mode 100644
index 4470880..0000000
--- a/config.tests/xaudio2/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/******************************************************************************
-    QtAV:  Multimedia framework based on Qt and FFmpeg
-    Copyright (C) 2012-2016 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV (from 2015)
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include "../dxcompat.h"
-#ifdef __GNUC__
-// macros used by XAudio 2.7 (June 2010 SDK)
-#ifndef __in
-#define __in
-#endif
-#ifndef __out
-#define __out
-#endif
-#endif
-#include <XAudio2.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/xaudio2/xaudio2.pro b/config.tests/xaudio2/xaudio2.pro
deleted file mode 100644
index 8552f94..0000000
--- a/config.tests/xaudio2/xaudio2.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt app_bundle
-CONFIG += console
-
-SOURCES += main.cpp
-
-include(../paths.pri)
diff --git a/config.tests/xv/main.cpp b/config.tests/xv/main.cpp
deleted file mode 100644
index 8da62c8..0000000
--- a/config.tests/xv/main.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/******************************************************************************
-    QtAV:  Media play library based on Qt and FFmpeg
-    Copyright (C) 2013 Wang Bin <wbsecg1 at gmail.com>
-
-*   This file is part of QtAV
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-******************************************************************************/
-#include <sys/shm.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/Xvlib.h>
-
-int main()
-{
-	return 0;
-}
diff --git a/config.tests/xv/xv.pro b/config.tests/xv/xv.pro
deleted file mode 100644
index 7b57f35..0000000
--- a/config.tests/xv/xv.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG -= qt
-CONFIG += console
-
-SOURCES += main.cpp
-
-LIBS += -lXv
diff --git a/debian/patches/master.diff b/debian/patches/master.diff
new file mode 100644
index 0000000..365a743
--- /dev/null
+++ b/debian/patches/master.diff
@@ -0,0 +1,862 @@
+Index: QtAV-1.13.0/CMakeLists.txt
+===================================================================
+--- QtAV-1.13.0.orig/CMakeLists.txt
++++ QtAV-1.13.0/CMakeLists.txt
+@@ -25,6 +25,7 @@ option(BUILD_EXAMPLES "Build examples" O
+ option(BUILD_PLAYERS "Build players" ON)
+ option(BUILD_TESTS "Build tests" ON)
+ option(BUILD_QT5OPENGL "Build with Qt5 OpenGL module" ON)
++option(BUILD_QML "Build QML interfaces" ON)
+ 
+ list(APPEND CMAKE_FIND_ROOT_PATH ${QTDIR})
+ 
+@@ -74,7 +75,7 @@ if(NOT CMAKE_INSTALL_PREFIX_INITIALIZED_
+   set(QTAV_INSTALL_HEADERS ${CMAKE_INSTALL_PREFIX}/include)
+   set(QTAV_INSTALL_LIBS ${CMAKE_INSTALL_PREFIX}/lib)
+   set(QTAV_INSTALL_BINS ${CMAKE_INSTALL_PREFIX}/bin)
+-  set(QTAV_INSTALL_QML ${CMAKE_INSTALL_PREFIX}/qml)
++  set(QTAV_INSTALL_QML ${QTAV_INSTALL_LIBS}/qml)
+ else()
+   set(CMAKE_INSTALL_PREFIX ${QT_INSTALL_PREFIX} CACHE PATH "default install path" FORCE)
+   set(QTAV_INSTALL_HEADERS ${QT_INSTALL_HEADERS})
+@@ -116,13 +117,17 @@ if(CMAKE_GENERATOR MATCHES "Visual Studi
+ endif()
+ 
+ add_subdirectory(src)
++
+ find_package(Qt5Widgets)
+ if(Qt5Widgets_FOUND)
+   add_subdirectory(widgets)
+ endif()
+-find_package(Qt5 COMPONENTS Qml Quick)
+-if(Qt5Qml_FOUND AND Qt5Quick_FOUND)
+-  add_subdirectory(qml)
++
++if(BUILD_QML)
++  find_package(Qt5 COMPONENTS Qml Quick)
++  if(Qt5Qml_FOUND AND Qt5Quick_FOUND)
++      add_subdirectory(qml)
++  endif()
+ endif()
+ 
+ if(BUILD_EXAMPLES OR BUILD_PLAYERS)
+Index: QtAV-1.13.0/common.pri
+===================================================================
+--- QtAV-1.13.0.orig/common.pri
++++ QtAV-1.13.0/common.pri
+@@ -134,6 +134,7 @@ defineReplace(qtLibName) {
+        }
+     }
+         RET = $$RET$$platformTargetSuffix()
++        qtAtLeast(5, 14):android:RET = $${RET}_$$ANDROID_TARGET_ARCH
+         !win32: return($$RET)
+ 
+ 	isEmpty(2): VERSION_EXT = $$VERSION
+Index: QtAV-1.13.0/deploy.pri
+===================================================================
+--- QtAV-1.13.0.orig/deploy.pri
++++ QtAV-1.13.0/deploy.pri
+@@ -4,7 +4,7 @@ INSTALL_PREFIX = /usr/local
+ share.files = $$PROJECTROOT/qtc_packaging/common/changelog \
+ 			$$PROJECTROOT/qtc_packaging/common/copyright \
+ 			$$PROJECTROOT/qtc_packaging/common/README
+-share.path = /usr/share/doc/$${TARGET}
++share.path = $$[QT_INSTALL_PREFIX]/share/doc/$${TARGET}
+ 
+ isEqual(TEMPLATE, app) {
+ 	unix:!symbian {
+@@ -12,22 +12,22 @@ isEqual(TEMPLATE, app) {
+ 			DEFINES += CACHE_APPDIR
+ 			INSTALL_PREFIX = /opt/$${TARGET}
+ 			desktopfile.files = $$PROJECTROOT/qtc_packaging/debian_harmattan/$${TARGET}.desktop
+-			desktopfile.path = /usr/share/applications
++			desktopfile.path = $$[QT_INSTALL_PREFIX]/share/applications
+ 			icon.files = $$PROJECTROOT/qtc_packaging/debian_harmattan/$${TARGET}.png
+-			icon.path = /usr/share/icons/hicolor/80x80/apps
++			icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/80x80/apps
+ 			#debian.files = $$PROJECTROOT/qtc_packaging/harmattan/control
+ 		} else:maemo5 {
+ 			INSTALL_PREFIX = /opt/$${TARGET}
+ 			desktopfile.files = $$PROJECTROOT/qtc_packaging/debian_fremantle/$${TARGET}.desktop
+-			desktopfile.path = /usr/share/applications/hildon
++			desktopfile.path = $$[QT_INSTALL_PREFIX]/share/applications/hildon
+ 			icon.files = $$PROJECTROOT/qtc_packaging/debian_fremantle/$${TARGET}.png
+-			icon.path = /usr/share/icons/hicolor/64x64/apps
++			icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/64x64/apps
+ 			#debian.files = $$PROJECTROOT/qtc_packaging/fremantle/control
+ 		} else {
+ 			desktopfile.files = $$PROJECTROOT/qtc_packaging/debian_generic/$${TARGET}.desktop
+-			desktopfile.path = /usr/share/applications
++			desktopfile.path = $$[QT_INSTALL_PREFIX]/share/applications
+ 			icon.files = $$PROJECTROOT/qtc_packaging/debian_generic/$${TARGET}.png
+-			icon.path = /usr/share/icons/hicolor/64x64/apps
++			icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/64x64/apps
+ 			#debian.files = $$PROJECTROOT/qtc_packaging/generic/control
+ 		}
+ 		INSTALLS += desktopfile icon
+Index: QtAV-1.13.0/examples/QMLPlayer/qtquick2applicationviewer/qtquick2applicationviewer.pri
+===================================================================
+--- QtAV-1.13.0.orig/examples/QMLPlayer/qtquick2applicationviewer/qtquick2applicationviewer.pri
++++ QtAV-1.13.0/examples/QMLPlayer/qtquick2applicationviewer/qtquick2applicationviewer.pri
+@@ -104,14 +104,14 @@ android-no-sdk {
+ } else:unix {
+     maemo5 {
+         desktopfile.files = $${TARGET}.desktop
+-        desktopfile.path = /usr/share/applications/hildon
++        desktopfile.path = $$[QT_INSTALL_PREFIX]/share/applications/hildon
+         icon.files = $${TARGET}64.png
+-        icon.path = /usr/share/icons/hicolor/64x64/apps
++        icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/64x64/apps
+     } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+         desktopfile.files = $${TARGET}_harmattan.desktop
+-        desktopfile.path = /usr/share/applications
++        desktopfile.path = $$[QT_INSTALL_PREFIX]/share/applications
+         icon.files = $${TARGET}80.png
+-        icon.path = /usr/share/icons/hicolor/80x80/apps
++        icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/80x80/apps
+     } else { # Assumed to be a Desktop Unix
+         copyCommand =
+         for(deploymentfolder, DEPLOYMENTFOLDERS) {
+Index: QtAV-1.13.0/qml/QmlAV/QmlAVPlayer.h
+===================================================================
+--- QtAV-1.13.0.orig/qml/QmlAV/QmlAVPlayer.h
++++ QtAV-1.13.0/qml/QmlAV/QmlAVPlayer.h
+@@ -1,4 +1,4 @@
+-/******************************************************************************
++/******************************************************************************
+     QtAV:  Multimedia framework based on Qt and FFmpeg
+     Copyright (C) 2012-2017 Wang Bin <wbsecg1 at gmail.com>
+ 
+@@ -98,6 +98,7 @@ class QmlAVPlayer : public QObject, publ
+     // TODO: startPosition/stopPosition
+     Q_PROPERTY(QStringList audioBackends READ audioBackends WRITE setAudioBackends NOTIFY audioBackendsChanged)
+     Q_PROPERTY(QStringList supportedAudioBackends READ supportedAudioBackends)
++    Q_PROPERTY(int notifyInterval READ notifyInterval WRITE setNotifyInterval NOTIFY notifyIntervalChanged)
+ public:
+     enum Loop { Infinite = -1 };
+     // use (1<<31)-1
+@@ -280,6 +281,7 @@ public:
+     QStringList supportedAudioBackends() const;
+     QStringList audioBackends() const;
+     void setAudioBackends(const QStringList& value);
++    int notifyInterval() const;
+ 
+ public Q_SLOTS:
+     void play();
+@@ -290,7 +292,7 @@ public Q_SLOTS:
+     void seek(int offset);
+     void seekForward();
+     void seekBackward();
+-
++    void setNotifyInterval(int notifyInterval);
+ Q_SIGNALS:
+     void volumeChanged();
+     void mutedChanged();
+@@ -340,6 +342,8 @@ Q_SIGNALS:
+     void statusChanged();
+     void mediaObjectChanged();
+     void audioBackendsChanged();
++    void notifyIntervalChanged();
++
+ private Q_SLOTS:
+     // connect to signals from player
+     void _q_error(const QtAV::AVError& e);
+Index: QtAV-1.13.0/qml/QmlAVPlayer.cpp
+===================================================================
+--- QtAV-1.13.0.orig/qml/QmlAVPlayer.cpp
++++ QtAV-1.13.0/qml/QmlAVPlayer.cpp
+@@ -1,4 +1,4 @@
+-/******************************************************************************
++/******************************************************************************
+     QtAV:  Multimedia framework based on Qt and FFmpeg
+     Copyright (C) 2012-2017 Wang Bin <wbsecg1 at gmail.com>
+ 
+@@ -89,6 +89,7 @@ void QmlAVPlayer::classBegin()
+     connect(mpPlayer, SIGNAL(seekableChanged()), SIGNAL(seekableChanged()));
+     connect(mpPlayer, SIGNAL(seekFinished(qint64)), this, SIGNAL(seekFinished()), Qt::DirectConnection);
+     connect(mpPlayer, SIGNAL(bufferProgressChanged(qreal)), SIGNAL(bufferProgressChanged()));
++    connect(mpPlayer, SIGNAL(notifyIntervalChanged()), this,SIGNAL(notifyIntervalChanged()));
+     connect(this, SIGNAL(channelLayoutChanged()), SLOT(applyChannelLayout()));
+     // direct connection to ensure volume() in slots is correct
+     connect(mpPlayer->audio(), SIGNAL(volumeChanged(qreal)), SLOT(applyVolume()), Qt::DirectConnection);
+@@ -604,6 +605,13 @@ void QmlAVPlayer::setAudioBackends(const
+     Q_EMIT audioBackendsChanged();
+ }
+ 
++int QmlAVPlayer::notifyInterval() const
++{
++    if(!mpPlayer)
++        return -1;
++    return mpPlayer->notifyInterval();
++}
++
+ QStringList QmlAVPlayer::supportedAudioBackends() const
+ {
+     return AudioOutput::backendsAvailable();
+@@ -898,6 +906,14 @@ void QmlAVPlayer::seekBackward()
+     mpPlayer->seekBackward();
+ }
+ 
++void QmlAVPlayer::setNotifyInterval(int notifyInterval)
++{
++    if (!mpPlayer)
++        return;
++    mpPlayer->setNotifyInterval(notifyInterval);
++}
++
++
+ void QmlAVPlayer::_q_error(const AVError &e)
+ {
+     mError = NoError;
+Index: QtAV-1.13.0/qml/Video.qml
+===================================================================
+--- QtAV-1.13.0.orig/qml/Video.qml
++++ QtAV-1.13.0/qml/Video.qml
+@@ -1,4 +1,4 @@
+-
++
+ import QtQuick 2.0
+ import QtAV 1.7
+ 
+@@ -91,6 +91,7 @@ Item {
+     property alias internalVideoTracks: player.internalVideoTracks
+     property alias internalSubtitleTracks: player.internalSubtitleTracks
+     property alias internalSubtitleTrack: player.internalSubtitleTrack
++    property alias notifyInterval: player.notifyInterval
+     /*** Properties of VideoOutput ***/
+     /*!
+         \qmlproperty enumeration Video::fillMode
+Index: QtAV-1.13.0/qml/plugins.qmltypes
+===================================================================
+--- QtAV-1.13.0.orig/qml/plugins.qmltypes
++++ QtAV-1.13.0/qml/plugins.qmltypes
+@@ -1,4 +1,4 @@
+-import QtQuick.tooling 1.1
++import QtQuick.tooling 1.1
+ 
+ // This file describes the plugin-supplied types contained in the library.
+ // It is used for QML tooling purposes only.
+@@ -248,6 +248,7 @@ Module {
+         Property { name: "videoFilters"; type: "QuickVideoFilter"; isList: true; isReadonly: true }
+         Property { name: "audioBackends"; type: "QStringList" }
+         Property { name: "supportedAudioBackends"; type: "QStringList"; isReadonly: true }
++        Property { name: "notifyInterval"; type: "int" }
+         Signal { name: "loopCountChanged" }
+         Signal { name: "videoOutChanged" }
+         Signal { name: "paused" }
+Index: QtAV-1.13.0/src/AVDemuxThread.cpp
+===================================================================
+--- QtAV-1.13.0.orig/src/AVDemuxThread.cpp
++++ QtAV-1.13.0/src/AVDemuxThread.cpp
+@@ -27,6 +27,7 @@
+ #include "VideoThread.h"
+ #include <QtCore/QTime>
+ #include "utils/Logger.h"
++#include <QTimer>
+ 
+ #define RESUME_ONCE_ON_SEEK 0
+ 
+@@ -82,6 +83,10 @@ AVDemuxThread::AVDemuxThread(QObject *pa
+   , audio_thread(0)
+   , video_thread(0)
+   , clock_type(-1)
++  , last_seek_pos(0)
++  , current_seek_task(nullptr)
++  , stepping(false)
++  , stepping_timeout_time(0)
+ {
+     seek_tasks.setCapacity(1);
+     seek_tasks.blockFull(false);
+@@ -95,6 +100,10 @@ AVDemuxThread::AVDemuxThread(AVDemuxer *
+   , m_buffer(0)
+   , audio_thread(0)
+   , video_thread(0)
++  , last_seek_pos(0)
++  , current_seek_task(nullptr)
++  , stepping(false)
++  , stepping_timeout_time(0)
+ {
+     setDemuxer(dmx);
+     seek_tasks.setCapacity(1);
+@@ -153,6 +162,8 @@ void AVDemuxThread::stepBackward()
+ {
+     if (!video_thread)
+         return;
++    if (hasSeekTasks())
++        return;
+     AVThread *t = video_thread;
+     const qreal pre_pts = video_thread->previousHistoryPts();
+     if (pre_pts == 0.0) {
+@@ -165,15 +176,24 @@ void AVDemuxThread::stepBackward()
+         audio_thread->packetQueue()->clear(); // will put new packets before task run
+     }
+ 
+-    class stepBackwardTask : public QRunnable {
++    class stepBackwardTask : public QObject, public QRunnable {
+     public:
++        QTimer timeout_timer;
++
+         stepBackwardTask(AVDemuxThread *dt, qreal t)
+             : demux_thread(dt)
+             , pts(t)
+         {}
+         void run() {
++            demux_thread->stepping = true;
++            demux_thread->stepping_timeout_time = QDateTime::currentMSecsSinceEpoch() + 200;
++
+             AVThread *avt = demux_thread->videoThread();
+             avt->packetQueue()->clear(); // clear here
++
++            connect(avt, SIGNAL(frameDelivered()), demux_thread, SLOT(finishedStepBackward()), Qt::DirectConnection);
++            connect(avt, SIGNAL(eofDecoded()), demux_thread, SLOT(finishedStepBackward()), Qt::DirectConnection);
++
+             if (pts <= 0) {
+                 demux_thread->demuxer->seek(qint64(-pts*1000.0) - 500LL);
+                 QVector<qreal> ts;
+@@ -193,6 +213,7 @@ void AVDemuxThread::stepBackward()
+                 pts -= dt/2.0;
+             }
+             qDebug("step backward: %lld, %f", qint64(pts*1000.0), pts);
++
+             demux_thread->video_thread->setDropFrameOnSeek(false);
+             demux_thread->seekInternal(qint64(pts*1000.0), AccurateSeek);
+         }
+@@ -202,6 +223,7 @@ void AVDemuxThread::stepBackward()
+     };
+ 
+     pause(true);
++
+     t->packetQueue()->clear(); // will put new packets before task run
+     t->packetQueue();
+     Packet pkt;
+@@ -211,6 +233,15 @@ void AVDemuxThread::stepBackward()
+     newSeekRequest(new stepBackwardTask(this, pre_pts));
+ }
+ 
++void AVDemuxThread::finishedStepBackward()
++{
++    disconnect(video_thread, SIGNAL(frameDelivered()), this, SLOT(finishedStepBackward()));
++    disconnect(video_thread, SIGNAL(eofDecoded()), this, SLOT(finishedStepBackward()));
++
++    stepping = false;
++    stepping_timeout_time = 0;
++}
++
+ void AVDemuxThread::seek(qint64 external_pos, qint64 pos, SeekType type)
+ {
+     class SeekTask : public QRunnable {
+@@ -241,7 +272,7 @@ void AVDemuxThread::seek(qint64 external
+     };
+ 
+     end = false;
+-    // queue maybe blocked by put()	
++    // queue maybe blocked by put()
+     // These must be here or seeking while paused will not update the video frame
+     if (audio_thread) {
+         audio_thread->packetQueue()->clear();
+@@ -278,6 +309,7 @@ void AVDemuxThread::seekInternal(qint64
+         if (external_pos != std::numeric_limits < qint64 >::min() )
+             t->clock()->updateExternalClock(qMax(qint64(0), external_pos));
+         t->clock()->updateValue(double(pos)/1000.0);
++        last_seek_pos = pos;
+         t->requestSeek();
+         // TODO: the first frame (key frame) will not be decoded correctly if flush() is called.
+         //PacketBuffer *pb = t->packetQueue();
+@@ -315,12 +347,29 @@ void AVDemuxThread::processNextSeekTask(
+ {
+     if (seek_tasks.isEmpty())
+         return;
+-    QRunnable *task = seek_tasks.take();
+-    if (!task)
++ 
++    current_seek_task = seek_tasks.take();
++    if (!current_seek_task)
+         return;
+-    task->run();
+-    if (task->autoDelete())
+-        delete task;
++    current_seek_task->run();
++
++    if (current_seek_task->autoDelete())
++        delete current_seek_task;
++    current_seek_task = nullptr;
++}
++
++bool AVDemuxThread::hasSeekTasks()
++{
++    // This is not great. But I couldn't figure out how to get QTimers and stepBackwardTask working
++    if (stepping && stepping_timeout_time > 0 && stepping_timeout_time < QDateTime::currentMSecsSinceEpoch()) {
++        finishedStepBackward();
++    }
++    return !seek_tasks.isEmpty() || current_seek_task || stepping;
++}
++
++qint64 AVDemuxThread::lastSeekPos()
++{
++    return last_seek_pos;
+ }
+ 
+ void AVDemuxThread::pauseInternal(bool value)
+@@ -420,6 +469,11 @@ void AVDemuxThread::stepForward()
+ {
+     if (end)
+         return;
++    if (hasSeekTasks())
++        return;
++
++    stepping = true;
++
+     // clock type will be wrong if no lock because slot frameDeliveredOnStepForward() is in video thread
+     QMutexLocker locker(&next_frame_mutex);
+     Q_UNUSED(locker);
+@@ -440,6 +494,7 @@ void AVDemuxThread::stepForward()
+         if (!connected) {
+             connect(t, SIGNAL(frameDelivered()), this, SLOT(frameDeliveredOnStepForward()), Qt::DirectConnection);
+             connect(t, SIGNAL(eofDecoded()), this, SLOT(eofDecodedOnStepForward()), Qt::DirectConnection);
++
+             connected = true;
+         }
+     }
+@@ -486,6 +541,12 @@ void AVDemuxThread::frameDeliveredOnStep
+         clock_type = -1;
+         thread->clock()->updateExternalClock((thread->previousHistoryPts() - thread->clock()->initialValue())*1000.0);
+     }
++    
++    // Fudge the bit at the end + 33ms so that step forward and step backwards present different values
++    last_seek_pos = (thread->previousHistoryPts() - thread->clock()->initialValue())*1000.0 + 33;
++
++    stepping = false;
++
+     Q_EMIT stepFinished();
+ }
+ 
+@@ -504,9 +565,17 @@ void AVDemuxThread::eofDecodedOnStepForw
+         thread->clock()->setClockType(AVClock::ClockType(clock_type/2));
+         clock_type = -1;
+     }
++
++    stepping = false;
++
+     Q_EMIT stepFinished();
+ }
+ 
++void AVDemuxThread::stepForwardDone()
++{
++
++}
++
+ void AVDemuxThread::onAVThreadQuit()
+ {
+     AVThread* av[] = { audio_thread, video_thread};
+Index: QtAV-1.13.0/src/AVDemuxThread.h
+===================================================================
+--- QtAV-1.13.0.orig/src/AVDemuxThread.h
++++ QtAV-1.13.0/src/AVDemuxThread.h
+@@ -27,6 +27,7 @@
+ #include <QtCore/QThread>
+ #include <QtCore/QRunnable>
+ #include "PacketBuffer.h"
++#include <QTimer>
+ 
+ namespace QtAV {
+ 
+@@ -59,6 +60,8 @@ public:
+     MediaEndAction mediaEndAction() const;
+     void setMediaEndAction(MediaEndAction value);
+     bool waitForStarted(int msec = -1);
++    qint64 lastSeekPos();
++    bool hasSeekTasks();
+ Q_SIGNALS:
+     void requestClockPause(bool value);
+     void mediaStatusChanged(QtAV::MediaStatus);
+@@ -67,9 +70,11 @@ Q_SIGNALS:
+     void stepFinished();
+     void internalSubtitlePacketRead(int index, const QtAV::Packet& packet);
+ private slots:
++    void finishedStepBackward();
+     void seekOnPauseFinished();
+     void frameDeliveredOnStepForward();
+     void eofDecodedOnStepForward();
++    void stepForwardDone();
+     void onAVThreadQuit();
+ 
+ protected:
+@@ -100,7 +105,11 @@ private:
+     QMutex buffer_mutex;
+     QWaitCondition cond;
+     BlockingQueue<QRunnable*> seek_tasks;
+-
++    qint64 last_seek_pos;
++    QRunnable *current_seek_task;
++    bool stepping;
++    qint64 stepping_timeout_time;
++        
+     QSemaphore sem;
+     QMutex next_frame_mutex;
+     int clock_type; // change happens in different threads(direct connection)
+Index: QtAV-1.13.0/src/AVPlayer.cpp
+===================================================================
+--- QtAV-1.13.0.orig/src/AVPlayer.cpp
++++ QtAV-1.13.0/src/AVPlayer.cpp
+@@ -94,6 +94,7 @@ AVPlayer::AVPlayer(QObject *parent) :
+     connect(d->read_thread, SIGNAL(mediaStatusChanged(QtAV::MediaStatus)), this, SLOT(updateMediaStatus(QtAV::MediaStatus)));
+     connect(d->read_thread, SIGNAL(bufferProgressChanged(qreal)), this, SIGNAL(bufferProgressChanged(qreal)));
+     connect(d->read_thread, SIGNAL(seekFinished(qint64)), this, SLOT(onSeekFinished(qint64)), Qt::DirectConnection);
++    connect(d->read_thread, SIGNAL(stepFinished()), this, SLOT(onStepFinished()), Qt::DirectConnection);
+     connect(d->read_thread, SIGNAL(internalSubtitlePacketRead(int, QtAV::Packet)), this, SIGNAL(internalSubtitlePacketRead(int, QtAV::Packet)), Qt::DirectConnection);
+     d->vcapture = new VideoCapture(this);
+ }
+@@ -583,6 +584,16 @@ void AVPlayer::pause(bool p)
+         return;
+     if (isPaused() == p)
+         return;
++
++    if (!p) {
++        if (d->was_stepping) {
++            d->was_stepping = false;
++            // If was stepping, skip our position a little bit behind us.
++            //  This fixes an issue with the audio timer
++            seek(position() - 100);
++        }
++    }
++
+     audio()->pause(p);
+     //pause thread. check pause state?
+     d->read_thread->pause(p);
+@@ -848,6 +859,29 @@ qint64 AVPlayer::position() const
+     return pts;
+ }
+ 
++qint64 AVPlayer::displayPosition() const
++{
++    // Return a cached value if there are seek tasks
++    if (d->seeking || d->read_thread->hasSeekTasks() || (d->read_thread->buffer() && d->read_thread->buffer()->isBuffering())) {
++        return d->last_known_good_pts = d->read_thread->lastSeekPos();
++    }
++
++    // TODO: videoTime()?
++    qint64 pts = d->clock->videoTime()*1000.0;
++
++    // If we are stepping around, we want the lastSeekPos.
++    /// But if we're just paused by the user... we want another value.
++    if (d->was_stepping) {
++        pts = d->read_thread->lastSeekPos();
++    }
++    if (pts < 0) {
++        return d->last_known_good_pts;
++    }
++    d->last_known_good_pts = pts;
++
++    return pts;
++}
++
+ void AVPlayer::setPosition(qint64 position)
+ {
+     // FIXME: strange things happen if seek out of eof
+@@ -1258,6 +1292,9 @@ void AVPlayer::playInternal()
+         else
+             setPosition((qint64)(d->start_position_norm));
+     }
++    
++    d->was_stepping = false;
++
+     Q_EMIT stateChanged(PlayingState);
+     Q_EMIT started(); //we called stop(), so must emit started()
+ }
+@@ -1378,6 +1415,11 @@ void AVPlayer::onSeekFinished(qint64 val
+         Q_EMIT positionChanged(value);
+ }
+ 
++void AVPlayer::onStepFinished()
++{
++    Q_EMIT stepFinished();
++}
++
+ void AVPlayer::tryClearVideoRenderers()
+ {
+     if (!d->vthread) {
+@@ -1478,6 +1520,7 @@ void AVPlayer::timerEvent(QTimerEvent *t
+     if (te->timerId() == d->timer_id) {
+         // killTimer() should be in the same thread as object. kill here?
+         if (isPaused()) {
++            d->clock->pause(true);
+             //return; //ensure positionChanged emitted for stepForward()
+         }
+         // active only when playing
+@@ -1540,15 +1583,14 @@ void AVPlayer::stepForward()
+ {
+     // pause clock
+     pause(true); // must pause AVDemuxThread (set user_paused true)
++    d->was_stepping = true;
+     d->read_thread->stepForward();
+ }
+ 
+ void AVPlayer::stepBackward()
+ {
+-    d->clock->pause(true);
+-    d->state = PausedState;
+-    Q_EMIT stateChanged(d->state);
+-    Q_EMIT paused(true);
++    pause(true);
++    d->was_stepping = true;
+     d->read_thread->stepBackward();
+ }
+ 
+Index: QtAV-1.13.0/src/AVPlayerPrivate.cpp
+===================================================================
+--- QtAV-1.13.0.orig/src/AVPlayerPrivate.cpp
++++ QtAV-1.13.0/src/AVPlayerPrivate.cpp
+@@ -111,6 +111,8 @@ AVPlayer::Private::Private()
+     , status(NoMedia)
+     , state(AVPlayer::StoppedState)
+     , end_action(MediaEndAction_Default)
++    , last_known_good_pts(0)
++    , was_stepping(false)
+ {
+     demuxer.setInterruptTimeout(interrupt_timeout);
+     /*
+@@ -273,7 +275,9 @@ void AVPlayer::Private::initCommonStatis
+ #if (defined FF_API_R_FRAME_RATE && FF_API_R_FRAME_RATE) //removed in libav10
+     //FIXME: which 1 should we choose? avg_frame_rate may be nan, r_frame_rate may be wrong(guessed value)
+     else if (stream->r_frame_rate.den && stream->r_frame_rate.num) {
+-        st->frame_rate = av_q2d(stream->r_frame_rate);
++        if (stream->r_frame_rate.num < 90000)
++            st->frame_rate = av_q2d(stream->r_frame_rate);
++
+         qDebug("%d/%d", stream->r_frame_rate.num, stream->r_frame_rate.den);
+     }
+ #endif //FF_API_R_FRAME_RATE
+Index: QtAV-1.13.0/src/AVPlayerPrivate.h
+===================================================================
+--- QtAV-1.13.0.orig/src/AVPlayerPrivate.h
++++ QtAV-1.13.0/src/AVPlayerPrivate.h
+@@ -111,6 +111,8 @@ public:
+     bool reset_state;
+     qint64 start_position, stop_position;
+     qint64 start_position_norm, stop_position_norm; // real position
++    qint64 last_known_good_pts;
++    bool was_stepping;
+     int repeat_max, repeat_current;
+     int timer_id; //notify position change and check AB repeat range. active when playing
+ 
+Index: QtAV-1.13.0/src/CMakeLists.txt
+===================================================================
+--- QtAV-1.13.0.orig/src/CMakeLists.txt
++++ QtAV-1.13.0/src/CMakeLists.txt
+@@ -12,6 +12,8 @@ INCLUDE(CheckTypeSize)
+ include_directories(${QTDIR}/include) #TODO: remove. use external/include
+ get_filename_component(QTDIR "${QTDIR}" ABSOLUTE)
+ 
++find_package(PkgConfig)
++
+ list(APPEND EXTRA_INCLUDE ${QTAV_SOURCE_DIR}/external/include)
+ list(APPEND EXTRA_LIBS ${CMAKE_LIBRARY_PATH_FLAG}${QTAV_SOURCE_DIR}/external/lib)
+ if(APPLE)
+@@ -28,39 +30,56 @@ if(EXISTS ${QTAV_SOURCE_DIR}/contrib/cap
+     list(APPEND EXTRA_DEFS -DQTAV_HAVE_CAPI=1)
+ endif()
+ 
+-# check ffmpeg headers. assume libs exist. lib order matters if they are static
+-set(AVMODULES avformat avcodec swscale avutil) # avdevice avfilter avresample swscale)
+-# CMAKE_FIND_ROOT_PATH_BOTH: ensure find_file can search from given paths for cross compiling, may be set to ONLY in toolchain file
+-foreach(av ${AVMODULES})
+-    string(TOUPPER ${av} AV)
+-    find_file(HAVE_${AV} lib${av}/${av}.h HINTS ${EXTRA_INCLUDE} PATHS ${EXTRA_INCLUDE} CMAKE_FIND_ROOT_PATH_BOTH)
+-    message("HAVE_${AV}: ${HAVE_${AV}}")
+-    if(NOT ${HAVE_${AV}} MATCHES HAVE_${AV}-NOTFOUND)
+-      set(HAVE_${AV} 1)
+-      list(APPEND EXTRA_LIBS ${av})
+-      list(APPEND EXTRA_DEFS "-DQTAV_HAVE_${AV}=1")
+-    else()
+-      message(FATAL_ERROR "${av} is required")
+-    endif()
+-    #check_include_file(lib${av}/${av}.h HAVE_${AV}) # -D__STDC_CONSTANT_MACROS is required!
+-endforeach()
++pkg_check_modules (AVFORMAT libavformat REQUIRED)
++if(${AVFORMAT_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVFORMAT)
++    message("Found AVFORMAT: ${AVFORMAT_LINK_LIBRARIES}")
++endif()
+ 
+-foreach(av avfilter avdevice avresample swresample)
+-  string(TOUPPER ${av} AV)
+-  find_file(HAVE_${AV} lib${av}/${av}.h HINTS ${EXTRA_INCLUDE} PATHS ${EXTRA_INCLUDE} CMAKE_FIND_ROOT_PATH_BOTH)
+-  message("HAVE_${AV}: ${HAVE_${AV}}")
+-  if(NOT ${HAVE_${AV}} MATCHES HAVE_${AV}-NOTFOUND)
+-    set(HAVE_${AV} 1)
+-    list(APPEND EXTRA_LIBS ${av})
+-    list(APPEND EXTRA_DEFS "-DQTAV_HAVE_${AV}=1")
+-    list(APPEND AVMODULES ${av})
+-  endif()
+-endforeach()
++pkg_check_modules (AVCODEC libavcodec REQUIRED)
++if(${AVCODEC_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVCODEC)
++    message("Found AVCODEC: ${AVCODEC_LINK_LIBRARIES}")
++endif()
++
++pkg_check_modules (SWSCALE libswscale REQUIRED)
++if(${SWSCALE_FOUND})
++    list(APPEND PKG_CONFIG_MODULES SWSCALE)
++    message("Found SWSCALE: ${SWSCALE_LINK_LIBRARIES}")
++endif()
++
++pkg_check_modules (AVUTIL libavutil REQUIRED)
++if(${AVUTIL_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVUTIL)
++    message("Found AVUTIL: ${AVUTIL_LINK_LIBRARIES}")
++endif()
+ 
+-if (NOT HAVE_SWRESAMPLE)
+-  if (NOT HAVE_AVRESAMPLE)
++pkg_check_modules (AVFILTER libavfilter)
++if(${AVFILTER_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVFILTER)
++    message("Found AVFILTER: ${AVFILTER_LINK_LIBRARIES}")
++endif()
++
++pkg_check_modules (AVDEVICE libavdevice)
++if(${AVDEVICE_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVDEVICE)
++    message("Found AVDEVICE: ${AVDEVICE_LINK_LIBRARIES}")
++endif()
++
++pkg_check_modules (AVRESAMPLE libavresample)
++if(${AVRESAMPLE_FOUND})
++    list(APPEND PKG_CONFIG_MODULES AVRESAMPLE)
++    message("Found AVRESAMPLE: ${AVRESAMPLE_LINK_LIBRARIES}")
++endif()
++
++pkg_check_modules (SWRESAMPLE libswresample)
++if(${SWRESAMPLE_FOUND})
++    list(APPEND PKG_CONFIG_MODULES SWRESAMPLE)
++    message("Found SWRESAMPLE: ${SWRESAMPLE_LINK_LIBRARIES}")
++endif()
++
++if (NOT AVRESAMPLE_FOUND AND NOT SWRESAMPLE_FOUND)
+     message(FATAL_ERROR "swresample or avresample is required")
+-  endif()
+ endif()
+ 
+ list(APPEND EXTRA_DEFS -DBUILD_QTAV_LIB -D__STDC_CONSTANT_MACROS)
+@@ -178,10 +197,10 @@ foreach (D ${DEP_H})
+   endif()
+ endforeach()
+ 
+-if (HAVE_AVRESAMPLE)
++if (AVRESAMPLE_FOUND)
+   list(APPEND SOURCES AudioResamplerLibav.cpp)
+ endif()
+-if (HAVE_SWRESAMPLE)
++if (SWRESAMPLE_FOUND)
+   list(APPEND SOURCES AudioResamplerFF.cpp)
+ endif()
+ 
+@@ -307,13 +326,13 @@ if(HAVE_OPENGL)
+   endif()
+ endif()
+ 
+-if(HAVE_EGL)
++if(HAVE_EGL AND HAVE_CAPI)
+   list(APPEND SOURCES capi/egl_api.cpp)
+   # TODO: X11Extras
+   if(DEFINED Qt5Gui_EGL_INCLUDE_DIRS) # ANGLE
+     list(APPEND EXTRA_INCLUDE ${Qt5Gui_EGL_INCLUDE_DIRS})
+     #list(APPEND EXTRA_DEFS -DQTAV_HAVE_QT_EGL=1)
+-    if(HAVE_CAPI AND NOT IOS)
++    if(NOT IOS)
+       list(APPEND EXTRA_DEFS -DQTAV_HAVE_EGL_CAPI=1)
+       if(WindowsPhone OR WindowsStore)
+         list(APPEND EXTRA_DEFS -DCAPI_LINK_EGL)
+@@ -484,6 +503,14 @@ target_link_libraries(${MODULE}
+   LINK_PRIVATE ${EXTRA_LIBS}
+   LINK_PUBLIC Qt5::Core Qt5::Gui # will add include dirs, macros etc.
+ )
++
++foreach(PKG_CONFIG_MODULE ${PKG_CONFIG_MODULES})
++    target_link_libraries(${MODULE} PRIVATE ${${PKG_CONFIG_MODULE}_LINK_LIBRARIES})
++    target_include_directories(${MODULE} PRIVATE ${${PKG_CONFIG_MODULE}_INCLUDE_DIRS})
++    target_compile_options(${MODULE} PRIVATE ${${PKG_CONFIG_MODULE}_CFLAGS_OTHER})
++    target_compile_definitions(${MODULE} PRIVATE -DQTAV_HAVE_${PKG_CONFIG_MODULE}=1)
++endforeach()
++
+ set_target_properties(${MODULE} PROPERTIES
+   MACOSX_RPATH ON
+   FRAMEWORK ON
+Index: QtAV-1.13.0/src/QtAV/AVPlayer.h
+===================================================================
+--- QtAV-1.13.0.orig/src/QtAV/AVPlayer.h
++++ QtAV-1.13.0/src/QtAV/AVPlayer.h
+@@ -178,6 +178,7 @@ public:
+      */
+     qint64 stopPosition() const; //unit: ms
+     qint64 position() const; //unit: ms
++    qint64 displayPosition() const;
+     //0: play once. N: play N+1 times. <0: infinity
+     int repeat() const; //or repeatMax()?
+     /*!
+@@ -575,6 +576,7 @@ Q_SIGNALS:
+      * \param position The video or audio timestamp when seek is finished
+      */
+     void seekFinished(qint64 position);
++    void stepFinished();
+     void positionChanged(qint64 position);
+     void interruptTimeoutChanged();
+     void interruptOnTimeoutChanged();
+@@ -615,6 +617,7 @@ private Q_SLOTS:
+     void onStarted();
+     void updateMediaStatus(QtAV::MediaStatus status);
+     void onSeekFinished(qint64 value);
++    void onStepFinished();
+     void tryClearVideoRenderers();
+     void seekChapter(int incr);
+ protected:
+Index: QtAV-1.13.0/src/VideoThread.cpp
+===================================================================
+--- QtAV-1.13.0.orig/src/VideoThread.cpp
++++ QtAV-1.13.0/src/VideoThread.cpp
+@@ -506,7 +506,6 @@ void VideoThread::run()
+                     break;
+             }
+             pkt = Packet();
+-            v_a = 0; //?
+             continue;
+         }
+         // reduce here to ensure to decode the rest data in the next loop
+@@ -519,7 +518,6 @@ void VideoThread::run()
+                 pkt = Packet();
+             else
+                 pkt_data = pkt.data.constData();
+-            v_a = 0; //?
+             continue;
+         }
+         pkt_data = pkt.data.constData();
+Index: QtAV-1.13.0/src/libQtAV.pro
+===================================================================
+--- QtAV-1.13.0.orig/src/libQtAV.pro
++++ QtAV-1.13.0/src/libQtAV.pro
+@@ -621,7 +621,7 @@ mac {
+ 
+ unix:!mac:!cross_compile {
+ icon.files = $$PWD/$${TARGET}.svg
+-icon.path = /usr/share/icons/hicolor/scalable/apps
++icon.path = $$[QT_INSTALL_PREFIX]/share/icons/hicolor/scalable/apps
+ INSTALLS += icon
+ #debian
+ QMAKE_CXXFLAGS += -Wno-expansion-to-defined -Wno-unused-parameter
+Index: QtAV-1.13.0/src/opengl/OpenGLVideo.cpp
+===================================================================
+--- QtAV-1.13.0.orig/src/opengl/OpenGLVideo.cpp
++++ QtAV-1.13.0/src/opengl/OpenGLVideo.cpp
+@@ -392,7 +392,10 @@ void OpenGLVideo::updateViewport()
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+     QSizeF surfaceSize = d.ctx->surface()->size();
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
+-    surfaceSize *= d.ctx->screen()->devicePixelRatio();
++    // When changing monitors (plugging and unplugging), the screen might sometimes be nullptr!
++    if (d.ctx->screen()) {
++        surfaceSize *= d.ctx->screen()->devicePixelRatio();
++    }
+ #else
+     surfaceSize *= qApp->devicePixelRatio(); //TODO: window()->devicePixelRatio() is the window screen's
+ #endif
diff --git a/debian/patches/qmlplayer.diff b/debian/patches/qmlplayer.diff
new file mode 100644
index 0000000..51abaa0
--- /dev/null
+++ b/debian/patches/qmlplayer.diff
@@ -0,0 +1,20 @@
+--- a/examples/QMLPlayer/main.cpp	2020-11-19 15:14:21.000000000 +0000
++++ b/examples/QMLPlayer/main.cpp	2020-11-19 14:59:07.950817827 +0000
+@@ -21,7 +21,7 @@
+ #include <QtCore/QtDebug>
+ #include <QtCore/QDir>
+ #include <QtCore/QFile>
+-#include <QApplication>
++#include <QtGui/QGuiApplication>
+ #include <QQuickItem>
+ #include <QtQml/QQmlEngine>
+ #include <QtQml/QQmlContext>
+@@ -46,7 +46,7 @@
+     Config::setName(QString::fromLatin1("QMLPlayer"));
+     do_common_options_before_qapp(options);
+ 
+-    QApplication app(argc, argv);
++    QGuiApplication app(argc, argv);
+     app.setApplicationName(QStringLiteral("QMLPlayer"));
+     app.setApplicationDisplayName(QStringLiteral("QtAV QMLPlayer"));
+     QDir::setCurrent(qApp->applicationDirPath());
diff --git a/debian/patches/series b/debian/patches/series
index 05b38ca..431ab10 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,6 @@
 0006-Load-the-libva-libraries-with-SONAME-2.patch
 0007-Add-include-for-Qt-5.14.patch
 qt-5.15.diff
+#neon_qmlpl
+master.diff
+qmlplayer.diff
diff --git a/debian/rules b/debian/rules
index a9a1fc3..e040e74 100755
--- a/debian/rules
+++ b/debian/rules
@@ -8,7 +8,7 @@ export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
 export DH_VERBOSE=1
 
 %:
-	dh $@ --buildsystem qmake
+	dh $@ --buildsystem cmake
 
 override_dh_auto_configure:
 	dh_auto_configure -Sqmake -- CONFIG+="no_rpath recheck config_libass_link config_openal_link no-tests"
diff --git a/examples/QMLPlayer/QMLPlayer.pro b/examples/QMLPlayer/QMLPlayer.pro
index 5f84a29..79cc72b 100644
--- a/examples/QMLPlayer/QMLPlayer.pro
+++ b/examples/QMLPlayer/QMLPlayer.pro
@@ -3,6 +3,7 @@ QT += sql
 android {
   QT += androidextras
 }
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 *maemo*: DEFINES += Q_OS_MAEMO
 # Add more folders to ship with the application, here
 folder_01.source = qml/QMLPlayer
diff --git a/examples/QMLPlayer/main.cpp b/examples/QMLPlayer/main.cpp
index 841a63b..e08bb35 100644
--- a/examples/QMLPlayer/main.cpp
+++ b/examples/QMLPlayer/main.cpp
@@ -21,7 +21,7 @@
 #include <QtCore/QtDebug>
 #include <QtCore/QDir>
 #include <QtCore/QFile>
-#include <QtGui/QGuiApplication>
+#include <QApplication>
 #include <QQuickItem>
 #include <QtQml/QQmlEngine>
 #include <QtQml/QQmlContext>
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
     Config::setName(QString::fromLatin1("QMLPlayer"));
     do_common_options_before_qapp(options);
 
-    QGuiApplication app(argc, argv);
+    QApplication app(argc, argv);
     app.setApplicationName(QStringLiteral("QMLPlayer"));
     app.setApplicationDisplayName(QStringLiteral("QtAV QMLPlayer"));
     QDir::setCurrent(qApp->applicationDirPath());
diff --git a/qml/SGVideoNode.cpp b/qml/SGVideoNode.cpp
index b12089d..3f2a07d 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
diff --git a/src/QtAV/FilterContext.h b/src/QtAV/FilterContext.h
index 6d2f9a0..7cc2fc1 100644
--- a/src/QtAV/FilterContext.h
+++ b/src/QtAV/FilterContext.h
@@ -26,6 +26,7 @@
 #include <QtCore/QByteArray>
 #include <QtCore/QRect>
 #include <QtGui/QPainter>
+#include <QtGui/QPainterPath>
 /*
  * QPainterFilterContext, D2DFilterContext, ...
  */
diff --git a/src/libQtAV.pro b/src/libQtAV.pro
index 8e49668..21bf5cc 100644
--- a/src/libQtAV.pro
+++ b/src/libQtAV.pro
@@ -624,8 +624,9 @@ icon.files = $$PWD/$${TARGET}.svg
 icon.path = /usr/share/icons/hicolor/scalable/apps
 INSTALLS += icon
 #debian
+QMAKE_CXXFLAGS += -Wno-expansion-to-defined -Wno-unused-parameter
 DEB_INSTALL_LIST = .$$[QT_INSTALL_LIBS]/libQt*AV.so.*
-libqtav.target = libqtav.install
+libqtav.target = libqtav1.install
 libqtav.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${libqtav.target}
 QMAKE_EXTRA_TARGETS += libqtav
 target.depends *= $${libqtav.target}
@@ -634,20 +635,20 @@ DEB_INSTALL_LIST = $$join(SDK_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/, .$$[QT_INSTA
 DEB_INSTALL_LIST += .$$[QT_INSTALL_LIBS]/libQt*AV.prl .$$[QT_INSTALL_LIBS]/libQt*AV.so
 MKSPECS_DIR=$$[QT_HOST_DATA]/mkspecs # we only build deb for qt5, so QT_HOST_DATA is fine. qt4 can use $$[QMAKE_MKSPECS]
 DEB_INSTALL_LIST += .$${MKSPECS_DIR}/features/av.prf .$${MKSPECS_DIR}/modules/qt_lib_av.pri
-qtav_dev.target = qtav-dev.install
+qtav_dev.target = libqtav-dev.install
 qtav_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${qtav_dev.target}
 QMAKE_EXTRA_TARGETS += qtav_dev
 target.depends *= $${qtav_dev.target}
 
 DEB_INSTALL_LIST = $$join(SDK_PRIVATE_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/QtAV/*/, .$$[QT_INSTALL_HEADERS]/QtAV/*/)
 DEB_INSTALL_LIST += .$${MKSPECS_DIR}/modules/qt_lib_av_private.pri
-qtav_private_dev.target = qtav-private-dev.install
+qtav_private_dev.target = libqtav-private-dev.install
 qtav_private_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${qtav_private_dev.target}
 QMAKE_EXTRA_TARGETS += qtav_private_dev
 target.depends *= $${qtav_private_dev.target}
 
 greaterThan(QT_MAJOR_VERSION, 4) {
-  qtav_dev_links.target = qtav-dev.links
+  qtav_dev_links.target = libqtav-dev.links
   qtav_dev_links.commands = echo \"$$[QT_INSTALL_LIBS]/libQtAV.so $$[QT_INSTALL_LIBS]/libQt$${QT_MAJOR_VERSION}AV.so\" >$$PROJECTROOT/debian/$${qtav_dev_links.target}
   QMAKE_EXTRA_TARGETS *= qtav_dev_links
   target.depends *= $${qtav_dev_links.target}
diff --git a/src/vaapi/vaapi_helper.h b/src/vaapi/vaapi_helper.h
index 8d37518..6dda8ee 100644
--- a/src/vaapi/vaapi_helper.h
+++ b/src/vaapi/vaapi_helper.h
@@ -107,7 +107,7 @@ public:
         return instance().f_vaReleaseBufferHandle(dpy, buf_id);
     }
 protected:
-    va_0_38() : dll_helper(QString::fromLatin1("va"), 1) {
+    va_0_38() : dll_helper(QString::fromLatin1("va"), 2) {
         f_vaAcquireBufferHandle = (vaAcquireBufferHandle_t)resolve("vaAcquireBufferHandle");
         f_vaReleaseBufferHandle = (vaReleaseBufferHandle_t)resolve("vaReleaseBufferHandle");
     }
@@ -120,7 +120,7 @@ private:
 class VAAPI_DRM : protected dll_helper {
 public:
     typedef VADisplay vaGetDisplayDRM_t(int fd);
-    VAAPI_DRM(): dll_helper(QString::fromLatin1("va-drm"),1) {
+    VAAPI_DRM(): dll_helper(QString::fromLatin1("va-drm"),2) {
         fp_vaGetDisplayDRM = (vaGetDisplayDRM_t*)resolve("vaGetDisplayDRM");
     }
     VADisplay vaGetDisplayDRM(int fd) {
@@ -140,7 +140,7 @@ public:
                                    short, short, unsigned short,  unsigned short,
                                    short, short, unsigned short, unsigned short,
                                    VARectangle *, unsigned int,  unsigned int);
-    VAAPI_X11(): dll_helper(QString::fromLatin1("va-x11"),1) {
+    VAAPI_X11(): dll_helper(QString::fromLatin1("va-x11"),2) {
         fp_vaGetDisplay = (vaGetDisplay_t*)resolve("vaGetDisplay");
         fp_vaPutSurface = (vaPutSurface_t*)resolve("vaPutSurface");
     }
@@ -168,7 +168,7 @@ class VAAPI_EGL : protected dll_helper { //not implemented
     typedef VAStatus vaGetEGLClientBufferFromSurface_t(VADisplay dpy, VASurfaceID surface, EGLClientBuffer *buffer/* out*/);
     vaGetEGLClientBufferFromSurface_t* fp_vaGetEGLClientBufferFromSurface;
 public:
-    VAAPI_EGL(): dll_helper(QString::fromLatin1("va-egl"),1) {
+    VAAPI_EGL(): dll_helper(QString::fromLatin1("va-egl"),2) {
         fp_vaGetEGLClientBufferFromSurface = (vaGetEGLClientBufferFromSurface_t*)resolve("vaGetEGLClientBufferFromSurface");
     }
     VAStatus vaGetEGLClientBufferFromSurface(VADisplay dpy, VASurfaceID surface, EGLClientBuffer *buffer/* out*/) {
@@ -183,7 +183,7 @@ public:
     typedef VAStatus vaCreateSurfaceGLX_t(VADisplay, GLenum, GLuint, void **);
     typedef VAStatus vaDestroySurfaceGLX_t(VADisplay, void *);
     typedef VAStatus vaCopySurfaceGLX_t(VADisplay, void *, VASurfaceID, unsigned int);
-    VAAPI_GLX(): dll_helper(QString::fromLatin1("va-glx"),1) {
+    VAAPI_GLX(): dll_helper(QString::fromLatin1("va-glx"),2) {
         fp_vaGetDisplayGLX = (vaGetDisplayGLX_t*)resolve("vaGetDisplayGLX");
         fp_vaCreateSurfaceGLX = (vaCreateSurfaceGLX_t*)resolve("vaCreateSurfaceGLX");
         fp_vaDestroySurfaceGLX = (vaDestroySurfaceGLX_t*)resolve("vaDestroySurfaceGLX");
diff --git a/widgets/libQtAVWidgets.pro b/widgets/libQtAVWidgets.pro
index 599aa90..ad9c352 100644
--- a/widgets/libQtAVWidgets.pro
+++ b/widgets/libQtAVWidgets.pro
@@ -107,7 +107,7 @@ config_x11 {
   LIBS *= -lX11
 }
 # QtAV/private/* may be used by developers to extend QtAV features without changing QtAV library
-# headers not in QtAV/ and it's subdirs are used only by QtAV internally
+# headers not in QtAV/ and its subdirs are used only by QtAV internally
 HEADERS *= \
     $$SDK_HEADERS \
     $$SDK_PRIVATE_HEADERS
@@ -142,8 +142,9 @@ mac {
 
 unix:!android:!mac {
 #debian
+QMAKE_CXXFLAGS += -Wno-expansion-to-defined -Wno-unused-parameter
 DEB_INSTALL_LIST = .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.so.*
-libqtavwidgets.target = libqtavwidgets.install
+libqtavwidgets.target = libqtavwidgets1.install
 libqtavwidgets.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${libqtavwidgets.target}
 QMAKE_EXTRA_TARGETS += libqtavwidgets
 target.depends *= $${libqtavwidgets.target}
@@ -152,13 +153,13 @@ DEB_INSTALL_LIST = $$join(SDK_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/, .$$[QT_INSTA
 DEB_INSTALL_LIST += .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.prl .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.so
 MKSPECS_DIR=$$[QT_HOST_DATA]/mkspecs
 DEB_INSTALL_LIST += .$${MKSPECS_DIR}/features/avwidgets.prf .$${MKSPECS_DIR}/modules/qt_lib_avwidgets.pri
-qtavwidgets_dev.target = qtav-dev.install #like qtmultimedia5-dev, contains widgets headers
+qtavwidgets_dev.target = libqtav-dev.install #like qtmultimedia5-dev, contains widgets headers
 qtavwidgets_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >>$$PROJECTROOT/debian/$${qtavwidgets_dev.target}
 QMAKE_EXTRA_TARGETS += qtavwidgets_dev
 target.depends *= $${qtavwidgets_dev.target}
 
 greaterThan(QT_MAJOR_VERSION, 4) {
-  qtavwidgets_dev_links.target = qtav-dev.links #like qtmultimedia5-dev, contains widgets .so
+  qtavwidgets_dev_links.target = libqtav-dev.links #like qtmultimedia5-dev, contains widgets .so
   qtavwidgets_dev_links.commands = echo \"$$[QT_INSTALL_LIBS]/libQtAVWidgets.so $$[QT_INSTALL_LIBS]/libQt$${QT_MAJOR_VERSION}AVWidgets.so\" >>$$PROJECTROOT/debian/$${qtavwidgets_dev_links.target}
   QMAKE_EXTRA_TARGETS *= qtavwidgets_dev_links
   target.depends *= $${qtavwidgets_dev_links.target}


More information about the Neon-commits mailing list