[FFmpeg-devel] [PATCH V5 2/5] libavutil/hwcontext_vaapi: Add a new nv12 format map to support vulkan frame

2021-12-01 Thread Wenbin Chen
Vulkan will map nv12 to R8 and GR88, so add this map to vaapi to support vulkan frame. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vaapi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 75acc851d6..994b744e4d 100644

[FFmpeg-devel] [PATCH V5 5/5] libavutil/hwcontext_vulkan: specify the modifier to create VKImage

2021-12-01 Thread Wenbin Chen
.264 -vf "hwmap=derive_device=vulkan,format=vulkan, \ scale_vulkan=1920:1080,hwmap=derive_device=vaapi,format=vaapi" -c:v h264_vaapi output.264 Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 127 +-- 1 file changed, 121 insertions(+), 6

[FFmpeg-devel] [PATCH V5 4/5] libavutil/hwcontext_vulkan: Add support to hwmap to software frame when using contiguous_planes flag.

2021-12-01 Thread Wenbin Chen
Add support to map vulkan frames to software frames when using contiguous_planes flag. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 11 +-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index

[FFmpeg-devel] [PATCH] libavutil/hwcontext_qsv: clean padding when upload qsv frames

2021-12-01 Thread Wenbin Chen
border pixel to fix this run2run problem, and also move the new AVFrame to global structure to reduce redundant allocation operation to increase preformance. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_qsv.c | 96 +-- 1 file changed, 83 insertions(+), 1

[FFmpeg-devel] [PATCH V3 2/2] libavutil/hwcontext_opencl: fix a bug for mapping qsv frame to opencl

2021-12-09 Thread Wenbin Chen
qsv -hwaccel_output_format qsv -hwaccel_device qs -c:v h264_qsv \ -i input.264 -vf "hwmap=derive_device=opencl,format=opencl,avgblur_opencl, \ hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: nyanmisaka Signed-off-by: Wenbin Chen -

[FFmpeg-devel] [PATCH V3 1/2] libavcodec/vaapi_decode: fix the problem that init_pool_size < nb_surface

2021-12-09 Thread Wenbin Chen
ces). Now add code to make sure init_pool_size is only set once. Now the following commandline works: ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.264 \ -vf "hwmap=derive_device=qsv,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by

[FFmpeg-devel] [PATCH V6 3/5] libavutil/hwcontext_vulkan: Allocate vkFrame in one memory

2021-12-07 Thread Wenbin Chen
A new flag frame_flag is also added to AVVulkanFramesContext. User can use this flag to force enable or disable this behaviour. A new variable "offset "is added to AVVKFrame. It describe describe the offset from the memory currently bound to the VkImage. Signed-off-by: Wenbin Chen --- libavuti

[FFmpeg-devel] [PATCH V6 5/5] libavutil/hwcontext_vulkan: specify the modifier to create VKImage

2021-12-07 Thread Wenbin Chen
.264 -vf "hwmap=derive_device=vulkan,format=vulkan, \ scale_vulkan=1920:1080,hwmap=derive_device=vaapi,format=vaapi" -c:v h264_vaapi output.264 Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 133 +-- 1 file changed, 127 insertions(+), 6

[FFmpeg-devel] [PATCH V6 1/5] hwcontext_vaapi: Use PRIME_2 memory type for modifiers.

2021-12-07 Thread Wenbin Chen
From: Bas Nieuwenhuizen This way we can pass explicit modifiers in. Sometimes the modifier matters for the number of memory planes that libva accepts, in particular when dealing with driver-compressed textures. Furthermore the driver might not actually be able to determine the implicit modifier

[FFmpeg-devel] [PATCH V6 2/5] libavutil/hwcontext_vaapi: Add a new nv12 format map to support vulkan frame

2021-12-07 Thread Wenbin Chen
Vulkan will map nv12 to R8 and GR88, so add this map to vaapi to support vulkan frame. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vaapi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 75acc851d6..994b744e4d 100644

[FFmpeg-devel] [PATCH V6 4/5] libavutil/hwcontext_vulkan: Add support to hwmap to software frame when using contiguous_planes flag.

2021-12-07 Thread Wenbin Chen
Add support to map vulkan frames to software frames when using contiguous_planes flag. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 11 +-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index

[FFmpeg-devel] [PATCH V2] doc/encoders.texi: Add doc for qsv

2022-01-05 Thread Wenbin Chen
Add doc for qsv decoder. Add more option's introduction to qsv encoder. Signed-off-by: Wenbin Chen --- doc/decoders.texi | 42 doc/encoders.texi | 253 +- 2 files changed, 292 insertions(+), 3 deletions(-) diff --git a/doc/decoders.texi b

[FFmpeg-devel] [PATCH V2] libavcodec/qsvenc: Add transform skip to hevc_qsv

