>From a7f137b9fbf25ab556d9723f5583c9a3d732875b Mon Sep 17 00:00:00 2001
From: Sven Dueking <sven@nablet.com>
Date: Fri, 27 Nov 2015 11:35:34 +0000
Subject: [PATCH] make qsv functions avpriv

---
 libavcodec/qsv.c          | 41 +++++++++++++++++++++--------------------
 libavcodec/qsv_internal.h | 11 ++++++-----
 libavcodec/qsvdec.c       | 14 +++++++-------
 libavcodec/qsvenc.c       | 16 ++++++++--------
 4 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index 4c8e6b0..9dfa8e0 100644
--- a/libavcodec/qsv.c
+++ b/libavcodec/qsv.c
@@ -51,7 +51,7 @@ int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id)
     return AVERROR(ENOSYS);
 }
 
-int ff_qsv_error(int mfx_err)
+int avpriv_qsv_error(int mfx_err)
 {
     switch (mfx_err) {
     case MFX_ERR_NONE:
@@ -85,7 +85,7 @@ int ff_qsv_error(int mfx_err)
         return AVERROR_UNKNOWN;
     }
 }
-static int ff_qsv_set_display_handle(AVCodecContext *avctx, QSVSession *qs)
+static int ff_qsv_set_display_handle(AVClass *avcl, QSVSession *qs)
 {
     // this code is only required for Linux.  It searches for a valid
     // display handle.  First in /dev/dri/renderD then in /dev/dri/card
@@ -115,14 +115,14 @@ static int ff_qsv_set_display_handle(AVCodecContext *avctx, QSVSession *qs)
 
         fd = open(adapterpath, O_RDWR);
         if (fd < 0) {
-            av_log(avctx, AV_LOG_ERROR,
+            av_log(avcl, AV_LOG_ERROR,
                 "mfx init: %s fd open failed\n", adapterpath);
             continue;
         }
 
         va_dpy = vaGetDisplayDRM(fd);
         if (!va_dpy) {
-            av_log(avctx, AV_LOG_ERROR,
+            av_log(avcl, AV_LOG_ERROR,
                 "mfx init: %s vaGetDisplayDRM failed\n", adapterpath);
             close(fd);
             continue;
@@ -130,27 +130,28 @@ static int ff_qsv_set_display_handle(AVCodecContext *avctx, QSVSession *qs)
 
         va_res = vaInitialize(va_dpy, &major_version, &minor_version);
         if (VA_STATUS_SUCCESS != va_res) {
-            av_log(avctx, AV_LOG_ERROR,
+            av_log(avcl, AV_LOG_ERROR,
                 "mfx init: %s vaInitialize failed\n", adapterpath);
             close(fd);
             fd = -1;
             continue;
         } else {
-            av_log(avctx, AV_LOG_VERBOSE,
+            av_log(avcl, AV_LOG_VERBOSE,
             "mfx initialization: %s vaInitialize successful\n",adapterpath);
             qs->fd_display = fd;
             qs->va_display = va_dpy;
             ret = MFXVideoCORE_SetHandle(qs->session,
                   (mfxHandleType)MFX_HANDLE_VA_DISPLAY, (mfxHDL)va_dpy);
             if (ret < 0) {
-                av_log(avctx, AV_LOG_ERROR,
+                av_log(avcl, AV_LOG_ERROR,
                 "Error %d during set display handle\n", ret);
-                return ff_qsv_error(ret);
+                return avpriv_qsv_error(ret);
             }
             break;
         }
     }
 #endif //AVCODEC_QSV_LINUX_SESSION_HANDLE
+
     return 0;
 }
 /**
@@ -168,8 +169,8 @@ static int ff_qsv_set_display_handle(AVCodecContext *avctx, QSVSession *qs)
  * @param avctx    ffmpeg metadata for this codec context
  * @param session  the MSDK session used
  */
-int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
-                                 const char *load_plugins)
+int avpriv_qsv_init_internal_session(AVClass *avcl, QSVSession *qs,
+                                     char *load_plugins)
 {
     mfxIMPL impl   = MFX_IMPL_AUTO_ANY;
     mfxVersion ver = { { QSV_VERSION_MINOR, QSV_VERSION_MAJOR } };
@@ -179,11 +180,11 @@ int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
 
     ret = MFXInit(impl, &ver, &qs->session);
     if (ret < 0) {
-        av_log(avctx, AV_LOG_ERROR, "Error initializing an internal MFX session\n");
-        return ff_qsv_error(ret);
+        av_log(avcl, AV_LOG_ERROR, "Error initializing an internal MFX session\n");
+        return avpriv_qsv_error(ret);
     }
 
-    ret = ff_qsv_set_display_handle(avctx, qs);
+    ret = ff_qsv_set_display_handle(avcl, qs);
     if (ret < 0)
         return ret;
 
@@ -208,11 +209,11 @@ int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
             mfxPluginUID uid;
             int i, err = 0;
 
-            char *plugin = av_get_token(&load_plugins, ":");
+            char *plugin = av_get_token((const char**)&load_plugins, ":");
             if (!plugin)
                 return AVERROR(ENOMEM);
             if (strlen(plugin) != 2 * sizeof(uid.Data)) {
-                av_log(avctx, AV_LOG_ERROR, "Invalid plugin UID length\n");
+                av_log(avcl, AV_LOG_ERROR, "Invalid plugin UID length\n");
                 err = AVERROR(EINVAL);
                 goto load_plugin_fail;
             }
@@ -220,7 +221,7 @@ int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
             for (i = 0; i < sizeof(uid.Data); i++) {
                 err = sscanf(plugin + 2 * i, "%2hhx", uid.Data + i);
                 if (err != 1) {
-                    av_log(avctx, AV_LOG_ERROR, "Invalid plugin UID\n");
+                    av_log(avcl, AV_LOG_ERROR, "Invalid plugin UID\n");
                     err = AVERROR(EINVAL);
                     goto load_plugin_fail;
                 }
@@ -229,9 +230,9 @@ int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
 
             ret = MFXVideoUSER_Load(qs->session, &uid, 1);
             if (ret < 0) {
-                av_log(avctx, AV_LOG_ERROR, "Could not load the requested plugin: %s\n",
+                av_log(avcl, AV_LOG_ERROR, "Could not load the requested plugin: %s\n",
                        plugin);
-                err = ff_qsv_error(ret);
+                err = avpriv_qsv_error(ret);
                 goto load_plugin_fail;
             }
 
@@ -242,14 +243,14 @@ load_plugin_fail:
         }
     }
 
-    av_log(avctx, AV_LOG_VERBOSE,
+    av_log(avcl, AV_LOG_VERBOSE,
            "Initialized an internal MFX session using %s implementation\n",
            desc);
 
     return 0;
 }
 
-int ff_qsv_close_internal_session(QSVSession *qs)
+int avpriv_qsv_close_internal_session(QSVSession *qs)
 {
     if (qs->session) {
         MFXClose(qs->session);
diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h
index b9ad199..db9a53e 100644
--- a/libavcodec/qsv_internal.h
+++ b/libavcodec/qsv_internal.h
@@ -68,15 +68,16 @@ typedef struct QSVSession {
 #endif
 } QSVSession;
 
+int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id);
+
 /**
  * Convert a libmfx error code into a ffmpeg error code.
  */
-int ff_qsv_error(int mfx_err);
+int avpriv_qsv_error(int mfx_err);
 
-int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id);
+int avpriv_qsv_init_internal_session(AVClass *avcl, QSVSession *qs,
+                                     char *load_plugins);
 
-int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
-                                 const char *load_plugins);
-int ff_qsv_close_internal_session(QSVSession *qs);
+int avpriv_qsv_close_internal_session(QSVSession *qs);
 
 #endif /* AVCODEC_QSV_INTERNAL_H */
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index c451fb9..7d1237d 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -75,8 +75,8 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
     }
     if (!q->session) {
         if (!q->internal_qs.session) {
-            ret = ff_qsv_init_internal_session(avctx, &q->internal_qs,
-                                               q->load_plugins);
+            ret = avpriv_qsv_init_internal_session((AVClass *)&avctx->av_class, &q->internal_qs,
+                                                    q->load_plugins);
             if (ret < 0)
                 return ret;
         }
@@ -94,7 +94,7 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
 
     ret = ff_qsv_codec_id_to_mfx(avctx->codec_id);
     if (ret < 0) {
-        av_log(avctx, AV_LOG_ERROR, "Unsupported codec_id %08x\n", avctx->codec_id);
+        av_log((AVClass *)avctx->av_class, AV_LOG_ERROR, "Unsupported codec_id %08x\n", avctx->codec_id);
         return ret;
     }
 
@@ -108,7 +108,7 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
         return avpkt->size;
     } else if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Decode header error %d\n", ret);
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
     param.IOPattern   = q->iopattern;
     param.AsyncDepth  = q->async_depth;
@@ -126,7 +126,7 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, AVPacket *avpkt
             av_log(avctx, AV_LOG_ERROR,
                    "Error initializing the MFX video decoder %d\n", ret);
         }
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
 
     avctx->profile      = param.mfx.CodecProfile;
@@ -405,7 +405,7 @@ static int do_qsv_decode(AVCodecContext *avctx, QSVContext *q,
 
     if (MFX_ERR_MORE_DATA!=ret && ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Error %d during QSV decoding.\n", ret);
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
     n_out_frames = av_fifo_size(q->async_fifo) / (sizeof(out_frame)+sizeof(sync));
 
@@ -571,7 +571,7 @@ int ff_qsv_decode_close(QSVContext *q)
 
     q->session = NULL;
 
-    ff_qsv_close_internal_session(&q->internal_qs);
+    avpriv_qsv_close_internal_session(&q->internal_qs);
 
     av_fifo_free(q->async_fifo);
     q->async_fifo = NULL;
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index cf92ad4..13c008c 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -460,7 +460,7 @@ static int qsv_retrieve_enc_params(AVCodecContext *avctx, QSVEncContext *q)
 
     ret = MFXVideoENCODE_GetVideoParam(q->session, &q->param);
     if (ret < 0)
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
 
     q->packet_size = q->param.mfx.BufferSizeInKB * 1000;
 
@@ -545,8 +545,8 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q)
     }
 
     if (!q->session) {
-        ret = ff_qsv_init_internal_session(avctx, &q->internal_qs,
-                                           q->load_plugins);
+        ret = avpriv_qsv_init_internal_session((AVClass *)&avctx->av_class, &q->internal_qs,
+                                               q->load_plugins);
         if (ret < 0)
             return ret;
 
@@ -562,13 +562,13 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q)
         av_log(avctx, AV_LOG_WARNING, "Encoder will work with partial HW acceleration\n");
     } else if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Error %d querying encoder params\n", ret);
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
 
     ret = MFXVideoENCODE_QueryIOSurf(q->session, &q->param, &q->req);
     if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Error querying the encoding parameters\n");
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
 
     if (opaque_alloc) {
@@ -611,7 +611,7 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q)
         av_log(avctx, AV_LOG_WARNING, "Encoder will work with partial HW acceleration\n");
     } else if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR, "Error initializing the encoder\n");
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
 
     ret = qsv_retrieve_enc_params(avctx, q);
@@ -796,7 +796,7 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q,
         if (ret == MFX_ERR_MORE_DATA)
             return 0;
         av_log(avctx, AV_LOG_ERROR, "EncodeFrameAsync returned %d\n", ret);
-        return ff_qsv_error(ret);
+        return avpriv_qsv_error(ret);
     }
 
     if (ret == MFX_WRN_INCOMPATIBLE_VIDEO_PARAM) {
@@ -876,7 +876,7 @@ int ff_qsv_enc_close(AVCodecContext *avctx, QSVEncContext *q)
         MFXVideoENCODE_Close(q->session);
     q->session = NULL;
 
-    ff_qsv_close_internal_session(&q->internal_qs);
+    avpriv_qsv_close_internal_session(&q->internal_qs);
 
     cur = q->work_frames;
     while (cur) {
-- 
1.8.3.1

