]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/hwcontext_vaapi.c
avutil/file: allow mapping 0 byte files with av_file_map
[ffmpeg] / libavutil / hwcontext_vaapi.c
index 53a5b02822efdbeab16662f26456fd50a8c975a9..a2387d4fc4abd4ddbd7b03a3a19a3848dc616fc9 100644 (file)
@@ -1024,10 +1024,14 @@ static int vaapi_map_from_drm(AVHWFramesContext *src_fc, AVFrame *dst,
            "%08x.\n", desc->objects[0].fd, va_fourcc);
 
     for (i = 0; i < FF_ARRAY_ELEMS(vaapi_format_map); i++) {
-        if (vaapi_format_map[i].fourcc == va_fourcc)
+        if (vaapi_format_map[i].fourcc == va_fourcc) {
             va_rt_format = vaapi_format_map[i].rt_format;
+            break;
+        }
     }
 
+    av_assert0(i < FF_ARRAY_ELEMS(vaapi_format_map));
+
     buffer_handle = desc->objects[0].fd;
     buffer_desc.pixel_format = va_fourcc;
     buffer_desc.width        = src_fc->width;
@@ -1164,6 +1168,7 @@ fail:
 }
 #endif
 
+#if VA_CHECK_VERSION(0, 36, 0)
 typedef struct VAAPIDRMImageBufferMapping {
     VAImage      image;
     VABufferInfo buffer_info;
@@ -1323,6 +1328,7 @@ fail:
     av_freep(&mapping);
     return err;
 }
+#endif
 
 static int vaapi_map_to_drm(AVHWFramesContext *hwfc, AVFrame *dst,
                             const AVFrame *src, int flags)
@@ -1333,7 +1339,10 @@ static int vaapi_map_to_drm(AVHWFramesContext *hwfc, AVFrame *dst,
     if (err != AVERROR(ENOSYS))
         return err;
 #endif
+#if VA_CHECK_VERSION(0, 36, 0)
     return vaapi_map_to_drm_abh(hwfc, dst, src, flags);
+#endif
+    return AVERROR(ENOSYS);
 }
 
 #endif /* CONFIG_LIBDRM */