dk-to-onevpl.html
Haihao Xiang (10):
configure: ensure --enable-libmfx uses libmfx 1.x
configure: fix the check for MFX_CODEC_VP9
qsv: remove mfx/ prefix from mfx headers
qsv: load user plugin for MFX_VERSION < 2.0
qsv: build audio related code when MFX_VERSION < 2.0
qsvenc: support
The following Cflags has been added to libmfx.pc, so mfx/ prefix is no
longer needed when including mfx headers in FFmpeg.
Cflags: -I${includedir} -I${includedir}/mfx
Some old versions of libmfx have the following Cflags in libmfx.pc
Cflags: -I${includedir}
We may add -I${includedir}/mfx to
User plugin isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL Support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.c
Intel's oneVPL is a successor to MediaSDK, but removed some obsolete
features of MediaSDK[1]. Some early versions of oneVPL still uses libmfx
as library name[2], however some of obsolete features, including OPAQUE
memory, multi-frame encode, user plugins and LA_EXT rate control mode
etc, have been
Audio isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.c |
OPAQUE memory isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.
The data structures for VP9 in mfxvp9.h is wrapped by
MFX_VERSION_NEXT, which means those data structures have never been used
in a public release. Actually MFX_CODEC_VP9 and other VP9 stuffs is
added in mfxstructures.h. In addition, mfxdefs.h is included in
mfxvp9.h, so we may use the check in thi
Multi-frame encode isn't supported for MFX_VERSION >= 2.0[1][2]. This is
in preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec
In oneVPL, MFXLoad() and MFXCreateSession() are required to create a
workable mfx session[1]
Add AccelerationMode config filter for D3D9/D3D11 session (galinart)
The default device is changed to d3d11va for oneVPL when both d3d11va
and dxva2 are enabled on Microsoft Windows
This is in preparatio
This allows user to build FFmpeg against Intel oneVPL. oneVPL 2.2
is the required minimum version when building Intel oneVPL code.
It will fail to run configure script if both libmfx and libvpl are
enabled.
It is recommended to use oneVPL for new work, even for currently available
hardwares [1]
MFX_RATECONTROL_LA_EXT isn't supported for MFX_VERSION >= 2.0[1][2].
This is in preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavc
From: Daniel Socek
Signed-off-by: Daniel Socek
Signed-off-by: Haihao Xiang
---
libavcodec/qsvenc.c | 3 +++
libavcodec/qsvenc_hevc.c | 1 +
2 files changed, 4 insertions(+)
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index 06f55604b5..e21a9b1207 100644
--- a/libavcodec
.intel.com/content/www/us/en/develop/articles/upgrading-from-msdk-to-onevpl.html
Haihao Xiang (10):
configure: ensure --enable-libmfx uses libmfx 1.x
configure: fix the check for MFX_CODEC_VP9
qsv: remove mfx/ prefix from mfx headers
qsv: load user plugin for MFX_VERSION < 2.0
qsv: build
Intel's oneVPL is a successor to MediaSDK, but removed some obsolete
features of MediaSDK[1]. Some early versions of oneVPL still uses libmfx
as library name[2], however some of obsolete features, including OPAQUE
memory, multi-frame encode, user plugins and LA_EXT rate control mode
etc, have been
The data structures for VP9 in mfxvp9.h is wrapped by
MFX_VERSION_NEXT, which means those data structures have never been used
in a public release. Actually MFX_CODEC_VP9 and other VP9 stuffs is
added in mfxstructures.h. In addition, mfxdefs.h is included in
mfxvp9.h, so we may use the check in thi
The following Cflags has been added to libmfx.pc, so mfx/ prefix is no
longer needed when including mfx headers in FFmpeg.
Cflags: -I${includedir} -I${includedir}/mfx
Some old versions of libmfx have the following Cflags in libmfx.pc
Cflags: -I${includedir}
We may add -I${includedir}/mfx to
User plugin isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL Support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.c
Audio isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.c |
OPAQUE memory isn't supported for MFX_VERSION >= 2.0[1][2]. This is in
preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec/qsv.
In oneVPL, MFXLoad() and MFXCreateSession() are required to create a
workable mfx session[1]
Add AccelerationMode config filter for D3D9/D3D11 session (galinart)
The default device is changed to d3d11va for oneVPL when both d3d11va
and dxva2 are enabled on Microsoft Windows
This is in preparatio
This allows user to build FFmpeg against Intel oneVPL. oneVPL 2.2
is the required minimum version when building Intel oneVPL code.
It will fail to run configure script if both libmfx and libvpl are
enabled.
It is recommended to use oneVPL for new work, even for currently available
hardwares [1]
Multi-frame encode isn't supported for MFX_VERSION >= 2.0[1][2]. This is
in preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavcodec
MFX_RATECONTROL_LA_EXT isn't supported for MFX_VERSION >= 2.0[1][2].
This is in preparation for oneVPL support
[1]:
https://spec.oneapi.io/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
[2]: https://github.com/oneapi-src/oneVPL
---
libavc
_g' failed
make: *** [ffmpeg_g] Error 1
Signed-off-by: Haihao Xiang
---
libavfilter/x86/scene_sad_init.c | 10 ++
1 file changed, 10 insertions(+)
diff --git a/libavfilter/x86/scene_sad_init.c b/libavfilter/x86/scene_sad_init.c
index 461fa406d9..7e93ef44d3 100644
--- a/libavfilter/x86/sc
---
libavcodec/qsv.c | 27 +++
libavcodec/qsv_internal.h | 8 +++-
libavcodec/qsvdec.c | 8 +---
3 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index 6e3154e1a3..879e109092 100644
--- a/libavcodec
When AV_CODEC_EXPORT_DATA_FILM_GRAIN is present, AV1 decoder should
disable film grain application and export the corresponding side data
---
libavcodec/qsv_internal.h | 3 ++
libavcodec/qsvdec.c | 88 +++
2 files changed, 91 insertions(+)
diff --git a/l
By default the SDK creates a thread for each CPU when creating a mfx
session for decoding / encoding, which results in CPU overhead on a
multi CPU system. Actually creating 2 threads is a better choice for
most cases in practice.
This patch allows user to specify the number of threads created for
The session created for QSV HW device will be used as parent session
only, so we needn't create more threads for this session
---
libavutil/hwcontext_qsv.c | 24 ++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_
The session for hwupload & hwdownload is used to copy data between
system and video memory, 2 threads are sufficient for the copy in the
SDK.
---
libavutil/hwcontext_qsv.c | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/libavutil/hwcontext_qsv.c b/libavutil/
vaapi_map_from_drm() is the implementation of map_to when src format is
AV_PIX_FMT_DRM_PRIME, and the first parameter of map_to is the
AVHWFramesContext for dst
Signed-off-by: Haihao Xiang
---
libavutil/hwcontext_vaapi.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a
User should provide the modifier when importing a DMABuf if this DMABuf
has modifier.
Signed-off-by: Haihao Xiang
---
libavutil/hwcontext_vaapi.c | 137 +---
1 file changed, 126 insertions(+), 11 deletions(-)
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil
intSEI
'-aud xxx' to turn on / off AUDelimiter
Signed-off-by: Haihao Xiang
---
libavcodec/qsvenc.c | 15 ---
libavcodec/qsvenc_hevc.c | 2 ++
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index 566a5
The accepted values for GopOptFlag are MFX_GOP_CLOSED (1) and
MFX_GOP_STRICT (2).
Signed-off-by: Haihao Xiang
---
libavcodec/qsvenc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index aeb010e456..684c8089eb 100644
--- a
This patchset clean up scale_qsv and deinterlace_qsv filters, and take
the two filters as the special cases of vpp_qsv, so vf_scale_qsv.c and
vf_deinterlace_qsv.c can be deleted from FFmpeg. In addition, a few
small features are added in this patchset.
Haihao Xiang (22):
lavf/qsv: use
The same members between QSVVPPContext and VPPContext are removed from
VPPContext, and async_depth is moved from QSVVPPParam to QSVVPPContext
so that all QSV filters using QSVVPPContext may support async depth. In
addition we may use QSVVPPContext as base context in other QSV filters
in the future.
Use QSVVPPContext as a base context of QSVScaleContext, hence we may
re-use functions defined for QSVVPPContext to manage MFX session for
scale_qsv filter too. Because system memory is taken into account in
QSVVVPPContext, we may add support for non-QSV pixel formats in the
future
---
libavfilter/
Also fix the coding style for VAR index. This is in preparation for
re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 29 +++--
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 72
PI, PHI and E are defined in FFmpeg
---
libavfilter/vf_scale_qsv.c | 9 -
1 file changed, 9 deletions(-)
diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index 77a782aa58..f8e937e40e 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -44,9 +44,
This is in preparation for re-using VPPContext but with a different
option array for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 36
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index e7
Set the expected default value for options in this callback, hence we
have the right values even if these options are not included in the
option arrray. This is in preparation for re-using VPPContext but with a
different option array for other QSV filters
---
libavfilter/vf_vpp_qsv.c | 14
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 78 +---
1 file changed, 32 insertions(+), 46 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 7afbb3c983..c9a7b0ceb9 100644
--
Special values are:
0 = original width/height
-1 = keep original aspect
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 47 ++--
1 file changed, 40 insertions(+), 7 deletions(-)
diff --git a/libavfilter/vf_vpp
---
libavfilter/vf_vpp_qsv.c | 195 +--
1 file changed, 86 insertions(+), 109 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index dd3afb5e10..03785e9398 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -105
All features are implemented in vpp_qsv filter, scale_qsv can be taken
as a special case of vpp_qsv filter now, we re-use VPPContext with a
different option arrary and pixel formats
---
libavfilter/Makefile | 2 +-
libavfilter/vf_scale_qsv.c | 334 -
lib
After this patch, the scaling mode will be passed to the SDK when the
scaling mode is not equal to the default mode. This is in preparation
for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --gi
Allow user to set async depth for deinterlace_qsv
---
libavfilter/vf_vpp_qsv.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index c0afb001b9..bb3aebf047 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -711,6 +711,7
option 'scaling' accepts one of low_power and hq
$ ffmpeg -init_hw_device qsv -hwaccel qsv -c:v h264_qsv -i input.h264
-vf "vpp_qsv=scaling=hq" -f null -
---
libavfilter/vf_vpp_qsv.c | 10 ++
1 file changed, 10 insertions(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.
NV12 is added in system memory and the command below may work now.
$ ffmpeg -init_hw_device qsv -c:v h264_qsv -i input.h264 -vf
deinterlace_qsv -f null -
---
libavfilter/vf_vpp_qsv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_v
NV12 and P010 are added
$ ffmpeg -init_hw_device qsv -c:v h264_qsv -i input.h264 -vf
"scale_qsv=format=p010" -f null -
---
libavfilter/vf_vpp_qsv.c | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index bceee8c4df..29ba220
Currently the returned value from MFXVideoVPP_RunFrameVPPAsync() is
overridden, so the check of 'ret == MFX_ERR_MORE_SURFACE' is always
false when MFX_ERR_MORE_SURFACE is returned from
MFXVideoVPP_RunFrameVPPAsync()
---
libavfilter/qsvvpp.c | 11 ---
1 file changed, 8 insertions(+), 3 dele
Allow user to set crop area and async depth
---
libavfilter/vf_vpp_qsv.c | 6 ++
1 file changed, 6 insertions(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 03785e9398..bceee8c4df 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -675,6 +675,10
---
libavfilter/vf_vpp_qsv.c | 8 ++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 29ba220665..ec35f85b04 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -255,10 +255,14 @@ static int config_inp
When the SDK returns MFX_ERR_MORE_SURFACE, the PTS is not set for the
output frame. We assign a PTS calculated from the input frame to the
output frame. After applying this patch, we may avoid the error below:
[null @ 0x56395cab4ae0] Application provided invalid, non monotonically
increasing dts t
This is in preparation for re-using VPPContext but with a different
option array for deinterlacing_qsv filter
---
libavfilter/vf_vpp_qsv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 018b0e8689..90b0b25210 100644
---
Like what we did for scale_qsv filter, we use QSVVPPContext as a base
context to manage MFX session for deinterlace_qsv filter
---
libavfilter/vf_deinterlace_qsv.c | 492 ++-
1 file changed, 30 insertions(+), 462 deletions(-)
diff --git a/libavfilter/vf_deinterlace_qsv
All features are implemented in vpp_qsv filter now, so deinterlace_qsv
can be taken as a specical case of vpp_qsv filter, we re-use VPPContext
with a different option array and pix formats for deinterlace_qsv filter
---
libavfilter/Makefile | 2 +-
libavfilter/vf_deinterlace_qsv.c |
This patchset clean up scale_qsv and deinterlace_qsv filters, and take
the two filters as the special cases of vpp_qsv, so vf_scale_qsv.c and
vf_deinterlace_qsv.c can be deleted from FFmpeg. In addition, a few
small features are added in this patchset.
---
Update the commit logs in v2
Haihao
The same members between QSVVPPContext and VPPContext are removed from
VPPContext, and async_depth is moved from QSVVPPParam to QSVVPPContext
so that all QSV filters using QSVVPPContext may support async depth. In
addition we may use QSVVPPContext as base context in other QSV filters
in the future.
Use QSVVPPContext as a base context of QSVScaleContext, hence we may
re-use functions defined for QSVVPPContext to manage MFX session for
scale_qsv filter too. Because system memory is taken into account in
QSVVVPPContext, we may add support for non-QSV pixel formats in the
future
---
libavfilter/
PI, PHI and E are defined in FFmpeg
---
libavfilter/vf_scale_qsv.c | 9 -
1 file changed, 9 deletions(-)
diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index 77a782aa58..f8e937e40e 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -44,9 +44,
Also fix the coding style for VAR index. This is in preparation for
re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 29 +++--
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 72
This is in preparation for re-using VPPContext but with a different
option array for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 36
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index e7
After this patch, the scaling mode will be passed to the SDK when the
scaling mode is not equal to the default mode. This is in preparation
for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --gi
Set the expected default value for options in this callback, hence we
have the right values even if these options are not included in the
option arrray. This is in preparation for re-using VPPContext but with a
different option array for other QSV filters
---
libavfilter/vf_vpp_qsv.c | 14
All features are implemented in vpp_qsv filter, scale_qsv can be taken
as a special case of vpp_qsv filter now, we re-use VPPContext with a
different option arrary and pixel formats
---
libavfilter/Makefile | 2 +-
libavfilter/vf_scale_qsv.c | 334 -
lib
Special values are:
0 = original width/height
-1 = keep original aspect
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 47 ++--
1 file changed, 40 insertions(+), 7 deletions(-)
diff --git a/libavfilter/vf_vpp
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 78 +---
1 file changed, 32 insertions(+), 46 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 7afbb3c983..c9a7b0ceb9 100644
--
---
libavfilter/vf_vpp_qsv.c | 195 +--
1 file changed, 86 insertions(+), 109 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index dd3afb5e10..03785e9398 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -105
Allow user to set crop area and async depth
---
libavfilter/vf_vpp_qsv.c | 6 ++
1 file changed, 6 insertions(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 03785e9398..bceee8c4df 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -675,6 +675,10
NV12 and P010 are added
$ ffmpeg -init_hw_device qsv -c:v h264_qsv -i input.h264 -vf
"scale_qsv=format=p010" -f null -
---
libavfilter/vf_vpp_qsv.c | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index bceee8c4df..29ba220
Currently the returned value from MFXVideoVPP_RunFrameVPPAsync() is
overridden, so the check of 'ret == MFX_ERR_MORE_SURFACE' is always
false when MFX_ERR_MORE_SURFACE is returned from
MFXVideoVPP_RunFrameVPPAsync()
---
libavfilter/qsvvpp.c | 11 ---
1 file changed, 8 insertions(+), 3 dele
---
libavfilter/vf_vpp_qsv.c | 8 ++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 29ba220665..ec35f85b04 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -255,10 +255,14 @@ static int config_inp
When the SDK returns MFX_ERR_MORE_SURFACE, the PTS is not set for the
output frame. We assign a PTS calculated from the input frame to the
output frame. After applying this patch, we may avoid the error below:
[null @ 0x56395cab4ae0] Application provided invalid, non monotonically
increasing dts t
Like what we did for scale_qsv filter, we use QSVVPPContext as a base
context to manage MFX session for deinterlace_qsv filter
---
libavfilter/vf_deinterlace_qsv.c | 492 ++-
1 file changed, 30 insertions(+), 462 deletions(-)
diff --git a/libavfilter/vf_deinterlace_qsv
This is in preparation for re-using VPPContext but with a different
option array for deinterlacing_qsv filter
---
libavfilter/vf_vpp_qsv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 018b0e8689..90b0b25210 100644
---
All features are implemented in vpp_qsv filter now, so deinterlace_qsv
can be taken as a specical case of vpp_qsv filter, we re-use VPPContext
with a different option array and pix formats for deinterlace_qsv filter
---
libavfilter/Makefile | 2 +-
libavfilter/vf_deinterlace_qsv.c |
Allow user to set async depth for deinterlace_qsv
---
libavfilter/vf_vpp_qsv.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index c0afb001b9..bb3aebf047 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -711,6 +711,7
NV12 is added in system memory and the command below may work now.
$ ffmpeg -init_hw_device qsv -c:v h264_qsv -i input.h264 -vf
deinterlace_qsv -f null -
---
libavfilter/vf_vpp_qsv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_v
option 'scaling' accepts one of low_power and hq
$ ffmpeg -init_hw_device qsv -hwaccel qsv -c:v h264_qsv -i input.h264
-vf "vpp_qsv=scaling=hq" -f null -
---
libavfilter/vf_vpp_qsv.c | 10 ++
1 file changed, 10 insertions(+)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.
The time base used for compressed bitstream and video frame in the SDK
is { 1, 9 }. [1][2]
This can avoid the error message below from the muxer.
$> ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.h265 -f null -
...
[null @ 0x561c24f6f2f0] Application provided invalid, non monotonically
increasing
Since commit 89ffcd1, the pts on output pad is in the time base of the
input link, not the time base of the output link when EOF is reached, so
a filter after vpp_qsv might output some unexpected frames. In order to
avoid this issue, use the same time base for input and ouput links
The issue can b
Include hstack_qsv, vstack_qsv and xstack_qsv, some code is copy and
pasted from other filters
Example:
$> ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.h265 -filter_complex
"[0:v][0:v]hstack_qsv" -f null -
---
configure | 6 +
libavfilter/Makefile | 3 +
libavfilter/allfi
The time base used for compressed bitstream and video frame in the SDK
is { 1, 9 }. [1][2]
This can avoid the error message below from the muxer.
$> ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.h265 -f null -
...
[null @ 0x561c24f6f2f0] Application provided invalid, non monotonically
increasing
Since commit 89ffcd1, the status pts of the output link is set to a
value in the input link time base, not in the output link time base when
EOF is reached. Usually this pst value is larger than the required one
because the output link time base is more greater than the input link
time base. When "
Haihao Xiang (22):
lavfi/qsv: use QSVVPPContext as base context in
vf_vpp_qsv/vf_overlay_qsv
lavfi/scale_qsv: simplify scale_qsv filter
lavfi/scale_qsv: don't need variables for constants in FFmpeg
lavfi/vpp_qsv: add "a", "dar" and "sar" variables
The same members between QSVVPPContext and VPPContext are removed from
VPPContext, and async_depth is moved from QSVVPPParam to QSVVPPContext
so that all QSV filters using QSVVPPContext may support async depth. In
addition we may use QSVVPPContext as base context in other QSV filters
in the future.
Use QSVVPPContext as a base context of QSVScaleContext, hence we may
re-use functions defined for QSVVPPContext to manage MFX session for
scale_qsv filter too. Because system memory is taken into account in
QSVVVPPContext, we may add support for non-QSV pixel formats in the
future
---
libavfilter/
PI, PHI and E are defined in FFmpeg
---
libavfilter/vf_scale_qsv.c | 9 -
1 file changed, 9 deletions(-)
diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index 77a782aa58..f8e937e40e 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -44,9 +44,
This is in preparation for re-using VPPContext but with a different
option array for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 36
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index e7
Special values are:
0 = original width/height
-1 = keep original aspect
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 47 ++--
1 file changed, 40 insertions(+), 7 deletions(-)
diff --git a/libavfilter/vf_vpp
This is in preparation for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 78 +---
1 file changed, 32 insertions(+), 46 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 7afbb3c983..c9a7b0ceb9 100644
--
Also fix the coding style for VAR index. This is in preparation for
re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 29 +++--
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 72
After this patch, the scaling mode will be passed to the SDK when the
scaling mode is not equal to the default mode. This is in preparation
for re-using VPPContext for scale_qsv filter
---
libavfilter/vf_vpp_qsv.c | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --gi
Currently the returned value from MFXVideoVPP_RunFrameVPPAsync() is
overridden, so the check of 'ret == MFX_ERR_MORE_SURFACE' is always
false when MFX_ERR_MORE_SURFACE is returned from
MFXVideoVPP_RunFrameVPPAsync()
---
libavfilter/qsvvpp.c | 11 ---
1 file changed, 8 insertions(+), 3 dele
When the SDK returns MFX_ERR_MORE_SURFACE, the PTS is not set for the
output frame. We assign a PTS calculated from the input frame to the
output frame. After applying this patch, we may avoid the error below:
[null @ 0x56395cab4ae0] Application provided invalid, non monotonically
increasing dts t
All features are implemented in vpp_qsv filter, scale_qsv can be taken
as a special case of vpp_qsv filter now, we re-use VPPContext with a
different option arrary and pixel formats
---
libavfilter/Makefile | 2 +-
libavfilter/vf_scale_qsv.c | 334 -
lib
Set the expected default value for options in this callback, hence we
have the right values even if these options are not included in the
option arrray. This is in preparation for re-using VPPContext but with a
different option array for other QSV filters
---
libavfilter/vf_vpp_qsv.c | 14
---
libavfilter/vf_vpp_qsv.c | 195 +--
1 file changed, 86 insertions(+), 109 deletions(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index dd3afb5e10..03785e9398 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -105
This is in preparation for re-using VPPContext but with a different
option array for deinterlacing_qsv filter
---
libavfilter/vf_vpp_qsv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index cdf1f61b0f..45ac761d06 100644
---
Like what we did for scale_qsv filter, we use QSVVPPContext as a base
context to manage MFX session for deinterlace_qsv filter
---
libavfilter/vf_deinterlace_qsv.c | 492 ++-
1 file changed, 30 insertions(+), 462 deletions(-)
diff --git a/libavfilter/vf_deinterlace_qsv
1 - 100 of 298 matches
Mail list logo