On 29/11/2017 23:12, Mark Thompson wrote:
Also fixes a bug where it could attempt to decode with an unsupported
codec if allow-profile-mismatch was set.
---
  libavcodec/vaapi_decode.c | 18 +++++++++---------
  1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
index 02304191f..cc79875ef 100644
--- a/libavcodec/vaapi_decode.c
+++ b/libavcodec/vaapi_decode.c
@@ -284,8 +284,8 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
      VAStatus vas;
      int err, i, j;
      const AVCodecDescriptor *codec_desc;
-    VAProfile profile, *profile_list = NULL;
-    int profile_count, exact_match, alt_profile;
+    VAProfile *profile_list = NULL, matched_va_profile;
+    int profile_count, exact_match, matched_ff_profile;
      const AVPixFmtDescriptor *sw_desc, *desc;
AVHWDeviceContext *device = (AVHWDeviceContext*)device_ref->data;
@@ -314,7 +314,7 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
          goto fail;
      }
- profile = VAProfileNone;
+    matched_va_profile = VAProfileNone;
      exact_match = 0;
for (i = 0; i < FF_ARRAY_ELEMS(vaapi_profile_map); i++) {
@@ -324,22 +324,22 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
          if (avctx->profile == vaapi_profile_map[i].codec_profile ||
              vaapi_profile_map[i].codec_profile == FF_PROFILE_UNKNOWN)
              profile_match = 1;
-        profile = vaapi_profile_map[i].va_profile;
          for (j = 0; j < profile_count; j++) {
-            if (profile == profile_list[j]) {
+            if (vaapi_profile_map[i].va_profile == profile_list[j]) {
                  exact_match = profile_match;
                  break;
              }
          }
          if (j < profile_count) {
+            matched_va_profile = vaapi_profile_map[i].va_profile;
+            matched_ff_profile = vaapi_profile_map[i].codec_profile;
              if (exact_match)
                  break;
-            alt_profile = vaapi_profile_map[i].codec_profile;
          }
      }
      av_freep(&profile_list);
- if (profile == VAProfileNone) {
+    if (matched_va_profile == VAProfileNone) {
          av_log(avctx, AV_LOG_ERROR, "No support for codec %s "
                 "profile %d.\n", codec_desc->name, avctx->profile);
          err = AVERROR(ENOSYS);
@@ -353,7 +353,7 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
                     codec_desc->name, avctx->profile);
              av_log(avctx, AV_LOG_WARNING, "Using possibly-"
                     "incompatible profile %d instead.\n",
-                   alt_profile);
+                   matched_ff_profile);
          } else {
              av_log(avctx, AV_LOG_VERBOSE, "Codec %s profile %d not "
                     "supported for hardware decode.\n",
@@ -363,7 +363,7 @@ static int vaapi_decode_make_config(AVCodecContext *avctx,
          }
      }
- vas = vaCreateConfig(hwctx->display, profile,
+    vas = vaCreateConfig(hwctx->display, matched_va_profile,
                           VAEntrypointVLD, NULL, 0,
                           va_config);
      if (vas != VA_STATUS_SUCCESS) {


ok.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to