2022-01-11 Thread Wenbin Chen
Add transform_skip option to hevc_qsv. By enabling this option, the transform_skip_enabled_flag in PPS will be set to 1. This option is only supported in the platform newer than ICL. Signed-off-by: Wenbin Chen --- doc/encoders.texi| 3 +++ libavcodec/qsvenc.c | 10

[FFmpeg-devel] [PATCH V2] libavcodec/qsvenc: Add DisableDeblockingIdc support to qsv

2022-01-11 Thread Wenbin Chen
Add dblk_idc option to 264_qsv and hevc_qsv. Turining on this opion can disable deblocking. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 8 libavcodec/qsvenc.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/doc/encoders.texi b/doc

[FFmpeg-devel] [PATCH V2] libavcodec/qsvenc: Add low latency P-pyramid support to qsv

2022-01-11 Thread Wenbin Chen
github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 36 libavcodec/qsvenc.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/doc/encoders.t

[FFmpeg-devel] [PATCH V2] libavcodec/qsvenc: Add max_frame_size support to hevc_qsv

2022-01-11 Thread Wenbin Chen
Add max_frame_size support to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 7cc8be1209..68921fbd40 100644 --- a/doc

[FFmpeg-devel] [PATCH V4 4/4] libavcodec/qsvenc: Add transform skip to hevc_qsv

2022-01-12 Thread Wenbin Chen
Add transform_skip option to hevc_qsv. By enabling this option, the transform_skip_enabled_flag in PPS will be set to 1. This option is supported on the platform equal or newer than ICL. Signed-off-by: Wenbin Chen --- doc/encoders.texi| 4 libavcodec/qsvenc.c | 10

[FFmpeg-devel] [PATCH V4 1/4] libavcodec/qsvenc: Add max_frame_size support to hevc_qsv

2022-01-12 Thread Wenbin Chen
Add max_frame_size support to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 7cc8be1209..68921fbd40 100644 --- a/doc

[FFmpeg-devel] [PATCH V4 2/4] libavcodec/qsvenc: Add DisableDeblockingIdc support to qsv

2022-01-12 Thread Wenbin Chen
Add dblk_idc option to 264_qsv and hevc_qsv. Turining on this opion can disable deblocking. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 8 libavcodec/qsvenc.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/doc/encoders.texi b/doc

[FFmpeg-devel] [PATCH V4 3/4] libavcodec/qsvenc: Add low latency P-pyramid support to qsv

2022-01-12 Thread Wenbin Chen
github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 36 libavcodec/qsvenc.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/doc/encoders.t

[FFmpeg-devel] [PATCH V5 2/2] libavutil/hwcontext_opencl: fix a bug for mapping qsv frame to opencl

2022-01-10 Thread Wenbin Chen
qsv -hwaccel_output_format qsv -hwaccel_device qs -c:v h264_qsv \ -i input.264 -vf "hwmap=derive_device=opencl,format=opencl,avgblur_opencl, \ hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: nyanmisaka Signed-off-by: Wenbin Chen -

[FFmpeg-devel] [PATCH V5 1/2] libavcodec/vaapi_decode: fix the problem that init_pool_size < nb_surface

2022-01-10 Thread Wenbin Chen
ces). Now add code to make sure init_pool_size is only set once. Now the following commandline works: ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.264 \ -vf "hwmap=derive_device=qsv,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by

[FFmpeg-devel] [PATCH V3 4/4] libavcodec/qsvenc: Add transform skip to hevc_qsv

2022-01-12 Thread Wenbin Chen
Add transform_skip option to hevc_qsv. By enabling this option, the transform_skip_enabled_flag in PPS will be set to 1. This option is supported on the platform equal or newer than CNL. Signed-off-by: Wenbin Chen --- doc/encoders.texi| 4 libavcodec/qsvenc.c | 10

[FFmpeg-devel] [PATCH V3 3/4] libavcodec/qsvenc: Add low latency P-pyramid support to qsv

2022-01-12 Thread Wenbin Chen
github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 36 libavcodec/qsvenc.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/doc/encoders.t

[FFmpeg-devel] [PATCH V3 2/4] libavcodec/qsvenc: Add DisableDeblockingIdc support to qsv

2022-01-12 Thread Wenbin Chen
Add dblk_idc option to 264_qsv and hevc_qsv. Turining on this opion can disable deblocking. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 8 libavcodec/qsvenc.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/doc/encoders.texi b/doc

[FFmpeg-devel] [PATCH V3 1/4] libavcodec/qsvenc: Add max_frame_size support to hevc_qsv

2022-01-12 Thread Wenbin Chen
Add max_frame_size support to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 7cc8be1209..68921fbd40 100644 --- a/doc

[FFmpeg-devel] [PATCH V5 4/4] libavcodec/qsvenc: Add transform skip to hevc_qsv

