2017-12-16 2:52 GMT+08:00 wm4 <nfx...@googlemail.com>: > On Fri, 15 Dec 2017 15:02:44 +0800 > wbse...@gmail.com wrote: > >> From: wang-bin <wbse...@gmail.com> >> >> 1. a cvpixelbuffer backed by iosurface can always be converted to an opengl >> texture, using CGLTexImageIOSurface2D for macOS, and undocumented api >> texImageIOSurface(which is internally used by public api >> CVOpenGLESTextureCacheCreateTextureFromImage) for iOS4.0+. >> 2. enabling the attribute can slow down decoding speed a lot. I tested many >> video clips on my macbook air. for example: ffmpeg -ss 00:00:00 -t 00:03:00 >> -hwaccel videotoolbox -an -i big_buck_bunny_1080p_h264.mov -f null >> ->/dev/null, result with the attribute >> enabled: frame= 2082 fps= 85 q=-0.0 Lsize=N/A time=00:03:00.00 bitrate=N/A >> speed=7.34x >> disabled: frame= 2031 fps=104 q=-0.0 Lsize=N/A time=00:03:00.00 bitrate=N/A >> speed=9.22x >> --- >> libavcodec/videotoolbox.c | 5 ----- >> 1 file changed, 5 deletions(-) >> >> diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c >> index 9d2f0afa20..24631684d7 100644 >> --- a/libavcodec/videotoolbox.c >> +++ b/libavcodec/videotoolbox.c >> @@ -664,11 +664,6 @@ static CFDictionaryRef >> videotoolbox_buffer_attributes_create(int width, >> CFDictionarySetValue(buffer_attributes, >> kCVPixelBufferIOSurfacePropertiesKey, io_surface_properties); >> CFDictionarySetValue(buffer_attributes, kCVPixelBufferWidthKey, w); >> CFDictionarySetValue(buffer_attributes, kCVPixelBufferHeightKey, h); >> -#if TARGET_OS_IPHONE >> - CFDictionarySetValue(buffer_attributes, >> kCVPixelBufferOpenGLESCompatibilityKey, kCFBooleanTrue); >> -#else >> - CFDictionarySetValue(buffer_attributes, >> kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey, kCFBooleanTrue); >> -#endif >> >> CFRelease(io_surface_properties); >> CFRelease(cv_pix_fmt); > > Does this have a negative effect on compatibility or performance? (In > both cases I'm asking about the case when actually using GL rendering.)
Disabling the attribute improves performance in my tests. I can not find any document about these keys. What i know is the decoded cvpixelbuffer is backed by iosurface, and the api to create texture from iosurface is available since macOS10.6 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel