[FFmpeg-cvslog] Merge commit 'b91ce4860054430d3712deb0d9487cac2fcb7d68'

Mark Thompson git at videolan.org
Thu Mar 30 23:17:32 EEST 2017


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Thu Mar 30 21:16:58 2017 +0100| [7cb082ac2ff0b0689d156ec5f3b54e73c0b6b744] | committer: Mark Thompson

Merge commit 'b91ce4860054430d3712deb0d9487cac2fcb7d68'

* commit 'b91ce4860054430d3712deb0d9487cac2fcb7d68':
  hwcontext_qsv: do not fail when download/upload VPP session creation fails

Merged-by: Mark Thompson <sw at jkqxz.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7cb082ac2ff0b0689d156ec5f3b54e73c0b6b744
---

 libavutil/hwcontext_qsv.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index 5eb974e..15baa6a 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -450,8 +450,10 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx,
 
     err = MFXVideoVPP_Init(*session, &par);
     if (err != MFX_ERR_NONE) {
-        av_log(ctx, AV_LOG_ERROR, "Error opening the internal VPP session\n");
-        return AVERROR_UNKNOWN;
+        av_log(ctx, AV_LOG_VERBOSE, "Error opening the internal VPP session."
+               "Surface upload/download will not be possible\n");
+        MFXClose(*session);
+        *session = NULL;
     }
 
     return 0;
@@ -567,6 +569,11 @@ static int qsv_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst,
     mfxSyncPoint sync = NULL;
     mfxStatus err;
 
+    if (!s->session_download) {
+        av_log(ctx, AV_LOG_ERROR, "Surface download not possible\n");
+        return AVERROR(ENOSYS);
+    }
+
     out.Info = in->Info;
     out.Data.PitchLow = dst->linesize[0];
     out.Data.Y        = dst->data[0];
@@ -606,6 +613,11 @@ static int qsv_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
     mfxSyncPoint sync = NULL;
     mfxStatus err;
 
+    if (!s->session_upload) {
+        av_log(ctx, AV_LOG_ERROR, "Surface upload not possible\n");
+        return AVERROR(ENOSYS);
+    }
+
     in.Info = out->Info;
     in.Data.PitchLow = src->linesize[0];
     in.Data.Y        = src->data[0];


======================================================================




More information about the ffmpeg-cvslog mailing list