2022-01-16 Thread Wenbin Chen
Add transform_skip option to hevc_qsv. By enabling this option, the transform_skip_enabled_flag in PPS will be set to 1. This option is supported on the platform equal or newer than ICL. Signed-off-by: Wenbin Chen --- doc/encoders.texi| 4 libavcodec/qsvenc.c | 13

[FFmpeg-devel] [PATCH V5 2/4] libavcodec/qsvenc: Add DisableDeblockingIdc support to qsv

2022-01-16 Thread Wenbin Chen
Add dblk_idc option to 264_qsv and hevc_qsv. Turining on this opion can disable deblocking. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 7 +++ libavcodec/qsvenc.h | 3 +++ 3 files changed, 16 insertions(+) diff --git a/doc/encoders.texi b/doc

[FFmpeg-devel] [PATCH V5 3/4] libavcodec/qsvenc: Add low latency P-pyramid support to qsv

2022-01-16 Thread Wenbin Chen
github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype Signed-off-by: Wenbin Chen --- doc/encoders.texi | 6 ++ libavcodec/qsvenc.c | 36 libavcodec/qsvenc.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/doc/encoders.t

[FFmpeg-devel] [PATCH V5 1/4] libavcodec/qsvenc: Add max_frame_size support to hevc_qsv

2022-01-16 Thread Wenbin Chen
Add max_frame_size support to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 7cc8be1209..68921fbd40 100644 --- a/doc

[FFmpeg-devel] [PATCH V4 1/2] libavcodec/vaapi_decode: fix the problem that init_pool_size < nb_surface

2022-01-06 Thread Wenbin Chen
ces). Now add code to make sure init_pool_size is only set once. Now the following commandline works: ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.264 \ -vf "hwmap=derive_device=qsv,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by

[FFmpeg-devel] [PATCH V4 2/2] libavutil/hwcontext_opencl: fix a bug for mapping qsv frame to opencl

2022-01-06 Thread Wenbin Chen
qsv -hwaccel_output_format qsv -hwaccel_device qs -c:v h264_qsv \ -i input.264 -vf "hwmap=derive_device=opencl,format=opencl,avgblur_opencl, \ hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: nyanmisaka Signed-off-by: Wenbin Chen -

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc_hevc: encode RGB format rawvideo

2022-02-14 Thread Wenbin Chen
in MediaSDK. Signed-off-by: Wenbin Chen --- libavcodec/qsv.c | 16 libavcodec/qsvenc.c | 13 + libavcodec/qsvenc_hevc.c | 6 ++ 3 files changed, 35 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 1a432dbd82..b75877e698 100644

[FFmpeg-devel] [PATCH] libavcodec/qsvenc_hevc: encode RGB format rawvideo

2022-02-13 Thread Wenbin Chen
in MediaSDK. Sigend-off-by: Wenbin Chen --- libavcodec/qsv.c | 16 libavcodec/qsvenc.c | 15 +++ libavcodec/qsvenc_hevc.c | 6 ++ 3 files changed, 37 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 1a432dbd82..b75877e698 100644

[FFmpeg-devel] [PATCH v2 1/3] libavcodec/qsvdec: reinit decoder according to decode() return value

2022-03-18 Thread Wenbin Chen
FFmpeg-qsv decoder reinit codec when width and height change, but there are not only resolution change need to reinit codec. I change it to use return value from DecodeFrameAsync() to decide whether decoder need to be reinitialized. Signed-off-by: Wenbin Chen Signed-off-by: Guangxin Xu

[FFmpeg-devel] [PATCH v2 2/3] libavcodec/qsvdec: remove redundant decodeHeader()

2022-03-18 Thread Wenbin Chen
and use the got_frame to decide whether the decoder is drain. Signed-off-by: Wenbin Chen Signed-off-by: Guangxin Xu --- libavcodec/qsvdec.c | 29 +++-- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 0b5e416867

[FFmpeg-devel] [PATCH v2 3/3] libavcodec/qsvdec: using suggested num to set init_pool_size

2022-03-18 Thread Wenbin Chen
is 8 (default) and decoder may followed by VPP, use NumFrameSuggest + 16 to set init_pool_size. Signed-off-by: Wenbin Chen Signed-off-by: Guangxin Xu --- libavcodec/qsvdec.c | 14 -- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: add mbbrc to hevc_qsv

2022-02-21 Thread Wenbin Chen
Add mbbrc to hevc_qsv For detailed description, please see "mbbrc" part in: https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2 Signed-off-by: Wenbin Chen --- doc/encoders.texi | 5 + libavcodec/qsvenc.c | 5 +++-- 2 files changed, 8

[FFmpeg-devel] [PATCH v3] libavcodec/qsvenc_hevc: encode RGB format rawvideo

