]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/qsvdec.c
avformat/wavenc: Improve unsupported codec error messages
[ffmpeg] / libavcodec / qsvdec.c
index 18ae288b70825d5a792275ac2ab8b0ea5108b027..d10f90a0db6b9d57f79ccc56924dce3b30b4ff71 100644 (file)
@@ -682,8 +682,14 @@ static av_cold int qsv_decode_init(AVCodecContext *avctx)
 {
     QSVDecContext *s = avctx->priv_data;
     int ret;
+    const char *uid = NULL;
 
-    if (avctx->codec_id == AV_CODEC_ID_HEVC && s->load_plugin != LOAD_PLUGIN_NONE) {
+    if (avctx->codec_id == AV_CODEC_ID_VP8) {
+        uid = "f622394d8d87452f878c51f2fc9b4131";
+    } else if (avctx->codec_id == AV_CODEC_ID_VP9) {
+        uid = "a922394d8d87452f878c51f2fc9b4131";
+    }
+    else if (avctx->codec_id == AV_CODEC_ID_HEVC && s->load_plugin != LOAD_PLUGIN_NONE) {
         static const char * const uid_hevcdec_sw = "15dd936825ad475ea34e35f3f54217a6";
         static const char * const uid_hevcdec_hw = "33a61c0b4c27454ca8d85dde757c6f8e";
 
@@ -692,16 +698,18 @@ static av_cold int qsv_decode_init(AVCodecContext *avctx)
                    "load_plugins is not empty, but load_plugin is not set to 'none'."
                    "The load_plugin value will be ignored.\n");
         } else {
-            av_freep(&s->qsv.load_plugins);
-
             if (s->load_plugin == LOAD_PLUGIN_HEVC_SW)
-                s->qsv.load_plugins = av_strdup(uid_hevcdec_sw);
+                uid = uid_hevcdec_sw;
             else
-                s->qsv.load_plugins = av_strdup(uid_hevcdec_hw);
-            if (!s->qsv.load_plugins)
-                return AVERROR(ENOMEM);
+                uid = uid_hevcdec_hw;
         }
     }
+    if (uid) {
+        av_freep(&s->qsv.load_plugins);
+        s->qsv.load_plugins = av_strdup(uid);
+        if (!s->qsv.load_plugins)
+            return AVERROR(ENOMEM);
+    }
 
     s->qsv.orig_pix_fmt = AV_PIX_FMT_NV12;
     s->packet_fifo = av_fifo_alloc(sizeof(AVPacket));
@@ -846,3 +854,27 @@ static const AVOption options[] = {
 #if CONFIG_H264_QSV_DECODER
 DEFINE_QSV_DECODER(h264, H264, "h264_mp4toannexb")
 #endif
+
+#if CONFIG_MPEG2_QSV_DECODER
+DEFINE_QSV_DECODER(mpeg2, MPEG2VIDEO, NULL)
+#endif
+
+#if CONFIG_VC1_QSV_DECODER
+DEFINE_QSV_DECODER(vc1, VC1, NULL)
+#endif
+
+#if CONFIG_MJPEG_QSV_DECODER
+DEFINE_QSV_DECODER(mjpeg, MJPEG, NULL)
+#endif
+
+#if CONFIG_VP8_QSV_DECODER
+DEFINE_QSV_DECODER(vp8, VP8, NULL)
+#endif
+
+#if CONFIG_VP9_QSV_DECODER
+DEFINE_QSV_DECODER(vp9, VP9, NULL)
+#endif
+
+#if CONFIG_AV1_QSV_DECODER
+DEFINE_QSV_DECODER(av1, AV1, NULL)
+#endif