aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/imgutils.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-08-23 21:46:50 +0200
committerAnton Khirnov <anton@khirnov.net>2016-08-31 08:15:47 +0200
commitd7bc52bf456deba0f32d9fe5c288ec441f1ebef5 (patch)
tree23727303f674466f004d94c55f00b61124a8a670 /libavutil/imgutils.h
parent24da430324735f95880c4a4a54298dc8023125bb (diff)
downloadffmpeg-d7bc52bf456deba0f32d9fe5c288ec441f1ebef5.tar.gz
imgutils: add a function for copying image data from GPU mapped memory
See https://software.intel.com/en-us/articles/copying-accelerated-video-decode-frame-buffers
Diffstat (limited to 'libavutil/imgutils.h')
-rw-r--r--libavutil/imgutils.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/libavutil/imgutils.h b/libavutil/imgutils.h
index 04d6138f67..f98a18ff21 100644
--- a/libavutil/imgutils.h
+++ b/libavutil/imgutils.h
@@ -118,6 +118,24 @@ void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4],
enum AVPixelFormat pix_fmt, int width, int height);
/**
+ * Copy image data located in uncacheable (e.g. GPU mapped) memory. Where
+ * available, this function will use special functionality for reading from such
+ * memory, which may result in greatly improved performance compared to plain
+ * av_image_copy().
+ *
+ * The data pointers and the linesizes must be aligned to the maximum required
+ * by the CPU architecture.
+ *
+ * @note The linesize parameters have the type ptrdiff_t here, while they are
+ * int for av_image_copy().
+ * @note On x86, the linesizes currently need to be aligned to the cacheline
+ * size (i.e. 64) to get improved performance.
+ */
+void av_image_copy_uc_from(uint8_t *dst_data[4], const ptrdiff_t dst_linesizes[4],
+ const uint8_t *src_data[4], const ptrdiff_t src_linesizes[4],
+ enum AVPixelFormat pix_fmt, int width, int height);
+
+/**
* Setup the data pointers and linesizes based on the specified image
* parameters and the provided array.
*