2022-02-17 Thread Wenbin Chen
-by: Wenbin Chen --- libavcodec/qsv.c | 16 libavcodec/qsvenc.c | 8 libavcodec/qsvenc_hevc.c | 6 ++ 3 files changed, 30 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 1a432dbd82..b75877e698 100644 --- a/libavcodec/qsv.c +++ b

[FFmpeg-devel] [PATCH v5 2/2] libavcodec/vaapi_encode: Add async_depth to vaapi_encoder to increase performance

2022-02-17 Thread Wenbin Chen
better use of hardware. Async_depth is added to increase encoder's performance. The frames that are sent to hardware are stored in a fifo. Encoder will sync output after async fifo is full. Signed-off-by: Wenbin Chen Signed-off-by: Haihao Xiang --- doc/encoders.texi | 6 libavcodec

[FFmpeg-devel] [PATCH v5 1/2] libavcodec/vaapi_encode: Add new API adaption to vaapi_encode

2022-02-17 Thread Wenbin Chen
Add vaSyncBuffer to VAAPI encoder. Old version API vaSyncSurface wait surface to complete. When surface is used for multiple operation, it waits all operations to finish. vaSyncBuffer only wait one channel to finish. Signed-off-by: Wenbin Chen Signed-off-by: Haihao Xiang --- libavcodec

[FFmpeg-devel] [PATCH v4 1/2] libavcodec/vaapi_encode: Add new API adaption to vaapi_encode

2022-02-17 Thread Wenbin Chen
From: Wenbin Chen Add vaSyncBuffer to VAAPI encoder. Old version API vaSyncSurface wait surface to complete. When surface is used for multiple operation, it waits all operations to finish. vaSyncBuffer only wait one channel to finish. Signed-off-by: Wenbin Chen Signed-off-by: Haihao Xiang

[FFmpeg-devel] [PATCH v4 2/2] libavcodec/vaapi_encode: Add async_depth to vaapi_encoder to increase performance

2022-02-17 Thread Wenbin Chen
From: Wenbin Chen Fix: #7706. After commit 5fdcf85bbffe7451c2, vaapi encoder's performance decrease. The reason is that vaRenderPicture() and vaSyncBuffer() are called at the same time (vaRenderPicture() always followed by a vaSyncBuffer()). Now I changed them to be called in a asynchronous way

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: add more ChromaFormat support to mjpeg_qsv

2022-02-20 Thread Wenbin Chen
ChromaForamt for mjpeg-qsv is always set to yuv420, and this will be wrong when encode other pixel format (for example yuyv422). ChromaFormat is changed to be adaptive to pix_fmt. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff

[FFmpeg-devel] [PATCH] libavcodec/cbs_av1: Add size check before parse obu

2022-03-23 Thread Wenbin Chen
and will not match the same obu frame. Now size check is added before parsing obu frame to avoid this error. Signed-off-by: Wenbin Chen --- libavcodec/cbs_av1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index 1229480567

[FFmpeg-devel] [PATCH 2/2] libavcodec/qsvenc: Add more pixel format support to qsvenc

2022-03-30 Thread Wenbin Chen
Qsv encoder only support input P010 and nv12 format directly from system memory. For other format, we need to upload frame to device memory and input qsv format to encoder. Now add other system memory format support to qsv encoder. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 30

[FFmpeg-devel] [PATCH 1/2] libavcodec/qsvdec: Add more pixel format support to qsvdec

2022-03-30 Thread Wenbin Chen
Qsv decoder only supports directly output nv12 and p010 to system memory. For other format, we need to download frame from qsv format to system memory. Now add other supported format to qsvdec. Signed-off-by: Wenbin Chen --- libavcodec/qsv.c | 36

[FFmpeg-devel] [PATCH 2/2] libavutil/hwcontext_vaapi: fix nv12 map error

2022-03-29 Thread Wenbin Chen
The UV plane of NV12 should not be mapped to DRM_FORMAT_GR88. Remove this map after the problem is fixed on ffmpeg-vulkan side. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vaapi.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c

[FFmpeg-devel] [PATCH 1/2] libavutil/hwcontext_vulkan: Fix VK_FORMAT_R8G8_UNORM and VK_FORMAT_R16G16_UNORM map problem on Vulkan

2022-03-29 Thread Wenbin Chen
to DRM_FORMAT_GR1616, while p010 need DRM_FORMAT_RG1616. Add sw_format check to vulkan_fmt_to_drm() to fix this problem. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 13 +++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil

[FFmpeg-devel] [PATCH] libavutil/hwcontext_qsv: Align width and heigh when download qsv frame

2022-03-31 Thread Wenbin Chen
t; -f null - Signed-off-by: Wenbin Chen --- libavutil/hwcontext_qsv.c | 34 ++ 1 file changed, 34 insertions(+) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 95f8071abe..1e7c065902 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcon

[FFmpeg-devel] [PATCH v2 1/2] libavcodec/qsvdec: Add more pixel format support to qsvdec

