History

avcodec/amfdec: Add VP9 AMF decoder

nyanmisaka committed 1 year ago

Commit b2c0d371 parent 09cd38e4 files · +15 −4Browse files

Unified · Split

4 files
  1. configure +1 −0
  2. libavcodec/Makefile +1 −0
  3. libavcodec/allcodecs.c +1 −0
  4. libavcodec/amfdec.c +12 −4
configure+1−0
@@ -3477,6 +3477,7 @@ vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8" · 3476 unmodified lines
3477vp8_vaapi_encoder_select="vaapi_encode"3477vp8_vaapi_encoder_select="vaapi_encode"
3478vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"3478vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
3479vp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"3479vp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"
3480vp9_amf_decoder_deps="amf"
3480vp9_cuvid_decoder_deps="cuvid"3481vp9_cuvid_decoder_deps="cuvid"
3481vp9_mediacodec_decoder_deps="mediacodec"3482vp9_mediacodec_decoder_deps="mediacodec"
3482vp9_mediacodec_encoder_deps="mediacodec"3483vp9_mediacodec_encoder_deps="mediacodec"
libavcodec/Makefile+1−0
@@ -802,6 +802,7 @@ OBJS-$(CONFIG_VP8_V4L2M2M_ENCODER) += v4l2_m2m_enc.o · 801 unmodified lines
802OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9data.o vp9dsp.o vp9lpf.o vp9recon.o \802OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9data.o vp9dsp.o vp9lpf.o vp9recon.o \
803 vp9block.o vp9prob.o vp9mvs.o vpx_rac.o \803 vp9block.o vp9prob.o vp9mvs.o vpx_rac.o \
804 vp9dsp_8bpp.o vp9dsp_10bpp.o vp9dsp_12bpp.o804 vp9dsp_8bpp.o vp9dsp_10bpp.o vp9dsp_12bpp.o
805OBJS-$(CONFIG_VP9_AMF_DECODER) += amfdec.o
805OBJS-$(CONFIG_VP9_CUVID_DECODER) += cuviddec.o806OBJS-$(CONFIG_VP9_CUVID_DECODER) += cuviddec.o
806OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER) += mediacodecdec.o807OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER) += mediacodecdec.o
807OBJS-$(CONFIG_VP9_MEDIACODEC_ENCODER) += mediacodecenc.o808OBJS-$(CONFIG_VP9_MEDIACODEC_ENCODER) += mediacodecenc.o
libavcodec/allcodecs.c+1−0
@@ -902,6 +902,7 @@ extern const FFCodec ff_vp8_mediacodec_encoder; · 901 unmodified lines
902extern const FFCodec ff_vp8_qsv_decoder;902extern const FFCodec ff_vp8_qsv_decoder;
903extern const FFCodec ff_vp8_v4l2m2m_encoder;903extern const FFCodec ff_vp8_v4l2m2m_encoder;
904extern const FFCodec ff_vp8_vaapi_encoder;904extern const FFCodec ff_vp8_vaapi_encoder;
905extern const FFCodec ff_vp9_amf_decoder;
905extern const FFCodec ff_vp9_cuvid_decoder;906extern const FFCodec ff_vp9_cuvid_decoder;
906extern const FFCodec ff_vp9_mediacodec_decoder;907extern const FFCodec ff_vp9_mediacodec_decoder;
907extern const FFCodec ff_vp9_mediacodec_encoder;908extern const FFCodec ff_vp9_mediacodec_encoder;
libavcodec/amfdec.c+12−4
@@ -90,6 +90,9 @@ static int amf_init_decoder(AVCodecContext *avctx) · 89 unmodified lines
90 AMFBuffer *buffer;90 AMFBuffer *buffer;
91 amf_int64 color_profile;91 amf_int64 color_profile;
92 int pool_size = 36;92 int pool_size = 36;
93 // way-around for older drivers that don't support dynamic bitness detection -
94 // define HEVC and VP9 10-bit based on container info
95 int no_bitness_detect = amf_legacy_driver_no_bitness_detect(amf_device_ctx);
93 96
94 ctx->drain = 0;97 ctx->drain = 0;
95 ctx->resolution_changed = 0;98 ctx->resolution_changed = 0;
@@ -100,13 +103,17 @@ static int amf_init_decoder(AVCodecContext *avctx) · 4 unmodified lines
100 break;103 break;
101 case AV_CODEC_ID_HEVC: {104 case AV_CODEC_ID_HEVC: {
102 codec_id = AMFVideoDecoderHW_H265_HEVC;105 codec_id = AMFVideoDecoderHW_H265_HEVC;
103 // way-around for older drivers that don't support dynamic butness detection -106 if(no_bitness_detect){
104 // define HEVC 10-bit based on container info
105 if(amf_legacy_driver_no_bitness_detect(amf_device_ctx)){
106 if(avctx->pix_fmt == AV_PIX_FMT_YUV420P10)107 if(avctx->pix_fmt == AV_PIX_FMT_YUV420P10)
107 codec_id = AMFVideoDecoderHW_H265_MAIN10;108 codec_id = AMFVideoDecoderHW_H265_MAIN10;
108 }109 }
109 110 } break;
111 case AV_CODEC_ID_VP9: {
112 codec_id = AMFVideoDecoderHW_VP9;
113 if(no_bitness_detect){
114 if(avctx->pix_fmt == AV_PIX_FMT_YUV420P10)
115 codec_id = AMFVideoDecoderHW_VP9_10BIT;
116 }
110 } break;117 } break;
111 case AV_CODEC_ID_AV1:118 case AV_CODEC_ID_AV1:
112 codec_id = AMFVideoDecoderHW_AV1;119 codec_id = AMFVideoDecoderHW_AV1;
@@ -717,4 +724,5 @@ const FFCodec ff_##x##_amf_decoder = { \ · 604 unmodified lines
717 724
718DEFINE_AMF_DECODER(h264, H264, "h264_mp4toannexb")725DEFINE_AMF_DECODER(h264, H264, "h264_mp4toannexb")
719DEFINE_AMF_DECODER(hevc, HEVC, NULL)726DEFINE_AMF_DECODER(hevc, HEVC, NULL)
727DEFINE_AMF_DECODER(vp9, VP9, NULL)
720DEFINE_AMF_DECODER(av1, AV1, NULL)728DEFINE_AMF_DECODER(av1, AV1, NULL)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t