aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/qsvdec.c
diff options
context:
space:
mode:
authorXu Guangxin <guangxin.xu@intel.com>2021-01-05 10:43:42 +0800
committerLinjie Fu <linjie.justin.fu@gmail.com>2021-01-23 16:07:54 +0000
commit7a5a5e68bfb344ce081d2b313ae8b9dc92df40bf (patch)
treea7fcb510a1091f19ac2999868ee357b9064876fb /libavcodec/qsvdec.c
parentd78ecf10bd745cb69a71b32419e0661bfdcfb1fd (diff)
downloadffmpeg-7a5a5e68bfb344ce081d2b313ae8b9dc92df40bf.tar.gz
avcodec/qsvdec: refact, remove duplicate code for plugin loading
Signed-off-by: Xu Guangxin <guangxin.xu@intel.com> Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com>
Diffstat (limited to 'libavcodec/qsvdec.c')
-rw-r--r--libavcodec/qsvdec.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 3ca16dafae..d10f90a0db 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -682,21 +682,12 @@ 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_VP8) {
- static const char *uid_vp8dec_hw = "f622394d8d87452f878c51f2fc9b4131";
-
- av_freep(&s->qsv.load_plugins);
- s->qsv.load_plugins = av_strdup(uid_vp8dec_hw);
- if (!s->qsv.load_plugins)
- return AVERROR(ENOMEM);
+ uid = "f622394d8d87452f878c51f2fc9b4131";
} else if (avctx->codec_id == AV_CODEC_ID_VP9) {
- static const char *uid_vp9dec_hw = "a922394d8d87452f878c51f2fc9b4131";
-
- av_freep(&s->qsv.load_plugins);
- s->qsv.load_plugins = av_strdup(uid_vp9dec_hw);
- if (!s->qsv.load_plugins)
- return AVERROR(ENOMEM);
+ 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";
@@ -707,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));