2022-04-02 Thread Wenbin Chen
Qsv decoder only supports directly output nv12 and p010 to system memory. For other format, we need to download frame from qsv format to system memory. Now add other supported format to qsvdec. Signed-off-by: Wenbin Chen --- libavcodec/qsv.c | 36

[FFmpeg-devel] [PATCH v2 2/2] libavcodec/qsvenc: Add more pixel format support to qsvenc

2022-04-02 Thread Wenbin Chen
Qsv encoder only support input P010 and nv12 format directly from system memory. For other format, we need to upload frame to device memory and input qsv format to encoder. Now add other system memory format support to qsv encoder. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 30

[FFmpeg-devel] [PATCH v2] libavutil/hwcontext_qsv: Align width and heigh when download qsv frame

2022-04-02 Thread Wenbin Chen
t; -f null - Signed-off-by: Wenbin Chen --- libavutil/hwcontext_qsv.c | 32 1 file changed, 32 insertions(+) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 95f8071abe..fe11e215a8 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcon

[FFmpeg-devel] [PATCH v2] libavcodec/cbs_av1: Add size check before parse obu

2022-03-29 Thread Wenbin Chen
and will not match the same obu frame. Now size check is added before parsing obu frame to avoid this error. Signed-off-by: Wenbin Chen --- libavcodec/cbs_av1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index 1229480567

[FFmpeg-devel] [PATCH V3 3/3] libavcodec/vaapi_encode: Add async_depth to vaapi_encoder to increase performance

2022-02-07 Thread Wenbin Chen
mes) with -async_depth=4 can increase 20% performance on my environment. The async increases performance but also introduces frame delay. Signed-off-by: Wenbin Chen --- libavcodec/vaapi_encode.c | 16 libavcodec/vaapi_encode.h | 12 ++-- 2 files changed, 22 insertions(+)

[FFmpeg-devel] [PATCH V3 2/3] libavcodec/vaapi_encode: Change the way to call async to increase performance

2022-02-07 Thread Wenbin Chen
, it will keep previous operation. Signed-off-by: Wenbin Chen --- libavcodec/vaapi_encode.c | 64 --- libavcodec/vaapi_encode.h | 5 +++ 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index

[FFmpeg-devel] [PATCH V3 1/3] libavcodec/vaapi_encode: Add new API adaption to vaapi_encode

2022-02-07 Thread Wenbin Chen
. "wait=1" means wait until operation ready. "wait=0" means query operation's status. If it is ready return 0, if it is still in progress return EAGAIN. Signed-off-by: Wenbin Chen --- libavcodec/vaapi_encode.c | 47 +-- 1 file changed, 40 insert

[FFmpeg-devel] [PATCH] libavcodec/qsvdec: use the parameter from decodeHeader to configure surface

2022-02-10 Thread Wenbin Chen
to configure surface. Signed-off-by: Wenbin Chen --- libavcodec/qsvdec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index f81737ab6d..6236391357 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -423,13 +423,13

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: fix a memory leak problem

2022-01-19 Thread Wenbin Chen
"qf->frame" ref to input frame but it isn't released. av_frame_unref() is added before refering qf->frame to new frame to make sure the previous reference is released. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libav

[FFmpeg-devel] [PATCH 3/3] libavcodec/qsvenc: Add intra refresh to hevc_qsv and add new intra refresh parameter

2022-01-23 Thread Wenbin Chen
Add intra refresh support to hevc_qsv as well. Add an new intra refresh type: "horizontal", and an new param ref_cycle_dist. This param specify the distance between the beginnings of the intra-refresh cycles in frames. Signed-off-by: Wenbin Chen --- doc/encoders.texi

[FFmpeg-devel] [PATCH 2/3] libavcodec/qsvenc: Add b_strategy option to hevc_qsv

2022-01-23 Thread Wenbin Chen
Add b_strategy option to hevc_qsv. By enabling this option, encoder can use b frames as reference. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 6 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi

[FFmpeg-devel] [PATCH 1/3] libavcodec/qsvenc: Add max slice size support to hevc_qsv

2022-01-23 Thread Wenbin Chen
Add max_slice_size option to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 9 - 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index e3adbf4325..8966610263 100644 --- a/doc

[FFmpeg-devel] [PATCH V2 3/3] libavcodec/qsvenc: Add intra refresh to hevc_qsv and add new intra refresh parameter

2022-01-24 Thread Wenbin Chen
Add intra refresh support to hevc_qsv as well. Add an new intra refresh type: "horizontal", and an new param ref_cycle_dist. This param specify the distance between the beginnings of the intra-refresh cycles in frames. Signed-off-by: Wenbin Chen --- doc/encoders.texi

[FFmpeg-devel] [PATCH V2 2/3] libavcodec/qsvenc: Add b_strategy option to hevc_qsv

