summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorwm4 <nfxjfg@googlemail.com>2017-02-24 10:17:34 +0100
committerwm4 <nfxjfg@googlemail.com>2017-03-02 10:32:21 +0100
commitade7c1a2326e2bb9be5e60a48b9968eb1d16bfaf (patch)
treed901ba9065495d2aa62c379731737d8cdf172c66 /libavcodec
parent227f6e1e8d4bd23734db9769bb52cc9896e253b5 (diff)
avcodec/videotoolbox: allow not setting the kCVPixelBufferPixelFormatTypeKey
If AVVideotoolboxContext.cv_pix_fmt_type is set to 0, don't set the kCVPixelBufferPixelFormatTypeKey value on the VT decoder. This makes VT output its native format, which can be much faster on some hardware iterations (if the native format does not match with the requested format, it will be converted, which is slow). The default is still forcing nv12.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/version.h2
-rw-r--r--libavcodec/videotoolbox.c3
-rw-r--r--libavcodec/videotoolbox.h3
3 files changed, 5 insertions, 3 deletions
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 3b4c253146..5d8b22cb29 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 81
-#define LIBAVCODEC_VERSION_MICRO 102
+#define LIBAVCODEC_VERSION_MICRO 103
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c
index 1288aa5087..2ebe60fb5c 100644
--- a/libavcodec/videotoolbox.c
+++ b/libavcodec/videotoolbox.c
@@ -472,7 +472,8 @@ static CFDictionaryRef videotoolbox_buffer_attributes_create(int width,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
- CFDictionarySetValue(buffer_attributes, kCVPixelBufferPixelFormatTypeKey, cv_pix_fmt);
+ if (pix_fmt)
+ CFDictionarySetValue(buffer_attributes, kCVPixelBufferPixelFormatTypeKey, cv_pix_fmt);
CFDictionarySetValue(buffer_attributes, kCVPixelBufferIOSurfacePropertiesKey, io_surface_properties);
CFDictionarySetValue(buffer_attributes, kCVPixelBufferWidthKey, w);
CFDictionarySetValue(buffer_attributes, kCVPixelBufferHeightKey, h);
diff --git a/libavcodec/videotoolbox.h b/libavcodec/videotoolbox.h
index a48638e2b2..af2db0d580 100644
--- a/libavcodec/videotoolbox.h
+++ b/libavcodec/videotoolbox.h
@@ -58,7 +58,8 @@ typedef struct AVVideotoolboxContext {
/**
* CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
- * set by the caller.
+ * set by the caller. If this is set to 0, then no specific format is
+ * requested from the decoder, and its native format is output.
*/
OSType cv_pix_fmt_type;