lavc/qsvdec: Add VVC decoder

Signed-off-by: Fei Wang <fei.w.wang@intel.com>
release/7.1
Fei Wang 7 months ago committed by Haihao Xiang
parent cf9c398fc1
commit d30a9fdc80
  1. 2
      Changelog
  2. 1
      configure
  3. 2
      doc/decoders.texi
  4. 1
      libavcodec/allcodecs.c
  5. 4
      libavcodec/qsv.c
  6. 7
      libavcodec/qsvdec.c
  7. 2
      libavcodec/version.h

@ -17,6 +17,8 @@ version <next>:
- perlin video source - perlin video source
- D3D12VA HEVC encoder - D3D12VA HEVC encoder
- Cropping metadata parsing and writing in Matroska and MP4/MOV de/muxers - Cropping metadata parsing and writing in Matroska and MP4/MOV de/muxers
- Intel QSV-accelerated VVC decoding
version 7.0: version 7.0:
- DXV DXT1 encoder - DXV DXT1 encoder

1
configure vendored

@ -3425,6 +3425,7 @@ vp9_vaapi_encoder_select="vaapi_encode"
vp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9" vp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9"
vp9_qsv_encoder_select="qsvenc" vp9_qsv_encoder_select="qsvenc"
vp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m" vp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m"
vvc_qsv_decoder_select="qsvdec"
# parsers # parsers
aac_parser_select="adts_header mpeg4audio" aac_parser_select="adts_header mpeg4audio"

@ -157,7 +157,7 @@ Force to use a specific number of threads
@section QSV Decoders @section QSV Decoders
The family of Intel QuickSync Video decoders (VC1, MPEG-2, H.264, HEVC, The family of Intel QuickSync Video decoders (VC1, MPEG-2, H.264, HEVC,
JPEG/MJPEG, VP8, VP9, AV1). JPEG/MJPEG, VP8, VP9, AV1, VVC).
@subsection Common Options @subsection Common Options

@ -887,6 +887,7 @@ extern const FFCodec ff_vp9_mediacodec_encoder;
extern const FFCodec ff_vp9_qsv_decoder; extern const FFCodec ff_vp9_qsv_decoder;
extern const FFCodec ff_vp9_vaapi_encoder; extern const FFCodec ff_vp9_vaapi_encoder;
extern const FFCodec ff_vp9_qsv_encoder; extern const FFCodec ff_vp9_qsv_encoder;
extern const FFCodec ff_vvc_qsv_decoder;
// null codecs // null codecs
extern const FFCodec ff_vnull_decoder; extern const FFCodec ff_vnull_decoder;

@ -73,6 +73,10 @@ int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id)
case AV_CODEC_ID_AV1: case AV_CODEC_ID_AV1:
return MFX_CODEC_AV1; return MFX_CODEC_AV1;
#endif #endif
#if QSV_VERSION_ATLEAST(2, 11)
case AV_CODEC_ID_VVC:
return MFX_CODEC_VVC;
#endif
default: default:
break; break;

@ -933,7 +933,8 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q,
frame->pict_type = ff_qsv_map_pictype(aframe.frame->dec_info.FrameType); frame->pict_type = ff_qsv_map_pictype(aframe.frame->dec_info.FrameType);
if (avctx->codec_id == AV_CODEC_ID_H264 || if (avctx->codec_id == AV_CODEC_ID_H264 ||
avctx->codec_id == AV_CODEC_ID_HEVC) { avctx->codec_id == AV_CODEC_ID_HEVC ||
avctx->codec_id == AV_CODEC_ID_VVC) {
if (aframe.frame->dec_info.FrameType & MFX_FRAMETYPE_IDR) if (aframe.frame->dec_info.FrameType & MFX_FRAMETYPE_IDR)
frame->flags |= AV_FRAME_FLAG_KEY; frame->flags |= AV_FRAME_FLAG_KEY;
else else
@ -1300,3 +1301,7 @@ DEFINE_QSV_DECODER(vp9, VP9, NULL)
#if CONFIG_AV1_QSV_DECODER #if CONFIG_AV1_QSV_DECODER
DEFINE_QSV_DECODER(av1, AV1, NULL) DEFINE_QSV_DECODER(av1, AV1, NULL)
#endif #endif
#if CONFIG_VVC_QSV_DECODER
DEFINE_QSV_DECODER(vvc, VVC, NULL)
#endif

@ -29,7 +29,7 @@
#include "version_major.h" #include "version_major.h"
#define LIBAVCODEC_VERSION_MINOR 10 #define LIBAVCODEC_VERSION_MINOR 11
#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

Loading…
Cancel
Save