2022-01-24 Thread Wenbin Chen
Add b_strategy option to hevc_qsv. By enabling this option, encoder can use b frames as reference. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 6 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi

[FFmpeg-devel] [PATCH V2 1/3] libavcodec/qsvenc: Add max slice size support to hevc_qsv

2022-01-24 Thread Wenbin Chen
Add max_slice_size option to hevc_qsv as well. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 9 - 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index e3adbf4325..8966610263 100644 --- a/doc

[FFmpeg-devel] [PATCH v3] libavutil/hwcontext_qsv: Align width and heigh when download qsv frame

2022-04-06 Thread Wenbin Chen
t; -f null - Signed-off-by: Wenbin Chen --- libavutil/hwcontext_qsv.c | 47 ++- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 95f8071abe..66c0e38955 100644 --- a/libavutil/hwcontext_q

[FFmpeg-devel] [PATCH v3 2/2] libavcodec/qsvenc: Add more pixel format support to qsvenc

2022-04-06 Thread Wenbin Chen
Qsv encoder only support input P010 and nv12 format directly from system memory. For other format, we need to upload frame to device memory and input qsv format to encoder. Now add other system memory format support to qsv encoder. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 30

[FFmpeg-devel] [PATCH v3 1/2] libavcodec/qsvdec: Add more pixel format support to qsvdec

2022-04-06 Thread Wenbin Chen
Qsv decoder only supports directly output nv12 and p010 to system memory. For other format, we need to download frame from qsv format to system memory. Now add other supported format to qsvdec. Signed-off-by: Wenbin Chen --- libavcodec/qsv.c | 36

[FFmpeg-devel] [PATCH] libavcodec/qsvdec.c: extract frame packing arrangement data

2022-04-26 Thread Wenbin Chen
Use h264_sei to parse SEI data got from MediaSDK. Extract frame packing arrangement information from SEI data and config AVStereo3D side data for decoded frame. Signed-off-by: Wenbin Chen Signed-off-by: Tong Wu --- libavcodec/qsv_internal.h | 2 + libavcodec/qsvdec.c | 160

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: add ROI support to qsv encoder

2022-06-01 Thread Wenbin Chen
From: Wenbin Chen Use the mfxEncoderCtrl parameter to enable ROI. Get side data "AVRegionOfInterest" and use it to configure "mfxExtEncoderROI" which is the MediaSDK's ROI configuration. Signed-off-by: Wenbin Chen --- libavcodec/qsv_internal.h | 4 ++ libavcodec

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: Add min/max QP control options for I/P/B frame

2022-05-25 Thread Wenbin Chen
From: Yue Heng To do more accurate QP control, add min/max QP control on I/P/B frame separately to qsv encoder. qmax and qmin still work but newly-added options have higher priority. Signed-off-by: Yue Heng Signed-off-by: Wenbin Chen --- doc/encoders.texi| 36

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Change the parameter log to be thread safe

2022-07-08 Thread Wenbin Chen
Dividing one line log into several av_log() call is not thread safe. Now merge these strings into one av_log() call. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 87 ++--- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/libavcodec

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Add support to qsv to encode external surface.

2022-06-27 Thread Wenbin Chen
evice=qsv:reverse=1:extra_hw_frames=16, \ format=qsv" -c:v h264_qsv output.264 Signed-off-by: Wenbin Chen Signed-off-by: Tong Wu --- libavcodec/qsv_internal.h | 1 + libavcodec/qsvenc.c | 19 -- libavutil/hwcontext_qsv.c | 79 ++- 3 files c

[FFmpeg-devel] [PATCH v2 1/2] libavcodec/mpegvideo_enc: Fix a chroma mb size error in sse_mb()

2022-07-03 Thread Wenbin Chen
on platform supporting AVX512 which lead to creating a frame in mpeg2enc, and this lead to the different outputs. Signed-off-by: Wenbin Chen --- libavcodec/mpegvideo_enc.c | 20 + tests/ref/seek/vsynth_lena-mpeg2-422 | 40 +- tests/ref/vsynth

[FFmpeg-devel] [PATCH v2 2/2] libavcodec/mpegvideo_enc: Unify the code style

2022-07-03 Thread Wenbin Chen
Change whitespace and add newline to unify the code style. Signed-off-by: Wenbin Chen --- libavcodec/mpegvideo_enc.c | 15 +-- 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 970f71fe37..c9d9e2a764 100644

[FFmpeg-devel] [PATCH] libavcodec/mpegvideo_enc: Fix a chroma mb size error in sse_mb()

2022-06-30 Thread Wenbin Chen
on platform supporting AVX512 which lead to creating a frame in mpeg2enc, and this lead to the different outputs. Signed-off-by: Wenbin Chen --- libavcodec/mpegvideo_enc.c | 29 +-- tests/ref/seek/vsynth_lena-mpeg2-422 | 40 +- tests/ref

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Use parameter from AVCodecContext to reset qsv codec

2022-07-06 Thread Wenbin Chen
-by: Wenbin Chen --- doc/encoders.texi | 5 ++--- libavcodec/qsvenc.c | 26 -- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 02a91ffe96..bf5fafd3fe 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -3337,10

[FFmpeg-devel] [PATCH v2] libavfilter/vf_overlay_qsv: Use format of first input to set output format for overlay_qsv

2022-07-06 Thread Wenbin Chen
l.com/content/www/us/en/develop/documentation/media-capabilities-of-intel-hardware/top.html Signed-off-by: Wenbin Chen --- libavfilter/vf_overlay_qsv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavfilter/vf_overlay_qsv.c b/libavfilter/vf_overlay_qsv.c index 7e76b39aa

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Fix a log format issue

2022-07-07 Thread Wenbin Chen
Add a line feed to fix a log format issue. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 2382c2f5f7..81d93235d7 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -308,6 +308,7

[FFmpeg-devel] [PATCH v3] libavcodec/qsvenc: add ROI support to qsv encoder

2022-06-05 Thread Wenbin Chen
Use The mfxEncoderCtrl parameter to enable ROI. Get side data "AVRegionOfInterest" and use it to configure "mfxExtEncoderROI" which is the MediaSDK's ROI configuration. Signed-off-by: Wenbin Chen --- libavcodec/qsv_internal.h | 4 ++ libavcodec

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime

2022-06-15 Thread Wenbin Chen
From: Yue Heng Enable dynamic QP configuration in runtime on qsv encoder. Through AVFrame->metadata, we can set key "qsv_config_qp" to change QP configuration when we encode video in CQP mode. Signed-off-by: Yue Heng Signed-off-by: Wenbin Chen --- doc/encoders.texi | 9 ++

[FFmpeg-devel] [PATCH] libavcodec/qsvenc_hevc: Use default value from MSDK to set bf.

2022-06-20 Thread Wenbin Chen
Change the default value of "bf" for hevc_qsv to -1. 8 isn't the best choice so let MSDK to decide the number of b frames. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc_hevc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/qsvenc_hevc.c b/

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime

2022-06-21 Thread Wenbin Chen
From: Yue Heng Enable dynamic QP configuration in runtime on qsv encoder. Through AVFrame->metadata, we can set key "qsv_config_qp" to change QP configuration when we encode video in CQP mode. Signed-off-by: Yue Heng Signed-off-by: Wenbin Chen --- doc/encoders.texi | 10

[FFmpeg-devel] [PATCH v4] libavcodec/qsvenc: add ROI support to qsv encoder

2022-06-07 Thread Wenbin Chen
Use The mfxEncoderCtrl parameter to enable ROI. Get side data "AVRegionOfInterest" and use it to configure "mfxExtEncoderROI" which is the MediaSDK's ROI configuration. Signed-off-by: Wenbin Chen --- libavcodec/qsv_internal.h | 4 ++ libavcodec

[FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: Use parameter from AVCodecContext to reset qsv codec

2022-07-14 Thread Wenbin Chen
ram is passed to both "in" and "out" parameters when call MFXVideoENCODE_Query(), the value in q->param may be changed. New variables are added to store old configuration, so that we can detect real parameter change. Signed-off-by: Wenbin Chen --- doc/encoders.texi | 9 +++

[FFmpeg-devel] [PATCH v3] libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime

2022-06-22 Thread Wenbin Chen
From: Yue Heng Enable dynamic QP configuration in runtime on qsv encoder. Through AVFrame->metadata, we can set key "qsv_config_qp" to change QP configuration when we encode video in CQP mode. Signed-off-by: Yue Heng Signed-off-by: Wenbin Chen --- doc/encoders.texi | 10

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: add ROI support to qsv encoder

2022-05-05 Thread Wenbin Chen
Use the mfxEncoderCtrl parameter to enable ROI. Get side data "AVRegionOfInterest" from filter "addroi" and use it to configure "mfxExtEncoderROI" which is the MediaSDK's ROI configuration. Signed-off-by: Wenbin Chen --- libavcodec/qsv_internal.h | 4 ++

[FFmpeg-devel] [PATCH] libavcodec/qsvenc: Add min/max QP control options for I/P/B frame

2022-05-05 Thread Wenbin Chen
From: Yue Heng To do more accurate QP control, add min/max QP control on I/P/B frame separately to qsv encoder. qmax and qmin still work but newly-added options have higher priority. Signed-off-by: Yue Heng Signed-off-by: Wenbin Chen --- doc/encoders.texi | 18

[FFmpeg-devel] [PATCH v2 2/7] libavcodec/qsvenc: Add max_frame_size reset support to qsv

2022-09-06 Thread Wenbin Chen
Signed-off-by: Wenbin Chen --- doc/encoders.texi | 4 libavcodec/qsvenc.c | 20 libavcodec/qsvenc.h | 2 ++ 3 files changed, 26 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index d36464d629..aadb6ab9fd 100644 --- a/doc/encoders.texi +++ b/doc

[FFmpeg-devel] [PATCH v2 1/7] libavcodec/qsvenc: skip parameter resetting on mjpeg_qsv

2022-09-06 Thread Wenbin Chen
mjpeg_qsv don't support dynamic resetting, so skip it. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 7ac5390f10..842cfb845e 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec

[FFmpeg-devel] [PATCH v2 6/7] libavcodec/qsvenc: Add max/min qp reset support in qsvenc

2022-09-06 Thread Wenbin Chen
Signed-off-by: Wenbin Chen --- doc/encoders.texi | 11 +++ libavcodec/qsvenc.c | 78 + libavcodec/qsvenc.h | 9 ++ 3 files changed, 98 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index da56159858..850e3c261c 100644

[FFmpeg-devel] [PATCH v2 3/7] libavcodec/qsvenc: Add gop_size reset support to qsvenc

2022-09-06 Thread Wenbin Chen
Signed-off-by: Wenbin Chen --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 16 libavcodec/qsvenc.h | 2 ++ 3 files changed, 21 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index aadb6ab9fd..bc1a4dae38 100644 --- a/doc/encoders.texi +++ b/doc

[FFmpeg-devel] [PATCH v2 5/7] libavcodec/qsvenc: Add intra refresh reset support to qsvenc

2022-09-06 Thread Wenbin Chen
Signed-off-by: Wenbin Chen --- doc/encoders.texi | 7 +++ libavcodec/qsvenc.c | 33 + libavcodec/qsvenc.h | 5 + 3 files changed, 45 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index d5d695d39c..da56159858 100644 --- a/doc

[FFmpeg-devel] [PATCH v2 4/7] libavcodec/qsvenc: Add "slice" intra refresh type to qsvenc

2022-09-06 Thread Wenbin Chen
Add "slice" intra refresh type to h264_qsv and hevc_qsv. This type means horizontal refresh by slices without overlapping. Also update the doc. Signed-off-by: Wenbin Chen --- doc/encoders.texi| 12 libavcodec/qsvenc_h264.c | 1 + libavcodec/qsvenc_hevc.c | 1

[FFmpeg-devel] [PATCH v2 7/7] libavcodec/qsvenc: Add low_delay_brc reset support to qsvenc

2022-09-06 Thread Wenbin Chen
Signed-off-by: Wenbin Chen --- doc/encoders.texi | 4 libavcodec/qsvenc.c | 23 ++- libavcodec/qsvenc.h | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 850e3c261c..453150f3e7 100644 --- a/doc

[FFmpeg-devel] [PATCH v4] libavcodec/cbs_av1: Add size check before parse obu

2022-09-21 Thread Wenbin Chen
and will not match the same obu frame. Now size check is added before parsing obu frame to avoid this error. Signed-off-by: Wenbin Chen --- libavcodec/cbs_av1.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index 154d9156cf..9c51a8c7c8 100644

[FFmpeg-devel] [PATCH v2 2/2] libavcodec/qsvenc: Let runtime to decide targetUsage

2022-09-26 Thread Wenbin Chen
Set preset default value to MFX_TARGETUSAGE_UNKNOWN. Let runtime to decide the targetUsage, so that ffmpeg-qsv can keep up with runtime's update. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.h b

[FFmpeg-devel] [PATCH v2 1/2] libavcodec/qsvenc: Let runtime to set default parameter.

2022-09-26 Thread Wenbin Chen
Unset qsv_h264 and qsv_hevc's default settings. Let runtime to decide these parameters, so that it can choose the best parameter and ffmpeg-qsv can keep up with runtime's update. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc_h264.c | 5 ++--- libavcodec/qsvenc_hevc.c | 3 +-- 2 files changed

[FFmpeg-devel] [PATCH 2/2] libavcodec/qsvenc: Let runtime to decide targetUsage

2022-09-26 Thread Wenbin Chen
Set preset default value to MFX_TARGETUSAGE_UNKNOWN. Let runtime to decide the targetUsage, so that ffmpeg-qsv can keep up with runtime's update. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.h b

[FFmpeg-devel] [PATCH 1/2] libavcodec/qsvenc: Let runtime to set default parameter.

2022-09-26 Thread Wenbin Chen
Unset qsv_h264 and qsv_hevc's default settings. Let runtime to decide these parameters, so that it can choose the best parameter and ffmpeg-qsv can keep up with runtime's update. Signed-off-by: Wenbin Chen --- libavcodec/qsvenc_h264.c | 4 ++-- libavcodec/qsvenc_hevc.c | 2 +- 2 files changed

<    1   2   3   >